summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiklas Haas <git@haasn.dev>2023-10-11 16:09:33 +0200
committerAnton Khirnov <anton@khirnov.net>2024-04-09 14:36:41 +0200
commit6f59a7c8006e5dffc04112274bb2ec0702b1bc8c (patch)
treea59ce049ffa674e466c0ddb98acca2ccca04be1c
parent08585737f40980dbd0f7a155e72559a4d1bb33d7 (diff)
avcodec/internal: add FFCodec.color_ranges
I went through all codecs and put them into five basic categories: 1. JPEG range only 2. MPEG range only 3. Explicitly tagged 4. Broken (codec supports both but encoder ignores tags) 5. N/A (headerless or pseudo-formats) Filters in category 5 remain untouched. The rest gain an explicit assignment of their supported color ranges, with codecs in category 4 being set to MPEG-only for safety. It might be considered redundant to distinguish between 0 (category 5) and MPEG+JPEG (category 3), but in doing so we effectively communicate that we can guarantee that these tags will be encoded, which is distinct from the situation where there are some codecs that simply don't have tagging or implied semantics (e.g. rawvideo). A full list of codecs follows: JPEG range only: - amv - roqvideo MPEG range only: - asv1, asv2 - avui - cfhd - cljr - dnxhd - dvvideo - ffv1 - flv - h261, h263, h263p - {h263,vp8}_v4l2m2m - huffyuv, ffvhuff - jpeg2000 - libopenjpeg - libtheora - libwebp, libwebp_anim - libx262 - libxavs, libxavs2 - libxvid - mpeg1video, mpeg2video - mpeg2_qsv - mpeg2_vaapi - mpeg4, msmpeg4, msmpeg4v2, wmv1, wmv2 - mpeg4_omx - rv10, rv20 - snow - speedhq - svq1 - tiff - utvideo Explicitly tagged (MPEG/JPEG): - {av1,h264,hevc}_nvenc - {av1,h264,hevc}_vaapi - {av1,h264,hevc,vp8,vp9,mpeg4}_mediacodec - {av1,h264,hevc,vp9}_qsv - h264_amf - {h264,hevc,prores}_videotoolbox - libaom-av1 - libkvazaar - libopenh264 - librav1e - libsvtav1 - libvpx, libvpx-vp9 - libx264 - libx265 - ljpeg - mjpeg - vc2 Broken (encoder ignores tags): - {av1,hevc}_amf - {h264,hevc,mpeg4}_v4l2m2m - h264_omx - libxeve - magicyuv - {vp8,vp9,mjpeg}_vaapi N/A: - ayuv, yuv4, y41p, v308, v210, v410, v408 (headerless) - pgmyuv (headerless) - prores, prores_aw, prores_ks (?) - rawvideo, bitpacked (headerless) - vnull, wrapped_avframe (pseudocodecs)
-rw-r--r--libavcodec/amfenc_av1.c1
-rw-r--r--libavcodec/amfenc_h264.c1
-rw-r--r--libavcodec/amfenc_hevc.c1
-rw-r--r--libavcodec/asvenc.c2
-rw-r--r--libavcodec/avuienc.c1
-rw-r--r--libavcodec/cfhdenc.c1
-rw-r--r--libavcodec/cljrenc.c1
-rw-r--r--libavcodec/codec_internal.h8
-rw-r--r--libavcodec/dnxhdenc.c1
-rw-r--r--libavcodec/dvenc.c1
-rw-r--r--libavcodec/ffv1enc.c1
-rw-r--r--libavcodec/flvenc.c1
-rw-r--r--libavcodec/h261enc.c1
-rw-r--r--libavcodec/huffyuvenc.c2
-rw-r--r--libavcodec/ituh263enc.c2
-rw-r--r--libavcodec/j2kenc.c1
-rw-r--r--libavcodec/libaomenc.c1
-rw-r--r--libavcodec/libkvazaar.c1
-rw-r--r--libavcodec/libopenh264enc.c1
-rw-r--r--libavcodec/libopenjpegenc.c1
-rw-r--r--libavcodec/librav1e.c1
-rw-r--r--libavcodec/libsvtav1.c1
-rw-r--r--libavcodec/libtheoraenc.c1
-rw-r--r--libavcodec/libvpxenc.c2
-rw-r--r--libavcodec/libwebpenc.c1
-rw-r--r--libavcodec/libwebpenc_animencoder.c1
-rw-r--r--libavcodec/libx264.c2
-rw-r--r--libavcodec/libx265.c1
-rw-r--r--libavcodec/libxavs.c1
-rw-r--r--libavcodec/libxavs2.c1
-rw-r--r--libavcodec/libxeve.c1
-rw-r--r--libavcodec/libxvid.c1
-rw-r--r--libavcodec/ljpegenc.c1
-rw-r--r--libavcodec/magicyuvenc.c1
-rw-r--r--libavcodec/mediacodecenc.c1
-rw-r--r--libavcodec/mjpegenc.c2
-rw-r--r--libavcodec/mpeg12enc.c2
-rw-r--r--libavcodec/mpeg4videoenc.c1
-rw-r--r--libavcodec/msmpeg4enc.c3
-rw-r--r--libavcodec/nvenc_av1.c1
-rw-r--r--libavcodec/nvenc_h264.c1
-rw-r--r--libavcodec/nvenc_hevc.c1
-rw-r--r--libavcodec/omx.c2
-rw-r--r--libavcodec/qsvenc_av1.c1
-rw-r--r--libavcodec/qsvenc_h264.c1
-rw-r--r--libavcodec/qsvenc_hevc.c1
-rw-r--r--libavcodec/qsvenc_jpeg.c1
-rw-r--r--libavcodec/qsvenc_mpeg2.c1
-rw-r--r--libavcodec/qsvenc_vp9.c1
-rw-r--r--libavcodec/roqvideoenc.c1
-rw-r--r--libavcodec/rv10enc.c1
-rw-r--r--libavcodec/rv20enc.c1
-rw-r--r--libavcodec/snowenc.c1
-rw-r--r--libavcodec/speedhqenc.c1
-rw-r--r--libavcodec/svq1enc.c1
-rw-r--r--libavcodec/tiffenc.c1
-rw-r--r--libavcodec/utvideoenc.c1
-rw-r--r--libavcodec/v4l2_m2m_enc.c1
-rw-r--r--libavcodec/vaapi_encode_av1.c1
-rw-r--r--libavcodec/vaapi_encode_h264.c1
-rw-r--r--libavcodec/vaapi_encode_h265.c1
-rw-r--r--libavcodec/vaapi_encode_mjpeg.c1
-rw-r--r--libavcodec/vaapi_encode_mpeg2.c1
-rw-r--r--libavcodec/vaapi_encode_vp8.c1
-rw-r--r--libavcodec/vaapi_encode_vp9.c1
-rw-r--r--libavcodec/vc2enc.c3
-rw-r--r--libavcodec/videotoolboxenc.c2
-rw-r--r--libavcodec/wmv2enc.c1
68 files changed, 86 insertions, 2 deletions
diff --git a/libavcodec/amfenc_av1.c b/libavcodec/amfenc_av1.c
index 9f18aac648..c2885fe585 100644
--- a/libavcodec/amfenc_av1.c
+++ b/libavcodec/amfenc_av1.c
@@ -485,6 +485,7 @@ const FFCodec ff_av1_amf_encoder = {
AV_CODEC_CAP_DR1,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.p.pix_fmts = ff_amf_pix_fmts,
+ .color_ranges = AVCOL_RANGE_MPEG, /* FIXME: implement tagging */
.p.wrapper_name = "amf",
.hw_configs = ff_amfenc_hw_configs,
};
diff --git a/libavcodec/amfenc_h264.c b/libavcodec/amfenc_h264.c
index abfac2a90f..1aca90ff23 100644
--- a/libavcodec/amfenc_h264.c
+++ b/libavcodec/amfenc_h264.c
@@ -539,6 +539,7 @@ const FFCodec ff_h264_amf_encoder = {
.caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE |
FF_CODEC_CAP_INIT_CLEANUP,
.p.pix_fmts = ff_amf_pix_fmts,
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.p.wrapper_name = "amf",
.hw_configs = ff_amfenc_hw_configs,
};
diff --git a/libavcodec/amfenc_hevc.c b/libavcodec/amfenc_hevc.c
index 0a74ccd6c4..cbeca96b43 100644
--- a/libavcodec/amfenc_hevc.c
+++ b/libavcodec/amfenc_hevc.c
@@ -454,6 +454,7 @@ const FFCodec ff_hevc_amf_encoder = {
.caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE |
FF_CODEC_CAP_INIT_CLEANUP,
.p.pix_fmts = ff_amf_pix_fmts,
+ .color_ranges = AVCOL_RANGE_MPEG, /* FIXME: implement tagging */
.p.wrapper_name = "amf",
.hw_configs = ff_amfenc_hw_configs,
};
diff --git a/libavcodec/asvenc.c b/libavcodec/asvenc.c
index 6179b50583..4f81a4015d 100644
--- a/libavcodec/asvenc.c
+++ b/libavcodec/asvenc.c
@@ -367,6 +367,7 @@ const FFCodec ff_asv1_encoder = {
FF_CODEC_ENCODE_CB(encode_frame),
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P,
AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
};
#endif
@@ -382,5 +383,6 @@ const FFCodec ff_asv2_encoder = {
FF_CODEC_ENCODE_CB(encode_frame),
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P,
AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
};
#endif
diff --git a/libavcodec/avuienc.c b/libavcodec/avuienc.c
index 495f6d36fb..a2391b31ef 100644
--- a/libavcodec/avuienc.c
+++ b/libavcodec/avuienc.c
@@ -100,6 +100,7 @@ const FFCodec ff_avui_encoder = {
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_EXPERIMENTAL |
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_UYVY422, AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
.init = avui_encode_init,
FF_CODEC_ENCODE_CB(avui_encode_frame),
};
diff --git a/libavcodec/cfhdenc.c b/libavcodec/cfhdenc.c
index 5657d0f96c..c63e6f2a30 100644
--- a/libavcodec/cfhdenc.c
+++ b/libavcodec/cfhdenc.c
@@ -871,5 +871,6 @@ const FFCodec ff_cfhd_encoder = {
AV_PIX_FMT_GBRAP12,
AV_PIX_FMT_NONE
},
+ .color_ranges = AVCOL_RANGE_MPEG,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
};
diff --git a/libavcodec/cljrenc.c b/libavcodec/cljrenc.c
index 31ad5ce0cf..4698dfd725 100644
--- a/libavcodec/cljrenc.c
+++ b/libavcodec/cljrenc.c
@@ -118,5 +118,6 @@ const FFCodec ff_cljr_encoder = {
FF_CODEC_ENCODE_CB(encode_frame),
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV411P,
AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &cljr_class,
};
diff --git a/libavcodec/codec_internal.h b/libavcodec/codec_internal.h
index d6757e2def..2134f18409 100644
--- a/libavcodec/codec_internal.h
+++ b/libavcodec/codec_internal.h
@@ -133,7 +133,13 @@ typedef struct FFCodec {
/**
* Internal codec capabilities FF_CODEC_CAP_*.
*/
- unsigned caps_internal:29;
+ unsigned caps_internal:27;
+
+ /**
+ * This field determines the video color ranges supported by a codec.
+ * Should be set to a bitmask of AVCOL_RANGE_MPEG and AVCOL_RANGE_JPEG.
+ */
+ unsigned color_ranges:2;
/**
* This field determines the type of the codec (decoder/encoder)
diff --git a/libavcodec/dnxhdenc.c b/libavcodec/dnxhdenc.c
index 0cb25d7714..31e507a813 100644
--- a/libavcodec/dnxhdenc.c
+++ b/libavcodec/dnxhdenc.c
@@ -1371,6 +1371,7 @@ const FFCodec ff_dnxhd_encoder = {
AV_PIX_FMT_GBRP10,
AV_PIX_FMT_NONE
},
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &dnxhd_class,
.defaults = dnxhd_defaults,
.p.profiles = NULL_IF_CONFIG_SMALL(ff_dnxhd_profiles),
diff --git a/libavcodec/dvenc.c b/libavcodec/dvenc.c
index 3afeedbb87..a4433edc2a 100644
--- a/libavcodec/dvenc.c
+++ b/libavcodec/dvenc.c
@@ -1247,5 +1247,6 @@ const FFCodec ff_dvvideo_encoder = {
AV_PIX_FMT_YUV411P, AV_PIX_FMT_YUV422P,
AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE
},
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &dvvideo_encode_class,
};
diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c
index 94d9215acd..9a6cb4673e 100644
--- a/libavcodec/ffv1enc.c
+++ b/libavcodec/ffv1enc.c
@@ -1303,6 +1303,7 @@ const FFCodec ff_ffv1_encoder = {
AV_PIX_FMT_NONE
},
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &ffv1_class,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP | FF_CODEC_CAP_EOF_FLUSH,
};
diff --git a/libavcodec/flvenc.c b/libavcodec/flvenc.c
index 6a96cb0f2f..40eec07b3e 100644
--- a/libavcodec/flvenc.c
+++ b/libavcodec/flvenc.c
@@ -105,5 +105,6 @@ const FFCodec ff_flv_encoder = {
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P,
AV_PIX_FMT_NONE},
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
};
diff --git a/libavcodec/h261enc.c b/libavcodec/h261enc.c
index 438ebb63d9..52bed42a7f 100644
--- a/libavcodec/h261enc.c
+++ b/libavcodec/h261enc.c
@@ -413,5 +413,6 @@ const FFCodec ff_h261_encoder = {
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P,
AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
};
diff --git a/libavcodec/huffyuvenc.c b/libavcodec/huffyuvenc.c
index 294d6ad41c..5e8b5c0dd7 100644
--- a/libavcodec/huffyuvenc.c
+++ b/libavcodec/huffyuvenc.c
@@ -1026,6 +1026,7 @@ const FFCodec ff_huffyuv_encoder = {
AV_PIX_FMT_YUV422P, AV_PIX_FMT_RGB24,
AV_PIX_FMT_RGB32, AV_PIX_FMT_NONE
},
+ .color_ranges = AVCOL_RANGE_MPEG,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
};
@@ -1066,6 +1067,7 @@ const FFCodec ff_ffvhuff_encoder = {
AV_PIX_FMT_RGB24,
AV_PIX_FMT_RGB32, AV_PIX_FMT_NONE
},
+ .color_ranges = AVCOL_RANGE_MPEG,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
};
#endif
diff --git a/libavcodec/ituh263enc.c b/libavcodec/ituh263enc.c
index 97abfb3f45..a3ac98b3f9 100644
--- a/libavcodec/ituh263enc.c
+++ b/libavcodec/ituh263enc.c
@@ -907,6 +907,7 @@ const FFCodec ff_h263_encoder = {
.p.type = AVMEDIA_TYPE_VIDEO,
.p.id = AV_CODEC_ID_H263,
.p.pix_fmts = (const enum AVPixelFormat[]){AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE},
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &h263_class,
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
@@ -938,6 +939,7 @@ const FFCodec ff_h263p_encoder = {
.p.type = AVMEDIA_TYPE_VIDEO,
.p.id = AV_CODEC_ID_H263P,
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &h263p_class,
.p.capabilities = AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c
index 8cf82f7216..8cee11a8c0 100644
--- a/libavcodec/j2kenc.c
+++ b/libavcodec/j2kenc.c
@@ -1864,6 +1864,7 @@ const FFCodec ff_jpeg2000_encoder = {
AV_PIX_FMT_PAL8,
AV_PIX_FMT_NONE
},
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &j2k_class,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
};
diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
index 4a71bba9c9..5023d2fda4 100644
--- a/libavcodec/libaomenc.c
+++ b/libavcodec/libaomenc.c
@@ -1517,6 +1517,7 @@ FFCodec ff_libaom_av1_encoder = {
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY |
AV_CODEC_CAP_ENCODER_RECON_FRAME |
AV_CODEC_CAP_OTHER_THREADS,
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.p.profiles = NULL_IF_CONFIG_SMALL(ff_av1_profiles),
.p.priv_class = &class_aom,
.p.wrapper_name = "libaom",
diff --git a/libavcodec/libkvazaar.c b/libavcodec/libkvazaar.c
index 0711d9ab38..8be1c8c3bf 100644
--- a/libavcodec/libkvazaar.c
+++ b/libavcodec/libkvazaar.c
@@ -334,6 +334,7 @@ const FFCodec ff_libkvazaar_encoder = {
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY |
AV_CODEC_CAP_OTHER_THREADS,
.p.pix_fmts = pix_fmts,
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.p.priv_class = &class,
.priv_data_size = sizeof(LibkvazaarContext),
diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
index 0aa2a54e68..7107c1a679 100644
--- a/libavcodec/libopenh264enc.c
+++ b/libavcodec/libopenh264enc.c
@@ -445,6 +445,7 @@ const FFCodec ff_libopenh264_encoder = {
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P,
AV_PIX_FMT_YUVJ420P,
AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.defaults = svc_enc_defaults,
.p.priv_class = &class,
.p.wrapper_name = "libopenh264",
diff --git a/libavcodec/libopenjpegenc.c b/libavcodec/libopenjpegenc.c
index 6a4364b1fe..01b67dffda 100644
--- a/libavcodec/libopenjpegenc.c
+++ b/libavcodec/libopenjpegenc.c
@@ -785,6 +785,7 @@ const FFCodec ff_libopenjpeg_encoder = {
AV_PIX_FMT_XYZ12,
AV_PIX_FMT_NONE
},
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &openjpeg_class,
.p.wrapper_name = "libopenjpeg",
};
diff --git a/libavcodec/librav1e.c b/libavcodec/librav1e.c
index b83e2118ed..546d00297d 100644
--- a/libavcodec/librav1e.c
+++ b/libavcodec/librav1e.c
@@ -668,6 +668,7 @@ const FFCodec ff_librav1e_encoder = {
.p.priv_class = &class,
.defaults = librav1e_defaults,
.p.pix_fmts = librav1e_pix_fmts,
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_OTHER_THREADS |
AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_RECON_FRAME |
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c
index 105c3369c0..f15152b553 100644
--- a/libavcodec/libsvtav1.c
+++ b/libavcodec/libsvtav1.c
@@ -729,6 +729,7 @@ const FFCodec ff_libsvtav1_encoder = {
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P,
AV_PIX_FMT_YUV420P10,
AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.p.priv_class = &class,
.defaults = eb_enc_defaults,
.p.wrapper_name = "libsvtav1",
diff --git a/libavcodec/libtheoraenc.c b/libavcodec/libtheoraenc.c
index 58da008a82..8844f4be6a 100644
--- a/libavcodec/libtheoraenc.c
+++ b/libavcodec/libtheoraenc.c
@@ -391,5 +391,6 @@ const FFCodec ff_libtheora_encoder = {
.p.pix_fmts = (const enum AVPixelFormat[]){
AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P, AV_PIX_FMT_NONE
},
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.wrapper_name = "libtheora",
};
diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c
index bcbdc4981e..cdb8331261 100644
--- a/libavcodec/libvpxenc.c
+++ b/libavcodec/libvpxenc.c
@@ -2044,6 +2044,7 @@ const FFCodec ff_libvpx_vp8_encoder = {
.caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE |
FF_CODEC_CAP_AUTO_THREADS,
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUVA420P, AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.p.priv_class = &class_vp8,
.defaults = defaults,
.p.wrapper_name = "libvpx",
@@ -2115,6 +2116,7 @@ FFCodec ff_libvpx_vp9_encoder = {
.p.wrapper_name = "libvpx",
.priv_data_size = sizeof(VPxContext),
.init = vp9_init,
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
FF_CODEC_ENCODE_CB(vpx_encode),
.close = vpx_free,
.caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE |
diff --git a/libavcodec/libwebpenc.c b/libavcodec/libwebpenc.c
index f40dd01345..670412cc6e 100644
--- a/libavcodec/libwebpenc.c
+++ b/libavcodec/libwebpenc.c
@@ -95,6 +95,7 @@ const FFCodec ff_libwebp_encoder = {
.p.id = AV_CODEC_ID_WEBP,
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
.p.pix_fmts = ff_libwebpenc_pix_fmts,
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &ff_libwebpenc_class,
.p.wrapper_name = "libwebp",
.caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE,
diff --git a/libavcodec/libwebpenc_animencoder.c b/libavcodec/libwebpenc_animencoder.c
index 6f52fa7cf1..c5361d7f92 100644
--- a/libavcodec/libwebpenc_animencoder.c
+++ b/libavcodec/libwebpenc_animencoder.c
@@ -168,6 +168,7 @@ const FFCodec ff_libwebp_anim_encoder = {
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY |
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
.p.pix_fmts = ff_libwebpenc_pix_fmts,
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &ff_libwebpenc_class,
.p.wrapper_name = "libwebp",
.caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE,
diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c
index eadb20d2b3..97d1385f6e 100644
--- a/libavcodec/libx264.c
+++ b/libavcodec/libx264.c
@@ -1670,6 +1670,7 @@ FFCodec ff_libx264_encoder = {
#else
.p.pix_fmts = pix_fmts_all,
#endif
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP | FF_CODEC_CAP_AUTO_THREADS
#if X264_BUILD < 158
| FF_CODEC_CAP_NOT_INIT_THREADSAFE
@@ -1727,6 +1728,7 @@ const FFCodec ff_libx262_encoder = {
AV_CODEC_CAP_OTHER_THREADS |
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
.p.pix_fmts = pix_fmts_8bit,
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &X262_class,
.p.wrapper_name = "libx264",
.priv_data_size = sizeof(X264Context),
diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c
index 0645cd2045..3533ac5cc1 100644
--- a/libavcodec/libx265.c
+++ b/libavcodec/libx265.c
@@ -948,6 +948,7 @@ FFCodec ff_libx265_encoder = {
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY |
AV_CODEC_CAP_OTHER_THREADS |
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.p.priv_class = &class,
.p.wrapper_name = "libx265",
.init = libx265_encode_init,
diff --git a/libavcodec/libxavs.c b/libavcodec/libxavs.c
index 4c7b1908cc..d0f6e141c7 100644
--- a/libavcodec/libxavs.c
+++ b/libavcodec/libxavs.c
@@ -435,6 +435,7 @@ const FFCodec ff_libxavs_encoder = {
.caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE |
FF_CODEC_CAP_AUTO_THREADS,
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &xavs_class,
.defaults = xavs_defaults,
.p.wrapper_name = "libxavs",
diff --git a/libavcodec/libxavs2.c b/libavcodec/libxavs2.c
index c493ddc325..1021d2ae2f 100644
--- a/libavcodec/libxavs2.c
+++ b/libavcodec/libxavs2.c
@@ -301,6 +301,7 @@ const FFCodec ff_libxavs2_encoder = {
FF_CODEC_CAP_AUTO_THREADS,
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P,
AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &libxavs2,
.defaults = xavs2_defaults,
.p.wrapper_name = "libxavs2",
diff --git a/libavcodec/libxeve.c b/libavcodec/libxeve.c
index 1d9972619d..f434737ae6 100644
--- a/libavcodec/libxeve.c
+++ b/libavcodec/libxeve.c
@@ -613,5 +613,6 @@ const FFCodec ff_libxeve_encoder = {
.p.profiles = NULL_IF_CONFIG_SMALL(ff_evc_profiles),
.p.wrapper_name = "libxeve",
.p.pix_fmts = supported_pixel_formats,
+ .color_ranges = AVCOL_RANGE_MPEG, /* FIXME: implement tagging */
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP | FF_CODEC_CAP_NOT_INIT_THREADSAFE,
};
diff --git a/libavcodec/libxvid.c b/libavcodec/libxvid.c
index b9ac39429d..6e6c29ee21 100644
--- a/libavcodec/libxvid.c
+++ b/libavcodec/libxvid.c
@@ -908,6 +908,7 @@ const FFCodec ff_libxvid_encoder = {
FF_CODEC_ENCODE_CB(xvid_encode_frame),
.close = xvid_encode_close,
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &xvid_class,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.p.wrapper_name = "libxvid",
diff --git a/libavcodec/ljpegenc.c b/libavcodec/ljpegenc.c
index 46546e2160..927420c2d4 100644
--- a/libavcodec/ljpegenc.c
+++ b/libavcodec/ljpegenc.c
@@ -328,4 +328,5 @@ const FFCodec ff_ljpeg_encoder = {
AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_YUVJ422P,
AV_PIX_FMT_YUV420P , AV_PIX_FMT_YUV444P , AV_PIX_FMT_YUV422P,
AV_PIX_FMT_NONE},
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
};
diff --git a/libavcodec/magicyuvenc.c b/libavcodec/magicyuvenc.c
index 93eabb9f9a..bc0fd9142f 100644
--- a/libavcodec/magicyuvenc.c
+++ b/libavcodec/magicyuvenc.c
@@ -693,5 +693,6 @@ const FFCodec ff_magicyuv_encoder = {
AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUVA444P, AV_PIX_FMT_GRAY8,
AV_PIX_FMT_NONE
},
+ .color_ranges = AVCOL_RANGE_MPEG, /* FIXME: implement tagging */
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
};
diff --git a/libavcodec/mediacodecenc.c b/libavcodec/mediacodecenc.c
index b59de75b9b..a4519bbc98 100644
--- a/libavcodec/mediacodecenc.c
+++ b/libavcodec/mediacodecenc.c
@@ -627,6 +627,7 @@ const FFCodec ff_ ## short_name ## _mediacodec_encoder = { \
| AV_CODEC_CAP_HARDWARE, \
.priv_data_size = sizeof(MediaCodecEncContext), \
.p.pix_fmts = avc_pix_fmts, \
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG, \
.init = mediacodec_init, \
FF_CODEC_RECEIVE_PACKET_CB(mediacodec_encode), \
.close = mediacodec_close, \
diff --git a/libavcodec/mjpegenc.c b/libavcodec/mjpegenc.c
index b6de50edce..137b68a98d 100644
--- a/libavcodec/mjpegenc.c
+++ b/libavcodec/mjpegenc.c
@@ -657,6 +657,7 @@ const FFCodec ff_mjpeg_encoder = {
AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P,
AV_PIX_FMT_NONE
},
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.p.priv_class = &mjpeg_class,
.p.profiles = NULL_IF_CONFIG_SMALL(ff_mjpeg_profiles),
};
@@ -683,6 +684,7 @@ const FFCodec ff_amv_encoder = {
.p.pix_fmts = (const enum AVPixelFormat[]) {
AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_NONE
},
+ .color_ranges = AVCOL_RANGE_JPEG,
.p.priv_class = &amv_class,
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
};
diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c
index f956dde78f..ff1119415f 100644
--- a/libavcodec/mpeg12enc.c
+++ b/libavcodec/mpeg12enc.c
@@ -1245,6 +1245,7 @@ const FFCodec ff_mpeg1video_encoder = {
.p.supported_framerates = ff_mpeg12_frame_rate_tab + 1,
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P,
AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS |
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
@@ -1264,6 +1265,7 @@ const FFCodec ff_mpeg2video_encoder = {
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P,
AV_PIX_FMT_YUV422P,
AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS |
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
diff --git a/libavcodec/mpeg4videoenc.c b/libavcodec/mpeg4videoenc.c
index 71dda802e2..aa8a01920a 100644
--- a/libavcodec/mpeg4videoenc.c
+++ b/libavcodec/mpeg4videoenc.c
@@ -1403,6 +1403,7 @@ const FFCodec ff_mpeg4_encoder = {
FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
.close = ff_mpv_encode_end,
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS |
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
diff --git a/libavcodec/msmpeg4enc.c b/libavcodec/msmpeg4enc.c
index 119ea8f15e..82e64f6dc0 100644
--- a/libavcodec/msmpeg4enc.c
+++ b/libavcodec/msmpeg4enc.c
@@ -685,6 +685,7 @@ const FFCodec ff_msmpeg4v2_encoder = {
.p.type = AVMEDIA_TYPE_VIDEO,
.p.id = AV_CODEC_ID_MSMPEG4V2,
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &ff_mpv_enc_class,
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
@@ -700,6 +701,7 @@ const FFCodec ff_msmpeg4v3_encoder = {
.p.type = AVMEDIA_TYPE_VIDEO,
.p.id = AV_CODEC_ID_MSMPEG4V3,
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &ff_mpv_enc_class,
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
@@ -715,6 +717,7 @@ const FFCodec ff_wmv1_encoder = {
.p.type = AVMEDIA_TYPE_VIDEO,
.p.id = AV_CODEC_ID_WMV1,
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &ff_mpv_enc_class,
.p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
diff --git a/libavcodec/nvenc_av1.c b/libavcodec/nvenc_av1.c
index d37ee07bff..562e2bc7fe 100644
--- a/libavcodec/nvenc_av1.c
+++ b/libavcodec/nvenc_av1.c
@@ -194,6 +194,7 @@ const FFCodec ff_av1_nvenc_encoder = {
.p.priv_class = &av1_nvenc_class,
.defaults = defaults,
.p.pix_fmts = ff_nvenc_pix_fmts,
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE |
AV_CODEC_CAP_ENCODER_FLUSH | AV_CODEC_CAP_DR1 |
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
diff --git a/libavcodec/nvenc_h264.c b/libavcodec/nvenc_h264.c
index 4d6f968e0b..8cbe4dca39 100644
--- a/libavcodec/nvenc_h264.c
+++ b/libavcodec/nvenc_h264.c
@@ -265,6 +265,7 @@ const FFCodec ff_h264_nvenc_encoder = {
.caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE |
FF_CODEC_CAP_INIT_CLEANUP,
.p.pix_fmts = ff_nvenc_pix_fmts,
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.p.wrapper_name = "nvenc",
.hw_configs = ff_nvenc_hw_configs,
};
diff --git a/libavcodec/nvenc_hevc.c b/libavcodec/nvenc_hevc.c
index bd8b6153f3..0a4c36357e 100644
--- a/libavcodec/nvenc_hevc.c
+++ b/libavcodec/nvenc_hevc.c
@@ -253,6 +253,7 @@ const FFCodec ff_hevc_nvenc_encoder = {
.p.priv_class = &hevc_nvenc_class,
.defaults = defaults,
.p.pix_fmts = ff_nvenc_pix_fmts,
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE |
AV_CODEC_CAP_ENCODER_FLUSH | AV_CODEC_CAP_DR1 |
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
diff --git a/libavcodec/omx.c b/libavcodec/omx.c
index 86913237b2..2c3865506f 100644
--- a/libavcodec/omx.c
+++ b/libavcodec/omx.c
@@ -948,6 +948,7 @@ const FFCodec ff_mpeg4_omx_encoder = {
FF_CODEC_ENCODE_CB(omx_encode_frame),
.close = omx_encode_end,
.p.pix_fmts = omx_encoder_pix_fmts,
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.capabilities = AV_CODEC_CAP_DELAY,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.p.priv_class = &omx_mpeg4enc_class,
@@ -969,6 +970,7 @@ const FFCodec ff_h264_omx_encoder = {
FF_CODEC_ENCODE_CB(omx_encode_frame),
.close = omx_encode_end,
.p.pix_fmts = omx_encoder_pix_fmts,
+ .color_ranges = AVCOL_RANGE_MPEG, /* FIXME: implement tagging */
.p.capabilities = AV_CODEC_CAP_DELAY,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.p.priv_class = &omx_h264enc_class,
diff --git a/libavcodec/qsvenc_av1.c b/libavcodec/qsvenc_av1.c
index 33727bb07e..30360a3651 100644
--- a/libavcodec/qsvenc_av1.c
+++ b/libavcodec/qsvenc_av1.c
@@ -150,6 +150,7 @@ FFCodec ff_av1_qsv_encoder = {
AV_PIX_FMT_P010,
AV_PIX_FMT_QSV,
AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.p.priv_class = &class,
.defaults = qsv_enc_defaults,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
diff --git a/libavcodec/qsvenc_h264.c b/libavcodec/qsvenc_h264.c
index 53e4e744b2..304d1e7dcb 100644
--- a/libavcodec/qsvenc_h264.c
+++ b/libavcodec/qsvenc_h264.c
@@ -202,6 +202,7 @@ const FFCodec ff_h264_qsv_encoder = {
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12,
AV_PIX_FMT_QSV,
AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.p.priv_class = &class,
.defaults = qsv_enc_defaults,
.caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE |
diff --git a/libavcodec/qsvenc_hevc.c b/libavcodec/qsvenc_hevc.c
index 2ccbe0464b..803d1b10a1 100644
--- a/libavcodec/qsvenc_hevc.c
+++ b/libavcodec/qsvenc_hevc.c
@@ -406,6 +406,7 @@ const FFCodec ff_hevc_qsv_encoder = {
AV_PIX_FMT_VUYX,
AV_PIX_FMT_XV30,
AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.p.priv_class = &class,
.defaults = qsv_enc_defaults,
.caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE |
diff --git a/libavcodec/qsvenc_jpeg.c b/libavcodec/qsvenc_jpeg.c
index 2add12adc9..b2458eee06 100644
--- a/libavcodec/qsvenc_jpeg.c
+++ b/libavcodec/qsvenc_jpeg.c
@@ -93,6 +93,7 @@ const FFCodec ff_mjpeg_qsv_encoder = {
AV_PIX_FMT_BGRA,
AV_PIX_FMT_QSV,
AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.p.priv_class = &class,
.defaults = qsv_enc_defaults,
.p.wrapper_name = "qsv",
diff --git a/libavcodec/qsvenc_mpeg2.c b/libavcodec/qsvenc_mpeg2.c
index fabf461fe3..ad3da6d672 100644
--- a/libavcodec/qsvenc_mpeg2.c
+++ b/libavcodec/qsvenc_mpeg2.c
@@ -105,6 +105,7 @@ const FFCodec ff_mpeg2_qsv_encoder = {
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12,
AV_PIX_FMT_QSV,
AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &class,
.defaults = qsv_enc_defaults,
.caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE |
diff --git a/libavcodec/qsvenc_vp9.c b/libavcodec/qsvenc_vp9.c
index a760e4932e..b247c39c86 100644
--- a/libavcodec/qsvenc_vp9.c
+++ b/libavcodec/qsvenc_vp9.c
@@ -117,6 +117,7 @@ const FFCodec ff_vp9_qsv_encoder = {
AV_PIX_FMT_QSV,
AV_PIX_FMT_XV30,
AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.p.priv_class = &class,
.defaults = qsv_enc_defaults,
.caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE |
diff --git a/libavcodec/roqvideoenc.c b/libavcodec/roqvideoenc.c
index a6c167b1dc..7cbe820f9a 100644
--- a/libavcodec/roqvideoenc.c
+++ b/libavcodec/roqvideoenc.c
@@ -1128,6 +1128,7 @@ const FFCodec ff_roq_encoder = {
.close = roq_encode_end,
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUVJ444P,
AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_JPEG,
.p.priv_class = &roq_class,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
};
diff --git a/libavcodec/rv10enc.c b/libavcodec/rv10enc.c
index 8a405b8686..2104ee0a24 100644
--- a/libavcodec/rv10enc.c
+++ b/libavcodec/rv10enc.c
@@ -78,4 +78,5 @@ const FFCodec ff_rv10_encoder = {
.close = ff_mpv_encode_end,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
};
diff --git a/libavcodec/rv20enc.c b/libavcodec/rv20enc.c
index dc26877d5e..d0e24f2f26 100644
--- a/libavcodec/rv20enc.c
+++ b/libavcodec/rv20enc.c
@@ -75,4 +75,5 @@ const FFCodec ff_rv20_encoder = {
.close = ff_mpv_encode_end,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
};
diff --git a/libavcodec/snowenc.c b/libavcodec/snowenc.c
index 43ca602762..2d767e1f0a 100644
--- a/libavcodec/snowenc.c
+++ b/libavcodec/snowenc.c
@@ -2143,6 +2143,7 @@ const FFCodec ff_snow_encoder = {
AV_PIX_FMT_GRAY8,
AV_PIX_FMT_NONE
},
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &snowenc_class,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
};
diff --git a/libavcodec/speedhqenc.c b/libavcodec/speedhqenc.c
index 5b4ff4c139..4a871039ea 100644
--- a/libavcodec/speedhqenc.c
+++ b/libavcodec/speedhqenc.c
@@ -294,6 +294,7 @@ const FFCodec ff_speedhq_encoder = {
FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
.close = ff_mpv_encode_end,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.pix_fmts = (const enum AVPixelFormat[]) {
AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P,
AV_PIX_FMT_NONE
diff --git a/libavcodec/svq1enc.c b/libavcodec/svq1enc.c
index d71ad07b86..0499b3d3a6 100644
--- a/libavcodec/svq1enc.c
+++ b/libavcodec/svq1enc.c
@@ -749,5 +749,6 @@ const FFCodec ff_svq1_encoder = {
.close = svq1_encode_end,
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV410P,
AV_PIX_FMT_NONE },
+ .color_ranges = AVCOL_RANGE_MPEG,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
};
diff --git a/libavcodec/tiffenc.c b/libavcodec/tiffenc.c
index 25539d03dc..5e65979c79 100644
--- a/libavcodec/tiffenc.c
+++ b/libavcodec/tiffenc.c
@@ -589,5 +589,6 @@ const FFCodec ff_tiff_encoder = {
AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P,
AV_PIX_FMT_NONE
},
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &tiffenc_class,
};
diff --git a/libavcodec/utvideoenc.c b/libavcodec/utvideoenc.c
index 59e198458b..7d2572022f 100644
--- a/libavcodec/utvideoenc.c
+++ b/libavcodec/utvideoenc.c
@@ -675,5 +675,6 @@ const FFCodec ff_utvideo_encoder = {
AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRAP, AV_PIX_FMT_YUV422P,
AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV444P, AV_PIX_FMT_NONE
},
+ .color_ranges = AVCOL_RANGE_MPEG,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
};
diff --git a/libavcodec/v4l2_m2m_enc.c b/libavcodec/v4l2_m2m_enc.c
index e08db5d5d3..5770e87ea1 100644
--- a/libavcodec/v4l2_m2m_enc.c
+++ b/libavcodec/v4l2_m2m_enc.c
@@ -433,6 +433,7 @@ static const FFCodecDefault v4l2_m2m_defaults[] = {
.close = v4l2_encode_close, \
.defaults = v4l2_m2m_defaults, \
.p.capabilities = AV_CODEC_CAP_HARDWARE | AV_CODEC_CAP_DELAY, \
+ .color_ranges = AVCOL_RANGE_MPEG, \
.caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE | \
FF_CODEC_CAP_INIT_CLEANUP, \
.p.wrapper_name = "v4l2m2m", \
diff --git a/libavcodec/vaapi_encode_av1.c b/libavcodec/vaapi_encode_av1.c
index 02a31b894d..571bf59457 100644
--- a/libavcodec/vaapi_encode_av1.c
+++ b/libavcodec/vaapi_encode_av1.c
@@ -948,6 +948,7 @@ const FFCodec ff_av1_vaapi_encoder = {
AV_PIX_FMT_VAAPI,
AV_PIX_FMT_NONE,
},
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.hw_configs = ff_vaapi_encode_hw_configs,
.p.wrapper_name = "vaapi",
};
diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c
index bf51df0f51..12f3048a9b 100644
--- a/libavcodec/vaapi_encode_h264.c
+++ b/libavcodec/vaapi_encode_h264.c
@@ -1391,6 +1391,7 @@ const FFCodec ff_h264_vaapi_encoder = {
AV_PIX_FMT_VAAPI,
AV_PIX_FMT_NONE,
},
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.hw_configs = ff_vaapi_encode_hw_configs,
.p.wrapper_name = "vaapi",
};
diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c
index 2777632fb6..174a45dd02 100644
--- a/libavcodec/vaapi_encode_h265.c
+++ b/libavcodec/vaapi_encode_h265.c
@@ -1508,6 +1508,7 @@ const FFCodec ff_hevc_vaapi_encoder = {
AV_PIX_FMT_VAAPI,
AV_PIX_FMT_NONE,
},
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.hw_configs = ff_vaapi_encode_hw_configs,
.p.wrapper_name = "vaapi",
};
diff --git a/libavcodec/vaapi_encode_mjpeg.c b/libavcodec/vaapi_encode_mjpeg.c
index c17747e3a9..e526136fec 100644
--- a/libavcodec/vaapi_encode_mjpeg.c
+++ b/libavcodec/vaapi_encode_mjpeg.c
@@ -583,6 +583,7 @@ const FFCodec ff_mjpeg_vaapi_encoder = {
AV_PIX_FMT_VAAPI,
AV_PIX_FMT_NONE,
},
+ .color_ranges = AVCOL_RANGE_MPEG, /* FIXME: implement tagging */
.hw_configs = ff_vaapi_encode_hw_configs,
.p.wrapper_name = "vaapi",
};
diff --git a/libavcodec/vaapi_encode_mpeg2.c b/libavcodec/vaapi_encode_mpeg2.c
index c9b16fbcfc..a3da298b0e 100644
--- a/libavcodec/vaapi_encode_mpeg2.c
+++ b/libavcodec/vaapi_encode_mpeg2.c
@@ -706,6 +706,7 @@ const FFCodec ff_mpeg2_vaapi_encoder = {
AV_PIX_FMT_VAAPI,
AV_PIX_FMT_NONE,
},
+ .color_ranges = AVCOL_RANGE_MPEG,
.hw_configs = ff_vaapi_encode_hw_configs,
.p.wrapper_name = "vaapi",
};
diff --git a/libavcodec/vaapi_encode_vp8.c b/libavcodec/vaapi_encode_vp8.c
index 8a557b967e..d731febb7f 100644
--- a/libavcodec/vaapi_encode_vp8.c
+++ b/libavcodec/vaapi_encode_vp8.c
@@ -261,6 +261,7 @@ const FFCodec ff_vp8_vaapi_encoder = {
AV_PIX_FMT_VAAPI,
AV_PIX_FMT_NONE,
},
+ .color_ranges = AVCOL_RANGE_MPEG, /* FIXME: implement tagging */
.hw_configs = ff_vaapi_encode_hw_configs,
.p.wrapper_name = "vaapi",
};
diff --git a/libavcodec/vaapi_encode_vp9.c b/libavcodec/vaapi_encode_vp9.c
index c2a8dec71b..8d07305832 100644
--- a/libavcodec/vaapi_encode_vp9.c
+++ b/libavcodec/vaapi_encode_vp9.c
@@ -314,6 +314,7 @@ const FFCodec ff_vp9_vaapi_encoder = {
.caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE |
FF_CODEC_CAP_INIT_CLEANUP,
.defaults = vaapi_encode_vp9_defaults,
+ .color_ranges = AVCOL_RANGE_MPEG, /* FIXME: implement tagging */
.p.pix_fmts = (const enum AVPixelFormat[]) {
AV_PIX_FMT_VAAPI,
AV_PIX_FMT_NONE,
diff --git a/libavcodec/vc2enc.c b/libavcodec/vc2enc.c
index 365d43146d..ee82c06792 100644
--- a/libavcodec/vc2enc.c
+++ b/libavcodec/vc2enc.c
@@ -1238,5 +1238,6 @@ const FFCodec ff_vc2_encoder = {
FF_CODEC_ENCODE_CB(vc2_encode_frame),
.p.priv_class = &vc2enc_class,
.defaults = vc2enc_defaults,
- .p.pix_fmts = allowed_pix_fmts
+ .p.pix_fmts = allowed_pix_fmts,
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
};
diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c
index 42065cbcb3..656f136d47 100644
--- a/libavcodec/videotoolboxenc.c
+++ b/libavcodec/videotoolboxenc.c
@@ -2958,6 +2958,7 @@ const FFCodec ff_hevc_videotoolbox_encoder = {
AV_CODEC_CAP_HARDWARE,
.priv_data_size = sizeof(VTEncContext),
.p.pix_fmts = hevc_pix_fmts,
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.init = vtenc_init,
FF_CODEC_ENCODE_CB(vtenc_frame),
.close = vtenc_close,
@@ -2997,6 +2998,7 @@ const FFCodec ff_prores_videotoolbox_encoder = {
AV_CODEC_CAP_HARDWARE,
.priv_data_size = sizeof(VTEncContext),
.p.pix_fmts = prores_pix_fmts,
+ .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG,
.init = vtenc_init,
FF_CODEC_ENCODE_CB(vtenc_frame),
.close = vtenc_close,
diff --git a/libavcodec/wmv2enc.c b/libavcodec/wmv2enc.c
index 13ec2bf6ff..fded6f0e76 100644
--- a/libavcodec/wmv2enc.c
+++ b/libavcodec/wmv2enc.c
@@ -249,6 +249,7 @@ const FFCodec ff_wmv2_encoder = {
FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
.close = ff_mpv_encode_end,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
+ .color_ranges = AVCOL_RANGE_MPEG,
.p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P,
AV_PIX_FMT_NONE },
};