On 16/06/15 2:43 AM, James Zern wrote: > the vp9 bitstream supports 8 values: > unknown (default), bt601, bt709, smpte170, smpte240, bt2020, reserved > and sRGB. > --- > doc/encoders.texi | 12 ++++++++++++ > libavcodec/libvpxenc.c | 22 ++++++++++++++++++++++ > 2 files changed, 34 insertions(+) > > diff --git a/doc/encoders.texi b/doc/encoders.texi > index 8b0ecb7..09c90c2 100644 > --- a/doc/encoders.texi > +++ b/doc/encoders.texi > @@ -1550,6 +1550,18 @@ Enable frame parallel decodability features. > @item aq-mode > Set adaptive quantization mode (0: off (default), 1: variance 2: complexity, > 3: > cyclic refresh). > +@item color-space > +Set input color space. > +@table @samp > +@item unknown > +@item bt601 > +@item bt709 > +@item smpte170 > +@item smpte240 > +@item bt2020 > +@item reserved > +@item sRGB > +@end table > @end table > > @end table > diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c > index 28a0e14..10f16e7 100644 > --- a/libavcodec/libvpxenc.c > +++ b/libavcodec/libvpxenc.c > @@ -100,8 +100,12 @@ typedef struct VP8EncoderContext { > int tile_rows; > int frame_parallel; > int aq_mode; > + int colorspace; > } VP8Context; > > +// VP9E_SET_COLOR_SPACE was added just prior to v1.4.0. > +#define HAVE_VP9_COLORSPACE_CONTROL (VPX_ENCODER_ABI_VERSION > 8)
Why this custom define? the end result is not shorter and there are other uses of VPX version defines on this same file, like VPX_IMAGE_ABI_VERSION. > + > /** String mappings for enum vp8e_enc_control_id */ > static const char *const ctlidstr[] = { > [VP8E_UPD_ENTROPY] = "VP8E_UPD_ENTROPY", > @@ -128,6 +132,9 @@ static const char *const ctlidstr[] = { > [VP9E_SET_TILE_ROWS] = "VP9E_SET_TILE_ROWS", > [VP9E_SET_FRAME_PARALLEL_DECODING] = "VP9E_SET_FRAME_PARALLEL_DECODING", > [VP9E_SET_AQ_MODE] = "VP9E_SET_AQ_MODE", > +#if HAVE_VP9_COLORSPACE_CONTROL > + [VP9E_SET_COLOR_SPACE] = "VP9E_SET_COLOR_SPACE", > +#endif > #endif > }; > > @@ -593,6 +600,10 @@ static av_cold int vpx_init(AVCodecContext *avctx, > codecctl_int(avctx, VP9E_SET_FRAME_PARALLEL_DECODING, > ctx->frame_parallel); > if (ctx->aq_mode >= 0) > codecctl_int(avctx, VP9E_SET_AQ_MODE, ctx->aq_mode); > +#if HAVE_VP9_COLORSPACE_CONTROL > + if (ctx->colorspace >= 0) > + codecctl_int(avctx, VP9E_SET_COLOR_SPACE, ctx->colorspace); > +#endif > } > #endif > > @@ -968,6 +979,17 @@ static const AVOption vp9_options[] = { > { "variance", "Variance based Aq", 0, AV_OPT_TYPE_CONST, {.i64 > = 1}, 0, 0, VE, "aq_mode" }, > { "complexity", "Complexity based Aq", 0, AV_OPT_TYPE_CONST, {.i64 > = 2}, 0, 0, VE, "aq_mode" }, > { "cyclic", "Cyclic Refresh Aq", 0, AV_OPT_TYPE_CONST, {.i64 > = 3}, 0, 0, VE, "aq_mode" }, > +#if HAVE_VP9_COLORSPACE_CONTROL > + { "color-space", "Input color space", > OFFSET(colorspace), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 7, VE, > "colorspace"}, > + { "unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = > VPX_CS_UNKNOWN}, 0, 0, VE, "colorspace" }, > + { "bt601", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = VPX_CS_BT_601}, > 0, 0, VE, "colorspace" }, > + { "bt709", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = VPX_CS_BT_709}, > 0, 0, VE, "colorspace" }, > + { "smpte170", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = > VPX_CS_SMPTE_170}, 0, 0, VE, "colorspace" }, > + { "smpte240", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = > VPX_CS_SMPTE_240}, 0, 0, VE, "colorspace" }, > + { "bt2020", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = > VPX_CS_BT_2020}, 0, 0, VE, "colorspace" }, > + { "reserved", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = > VPX_CS_RESERVED}, 0, 0, VE, "colorspace" }, > + { "sRGB", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = VPX_CS_SRGB}, > 0, 0, VE, "colorspace" }, > +#endif > LEGACY_OPTIONS > { NULL } > }; > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel