y4minput.h 1.92 KB
Newer Older
1
/*
2
 * Copyright (c) 2016, Alliance for Open Media. All rights reserved
3
 *
4 5 6 7 8 9
 * This source code is subject to the terms of the BSD 2 Clause License and
 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
 * was not distributed with this source code in the LICENSE file, you can
 * obtain it at www.aomedia.org/license/software. If the Alliance for Open
 * Media Patent License 1.0 was not distributed with this source code in the
 * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
10
 *
11 12
 * Based on code from the OggTheora software codec source code,
 * Copyright (C) 2002-2010 The Xiph.Org Foundation and contributors.
13
 */
14 15 16 17

#ifndef Y4MINPUT_H_
#define Y4MINPUT_H_

clang-format's avatar
clang-format committed
18
#include <stdio.h>
Yaowu Xu's avatar
Yaowu Xu committed
19
#include "aom/vpx_image.h"
20

21 22 23 24
#ifdef __cplusplus
extern "C" {
#endif

25 26 27
typedef struct y4m_input y4m_input;

/*The function used to perform chroma conversion.*/
clang-format's avatar
clang-format committed
28 29
typedef void (*y4m_convert_func)(y4m_input *_y4m, unsigned char *_dst,
                                 unsigned char *_src);
30

John Koleszar's avatar
John Koleszar committed
31
struct y4m_input {
clang-format's avatar
clang-format committed
32 33 34 35 36 37 38 39 40 41 42 43
  int pic_w;
  int pic_h;
  int fps_n;
  int fps_d;
  int par_n;
  int par_d;
  char interlace;
  int src_c_dec_h;
  int src_c_dec_v;
  int dst_c_dec_h;
  int dst_c_dec_v;
  char chroma_type[16];
44
  /*The size of each converted frame buffer.*/
clang-format's avatar
clang-format committed
45
  size_t dst_buf_sz;
46
  /*The amount to read directly into the converted frame buffer.*/
clang-format's avatar
clang-format committed
47
  size_t dst_buf_read_sz;
48
  /*The size of the auxilliary buffer.*/
clang-format's avatar
clang-format committed
49
  size_t aux_buf_sz;
50
  /*The amount to read into the auxilliary buffer.*/
clang-format's avatar
clang-format committed
51 52 53 54 55 56 57
  size_t aux_buf_read_sz;
  y4m_convert_func convert;
  unsigned char *dst_buf;
  unsigned char *aux_buf;
  enum vpx_img_fmt vpx_fmt;
  int bps;
  unsigned int bit_depth;
58 59
};

60 61
int y4m_input_open(y4m_input *_y4m, FILE *_fin, char *_skip, int _nskip,
                   int only_420);
62
void y4m_input_close(y4m_input *_y4m);
John Koleszar's avatar
John Koleszar committed
63
int y4m_input_fetch_frame(y4m_input *_y4m, FILE *_fin, vpx_image_t *img);
64

65 66 67 68
#ifdef __cplusplus
}  // extern "C"
#endif

69
#endif  // Y4MINPUT_H_