Changeset 24f83b8b4ff5e22df00a045fcee42c0a16ae1384

Show
Ignore:
Timestamp:
27/08/04 22:44:39 (4 years ago)
Author:
Gildas Bazin <gbazin@videolan.org>
git-committer:
Gildas Bazin <gbazin@videolan.org> 1093639479 +0000
git-parent:

[1d08e9ca23cdc16704c7d7744ae3e153e0414694]

git-author:
Gildas Bazin <gbazin@videolan.org> 1093639479 +0000
Message:

* modules/demux/asf/asf.c: ignore the ES extra data for mpeg audio.
* modules/mux/asf.c: bring the tracks back to a 0 based offset.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • modules/demux/asf/asf.c

    r1954049 r24f83b8  
    648648            p_sp->i_type_specific_data_length >= sizeof( WAVEFORMATEX ) - 2 ) 
    649649        { 
    650             es_format_t  fmt; 
    651             uint8_t      *p_data = p_sp->p_type_specific_data; 
     650            es_format_t fmt; 
     651            uint8_t *p_data = p_sp->p_type_specific_data; 
     652            int i_format; 
    652653 
    653654            es_format_Init( &fmt, AUDIO_ES, 0 ); 
    654             wf_tag_to_fourcc( GetWLE( &p_data[0] ), &fmt.i_codec, NULL ); 
     655            i_format = GetWLE( &p_data[0] ); 
     656            wf_tag_to_fourcc( i_format, &fmt.i_codec, NULL ); 
    655657            fmt.audio.i_channels        = GetWLE(  &p_data[2] ); 
    656658            fmt.audio.i_rate      = GetDWLE( &p_data[4] ); 
     
    659661            fmt.audio.i_bitspersample   = GetWLE(  &p_data[14] ); 
    660662 
    661             if( p_sp->i_type_specific_data_length > sizeof( WAVEFORMATEX ) ) 
     663            if( p_sp->i_type_specific_data_length > sizeof( WAVEFORMATEX ) && 
     664                i_format != WAVE_FORMAT_MPEGLAYER3 && 
     665                i_format != WAVE_FORMAT_MPEG ) 
    662666            { 
    663667                fmt.i_extra = __MIN( GetWLE( &p_data[16] ), 
    664                                      p_sp->i_type_specific_data_length - sizeof( WAVEFORMATEX ) ); 
     668                                     p_sp->i_type_specific_data_length - 
     669                                     sizeof( WAVEFORMATEX ) ); 
    665670                fmt.p_extra = malloc( fmt.i_extra ); 
    666                 memcpy( fmt.p_extra, &p_data[sizeof( WAVEFORMATEX )], fmt.i_extra ); 
     671                memcpy( fmt.p_extra, &p_data[sizeof( WAVEFORMATEX )], 
     672                        fmt.i_extra ); 
    667673            } 
    668674 
  • modules/mux/asf.c

    r1d08e9c r24f83b8  
    3434typedef GUID guid_t; 
    3535 
     36#define MAX_ASF_TRACKS 128 
     37 
    3638/***************************************************************************** 
    3739 * Module descriptor 
     
    117119 
    118120    int             i_track; 
    119     asf_track_t     track[128]; 
     121    asf_track_t     track[MAX_ASF_TRACKS]; 
    120122 
    121123    vlc_bool_t      b_write_header; 
     
    195197 
    196198    p_sys->b_write_header = VLC_TRUE; 
    197     p_sys->i_track = 1
     199    p_sys->i_track = 0
    198200    p_sys->i_packet_size = 4096; 
    199201    p_sys->i_packet_count= 0; 
     
    263265    } 
    264266 
    265     for( i = 1; i < p_sys->i_track; i++ ) 
     267    for( i = 0; i < p_sys->i_track; i++ ) 
    266268    { 
    267269        free( p_sys->track[i].p_extra ); 
     
    315317 
    316318    msg_Dbg( p_mux, "adding input" ); 
    317     if( p_sys->i_track > 127
     319    if( p_sys->i_track >= MAX_ASF_TRACKS
    318320    { 
    319321        msg_Dbg( p_mux, "cannot add this track (too much track)" ); 
     
    786788    i_size = 30 + 104 + 46; 
    787789    i_ci_size = 44; 
    788     for( i = 1; i < p_sys->i_track; i++ ) 
     790    for( i = 0; i < p_sys->i_track; i++ ) 
    789791    { 
    790792        i_size += 78 + p_sys->track[i].i_extra; 
     
    827829    bo_add_guid ( &bo, &asf_object_header_guid ); 
    828830    bo_addle_u64( &bo, i_size ); 
    829     bo_addle_u32( &bo, 2 + p_sys->i_track - 1 ); 
     831    bo_addle_u32( &bo, 2 + p_sys->i_track ); 
    830832    bo_add_u8   ( &bo, 1 ); 
    831833    bo_add_u8   ( &bo, 2 ); 
     
    875877 
    876878    /* stream properties */ 
    877     for( i = 1; i < p_sys->i_track; i++ ) 
     879    for( i = 0; i < p_sys->i_track; i++ ) 
    878880    { 
    879881        tk = &p_sys->track[i]; 
     
    903905    bo_addle_u64( &bo, i_ci_size ); 
    904906    bo_add_guid ( &bo, &asf_object_codec_comment_reserved_guid ); 
    905     bo_addle_u32( &bo, p_sys->i_track - 1 ); 
    906     for( i = 1; i < p_sys->i_track; i++ ) 
     907    bo_addle_u32( &bo, p_sys->i_track ); 
     908    for( i = 0; i < p_sys->i_track; i++ ) 
    907909    { 
    908910        tk = &p_sys->track[i];