]> git.sesse.net Git - vlc/blobdiff - src/control/media.c
Use var_Inherit* instead of var_CreateGet*.
[vlc] / src / control / media.c
index 3313a057a9ff56ee0ae6ec6176b6d13347fd4eca..3f39841bd785178383c386cbd6a5f11e6156e822 100644 (file)
@@ -172,8 +172,8 @@ static void input_item_preparsed_changed(const vlc_event_t *p_event,
 
 
     /* Construct the event */
-    event.type = libvlc_MediaPreparsedChanged;
-    event.u.media_preparsed_changed.new_status =
+    event.type = libvlc_MediaParsedChanged;
+    event.u.media_parsed_changed.new_status =
         p_event->u.input_item_preparsed_changed.new_status;
 
     /* Send the event */
@@ -284,18 +284,14 @@ libvlc_media_t * libvlc_media_new_from_input_item(
         free(p_md);
         return NULL;
     }
-    libvlc_event_manager_register_event_type( p_md->p_event_manager,
-        libvlc_MediaMetaChanged );
-    libvlc_event_manager_register_event_type( p_md->p_event_manager,
-        libvlc_MediaSubItemAdded );
-    libvlc_event_manager_register_event_type( p_md->p_event_manager,
-        libvlc_MediaFreed );
-    libvlc_event_manager_register_event_type( p_md->p_event_manager,
-        libvlc_MediaDurationChanged );
-    libvlc_event_manager_register_event_type( p_md->p_event_manager,
-        libvlc_MediaStateChanged );
-    libvlc_event_manager_register_event_type( p_md->p_event_manager,
-        libvlc_MediaPreparsedChanged );
+
+    libvlc_event_manager_t *em = p_md->p_event_manager;
+    libvlc_event_manager_register_event_type(em, libvlc_MediaMetaChanged);
+    libvlc_event_manager_register_event_type(em, libvlc_MediaSubItemAdded);
+    libvlc_event_manager_register_event_type(em, libvlc_MediaFreed);
+    libvlc_event_manager_register_event_type(em, libvlc_MediaDurationChanged);
+    libvlc_event_manager_register_event_type(em, libvlc_MediaStateChanged);
+    libvlc_event_manager_register_event_type(em, libvlc_MediaParsedChanged);
 
     vlc_gc_incref( p_md->p_input_item );
 
@@ -332,7 +328,7 @@ libvlc_media_t *libvlc_media_new_location( libvlc_instance_t *p_instance,
 libvlc_media_t *libvlc_media_new_path( libvlc_instance_t *p_instance,
                                        const char *path )
 {
-    char *mrl = make_URI( path );
+    char *mrl = make_URI( path, "file" );
     if( unlikely(mrl == NULL) )
     {
         libvlc_printerr( "Not enough memory" );
@@ -412,6 +408,9 @@ void libvlc_media_release( libvlc_media_t *p_md )
     uninstall_input_item_observer( p_md );
     vlc_gc_decref( p_md->p_input_item );
 
+    vlc_cond_destroy( &p_md->parsed_cond );
+    vlc_mutex_destroy( &p_md->parsed_lock );
+
     /* Construct the event */
     libvlc_event_t event;
     event.type = libvlc_MediaFreed;
@@ -641,10 +640,10 @@ libvlc_media_parse_async(libvlc_media_t *media)
 }
 
 /**************************************************************************
- * Get preparsed status for media object.
+ * Get parsed status for media object.
  **************************************************************************/
 int
-libvlc_media_is_preparsed( libvlc_media_t * p_md )
+libvlc_media_is_parsed( libvlc_media_t * p_md )
 {
     assert( p_md );
 
@@ -682,7 +681,7 @@ libvlc_media_get_user_data( libvlc_media_t * p_md )
  * Get media descriptor's elementary streams description
  **************************************************************************/
 int
-libvlc_media_get_es( libvlc_media_t *p_md, libvlc_media_es_t ** pp_es )
+libvlc_media_get_tracks_info( libvlc_media_t *p_md, libvlc_media_track_info_t ** pp_es )
 {
     assert( p_md );
 
@@ -690,7 +689,7 @@ libvlc_media_get_es( libvlc_media_t *p_md, libvlc_media_es_t ** pp_es )
     vlc_mutex_lock( &p_input_item->lock );
 
     const int i_es = p_input_item->i_es;
-    *pp_es = (i_es > 0) ? malloc( i_es * sizeof(libvlc_media_es_t) ) : NULL;
+    *pp_es = (i_es > 0) ? malloc( i_es * sizeof(libvlc_media_track_info_t) ) : NULL;
 
     if( !pp_es ) /* no ES, or OOM */
     {
@@ -701,13 +700,9 @@ libvlc_media_get_es( libvlc_media_t *p_md, libvlc_media_es_t ** pp_es )
     /* Fill array */
     for( int i = 0; i < i_es; i++ )
     {
-        libvlc_media_es_t *p_mes = *pp_es+i;
+        libvlc_media_track_info_t *p_mes = *pp_es+i;
         const es_format_t *p_es = p_input_item->es[i];
 
-        p_mes->i_channels = p_mes->i_rate = 0;
-        p_mes->i_width = p_mes->i_height = 0;
-
-
         p_mes->i_codec = p_es->i_codec;
         p_mes->i_id = p_es->i_id;
 
@@ -718,20 +713,20 @@ libvlc_media_get_es( libvlc_media_t *p_md, libvlc_media_es_t ** pp_es )
         {
         case UNKNOWN_ES:
         default:
-            p_mes->i_type = libvlc_es_unknown;
+            p_mes->i_type = libvlc_track_unknown;
             break;
         case VIDEO_ES:
-            p_mes->i_type = libvlc_es_video;
-            p_mes->i_height = p_es->video.i_height;
-            p_mes->i_width = p_es->video.i_width;
+            p_mes->i_type = libvlc_track_video;
+            p_mes->u.video.i_height = p_es->video.i_height;
+            p_mes->u.video.i_width = p_es->video.i_width;
             break;
         case AUDIO_ES:
-            p_mes->i_type = libvlc_es_audio;
-            p_mes->i_channels = p_es->audio.i_channels;
-            p_mes->i_rate = p_es->audio.i_rate;
+            p_mes->i_type = libvlc_track_audio;
+            p_mes->u.audio.i_channels = p_es->audio.i_channels;
+            p_mes->u.audio.i_rate = p_es->audio.i_rate;
             break;
         case SPU_ES:
-            p_mes->i_type = libvlc_es_text;
+            p_mes->i_type = libvlc_track_text;
             break;
         }
     }