blob: 356cebbcf0aadabe4b86f5e7f645251aa1fa7479 [file] [log] [blame]
Timothy B. Terriberry44d89492010-05-26 18:27:51 -04001/*
John Koleszarc2140b82010-09-09 08:16:39 -04002 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
Timothy B. Terriberry44d89492010-05-26 18:27:51 -04003 *
John Koleszar94c52e42010-06-18 12:39:21 -04004 * Use of this source code is governed by a BSD-style license
John Koleszar09202d82010-06-04 16:19:40 -04005 * 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
John Koleszar94c52e42010-06-18 12:39:21 -04007 * in the file PATENTS. All contributing project authors may
John Koleszar09202d82010-06-04 16:19:40 -04008 * be found in the AUTHORS file in the root of the source tree.
Timothy B. Terriberry44d89492010-05-26 18:27:51 -04009 *
10 * Based on code from the OggTheora software codec source code,
11 * Copyright (C) 2002-2010 The Xiph.Org Foundation and contributors.
12 */
James Zern0f512782013-12-15 18:40:23 -080013
14#ifndef Y4MINPUT_H_
15#define Y4MINPUT_H_
16
Timothy B. Terriberry44d89492010-05-26 18:27:51 -040017# include <stdio.h>
18# include "vpx/vpx_image.h"
19
James Zern25cfd8e2014-01-18 12:16:11 -080020#ifdef __cplusplus
21extern "C" {
22#endif
23
Timothy B. Terriberry44d89492010-05-26 18:27:51 -040024
25
26typedef struct y4m_input y4m_input;
27
28
29
30/*The function used to perform chroma conversion.*/
31typedef void (*y4m_convert_func)(y4m_input *_y4m,
John Koleszarc6b90392012-07-13 15:21:29 -070032 unsigned char *_dst, unsigned char *_src);
Timothy B. Terriberry44d89492010-05-26 18:27:51 -040033
34
35
John Koleszarc6b90392012-07-13 15:21:29 -070036struct y4m_input {
Timothy B. Terriberry44d89492010-05-26 18:27:51 -040037 int pic_w;
38 int pic_h;
39 int fps_n;
40 int fps_d;
41 int par_n;
42 int par_d;
43 char interlace;
44 int src_c_dec_h;
45 int src_c_dec_v;
46 int dst_c_dec_h;
47 int dst_c_dec_v;
48 char chroma_type[16];
49 /*The size of each converted frame buffer.*/
50 size_t dst_buf_sz;
51 /*The amount to read directly into the converted frame buffer.*/
52 size_t dst_buf_read_sz;
53 /*The size of the auxilliary buffer.*/
54 size_t aux_buf_sz;
55 /*The amount to read into the auxilliary buffer.*/
56 size_t aux_buf_read_sz;
57 y4m_convert_func convert;
58 unsigned char *dst_buf;
59 unsigned char *aux_buf;
John Koleszar8dd82872013-05-06 11:01:35 -070060 enum vpx_img_fmt vpx_fmt;
Deb Mukherjee5820c5d2014-06-12 16:53:13 -070061 int bps;
62 unsigned int bit_depth;
Timothy B. Terriberry44d89492010-05-26 18:27:51 -040063};
64
John Koleszar8dd82872013-05-06 11:01:35 -070065int y4m_input_open(y4m_input *_y4m, FILE *_fin, char *_skip, int _nskip,
66 int only_420);
Timothy B. Terriberry44d89492010-05-26 18:27:51 -040067void y4m_input_close(y4m_input *_y4m);
John Koleszarc6b90392012-07-13 15:21:29 -070068int y4m_input_fetch_frame(y4m_input *_y4m, FILE *_fin, vpx_image_t *img);
Timothy B. Terriberry44d89492010-05-26 18:27:51 -040069
James Zern25cfd8e2014-01-18 12:16:11 -080070#ifdef __cplusplus
71} // extern "C"
72#endif
73
James Zern0f512782013-12-15 18:40:23 -080074#endif // Y4MINPUT_H_