[FFmpeg-devel] [PATCH 2/2] avcodec/libx265: improve full range flag setting logic

mypopy at gmail.com mypopy at gmail.com
Wed Aug 18 04:35:45 EEST 2021


On Wed, Aug 18, 2021 at 5:01 AM Jan Ekström <jeebjp at gmail.com> wrote:
>
> Unlike libx264, libx265 does not have a separate "unspecified"/"auto"
> default for color range, so we do always have to specify it.
> Thus, we are required to handle the RGB case on the libavcodec
> side to enable the correct value to be written out in in case
> of RGB content with unspecified color range being received.
>
> In other words:
> 1. If the user has set color range specifically, follow that.
> 2. If the user has not set color range specifically, set full
>    range by default in case of RGB and YUVJ pixel formats.
> ---
>  libavcodec/libx265.c | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c
> index 9395120471..b5c94b64a3 100644
> --- a/libavcodec/libx265.c
> +++ b/libavcodec/libx265.c
> @@ -181,10 +181,15 @@ static av_cold int libx265_encode_init(AVCodecContext *avctx)
>
>      ctx->params->vui.bEnableVideoSignalTypePresentFlag = 1;
>
> -    ctx->params->vui.bEnableVideoFullRangeFlag = avctx->pix_fmt == AV_PIX_FMT_YUVJ420P ||
> -                                                 avctx->pix_fmt == AV_PIX_FMT_YUVJ422P ||
> -                                                 avctx->pix_fmt == AV_PIX_FMT_YUVJ444P ||
> -                                                 avctx->color_range == AVCOL_RANGE_JPEG;
> +    if (avctx->color_range != AVCOL_RANGE_UNSPECIFIED)
> +        ctx->params->vui.bEnableVideoFullRangeFlag =
> +            avctx->color_range == AVCOL_RANGE_JPEG;
> +    else
> +        ctx->params->vui.bEnableVideoFullRangeFlag =
> +            (av_pix_fmt_desc_get(avctx->pix_fmt)->flags & AV_PIX_FMT_FLAG_RGB) ||
> +            avctx->pix_fmt == AV_PIX_FMT_YUVJ420P ||
> +            avctx->pix_fmt == AV_PIX_FMT_YUVJ422P ||
> +            avctx->pix_fmt == AV_PIX_FMT_YUVJ444P;
>
>      if ((avctx->color_primaries <= AVCOL_PRI_SMPTE432 &&
>           avctx->color_primaries != AVCOL_PRI_UNSPECIFIED) ||
> --
> 2.31.1
Patchset LGTM


More information about the ffmpeg-devel mailing list