]> git.sesse.net Git - vlc/blobdiff - src/control/media.c
Remove enums from public APIs
[vlc] / src / control / media.c
index 07be5fe49a701fc81136484090809115eb2056fa..f7122fe4ca24edc72db732dc7d4f978fc7997d17 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#include "libvlc_internal.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[] =
 {
@@ -51,7 +61,7 @@ static const vlc_meta_type_t libvlc_to_vlc_meta[] =
     [libvlc_meta_TrackID]      = vlc_meta_TrackID
 };
 
-static const libvlc_meta_t vlc_to_libvlc_meta[] =
+static const enum libvlc_meta_t vlc_to_libvlc_meta[] =
 {
     [vlc_meta_Title]        = libvlc_meta_Title,
     [vlc_meta_Artist]       = libvlc_meta_Artist,
@@ -215,8 +225,8 @@ static void preparse_if_needed( libvlc_media_t *p_md )
     if (!p_md->b_preparsed)
     {
         playlist_PreparseEnqueue(
-                p_md->p_libvlc_instance->p_libvlc_int->p_playlist,
-                p_md->p_input_item );
+                libvlc_priv (p_md->p_libvlc_instance->p_libvlc_int)->p_playlist,
+                p_md->p_input_item, pl_Unlocked );
         p_md->b_preparsed = true;
     }
 }
@@ -240,6 +250,12 @@ libvlc_media_t * libvlc_media_new_from_input_item(
     }
 
     p_md = malloc( sizeof(libvlc_media_t) );
+    if( !p_md )
+    {
+        libvlc_exception_raise( p_e, "Not enough memory" );
+        return NULL;
+    }
+
     p_md->p_libvlc_instance = p_instance;
     p_md->p_input_item      = p_input_item;
     p_md->b_preparsed       = false;
@@ -282,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)
     {
@@ -295,7 +311,7 @@ libvlc_media_t * libvlc_media_new(
 
     /* The p_input_item is retained in libvlc_media_new_from_input_item */
     vlc_gc_decref( p_input_item );
-    
+
     return p_md;
 }
 
@@ -310,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)
     {
@@ -339,9 +355,23 @@ void libvlc_media_add_option(
                                    const char * ppsz_option,
                                    libvlc_exception_t *p_e )
 {
-    (void)p_e;
-    input_ItemAddOpt( p_md->p_input_item, ppsz_option,
-                      VLC_INPUT_OPTION_UNIQUE|VLC_INPUT_OPTION_TRUSTED );
+    VLC_UNUSED(p_e);
+    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 configurable flags.
+ **************************************************************************/
+void libvlc_media_add_option_flag(
+                                   libvlc_media_t * p_md,
+                                   const char * ppsz_option,
+                                   unsigned i_flags,
+                                   libvlc_exception_t *p_e )
+{
+    VLC_UNUSED(p_e);
+    input_item_AddOption( p_md->p_input_item, ppsz_option,
+                          i_flags );
 }
 
 /**************************************************************************
@@ -398,13 +428,13 @@ 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,
                                  libvlc_exception_t * p_e )
 {
-    (void)p_e;
+    VLC_UNUSED(p_e);
     return input_item_GetURI( p_md->p_input_item );
 }
 
@@ -412,13 +442,11 @@ libvlc_media_get_mrl( libvlc_media_t * p_md,
  * Getter for meta information
  **************************************************************************/
 
-char * libvlc_media_get_meta( libvlc_media_t *p_md,
-                                         libvlc_meta_t e_meta,
+char * libvlc_media_get_meta( libvlc_media_t *p_md, unsigned e_meta,
                                          libvlc_exception_t *p_e )
 {
-    VLC_UNUSED(p_e);
-
     char * psz_meta;
+    VLC_UNUSED(p_e);
 
     /* XXX: locking */
 
@@ -426,12 +454,12 @@ char * libvlc_media_get_meta( libvlc_media_t *p_md,
 
     psz_meta = input_item_GetMeta( p_md->p_input_item,
                                    libvlc_to_vlc_meta[e_meta] );
-    
+
     if( e_meta == libvlc_meta_ArtworkURL && !psz_meta )
     {
         playlist_AskForArtEnqueue(
-                p_md->p_libvlc_instance->p_libvlc_int->p_playlist,
-                p_md->p_input_item );
+                libvlc_priv(p_md->p_libvlc_instance->p_libvlc_int)->p_playlist,
+                p_md->p_input_item, pl_Unlocked );
     }
 
     /* Should be integrated in core */
@@ -449,11 +477,11 @@ char * libvlc_media_get_meta( libvlc_media_t *p_md,
  * Can be error, playing, buffering, NothingSpecial.
  **************************************************************************/
 
-libvlc_state_t
+unsigned
 libvlc_media_get_state( libvlc_media_t *p_md,
                                    libvlc_exception_t *p_e )
 {
-    (void)p_e;
+    VLC_UNUSED(p_e);
     return p_md->state;
 }
 
@@ -462,12 +490,11 @@ libvlc_media_get_state( libvlc_media_t *p_md,
  **************************************************************************/
 
 void
-libvlc_media_set_state( libvlc_media_t *p_md,
-                                   libvlc_state_t state,
+libvlc_media_set_state( libvlc_media_t *p_md, enum libvlc_state_t state,
                                    libvlc_exception_t *p_e )
 {
-    (void)p_e;
     libvlc_event_t event;
+    VLC_UNUSED(p_e);
 
     p_md->state = state;
 
@@ -508,20 +535,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 );
 }
 
 /**************************************************************************
@@ -533,14 +559,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 );
 }
 
 /**************************************************************************
@@ -581,4 +606,3 @@ libvlc_media_get_user_data( libvlc_media_t * p_md,
         return NULL;
     }
 }
-