tree becdac5e2ff05a02960c2da4d4162399c9f0f94d
parent 67e9f70c575b2fb2b6c805b01136ef07d5b94f7e
author Wan-Teh Chang <wtc@google.com> 1634331938 -0700
committer Wan-Teh Chang <wtc@google.com> 1634341369 -0700

Use "C420" as default Y4M color space parameter

If the Y4M header does not have a 'C' (color space) parameter, default
to "C420". This matches the defaults of libaom's aomenc and ffmpeg.

1. aom/common/y4minput.c:

static int parse_tags(y4m_input *y4m_ctx, FILE *file) {
  ...
  snprintf(y4m_ctx->chroma_type, sizeof(y4m_ctx->chroma_type), "420");

2. ffmpeg/libavformat/yuv4mpegdec.c:

static int yuv4_read_header(AVFormatContext *s)
{
    ...
    enum AVPixelFormat pix_fmt = AV_PIX_FMT_NONE, alt_pix_fmt = AV_PIX_FMT_NONE;
    ...
    if (pix_fmt == AV_PIX_FMT_NONE) {
        if (alt_pix_fmt == AV_PIX_FMT_NONE)
            pix_fmt = AV_PIX_FMT_YUV420P;
        else
            pix_fmt = alt_pix_fmt;
    }
