Esempio n. 1
0
File: vc1.c Progetto: jeeb/L-SMASH
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;
}
Esempio n. 2
0
int vc1_setup_parser
(
    vc1_info_t                *info,
    lsmash_stream_buffers_t   *sb,
    int                        parse_only,
    lsmash_stream_buffers_type type,
    void                      *stream
)
{
    assert( sb );
    if( !info )
        return -1;
    memset( info, 0, sizeof(vc1_info_t) );
    vc1_stream_buffer_t *hb = &info->buffer;
    hb->sb = sb;
    lsmash_stream_buffers_setup( sb, type, stream );
    sb->bank = lsmash_create_multiple_buffers( parse_only ? 2 : 4, VC1_DEFAULT_BUFFER_SIZE );
    if( !sb->bank )
        return -1;
    sb->start = lsmash_withdraw_buffer( sb->bank, 1 );
    hb->rbdu  = lsmash_withdraw_buffer( sb->bank, 2 );
    sb->pos   = sb->start;
    sb->end   = sb->start;
    if( !parse_only )
    {
        info->access_unit.data            = lsmash_withdraw_buffer( sb->bank, 3 );
        info->access_unit.incomplete_data = lsmash_withdraw_buffer( sb->bank, 4 );
    }
    info->bits = lsmash_bits_adhoc_create();
    if( !info->bits )
    {
        lsmash_stream_buffers_cleanup( sb );
        return -1;
    }
    return 0;
}