#include "demux.hpp"
+#include <assert.h>
+#include <vlc_memory.h>
+
extern "C" {
#include "../vobsub.h"
}
if( i_index >= i_index_max )
{
i_index_max += 1024;
- p_indexes = (mkv_index_t*)realloc( p_indexes, sizeof( mkv_index_t ) * i_index_max );
+ p_indexes = (mkv_index_t*)realloc_or_free( p_indexes,
+ sizeof( mkv_index_t ) * i_index_max );
+ assert( p_indexes );
}
#undef idx
}
if( i_index >= i_index_max )
{
i_index_max += 1024;
- p_indexes = (mkv_index_t*)realloc( p_indexes, sizeof( mkv_index_t ) * i_index_max );
+ p_indexes = (mkv_index_t*)realloc_or_free( p_indexes,
+ sizeof( mkv_index_t ) * i_index_max );
+ assert( p_indexes );
}
#undef idx
}
if( tracks[i_track]->fmt.i_extra > 0 )
{
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->fmt.i_extra );
+ assert( tracks[i_track]->fmt.p_extra );
memcpy( tracks[i_track]->fmt.p_extra, &p_bih[1], tracks[i_track]->fmt.i_extra );
}
}
if( i_size1 > 0 && i_size2 > 0 && i_size3 > 0 ) {
tracks[i_track]->fmt.p_extra =
malloc( tracks[i_track]->fmt.i_extra );
+ assert( tracks[i_track]->fmt.p_extra );
uint8_t *p_out = (uint8_t*)tracks[i_track]->fmt.p_extra;
*p_out++ = (i_size1>>8) & 0xFF;
*p_out++ = i_size1 & 0xFF;
}
else
{
- msg_Err( &sys.demuxer, "inconsistant theora extradata" );
+ msg_Err( &sys.demuxer, "inconsistent theora extradata" );
}
}
else {
tracks[i_track]->fmt.i_codec = VLC_CODEC_MP4V;
tracks[i_track]->fmt.i_extra = tracks[i_track]->i_extra_data;
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->i_extra_data );
+ assert( tracks[i_track]->fmt.p_extra );
memcpy( tracks[i_track]->fmt.p_extra,tracks[i_track]->p_extra_data, tracks[i_track]->i_extra_data );
}
}
else if( !strcmp( tracks[i_track]->psz_codec, "V_QUICKTIME" ) )
{
MP4_Box_t *p_box = (MP4_Box_t*)malloc( sizeof( MP4_Box_t ) );
+ assert( p_box );
stream_t *p_mp4_stream = stream_MemoryNew( VLC_OBJECT(&sys.demuxer),
tracks[i_track]->p_extra_data,
tracks[i_track]->i_extra_data,
tracks[i_track]->fmt.video.i_height = p_box->data.p_sample_vide->i_height;
tracks[i_track]->fmt.i_extra = p_box->data.p_sample_vide->i_qt_image_description;
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->fmt.i_extra );
+ assert( tracks[i_track]->fmt.p_extra );
memcpy( tracks[i_track]->fmt.p_extra, p_box->data.p_sample_vide->p_qt_image_description, tracks[i_track]->fmt.i_extra );
MP4_FreeBox_sample_vide( p_box );
}
if( tracks[i_track]->fmt.i_extra > 0 )
{
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->fmt.i_extra );
+ assert( tracks[i_track]->fmt.p_extra );
memcpy( tracks[i_track]->fmt.p_extra, &p_wf[1], tracks[i_track]->fmt.i_extra );
}
}
tracks[i_track]->fmt.i_codec = VLC_CODEC_FLAC;
tracks[i_track]->fmt.i_extra = tracks[i_track]->i_extra_data;
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->i_extra_data );
+ assert( tracks[i_track]->fmt.p_extra );
memcpy( tracks[i_track]->fmt.p_extra,tracks[i_track]->p_extra_data, tracks[i_track]->i_extra_data );
}
else if( !strcmp( tracks[i_track]->psz_codec, "A_VORBIS" ) )
tracks[i_track]->fmt.i_extra = 3 * 2 + i_size[0] + i_size[1] + i_size[2];
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->fmt.i_extra );
+ assert( tracks[i_track]->fmt.p_extra );
p_extra = (uint8_t *)tracks[i_track]->fmt.p_extra; i_extra = 0;
for( i = 0; i < 3; i++ )
{
tracks[i_track]->fmt.i_extra = sbr ? 5 : 2;
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->fmt.i_extra );
+ assert( tracks[i_track]->fmt.p_extra );
((uint8_t*)tracks[i_track]->fmt.p_extra)[0] = ((i_profile + 1) << 3) | ((i_srate&0xe) >> 1);
((uint8_t*)tracks[i_track]->fmt.p_extra)[1] = ((i_srate & 0x1) << 7) | (tracks[i_track]->fmt.audio.i_channels << 3);
if (sbr != 0)
tracks[i_track]->fmt.i_codec = VLC_CODEC_MP4A;
tracks[i_track]->fmt.i_extra = tracks[i_track]->i_extra_data;
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->i_extra_data );
+ assert( tracks[i_track]->fmt.p_extra );
memcpy( tracks[i_track]->fmt.p_extra, tracks[i_track]->p_extra_data, tracks[i_track]->i_extra_data );
}
else if( !strcmp( tracks[i_track]->psz_codec, "A_WAVPACK4" ) )
tracks[i_track]->fmt.i_codec = VLC_CODEC_WAVPACK;
tracks[i_track]->fmt.i_extra = tracks[i_track]->i_extra_data;
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->i_extra_data );
+ assert( tracks[i_track]->fmt.p_extra );
memcpy( tracks[i_track]->fmt.p_extra, tracks[i_track]->p_extra_data, tracks[i_track]->i_extra_data );
}
else if( !strcmp( tracks[i_track]->psz_codec, "A_TTA1" ) )
{
- tracks[i_track]->fmt.i_codec = VLC_CODEC_TTA;
- tracks[i_track]->fmt.i_extra = tracks[i_track]->i_extra_data;
- tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->i_extra_data );
- memcpy( tracks[i_track]->fmt.p_extra, tracks[i_track]->p_extra_data, tracks[i_track]->i_extra_data );
+ p_fmt->i_codec = VLC_CODEC_TTA;
+ p_fmt->i_extra = p_tk->i_extra_data;
+ if( p_fmt->i_extra > 0 )
+ {
+ p_fmt->p_extra = malloc( p_tk->i_extra_data );
+ assert( p_fmt->p_extra );
+ memcpy( p_fmt->p_extra, p_tk->p_extra_data, p_tk->i_extra_data );
+ }
+ else
+ {
+ p_fmt->i_extra = 30;
+ p_fmt->p_extra = malloc( p_fmt->i_extra );
+ assert( p_fmt->p_extra );
+ uint8_t *p_extra = (uint8_t*)p_fmt->p_extra;
+ memcpy( &p_extra[ 0], "TTA1", 4 );
+ SetWLE( &p_extra[ 4], 1 );
+ SetWLE( &p_extra[ 6], p_fmt->audio.i_channels );
+ SetWLE( &p_extra[ 8], p_fmt->audio.i_bitspersample );
+ SetDWLE( &p_extra[10], p_fmt->audio.i_rate );
+ SetDWLE( &p_extra[14], 0xffffffff );
+ memset( &p_extra[18], 0, 30 - 18 );
+ }
}
else if( !strcmp( tracks[i_track]->psz_codec, "A_PCM/INT/BIG" ) ||
!strcmp( tracks[i_track]->psz_codec, "A_PCM/INT/LIT" ) ||
tracks[i_track]->fmt.i_extra = 1 + num_headers * 2 + size_so_far + pi_size[num_headers-1];
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->fmt.i_extra );
+ assert( tracks[i_track]->fmt.p_extra );
p_extra = (uint8_t *)tracks[i_track]->fmt.p_extra;
i_extra = 0;
{
tracks[i_track]->fmt.i_extra = tracks[i_track]->i_extra_data;
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->i_extra_data );
+ assert( tracks[i_track]->fmt.p_extra );
memcpy( tracks[i_track]->fmt.p_extra, tracks[i_track]->p_extra_data, tracks[i_track]->i_extra_data );
}
}
{
tracks[i_track]->fmt.i_extra = tracks[i_track]->i_extra_data;
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->i_extra_data );
+ assert( tracks[i_track]->fmt.p_extra );
memcpy( tracks[i_track]->fmt.p_extra, tracks[i_track]->p_extra_data, tracks[i_track]->i_extra_data );
}
}