1f71323e297a928af368937089d3ed71239786f86Andreas Huber/* 2f71323e297a928af368937089d3ed71239786f86Andreas Huber * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3f71323e297a928af368937089d3ed71239786f86Andreas Huber * 4f71323e297a928af368937089d3ed71239786f86Andreas Huber * Use of this source code is governed by a BSD-style license 5f71323e297a928af368937089d3ed71239786f86Andreas Huber * that can be found in the LICENSE file in the root of the source 6f71323e297a928af368937089d3ed71239786f86Andreas Huber * tree. An additional intellectual property rights grant can be found 7f71323e297a928af368937089d3ed71239786f86Andreas Huber * in the file PATENTS. All contributing project authors may 8f71323e297a928af368937089d3ed71239786f86Andreas Huber * be found in the AUTHORS file in the root of the source tree. 9f71323e297a928af368937089d3ed71239786f86Andreas Huber * 10f71323e297a928af368937089d3ed71239786f86Andreas Huber * Based on code from the OggTheora software codec source code, 11f71323e297a928af368937089d3ed71239786f86Andreas Huber * Copyright (C) 2002-2010 The Xiph.Org Foundation and contributors. 12f71323e297a928af368937089d3ed71239786f86Andreas Huber */ 13b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian 14b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#ifndef Y4MINPUT_H_ 15b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#define Y4MINPUT_H_ 16b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian 17f71323e297a928af368937089d3ed71239786f86Andreas Huber# include <stdio.h> 18f71323e297a928af368937089d3ed71239786f86Andreas Huber# include "vpx/vpx_image.h" 19f71323e297a928af368937089d3ed71239786f86Andreas Huber 20b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#ifdef __cplusplus 21b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanianextern "C" { 22b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#endif 23b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian 24f71323e297a928af368937089d3ed71239786f86Andreas Huber 25f71323e297a928af368937089d3ed71239786f86Andreas Huber 26f71323e297a928af368937089d3ed71239786f86Andreas Hubertypedef struct y4m_input y4m_input; 27f71323e297a928af368937089d3ed71239786f86Andreas Huber 28f71323e297a928af368937089d3ed71239786f86Andreas Huber 29f71323e297a928af368937089d3ed71239786f86Andreas Huber 30f71323e297a928af368937089d3ed71239786f86Andreas Huber/*The function used to perform chroma conversion.*/ 31f71323e297a928af368937089d3ed71239786f86Andreas Hubertypedef void (*y4m_convert_func)(y4m_input *_y4m, 32ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang unsigned char *_dst, unsigned char *_src); 33f71323e297a928af368937089d3ed71239786f86Andreas Huber 34f71323e297a928af368937089d3ed71239786f86Andreas Huber 35f71323e297a928af368937089d3ed71239786f86Andreas Huber 36ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangstruct y4m_input { 37f71323e297a928af368937089d3ed71239786f86Andreas Huber int pic_w; 38f71323e297a928af368937089d3ed71239786f86Andreas Huber int pic_h; 39f71323e297a928af368937089d3ed71239786f86Andreas Huber int fps_n; 40f71323e297a928af368937089d3ed71239786f86Andreas Huber int fps_d; 41f71323e297a928af368937089d3ed71239786f86Andreas Huber int par_n; 42f71323e297a928af368937089d3ed71239786f86Andreas Huber int par_d; 43f71323e297a928af368937089d3ed71239786f86Andreas Huber char interlace; 44f71323e297a928af368937089d3ed71239786f86Andreas Huber int src_c_dec_h; 45f71323e297a928af368937089d3ed71239786f86Andreas Huber int src_c_dec_v; 46f71323e297a928af368937089d3ed71239786f86Andreas Huber int dst_c_dec_h; 47f71323e297a928af368937089d3ed71239786f86Andreas Huber int dst_c_dec_v; 48f71323e297a928af368937089d3ed71239786f86Andreas Huber char chroma_type[16]; 49f71323e297a928af368937089d3ed71239786f86Andreas Huber /*The size of each converted frame buffer.*/ 50f71323e297a928af368937089d3ed71239786f86Andreas Huber size_t dst_buf_sz; 51f71323e297a928af368937089d3ed71239786f86Andreas Huber /*The amount to read directly into the converted frame buffer.*/ 52f71323e297a928af368937089d3ed71239786f86Andreas Huber size_t dst_buf_read_sz; 53f71323e297a928af368937089d3ed71239786f86Andreas Huber /*The size of the auxilliary buffer.*/ 54f71323e297a928af368937089d3ed71239786f86Andreas Huber size_t aux_buf_sz; 55f71323e297a928af368937089d3ed71239786f86Andreas Huber /*The amount to read into the auxilliary buffer.*/ 56f71323e297a928af368937089d3ed71239786f86Andreas Huber size_t aux_buf_read_sz; 57f71323e297a928af368937089d3ed71239786f86Andreas Huber y4m_convert_func convert; 58f71323e297a928af368937089d3ed71239786f86Andreas Huber unsigned char *dst_buf; 59f71323e297a928af368937089d3ed71239786f86Andreas Huber unsigned char *aux_buf; 60ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang enum vpx_img_fmt vpx_fmt; 61ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang int vpx_bps; 62f71323e297a928af368937089d3ed71239786f86Andreas Huber}; 63f71323e297a928af368937089d3ed71239786f86Andreas Huber 64ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangint y4m_input_open(y4m_input *_y4m, FILE *_fin, char *_skip, int _nskip, 65ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang int only_420); 66f71323e297a928af368937089d3ed71239786f86Andreas Hubervoid y4m_input_close(y4m_input *_y4m); 67ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangint y4m_input_fetch_frame(y4m_input *_y4m, FILE *_fin, vpx_image_t *img); 68f71323e297a928af368937089d3ed71239786f86Andreas Huber 69b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#ifdef __cplusplus 70b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian} // extern "C" 71f71323e297a928af368937089d3ed71239786f86Andreas Huber#endif 72b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian 73b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#endif // Y4MINPUT_H_ 74