]> git.sesse.net Git - vlc/blobdiff - src/control/media.c
Merge branch '1.0-bugfix'
[vlc] / src / control / media.c
index 2509f2024a5f7b36f92e2a921b8adcd517ca8da5..566ce11b24b1a2aac6e4a45531946b00b78378c9 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#include "libvlc_internal.h"
-#include "libvlc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
 #include <vlc/libvlc.h>
+#include <vlc/libvlc_media.h>
+#include <vlc/libvlc_media_list.h> // For the subitems, here for convenience
+#include <vlc/libvlc_events.h>
+
+#include <vlc_common.h>
 #include <vlc_input.h>
 #include <vlc_meta.h>
+#include <vlc_playlist.h> /* For the preparser */
 
-/* For the preparser */
-#include <vlc_playlist.h>
+#include "libvlc.h"
+
+#include "libvlc_internal.h"
+#include "media_internal.h"
 
 static const vlc_meta_type_t libvlc_to_vlc_meta[] =
 {
@@ -216,7 +226,7 @@ static void preparse_if_needed( libvlc_media_t *p_md )
     {
         playlist_PreparseEnqueue(
                 libvlc_priv (p_md->p_libvlc_instance->p_libvlc_int)->p_playlist,
-                p_md->p_input_item );
+                p_md->p_input_item, pl_Unlocked );
         p_md->b_preparsed = true;
     }
 }
@@ -288,7 +298,7 @@ libvlc_media_t * libvlc_media_new(
     input_item_t * p_input_item;
     libvlc_media_t * p_md;
 
-    p_input_item = input_ItemNew( p_instance->p_libvlc_int, psz_mrl, NULL );
+    p_input_item = input_item_New( p_instance->p_libvlc_int, psz_mrl, NULL );
 
     if (!p_input_item)
     {
@@ -316,7 +326,7 @@ libvlc_media_t * libvlc_media_new_as_node(
     input_item_t * p_input_item;
     libvlc_media_t * p_md;
 
-    p_input_item = input_ItemNew( p_instance->p_libvlc_int, "vlc://nop", psz_name );
+    p_input_item = input_item_New( p_instance->p_libvlc_int, "vlc://nop", psz_name );
 
     if (!p_input_item)
     {
@@ -346,10 +356,24 @@ void libvlc_media_add_option(
                                    libvlc_exception_t *p_e )
 {
     VLC_UNUSED(p_e);
-    input_ItemAddOpt( p_md->p_input_item, ppsz_option,
-                      VLC_INPUT_OPTION_UNIQUE|VLC_INPUT_OPTION_TRUSTED );
+    input_item_AddOption( p_md->p_input_item, ppsz_option,
+                          VLC_INPUT_OPTION_UNIQUE|VLC_INPUT_OPTION_TRUSTED );
+}
+
+/**************************************************************************
+ * Same as libvlc_media_add_option but with untrusted source.
+ **************************************************************************/
+void libvlc_media_add_option_untrusted(
+                                   libvlc_media_t * p_md,
+                                   const char * ppsz_option,
+                                   libvlc_exception_t *p_e )
+{
+    VLC_UNUSED(p_e);
+    input_item_AddOption( p_md->p_input_item, ppsz_option,
+                          VLC_INPUT_OPTION_UNIQUE );
 }
 
+
 /**************************************************************************
  * Delete a media descriptor object
  **************************************************************************/
@@ -404,7 +428,7 @@ libvlc_media_duplicate( libvlc_media_t *p_md_orig )
 }
 
 /**************************************************************************
- * Retain a media descriptor object
+ * Get mrl from a media descriptor object
  **************************************************************************/
 char *
 libvlc_media_get_mrl( libvlc_media_t * p_md,
@@ -436,7 +460,7 @@ char * libvlc_media_get_meta( libvlc_media_t *p_md,
     {
         playlist_AskForArtEnqueue(
                 libvlc_priv(p_md->p_libvlc_instance->p_libvlc_int)->p_playlist,
-                p_md->p_input_item );
+                p_md->p_input_item, pl_Unlocked );
     }
 
     /* Should be integrated in core */
@@ -513,20 +537,19 @@ libvlc_media_event_manager( libvlc_media_t * p_md,
 /**************************************************************************
  * Get duration of media object.
  **************************************************************************/
-vlc_int64_t
+int64_t
 libvlc_media_get_duration( libvlc_media_t * p_md,
                                       libvlc_exception_t * p_e )
 {
     VLC_UNUSED(p_e);
 
-    if( p_md && p_md->p_input_item)
-    {
-        return input_item_GetDuration( p_md->p_input_item );
-    }
-    else
+    if( !p_md || !p_md->p_input_item)
     {
+        libvlc_exception_raise( p_e, "No input item" );
         return -1;
     }
+
+    return input_item_GetDuration( p_md->p_input_item );
 }
 
 /**************************************************************************
@@ -538,14 +561,13 @@ libvlc_media_is_preparsed( libvlc_media_t * p_md,
 {
     VLC_UNUSED(p_e);
 
-    if( p_md && p_md->p_input_item)
-    {
-        return input_item_IsPreparsed( p_md->p_input_item );
-    }
-    else
+    if( !p_md || !p_md->p_input_item)
     {
+        libvlc_exception_raise( p_e, "No input item" );
         return false;
     }
+
+    return input_item_IsPreparsed( p_md->p_input_item );
 }
 
 /**************************************************************************