]> git.sesse.net Git - vlc/blobdiff - modules/access/imem.c
v4l2: map buffers before queueing them
[vlc] / modules / access / imem.c
index 962683177ff24fc2c3c8f0dace1b9fb9ca308fa0..8442a430a30d73eef8886a424b32a07aac150d2b 100644 (file)
@@ -46,11 +46,6 @@ static void CloseAccess(vlc_object_t *);
 static int  OpenDemux (vlc_object_t *);
 static void CloseDemux(vlc_object_t *);
 
-#define CACHING_TEXT N_("Caching value in ms")
-#define CACHING_LONGTEXT N_(\
-    "Caching value for imem streams. This " \
-    "value should be set in milliseconds.")
-
 #define ID_TEXT N_("ID")
 #define ID_LONGTEXT N_(\
     "Set the ID of the elementary stream")
@@ -115,58 +110,64 @@ static const char *cat_texts[] = {
 #define RELEASE_LONGTEXT N_(\
     "Address of the release callback function")
 
+#define SIZE_TEXT N_("Size")
+#define SIZE_LONGTEXT N_(\
+    "Size of stream in bytes")
+
 vlc_module_begin()
     set_shortname(N_("Memory input"))
     set_description(N_("Memory input"))
     set_category(CAT_INPUT)
     set_subcategory(SUBCAT_INPUT_ACCESS)
 
-    add_integer("imem-caching", DEFAULT_PTS_DELAY / 1000, NULL, CACHING_TEXT, CACHING_LONGTEXT, true)
-        change_private()
-    add_string ("imem-get", "0", NULL, GET_TEXT, GET_LONGTEXT, true)
+    add_string ("imem-get", "0", GET_TEXT, GET_LONGTEXT, true)
         change_volatile()
-    add_string ("imem-release", "0", NULL, RELEASE_TEXT, RELEASE_LONGTEXT, true)
+    add_string ("imem-release", "0", RELEASE_TEXT, RELEASE_LONGTEXT, true)
         change_volatile()
-    add_string ("imem-cookie", NULL, NULL, COOKIE_TEXT, COOKIE_LONGTEXT, true)
+    add_string ("imem-cookie", NULL, COOKIE_TEXT, COOKIE_LONGTEXT, true)
         change_volatile()
         change_safe()
-    add_string ("imem-data", "0", NULL, DATA_TEXT, DATA_LONGTEXT, true)
+    add_string ("imem-data", "0", DATA_TEXT, DATA_LONGTEXT, true)
         change_volatile()
 
-    add_integer("imem-id", -1, NULL, ID_TEXT, ID_LONGTEXT, true)
+    add_integer("imem-id", -1, ID_TEXT, ID_LONGTEXT, true)
         change_private()
         change_safe()
-    add_integer("imem-group", 0, NULL, GROUP_TEXT, GROUP_LONGTEXT, true)
+    add_integer("imem-group", 0, GROUP_TEXT, GROUP_LONGTEXT, true)
         change_private()
         change_safe()
-    add_integer("imem-cat", 0, NULL, CAT_TEXT, CAT_LONGTEXT, true)
-        change_integer_list(cat_values, cat_texts, NULL)
+    add_integer("imem-cat", 0, CAT_TEXT, CAT_LONGTEXT, true)
+        change_integer_list(cat_values, cat_texts)
         change_private()
         change_safe()
-    add_string ("imem-codec", NULL, NULL, CODEC_TEXT, CODEC_LONGTEXT, true)
+    add_string ("imem-codec", NULL, CODEC_TEXT, CODEC_LONGTEXT, true)
         change_private()
         change_safe()
-    add_string( "imem-language", NULL, NULL, LANGUAGE_TEXT, LANGUAGE_LONGTEXT, false)
+    add_string( "imem-language", NULL, LANGUAGE_TEXT, LANGUAGE_LONGTEXT, false)
         change_private()
         change_safe()
 
-    add_integer("imem-samplerate", 0, NULL, SAMPLERATE_TEXT, SAMPLERATE_LONGTEXT, true)
+    add_integer("imem-samplerate", 0, SAMPLERATE_TEXT, SAMPLERATE_LONGTEXT, true)
         change_private()
         change_safe()
-    add_integer("imem-channels", 0, NULL, CHANNELS_TEXT, CHANNELS_LONGTEXT, true)
+    add_integer("imem-channels", 0, CHANNELS_TEXT, CHANNELS_LONGTEXT, true)
         change_private()
         change_safe()
 
-    add_integer("imem-width", 0, NULL, WIDTH_TEXT, WIDTH_LONGTEXT, true)
+    add_integer("imem-width", 0, WIDTH_TEXT, WIDTH_LONGTEXT, true)
         change_private()
         change_safe()
-    add_integer("imem-height", 0, NULL, HEIGHT_TEXT, HEIGHT_LONGTEXT, true)
+    add_integer("imem-height", 0, HEIGHT_TEXT, HEIGHT_LONGTEXT, true)
         change_private()
         change_safe()
-    add_string ("imem-dar", NULL, NULL, DAR_TEXT, DAR_LONGTEXT, true)
+    add_string ("imem-dar", NULL, DAR_TEXT, DAR_LONGTEXT, true)
         change_private()
         change_safe()
-    add_string ("imem-fps", NULL, NULL, FPS_TEXT, FPS_LONGTEXT, true)
+    add_string ("imem-fps", NULL, FPS_TEXT, FPS_LONGTEXT, true)
+        change_private()
+        change_safe()
+
+    add_integer ("imem-size", 0, SIZE_TEXT, SIZE_LONGTEXT, true)
         change_private()
         change_safe()
 
@@ -216,8 +217,6 @@ typedef struct {
 
     es_out_id_t  *es;
 
-    mtime_t      pts_delay;
-
     mtime_t      dts;
 
     mtime_t      deadline;
@@ -280,7 +279,6 @@ static int OpenCommon(vlc_object_t *object, imem_sys_t **sys_ptr, const char *ps
             sys->source.cookie ? sys->source.cookie : "(null)");
 
     /* */
-    sys->pts_delay = var_InheritInteger(object, "imem-caching") * INT64_C(1000);
     sys->dts       = 0;
     sys->deadline  = VLC_TS_INVALID;
 
@@ -311,6 +309,7 @@ static int OpenAccess(vlc_object_t *object)
     access->pf_block   = Block;
     access->pf_seek    = NULL;
     access->p_sys      = (access_sys_t*)sys;
+    access->info.i_size = var_InheritInteger(object, "imem-size");
 
     return VLC_SUCCESS;
 }
@@ -330,8 +329,7 @@ static void CloseAccess(vlc_object_t *object)
  */
 static int ControlAccess(access_t *access, int i_query, va_list args)
 {
-    imem_sys_t *sys = (imem_sys_t*)access->p_sys;
-
+    (void) access;
     switch (i_query)
     {
     case ACCESS_CAN_SEEK:
@@ -348,7 +346,7 @@ static int ControlAccess(access_t *access, int i_query, va_list args)
     }
     case ACCESS_GET_PTS_DELAY: {
         int64_t *delay = va_arg(args, int64_t *);
-        *delay = sys->pts_delay;
+        *delay = DEFAULT_PTS_DELAY; /* FIXME? */
         return VLC_SUCCESS;
     }
     case ACCESS_SET_PAUSE_STATE:
@@ -524,7 +522,7 @@ static int ControlDemux(demux_t *demux, int i_query, va_list args)
 
     case DEMUX_GET_PTS_DELAY: {
         int64_t *delay = va_arg(args, int64_t *);
-        *delay = sys->pts_delay;
+        *delay = DEFAULT_PTS_DELAY; /* FIXME? */
         return VLC_SUCCESS;
     }
     case DEMUX_GET_POSITION: {
@@ -619,7 +617,6 @@ static void ParseMRL(vlc_object_t *object, const char *psz_path)
         const char *name;
         int        type;
     } options[] = {
-        { "caching",    VLC_VAR_INTEGER },
         { "id",         VLC_VAR_INTEGER },
         { "group",      VLC_VAR_INTEGER },
         { "cat",        VLC_VAR_INTEGER },