int vc1_setup_parser( vc1_info_t *info, int parse_only, uint32_t (*update)( vc1_info_t *, void *, uint32_t ) ) { if( !info ) return -1; memset( info, 0, sizeof(vc1_info_t) ); vc1_stream_buffer_t *buffer = &info->buffer; buffer->bank = lsmash_create_multiple_buffers( parse_only ? 2 : 4, VC1_DEFAULT_BUFFER_SIZE ); if( !buffer->bank ) return -1; buffer->start = lsmash_withdraw_buffer( buffer->bank, 1 ); buffer->rbdu = lsmash_withdraw_buffer( buffer->bank, 2 ); buffer->pos = buffer->start; buffer->end = buffer->start; buffer->update = update; if( !parse_only ) { info->access_unit.data = lsmash_withdraw_buffer( buffer->bank, 3 ); info->access_unit.incomplete_data = lsmash_withdraw_buffer( buffer->bank, 4 ); } info->bits = lsmash_bits_adhoc_create(); if( !info->bits ) { lsmash_destroy_multiple_buffers( info->buffer.bank ); info->buffer.bank = NULL; return -1; } return 0; }
void vc1_cleanup_parser( vc1_info_t *info ) { if( !info ) return; lsmash_destroy_vc1_headers( &info->dvc1_param ); lsmash_destroy_multiple_buffers( info->buffer.bank ); lsmash_bits_adhoc_cleanup( info->bits ); }
static void remove_dts_importer( dts_importer_t *dts_imp ) { if( !dts_imp ) return; lsmash_destroy_multiple_buffers( dts_imp->au_buffers ); lsmash_bits_cleanup( dts_imp->info.bits ); lsmash_free( dts_imp ); }