@ -26,7 +26,8 @@
int ff_h264_pred_weight_table ( GetBitContext * gb , const SPS * sps ,
const int * ref_count , int slice_type_nos ,
H264PredWeightTable * pwt , void * logctx )
H264PredWeightTable * pwt ,
int picture_structure , void * logctx )
{
int list , i , j ;
int luma_def , chroma_def ;
@ -98,11 +99,13 @@ int ff_h264_pred_weight_table(GetBitContext *gb, const SPS *sps,
}
// for MBAFF
pwt - > luma_weight [ 16 + 2 * i ] [ list ] [ 0 ] = pwt - > luma_weight [ 16 + 2 * i + 1 ] [ list ] [ 0 ] = pwt - > luma_weight [ i ] [ list ] [ 0 ] ;
pwt - > luma_weight [ 16 + 2 * i ] [ list ] [ 1 ] = pwt - > luma_weight [ 16 + 2 * i + 1 ] [ list ] [ 1 ] = pwt - > luma_weight [ i ] [ list ] [ 1 ] ;
for ( j = 0 ; j < 2 ; j + + ) {
pwt - > chroma_weight [ 16 + 2 * i ] [ list ] [ j ] [ 0 ] = pwt - > chroma_weight [ 16 + 2 * i + 1 ] [ list ] [ j ] [ 0 ] = pwt - > chroma_weight [ i ] [ list ] [ j ] [ 0 ] ;
pwt - > chroma_weight [ 16 + 2 * i ] [ list ] [ j ] [ 1 ] = pwt - > chroma_weight [ 16 + 2 * i + 1 ] [ list ] [ j ] [ 1 ] = pwt - > chroma_weight [ i ] [ list ] [ j ] [ 1 ] ;
if ( picture_structure = = PICT_FRAME ) {
pwt - > luma_weight [ 16 + 2 * i ] [ list ] [ 0 ] = pwt - > luma_weight [ 16 + 2 * i + 1 ] [ list ] [ 0 ] = pwt - > luma_weight [ i ] [ list ] [ 0 ] ;
pwt - > luma_weight [ 16 + 2 * i ] [ list ] [ 1 ] = pwt - > luma_weight [ 16 + 2 * i + 1 ] [ list ] [ 1 ] = pwt - > luma_weight [ i ] [ list ] [ 1 ] ;
for ( j = 0 ; j < 2 ; j + + ) {
pwt - > chroma_weight [ 16 + 2 * i ] [ list ] [ j ] [ 0 ] = pwt - > chroma_weight [ 16 + 2 * i + 1 ] [ list ] [ j ] [ 0 ] = pwt - > chroma_weight [ i ] [ list ] [ j ] [ 0 ] ;
pwt - > chroma_weight [ 16 + 2 * i ] [ list ] [ j ] [ 1 ] = pwt - > chroma_weight [ 16 + 2 * i + 1 ] [ list ] [ j ] [ 1 ] = pwt - > chroma_weight [ i ] [ list ] [ j ] [ 1 ] ;
}
}
}
if ( slice_type_nos ! = AV_PICTURE_TYPE_B )