]> git.sesse.net Git - vlc/blobdiff - modules/demux/nsc.c
V4L2: remove exposure control, this is for still cameras
[vlc] / modules / demux / nsc.c
index d6561d3547a749371af88a216ffb693040880988..c7b4ed6049a2bd37918080bb88a0e67764e8908f 100644 (file)
 # include "config.h"
 #endif
 
-#include <vlc/vlc.h>
+#include <vlc_common.h>
+#include <vlc_plugin.h>
 #include <vlc_demux.h>
-#include <vlc_playlist.h>
+#include <vlc_charset.h>
 
 #include <ctype.h>
 #define MAX_LINE 16024
 static int  DemuxOpen  ( vlc_object_t * );
 static void DemuxClose ( vlc_object_t * );
 
-vlc_module_begin();
-    set_description( _("Windows Media NSC metademux") );
-    set_category( CAT_INPUT );
-    set_subcategory( SUBCAT_INPUT_DEMUX );
-    set_capability( "demux2", 3 );
-    set_callbacks( DemuxOpen, DemuxClose );
-vlc_module_end();
+vlc_module_begin ()
+    set_description( N_("Windows Media NSC metademux") )
+    set_category( CAT_INPUT )
+    set_subcategory( SUBCAT_INPUT_DEMUX )
+    set_capability( "demux", 3 )
+    set_callbacks( DemuxOpen, DemuxClose )
+vlc_module_end ()
 
 static int Demux ( demux_t *p_demux );
 static int Control( demux_t *p_demux, int i_query, va_list args );
@@ -76,21 +77,21 @@ static int load_byte( unsigned char encoding_type,
 
     if( encoding_type == 1 )
     {
-        if( isxdigit( **input ) == 0 )
+        if( isxdigit( (unsigned char)**input ) == 0 )
             return -1;
 
-        if( isdigit( **input ) == 0 )
-            *output = (toupper( **input ) - 7) * 16;
+        if( isdigit( (unsigned char)**input ) == 0 )
+            *output = (toupper( (unsigned char)**input ) - 7) * 16;
         else
             *output = **input * 16;
 
         (*input)++;
 
-        if( isxdigit( **input ) == 0 )
+        if( isxdigit( (unsigned char)**input ) == 0 )
             return -1;
 
-        if( isdigit( **input ) == 0 )
-            *output |= toupper( **input ) - 0x37;
+        if( isdigit( (unsigned char)**input ) == 0 )
+            *output |= toupper( (unsigned char)**input ) - 0x37;
         else
             *output |= **input - 0x30;
 
@@ -147,13 +148,8 @@ static char *nscdec( vlc_object_t *p_demux, char* p_encoded )
     unsigned int length;
     unsigned char encoding_type;
 
-    vlc_iconv_t conv;
-    size_t buf16_size;
     unsigned char *buf16;
-    const char *p_buf16;
-    size_t buf8_size;
     char *buf8;
-    char *p_buf8;
 
     char *p_input = p_encoded;
 
@@ -210,13 +206,9 @@ static char *nscdec( vlc_object_t *p_demux, char* p_encoded )
         return NULL;
     }
 
-    buf16_size = length;
-    buf16 = malloc( buf16_size );
+    buf16 = malloc( length );
     if( buf16 == NULL )
-    {
-        msg_Err( p_demux, "out of memory" );
         return NULL;
-    }
 
     for( i = 0; i < length; i++ )
     {
@@ -228,47 +220,20 @@ static char *nscdec( vlc_object_t *p_demux, char* p_encoded )
         }
     }
 
-    buf8_size = length;
-    buf8 = malloc( buf8_size + 1 );
+    buf8 = FromCharset( "UTF-16LE", buf16, length );
+    free( buf16 );
     if( buf8 == NULL )
-    {
-        msg_Err( p_demux, "out of memory" );
-        free( buf16 );
-        return NULL;
-    }
-
-    conv = vlc_iconv_open( "UTF-8", "UTF-16LE" );
-    if( conv == (vlc_iconv_t)(-1) )
-    {
-        msg_Err( p_demux, "iconv_open failed" );
-        free( buf16 );
-        free( buf8 );
-        return NULL;
-    }
-
-    p_buf8 = buf8;
-    p_buf16 = (const char *)buf16;
-
-    if( vlc_iconv( conv, &p_buf16, &buf16_size, &p_buf8, &buf8_size ) == (size_t)(-1) )
     {
         msg_Err( p_demux, "iconv failed" );
         return NULL;
     }
-    else
-    {
-        buf8[ length - buf8_size ] = '\0';
-    }
-
-    vlc_iconv_close( conv );
-
-    free( buf16 );
     return buf8;
 }
 
 static int DemuxOpen( vlc_object_t * p_this )
 {
     demux_t *p_demux = (demux_t *)p_this;
-    const byte_t *p_peek;
+    const uint8_t *p_peek;
     int i_size;
 
     /* Lets check the content to see if this is a NSC file */
@@ -300,6 +265,7 @@ static int DemuxOpen( vlc_object_t * p_this )
  *****************************************************************************/
 static void DemuxClose( vlc_object_t *p_this )
 {
+    VLC_UNUSED( p_this );
     return;
 }
 
@@ -366,5 +332,7 @@ static int Demux ( demux_t *p_demux )
 
 static int Control( demux_t *p_demux, int i_query, va_list args )
 {
+    VLC_UNUSED( p_demux ); VLC_UNUSED( i_query ); VLC_UNUSED( args );
+    //FIXME
     return VLC_EGENERIC;
 }