On Mon, Jun 15, 2015 at 10:43:17PM -0700, 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)
> +
> /** 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" },
> +#endifwhy does this not use AVCodecContext.colorspace or other colorspace related fields ? [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Its not that you shouldnt use gotos but rather that you should write readable code and code with gotos often but not always is less readable
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list [email protected] http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
