@ -1351,45 +1351,45 @@ static int context_init(H264Context *h)
h - > ref_cache [ 1 ] [ scan8 [ 13 ] + 1 ] = PART_NOT_AVAILABLE ;
if ( CONFIG_ERROR_RESILIENCE ) {
/* init ER */
er - > avctx = h - > avctx ;
er - > dsp = & h - > dsp ;
er - > decode_mb = h264_er_decode_mb ;
er - > opaque = h ;
er - > quarter_sample = 1 ;
er - > mb_num = h - > mb_num ;
er - > mb_width = h - > mb_width ;
er - > mb_height = h - > mb_height ;
er - > mb_stride = h - > mb_stride ;
er - > b8_stride = h - > mb_width * 2 + 1 ;
FF_ALLOCZ_OR_GOTO ( h - > avctx , er - > mb_index2xy , ( h - > mb_num + 1 ) * sizeof ( int ) ,
fail ) ; // error ressilience code looks cleaner with this
for ( y = 0 ; y < h - > mb_height ; y + + )
for ( x = 0 ; x < h - > mb_width ; x + + )
er - > mb_index2xy [ x + y * h - > mb_width ] = x + y * h - > mb_stride ;
er - > mb_index2xy [ h - > mb_height * h - > mb_width ] = ( h - > mb_height - 1 ) *
h - > mb_stride + h - > mb_width ;
FF_ALLOCZ_OR_GOTO ( h - > avctx , er - > error_status_table ,
mb_array_size * sizeof ( uint8_t ) , fail ) ;
FF_ALLOC_OR_GOTO ( h - > avctx , er - > mbintra_table , mb_array_size , fail ) ;
memset ( er - > mbintra_table , 1 , mb_array_size ) ;
FF_ALLOCZ_OR_GOTO ( h - > avctx , er - > mbskip_table , mb_array_size + 2 , fail ) ;
FF_ALLOC_OR_GOTO ( h - > avctx , er - > er_temp_buffer , h - > mb_height * h - > mb_stride ,
fail ) ;
FF_ALLOCZ_OR_GOTO ( h - > avctx , h - > dc_val_base , yc_size * sizeof ( int16_t ) , fail ) ;
er - > dc_val [ 0 ] = h - > dc_val_base + h - > mb_width * 2 + 2 ;
er - > dc_val [ 1 ] = h - > dc_val_base + y_size + h - > mb_stride + 1 ;
er - > dc_val [ 2 ] = er - > dc_val [ 1 ] + c_size ;
for ( i = 0 ; i < yc_size ; i + + )
h - > dc_val_base [ i ] = 1024 ;
/* init ER */
er - > avctx = h - > avctx ;
er - > dsp = & h - > dsp ;
er - > decode_mb = h264_er_decode_mb ;
er - > opaque = h ;
er - > quarter_sample = 1 ;
er - > mb_num = h - > mb_num ;
er - > mb_width = h - > mb_width ;
er - > mb_height = h - > mb_height ;
er - > mb_stride = h - > mb_stride ;
er - > b8_stride = h - > mb_width * 2 + 1 ;
FF_ALLOCZ_OR_GOTO ( h - > avctx , er - > mb_index2xy , ( h - > mb_num + 1 ) * sizeof ( int ) ,
fail ) ; // error ressilience code looks cleaner with this
for ( y = 0 ; y < h - > mb_height ; y + + )
for ( x = 0 ; x < h - > mb_width ; x + + )
er - > mb_index2xy [ x + y * h - > mb_width ] = x + y * h - > mb_stride ;
er - > mb_index2xy [ h - > mb_height * h - > mb_width ] = ( h - > mb_height - 1 ) *
h - > mb_stride + h - > mb_width ;
FF_ALLOCZ_OR_GOTO ( h - > avctx , er - > error_status_table ,
mb_array_size * sizeof ( uint8_t ) , fail ) ;
FF_ALLOC_OR_GOTO ( h - > avctx , er - > mbintra_table , mb_array_size , fail ) ;
memset ( er - > mbintra_table , 1 , mb_array_size ) ;
FF_ALLOCZ_OR_GOTO ( h - > avctx , er - > mbskip_table , mb_array_size + 2 , fail ) ;
FF_ALLOC_OR_GOTO ( h - > avctx , er - > er_temp_buffer , h - > mb_height * h - > mb_stride ,
fail ) ;
FF_ALLOCZ_OR_GOTO ( h - > avctx , h - > dc_val_base , yc_size * sizeof ( int16_t ) , fail ) ;
er - > dc_val [ 0 ] = h - > dc_val_base + h - > mb_width * 2 + 2 ;
er - > dc_val [ 1 ] = h - > dc_val_base + y_size + h - > mb_stride + 1 ;
er - > dc_val [ 2 ] = er - > dc_val [ 1 ] + c_size ;
for ( i = 0 ; i < yc_size ; i + + )
h - > dc_val_base [ i ] = 1024 ;
}
return 0 ;