12ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian/* 22ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * Copyright (c) 2014 The WebM project authors. All Rights Reserved. 32ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * 42ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * Use of this source code is governed by a BSD-style license 52ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * that can be found in the LICENSE file in the root of the source 62ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * tree. An additional intellectual property rights grant can be found 72ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * in the file PATENTS. All contributing project authors may 82ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * be found in the AUTHORS file in the root of the source tree. 92ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian */ 102ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 11ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#include <assert.h> 122ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian#include "./y4menc.h" 132ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 142ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianint y4m_write_file_header(char *buf, size_t len, int width, int height, 152ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian const struct VpxRational *framerate, 16ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian vpx_img_fmt_t fmt, unsigned int bit_depth) { 17ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian const char *color; 18ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian switch (bit_depth) { 19ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian case 8: 207bc9febe8749e98a3812a0dc4380ceae75c29450Johann color = fmt == VPX_IMG_FMT_444A 217bc9febe8749e98a3812a0dc4380ceae75c29450Johann ? "C444alpha\n" 228b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : fmt == VPX_IMG_FMT_I444 238b92989c89bec8632aa47dc58dc162f199d62edcJames Zern ? "C444\n" 248b92989c89bec8632aa47dc58dc162f199d62edcJames Zern : fmt == VPX_IMG_FMT_I422 ? "C422\n" : "C420jpeg\n"; 25ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian break; 26ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian case 9: 277bc9febe8749e98a3812a0dc4380ceae75c29450Johann color = fmt == VPX_IMG_FMT_I44416 287bc9febe8749e98a3812a0dc4380ceae75c29450Johann ? "C444p9 XYSCSS=444P9\n" 297bc9febe8749e98a3812a0dc4380ceae75c29450Johann : fmt == VPX_IMG_FMT_I42216 ? "C422p9 XYSCSS=422P9\n" 307bc9febe8749e98a3812a0dc4380ceae75c29450Johann : "C420p9 XYSCSS=420P9\n"; 31ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian break; 32ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian case 10: 337bc9febe8749e98a3812a0dc4380ceae75c29450Johann color = fmt == VPX_IMG_FMT_I44416 347bc9febe8749e98a3812a0dc4380ceae75c29450Johann ? "C444p10 XYSCSS=444P10\n" 357bc9febe8749e98a3812a0dc4380ceae75c29450Johann : fmt == VPX_IMG_FMT_I42216 ? "C422p10 XYSCSS=422P10\n" 367bc9febe8749e98a3812a0dc4380ceae75c29450Johann : "C420p10 XYSCSS=420P10\n"; 37ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian break; 38ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian case 12: 397bc9febe8749e98a3812a0dc4380ceae75c29450Johann color = fmt == VPX_IMG_FMT_I44416 407bc9febe8749e98a3812a0dc4380ceae75c29450Johann ? "C444p12 XYSCSS=444P12\n" 417bc9febe8749e98a3812a0dc4380ceae75c29450Johann : fmt == VPX_IMG_FMT_I42216 ? "C422p12 XYSCSS=422P12\n" 427bc9febe8749e98a3812a0dc4380ceae75c29450Johann : "C420p12 XYSCSS=420P12\n"; 43ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian break; 44ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian case 14: 457bc9febe8749e98a3812a0dc4380ceae75c29450Johann color = fmt == VPX_IMG_FMT_I44416 467bc9febe8749e98a3812a0dc4380ceae75c29450Johann ? "C444p14 XYSCSS=444P14\n" 477bc9febe8749e98a3812a0dc4380ceae75c29450Johann : fmt == VPX_IMG_FMT_I42216 ? "C422p14 XYSCSS=422P14\n" 487bc9febe8749e98a3812a0dc4380ceae75c29450Johann : "C420p14 XYSCSS=420P14\n"; 49ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian break; 50ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian case 16: 517bc9febe8749e98a3812a0dc4380ceae75c29450Johann color = fmt == VPX_IMG_FMT_I44416 527bc9febe8749e98a3812a0dc4380ceae75c29450Johann ? "C444p16 XYSCSS=444P16\n" 537bc9febe8749e98a3812a0dc4380ceae75c29450Johann : fmt == VPX_IMG_FMT_I42216 ? "C422p16 XYSCSS=422P16\n" 547bc9febe8749e98a3812a0dc4380ceae75c29450Johann : "C420p16 XYSCSS=420P16\n"; 55ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian break; 567bc9febe8749e98a3812a0dc4380ceae75c29450Johann default: color = NULL; assert(0); 57ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian } 582ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian return snprintf(buf, len, "YUV4MPEG2 W%u H%u F%u:%u I%c %s", width, height, 592ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian framerate->numerator, framerate->denominator, 'p', color); 602ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian} 612ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 622ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianint y4m_write_frame_header(char *buf, size_t len) { 632ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian return snprintf(buf, len, "FRAME\n"); 642ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian} 65