]> git.sesse.net Git - vlc/blobdiff - modules/demux/rawvid.c
Fix a compilation warning.
[vlc] / modules / demux / rawvid.c
index 7186b984d6e9bacc0af74e4f4f612836e5dc842b..21bdb4fde15cdf5bf6dd3652459b95a4dfa230f9 100644 (file)
  * Preamble
  *****************************************************************************/
 
-#include <vlc/vlc.h>
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <vlc_common.h>
+#include <vlc_plugin.h>
 #include <vlc_demux.h>
 #include <vlc_vout.h>                                     /* vout_InitFormat */
 
@@ -57,19 +62,19 @@ static void Close( vlc_object_t * );
 
 vlc_module_begin();
     set_shortname( "Raw Video" );
-    set_description( _("Raw video demuxer") );
-    set_capability( "demux2", 3 );
+    set_description( N_("Raw video demuxer") );
+    set_capability( "demux", 10 );
     set_category( CAT_INPUT );
     set_subcategory( SUBCAT_INPUT_DEMUX );
     set_callbacks( Open, Close );
     add_shortcut( "rawvideo" );
-    add_float( "rawvid-fps", 0, 0, FPS_TEXT, FPS_LONGTEXT, VLC_FALSE );
+    add_float( "rawvid-fps", 0, 0, FPS_TEXT, FPS_LONGTEXT, false );
     add_integer( "rawvid-width", 0, 0, WIDTH_TEXT, WIDTH_LONGTEXT, 0 );
     add_integer( "rawvid-height", 0, 0, HEIGHT_TEXT, HEIGHT_LONGTEXT, 0 );
     add_string( "rawvid-chroma", NULL, NULL, CHROMA_TEXT, CHROMA_LONGTEXT,
-                VLC_TRUE );
+                true );
     add_string( "rawvid-aspect-ratio", NULL, NULL,
-                ASPECT_RATIO_TEXT, ASPECT_RATIO_LONGTEXT, VLC_TRUE );
+                ASPECT_RATIO_TEXT, ASPECT_RATIO_LONGTEXT, true );
 vlc_module_end();
 
 /*****************************************************************************
@@ -85,7 +90,7 @@ struct demux_sys_t
 
     mtime_t i_pcr;
 
-    vlc_bool_t b_y4m;
+    bool b_y4m;
 };
 
 /*****************************************************************************
@@ -130,16 +135,16 @@ static int Open( vlc_object_t * p_this )
     unsigned int i_aspect = 0;
     struct preset_t *p_preset = NULL;
     const uint8_t *p_peek;
-    vlc_bool_t b_valid = VLC_FALSE;
-    vlc_bool_t b_y4m = VLC_FALSE;
+    bool b_valid = false;
+    bool b_y4m = false;
 
     if( stream_Peek( p_demux->s, &p_peek, 9 ) == 9 )
     {
         /* http://wiki.multimedia.cx/index.php?title=YUV4MPEG2 */
         if( !strncmp( (char *)p_peek, "YUV4MPEG2", 9 ) )
         {
-            b_valid = VLC_TRUE;
-            b_y4m = VLC_TRUE;
+            b_valid = true;
+            b_y4m = true;
         }
     }
 
@@ -150,19 +155,20 @@ static int Open( vlc_object_t * p_this )
         for( p_preset = p_presets; *p_preset->psz_ext; p_preset++ )
             if( !strcasecmp( psz_ext, p_preset->psz_ext ) )
             {
-                b_valid = VLC_TRUE;
+                b_valid = true;
                 break;
             }
     }
-    if( ( !b_valid ) && strcmp(p_demux->psz_demux, "rawvid") )
-    {
+    if( !b_valid && !p_demux->b_force )
         return VLC_EGENERIC;
-    }
 
     /* Set p_input field */
     p_demux->pf_demux   = Demux;
     p_demux->pf_control = Control;
     p_demux->p_sys      = p_sys = malloc( sizeof( demux_sys_t ) );
+    if( !p_sys )
+        return VLC_ENOMEM;
+
     p_sys->i_pcr = 1;
 
     p_sys->b_y4m = b_y4m;
@@ -176,19 +182,20 @@ static int Open( vlc_object_t * p_this )
     {
         char *psz;
         char *buf;
-        int a, b;
+        int a = 1;
+        int b = 1;
         psz = stream_ReadLine( p_demux->s );
 
         /* TODO: handle interlacing */
 
 #define READ_FRAC( key, num, den ) \
-        buf = strchr( psz+9, key );\
+        buf = strstr( psz+9, key );\
         if( buf )\
         {\
-            char *end = strchr( buf, ' ' );\
+            char *end = strchr( buf+1, ' ' );\
             char *sep;\
             if( end ) *end = '\0';\
-            sep = strchr( buf, ':' );\
+            sep = strchr( buf+1, ':' );\
             if( sep )\
             {\
                 *sep = '\0';\
@@ -198,43 +205,47 @@ static int Open( vlc_object_t * p_this )
             {\
                 den = 1;\
             }\
-            num = atoi( buf+1 );\
+            num = atoi( buf+2 );\
             if( sep ) *sep = ':';\
             if( end ) *end = ' ';\
         }
-        READ_FRAC( 'W', i_width, a )
-        READ_FRAC( 'H', i_height, a )
-        READ_FRAC( 'F', a, b )
+        READ_FRAC( " W", i_width, a )
+        READ_FRAC( " H", i_height, a )
+        READ_FRAC( " F", a, b )
         p_sys->f_fps = (double)a/(double)b;
-        READ_FRAC( 'A', a, b )
+        READ_FRAC( " A", a, b )
         if( b != 0 ) i_aspect = a * VOUT_ASPECT_FACTOR / b;
 
-        buf = strchr( psz+9, 'C' );
+        buf = strstr( psz+9, " C" );
         if( buf )
         {
-            char *end = strchr( buf, ' ' );
+            char *end = strchr( buf+1, ' ' );
             if( end ) *end = '\0';
-            buf++;
-            if( !strncmp( buf, "C420jpeg", 8 ) )
+            buf+=2;
+            if( !strncmp( buf, "420jpeg", 7 ) )
             {
                 psz_chroma = strdup( "I420" );
             }
-            else if( !strncmp( buf, "C420paldv", 9 ) )
+            else if( !strncmp( buf, "420paldv", 8 ) )
             {
                 psz_chroma = strdup( "I420" );
             }
-            else if( !strncmp( buf, "C420", 4 ) )
+            else if( !strncmp( buf, "420", 3 ) )
             {
                 psz_chroma = strdup( "I420" );
             }
-            else if( !strncmp( buf, "C422", 4 ) )
+            else if( !strncmp( buf, "422", 3 ) )
             {
                 psz_chroma = strdup( "I422" );
             }
-            else if( !strncmp( buf, "C444", 4 ) )
+            else if( !strncmp( buf, "444", 3 ) )
             {
                 psz_chroma = strdup( "I444" );
             }
+            else if( !strncmp( buf, "mono", 4 ) )
+            {
+                psz_chroma = strdup( "GREY" );
+            }
             else
             {
                 msg_Warn( p_demux, "Unknown YUV4MPEG2 chroma type \"%s\"",
@@ -371,7 +382,7 @@ static int Demux( demux_t *p_demux )
     p_block->i_dts = p_block->i_pts = p_sys->i_pcr;
     es_out_Send( p_demux->out, p_sys->p_es_video, p_block );
 
-    p_sys->i_pcr += ( I64C(1000000) / p_sys->f_fps );
+    p_sys->i_pcr += ( INT64_C(1000000) / p_sys->f_fps );
 
     return 1;
 }
@@ -384,7 +395,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
     demux_sys_t *p_sys  = p_demux->p_sys;
 
     /* XXX: DEMUX_SET_TIME is precise here */
-    return demux2_vaControlHelper( p_demux->s, 0, -1,
+    return demux_vaControlHelper( p_demux->s, 0, -1,
                                    p_sys->frame_size * p_sys->f_fps * 8,
                                    p_sys->frame_size, i_query, args );
 }