]> git.sesse.net Git - vlc/blob - bindings/java/core/src/main/java/org/videolan/jvlc/MediaDescriptor.java
5b5f14ee96236a435c3c86f943f8fe9ed04a9700
[vlc] / bindings / java / core / src / main / java / org / videolan / jvlc / MediaDescriptor.java
1 /*****************************************************************************
2  * MediaDescriptor.java: VLC Java Bindings Media Descriptor
3  *****************************************************************************
4  * Copyright (C) 1998-2008 the VideoLAN team
5  *
6  * Authors: Filippo Carone <filippo@carone.org>
7  *
8  *
9  * $Id $
10  *
11  * This program is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; either version 2 of the License, or
14  * (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software
23  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
24  *****************************************************************************/
25
26 package org.videolan.jvlc;
27
28 import org.videolan.jvlc.internal.LibVlc;
29 import org.videolan.jvlc.internal.LibVlc.LibVlcEventManager;
30 import org.videolan.jvlc.internal.LibVlc.LibVlcMedia;
31 import org.videolan.jvlc.internal.LibVlc.libvlc_exception_t;
32
33
34 public class MediaDescriptor
35 {
36     private LibVlcMedia instance;
37     private LibVlc libvlc;
38     private LibVlcEventManager eventManager;
39     private boolean released;
40     
41     private MediaPlayer mediaPlayer;
42     
43     /**
44      * @param jvlc The jvlc instance to create the media descriptor for.
45      * @param media The media string
46      */
47     public MediaDescriptor(JVLC jvlc, String media)
48     {
49         libvlc_exception_t exception = new libvlc_exception_t();
50         libvlc = jvlc.getLibvlc();
51         instance = libvlc.libvlc_media_new(jvlc.getInstance(), media, exception);
52         eventManager = libvlc.libvlc_media_event_manager(instance, exception);
53     }
54
55     MediaDescriptor(JVLC jvlc, LibVlcMedia instance)
56     {
57         libvlc_exception_t exception = new libvlc_exception_t();
58         libvlc = jvlc.getLibvlc();
59         this.instance = instance;
60         eventManager = libvlc.libvlc_media_event_manager(instance, exception);
61     }
62
63     public void addOption(String option)
64     {
65         libvlc_exception_t exception = new libvlc_exception_t();
66         libvlc.libvlc_media_add_option(instance, option, exception );
67     }
68     
69     public String getMrl()
70     {
71         return libvlc.libvlc_media_get_mrl(instance);
72     }
73     
74     public MediaPlayer getMediaPlayer()
75     {
76         if (mediaPlayer == null)
77         {
78             this.mediaPlayer = new MediaPlayer(this);
79         }
80         return this.mediaPlayer;
81     }
82     
83     /**
84      * {@inheritDoc}
85      */
86     @Override
87     protected void finalize() throws Throwable
88     {
89         release();
90         super.finalize();
91     }
92
93     
94     
95     /**
96      * Returns the instance.
97      * @return the instance
98      */
99     LibVlcMedia getInstance()
100     {
101         return instance;
102     }
103     
104     /**
105      * Returns the libvlc.
106      * @return the libvlc
107      */
108     LibVlc getLibvlc()
109     {
110         return libvlc;
111     }
112
113     /**
114      * 
115      */
116     public void release()
117     {
118         if (released)
119         {
120             return;
121         }
122         released = true;
123         libvlc.libvlc_media_release(instance);
124     }
125     
126     
127 }