/*****************************************************************************
* JVLC.java: Main Java Class, represents a libvlc_instance_t object
*****************************************************************************
*
* Copyright (C) 1998-2008 the VideoLAN team
*
* Author: Filippo Carone <filippo@carone.org>
* Philippe Morin <phmorin@free.fr>
*
* Created on 28-feb-2006
*
* $Id: JVLC.java 20141 2007-05-16 19:31:35Z littlejohn $
*
* This program is free software; you can redistribute it
* and/or modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*
*/
package org.videolan.jvlc;
import java.awt.Canvas;
import org.videolan.jvlc.internal.LibVlc;
import org.videolan.jvlc.internal.LibVlc.LibVlcInstance;
import org.videolan.jvlc.internal.LibVlc.libvlc_exception_t;
import com.sun.jna.Native;
public class JVLC
{
private final LibVlcInstance instance;
private final LibVlc libvlc = LibVlc.SYNC_INSTANCE;
private MediaList mediaList;
private VLM vlm;
private volatile boolean released;
public JVLC()
{
String[] args = new String[] {};
instance = createInstance(args);
mediaList = new MediaList(this);
}
public JVLC(String[] args)
{
instance = createInstance(args);
}
public JVLC(String args)
{
this(args.split(" "));
}
/*
* Core methods
*/
private LibVlcInstance createInstance(String[] args)
{
libvlc_exception_t exception = new libvlc_exception_t();
return libvlc.libvlc_new(args.length, args, exception);
}
public MediaPlayer play(String media)
{
MediaDescriptor mediaDescriptor = new MediaDescriptor(this, media);
MediaPlayer mediaInstance = new MediaPlayer(mediaDescriptor);
mediaInstance.play();
mediaDescriptor.release();
return mediaInstance;
}
public void setVideoOutput(Canvas canvas)
{
long drawable = Native.getComponentID(canvas);
libvlc_exception_t exception = new libvlc_exception_t();
libvlc.libvlc_video_set_parent(instance, drawable, exception );
}
public Logger getLogger()
{
return new Logger(this);
}
/**
* Returns the mediaList.
* @return the mediaList
*/
public MediaList getMediaList()
{
return mediaList;
}
public VLM getVLM()
{
if (vlm != null)
{
vlm.release();
}
this.vlm = new VLM(this);
return vlm;
}
public LoggerVerbosityLevel getLogVerbosity()
{
libvlc_exception_t exception = new libvlc_exception_t();
int level = libvlc.libvlc_get_log_verbosity(instance, exception);
return LoggerVerbosityLevel.getSeverity(level);
}
public void setLogVerbosity(LoggerVerbosityLevel level)
{
libvlc_exception_t exception = new libvlc_exception_t();
libvlc.libvlc_set_log_verbosity(instance, level.ordinal(), exception);
}
/**
* Returns the _instance.
* @return the _instance
*/
LibVlcInstance getInstance()
{
return instance;
}
/**
* Returns the libvlc.
* @return the libvlc
*/
LibVlc getLibvlc()
{
return libvlc;
}
/**
* Releases this instance and the native resources.
*/
public void release()
{
if (released)
{
return;
}
released = true;
if (vlm != null)
{
vlm.release();
vlm = null;
}
libvlc.libvlc_release(instance);
}
/*
* (non-Javadoc)
* @see java.lang.Object#finalize()
*/
@Override
protected void finalize() throws Throwable
{
release();
super.finalize();
}
public void addGui(String name) {
libvlc_exception_t exception = new libvlc_exception_t();
libvlc.libvlc_add_intf(instance, name, exception);
}
}