176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org/* 276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org * Copyright (c) 2014 The WebM project authors. All Rights Reserved. 376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org * 476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org * Use of this source code is governed by a BSD-style license 576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org * that can be found in the LICENSE file in the root of the source 676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org * tree. An additional intellectual property rights grant can be found 776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org * in the file PATENTS. All contributing project authors may 876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org * be found in the AUTHORS file in the root of the source tree. 976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org */ 1076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 1176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org#ifndef VIDEO_READER_H_ 1276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org#define VIDEO_READER_H_ 1376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 1476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org#include "./video_common.h" 1576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 1676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org// The following code is work in progress. It is going to support transparent 1776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org// reading of input files. Right now only IVF format is supported for 1876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org// simplicity. The main goal the API is to be simple and easy to use in example 1976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org// code and in vpxenc/vpxdec later. All low-level details like memory 2076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org// buffer management are hidden from API users. 2176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgstruct VpxVideoReaderStruct; 2276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgtypedef struct VpxVideoReaderStruct VpxVideoReader; 2376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 2476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org#ifdef __cplusplus 2576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgextern "C" { 2676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org#endif 2776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 2876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org// Opens the input file for reading and inspects it to determine file type. 2976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org// Returns an opaque VpxVideoReader* upon success, or NULL upon failure. 3076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org// Right now only IVF format is supported. 3176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgVpxVideoReader *vpx_video_reader_open(const char *filename); 3276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 3376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org// Frees all resources associated with VpxVideoReader* returned from 3476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org// vpx_video_reader_open() call. 3576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgvoid vpx_video_reader_close(VpxVideoReader *reader); 3676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 3776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org// Reads frame from the file and stores it in internal buffer. 3876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgint vpx_video_reader_read_frame(VpxVideoReader *reader); 3976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 4076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org// Returns the pointer to memory buffer with frame data read by last call to 4176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org// vpx_video_reader_read_frame(). 4276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgconst uint8_t *vpx_video_reader_get_frame(VpxVideoReader *reader, 4376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org size_t *size); 4476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 4576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org// Fills VpxVideoInfo with information from opened video file. 4676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgconst VpxVideoInfo *vpx_video_reader_get_info(VpxVideoReader *reader); 4776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 4876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org#ifdef __cplusplus 4976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org} // extern "C" 5076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org#endif 5176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 5276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org#endif // VIDEO_READER_H_ 53