diff mbox series

[FFmpeg-devel,v1,2/2] lavc/libvpxenc: support creating full range output

Message ID 20230617081108.10051-2-thilo.borgmann@mail.de
State New
Headers show
Series [FFmpeg-devel,v1,1/2] lavc/vp9: set yuvj pixel format for full range decode | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Thilo Borgmann June 17, 2023, 8:11 a.m. UTC
suggested-by: ffmpeg@meta.com
---
 libavcodec/libvpxenc.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

James Zern June 18, 2023, 12:03 a.m. UTC | #1
On Sat, Jun 17, 2023 at 1:11 AM Thilo Borgmann <thilo.borgmann@mail.de> wrote:
>
> suggested-by: ffmpeg@meta.com
> ---
>  libavcodec/libvpxenc.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
>

Looks like there's some discussion on the parent patch about the
correctness of adding this. This wrapper does set the color range to
full with AVCOL_RANGE_JPEG.

> diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c
> index 8833df2d68..6e8a0d07c3 100644
> --- a/libavcodec/libvpxenc.c
> +++ b/libavcodec/libvpxenc.c
> @@ -799,21 +799,25 @@ static int set_pix_fmt(AVCodecContext *avctx, vpx_codec_caps_t codec_caps,
>      enccfg->g_bit_depth = enccfg->g_input_bit_depth = desc->comp[0].depth;
>      switch (avctx->pix_fmt) {
>      case AV_PIX_FMT_YUV420P:
> +    case AV_PIX_FMT_YUVJ420P:
>      case AV_PIX_FMT_YUVA420P:
>          enccfg->g_profile = 0;
>          *img_fmt = VPX_IMG_FMT_I420;
>          return 0;
>      case AV_PIX_FMT_YUV422P:
> +    case AV_PIX_FMT_YUVJ422P:
>          enccfg->g_profile = 1;
>          *img_fmt = VPX_IMG_FMT_I422;
>          return 0;
>      case AV_PIX_FMT_YUV440P:
> +    case AV_PIX_FMT_YUVJ440P:
>          enccfg->g_profile = 1;
>          *img_fmt = VPX_IMG_FMT_I440;
>          return 0;
>      case AV_PIX_FMT_GBRP:
>          ctx->vpx_cs = VPX_CS_SRGB;
>      case AV_PIX_FMT_YUV444P:
> +    case AV_PIX_FMT_YUVJ444P:
>          enccfg->g_profile = 1;
>          *img_fmt = VPX_IMG_FMT_I444;
>          return 0;
> @@ -2054,20 +2058,28 @@ static av_cold int vp9_init(AVCodecContext *avctx)
>
>  static const enum AVPixelFormat vp9_pix_fmts_highcol[] = {
>      AV_PIX_FMT_YUV420P,
> +    AV_PIX_FMT_YUVJ420P,
>      AV_PIX_FMT_YUVA420P,
>      AV_PIX_FMT_YUV422P,
> +    AV_PIX_FMT_YUVJ422P,
>      AV_PIX_FMT_YUV440P,
> +    AV_PIX_FMT_YUVJ440P,
>      AV_PIX_FMT_YUV444P,
> +    AV_PIX_FMT_YUVJ444P,
>      AV_PIX_FMT_GBRP,
>      AV_PIX_FMT_NONE
>  };
>
>  static const enum AVPixelFormat vp9_pix_fmts_highbd[] = {
>      AV_PIX_FMT_YUV420P,
> +    AV_PIX_FMT_YUVJ420P,
>      AV_PIX_FMT_YUVA420P,
>      AV_PIX_FMT_YUV422P,
> +    AV_PIX_FMT_YUVJ422P,
>      AV_PIX_FMT_YUV440P,
> +    AV_PIX_FMT_YUVJ440P,
>      AV_PIX_FMT_YUV444P,
> +    AV_PIX_FMT_YUVJ444P,
>      AV_PIX_FMT_YUV420P10,
>      AV_PIX_FMT_YUV422P10,
>      AV_PIX_FMT_YUV440P10,
> --
> 2.37.1 (Apple Git-137.1)
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
Thilo Borgmann June 18, 2023, 7:31 a.m. UTC | #2
Am 18.06.23 um 02:03 schrieb James Zern:
> On Sat, Jun 17, 2023 at 1:11 AM Thilo Borgmann <thilo.borgmann@mail.de> wrote:
>>
>> suggested-by: ffmpeg@meta.com
>> ---
>>   libavcodec/libvpxenc.c | 12 ++++++++++++
>>   1 file changed, 12 insertions(+)
>>
> 
> Looks like there's some discussion on the parent patch about the
> correctness of adding this. This wrapper does set the color range to
> full with AVCOL_RANGE_JPEG.

Yes. Thank you, will rework this whole thing next week.

-Thilo
diff mbox series

Patch

diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c
index 8833df2d68..6e8a0d07c3 100644
--- a/libavcodec/libvpxenc.c
+++ b/libavcodec/libvpxenc.c
@@ -799,21 +799,25 @@  static int set_pix_fmt(AVCodecContext *avctx, vpx_codec_caps_t codec_caps,
     enccfg->g_bit_depth = enccfg->g_input_bit_depth = desc->comp[0].depth;
     switch (avctx->pix_fmt) {
     case AV_PIX_FMT_YUV420P:
+    case AV_PIX_FMT_YUVJ420P:
     case AV_PIX_FMT_YUVA420P:
         enccfg->g_profile = 0;
         *img_fmt = VPX_IMG_FMT_I420;
         return 0;
     case AV_PIX_FMT_YUV422P:
+    case AV_PIX_FMT_YUVJ422P:
         enccfg->g_profile = 1;
         *img_fmt = VPX_IMG_FMT_I422;
         return 0;
     case AV_PIX_FMT_YUV440P:
+    case AV_PIX_FMT_YUVJ440P:
         enccfg->g_profile = 1;
         *img_fmt = VPX_IMG_FMT_I440;
         return 0;
     case AV_PIX_FMT_GBRP:
         ctx->vpx_cs = VPX_CS_SRGB;
     case AV_PIX_FMT_YUV444P:
+    case AV_PIX_FMT_YUVJ444P:
         enccfg->g_profile = 1;
         *img_fmt = VPX_IMG_FMT_I444;
         return 0;
@@ -2054,20 +2058,28 @@  static av_cold int vp9_init(AVCodecContext *avctx)
 
 static const enum AVPixelFormat vp9_pix_fmts_highcol[] = {
     AV_PIX_FMT_YUV420P,
+    AV_PIX_FMT_YUVJ420P,
     AV_PIX_FMT_YUVA420P,
     AV_PIX_FMT_YUV422P,
+    AV_PIX_FMT_YUVJ422P,
     AV_PIX_FMT_YUV440P,
+    AV_PIX_FMT_YUVJ440P,
     AV_PIX_FMT_YUV444P,
+    AV_PIX_FMT_YUVJ444P,
     AV_PIX_FMT_GBRP,
     AV_PIX_FMT_NONE
 };
 
 static const enum AVPixelFormat vp9_pix_fmts_highbd[] = {
     AV_PIX_FMT_YUV420P,
+    AV_PIX_FMT_YUVJ420P,
     AV_PIX_FMT_YUVA420P,
     AV_PIX_FMT_YUV422P,
+    AV_PIX_FMT_YUVJ422P,
     AV_PIX_FMT_YUV440P,
+    AV_PIX_FMT_YUVJ440P,
     AV_PIX_FMT_YUV444P,
+    AV_PIX_FMT_YUVJ444P,
     AV_PIX_FMT_YUV420P10,
     AV_PIX_FMT_YUV422P10,
     AV_PIX_FMT_YUV440P10,