X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fdemux%2Fnsc.c;h=da1f9f6bf7cdc79a1b90494f219a3be0fd7f23ab;hb=dacabfca3e9e8df3e06edf321994eecf32648787;hp=0a46759e793b39815d13a320b8e84052071537d0;hpb=13ae40b0efc4f1b1ce205d9a057537047fcab3f4;p=vlc diff --git a/modules/demux/nsc.c b/modules/demux/nsc.c index 0a46759e79..da1f9f6bf7 100644 --- a/modules/demux/nsc.c +++ b/modules/demux/nsc.c @@ -29,10 +29,10 @@ # include "config.h" #endif -#include +#include #include #include -#include +#include #include #define MAX_LINE 16024 @@ -43,13 +43,13 @@ static int DemuxOpen ( vlc_object_t * ); static void DemuxClose ( vlc_object_t * ); -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(); +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 ); @@ -148,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; @@ -211,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++ ) { @@ -229,40 +220,13 @@ 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; } @@ -301,6 +265,7 @@ static int DemuxOpen( vlc_object_t * p_this ) *****************************************************************************/ static void DemuxClose( vlc_object_t *p_this ) { + VLC_UNUSED( p_this ); return; } @@ -367,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; }