On 2016-05-16 10:25:54 +0200, Anton Khirnov wrote:
> Currently it's done in the code that initialises the ref list for
> MBAFF, which is not a logical place for it. Move it to the function that
> parses the pred table from the bitstream, which is analogous to what is
> done for the implicit weight table as well.
> ---
>  libavcodec/h264_parse.c | 10 +++++++++-
>  libavcodec/h264_refs.c  |  7 -------
>  2 files changed, 9 insertions(+), 8 deletions(-)
> 
> diff --git a/libavcodec/h264_parse.c b/libavcodec/h264_parse.c
> index 7211c9d..052e8e4 100644
> --- a/libavcodec/h264_parse.c
> +++ b/libavcodec/h264_parse.c
> @@ -26,7 +26,7 @@ int ff_h264_pred_weight_table(GetBitContext *gb, const SPS 
> *sps,
>                                const int *ref_count, int slice_type_nos,
>                                H264PredWeightTable *pwt)
>  {
> -    int list, i;
> +    int list, i, j;
>      int luma_def, chroma_def;
>  
>      pwt->use_weight             = 0;
> @@ -78,6 +78,14 @@ 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];
> +            }

maybe pass "FRAME_MBAFF(h)" as flag to ff_h264_pred_weight_table() and 
make this block conditional. Probably won't be noticeable though 

otherwise ok

Janne
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to