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