1dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org/* 2dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org * Copyright (c) 2014 The WebM project authors. All Rights Reserved. 3dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org * 4dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org * Use of this source code is governed by a BSD-style license 5dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org * that can be found in the LICENSE file in the root of the source 6dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org * tree. An additional intellectual property rights grant can be found 7dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org * in the file PATENTS. All contributing project authors may 8dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org * be found in the AUTHORS file in the root of the source tree. 9dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org */ 10dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org 11e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org#include <assert.h> 12dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#include "./y4menc.h" 13dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org 14dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.orgint y4m_write_file_header(char *buf, size_t len, int width, int height, 15dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org const struct VpxRational *framerate, 16e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org vpx_img_fmt_t fmt, unsigned int bit_depth) { 17e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org const char *color; 18e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org switch (bit_depth) { 19e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org case 8: 20e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org color = fmt == VPX_IMG_FMT_444A ? "C444alpha\n" : 21e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org fmt == VPX_IMG_FMT_I444 ? "C444\n" : 22e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org fmt == VPX_IMG_FMT_I422 ? "C422\n" : 23e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org "C420jpeg\n"; 24e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org break; 25e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org case 9: 26e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org color = fmt == VPX_IMG_FMT_I44416 ? "C444p9 XYSCSS=444P9\n" : 27e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org fmt == VPX_IMG_FMT_I42216 ? "C422p9 XYSCSS=422P9\n" : 28e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org "C420p9 XYSCSS=420P9\n"; 29e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org break; 30e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org case 10: 31e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org color = fmt == VPX_IMG_FMT_I44416 ? "C444p10 XYSCSS=444P10\n" : 32e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org fmt == VPX_IMG_FMT_I42216 ? "C422p10 XYSCSS=422P10\n" : 33e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org "C420p10 XYSCSS=420P10\n"; 34e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org break; 35e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org case 12: 36e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org color = fmt == VPX_IMG_FMT_I44416 ? "C444p12 XYSCSS=444P12\n" : 37e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org fmt == VPX_IMG_FMT_I42216 ? "C422p12 XYSCSS=422P12\n" : 38e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org "C420p12 XYSCSS=420P12\n"; 39e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org break; 40e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org case 14: 41e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org color = fmt == VPX_IMG_FMT_I44416 ? "C444p14 XYSCSS=444P14\n" : 42e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org fmt == VPX_IMG_FMT_I42216 ? "C422p14 XYSCSS=422P14\n" : 43e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org "C420p14 XYSCSS=420P14\n"; 44e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org break; 45e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org case 16: 46e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org color = fmt == VPX_IMG_FMT_I44416 ? "C444p16 XYSCSS=444P16\n" : 47e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org fmt == VPX_IMG_FMT_I42216 ? "C422p16 XYSCSS=422P16\n" : 48e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org "C420p16 XYSCSS=420P16\n"; 49e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org break; 50e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org default: 51ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.org color = NULL; 52e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org assert(0); 53e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org } 54dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org return snprintf(buf, len, "YUV4MPEG2 W%u H%u F%u:%u I%c %s", width, height, 55dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org framerate->numerator, framerate->denominator, 'p', color); 56dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org} 57dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org 58dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.orgint y4m_write_frame_header(char *buf, size_t len) { 59dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org return snprintf(buf, len, "FRAME\n"); 60dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org} 61