|  | /* | 
|  | * Copyright (c) 2016, Alliance for Open Media. All rights reserved | 
|  | * | 
|  | * 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. | 
|  | */ | 
|  |  | 
|  | #ifndef AOM_COMMON_VIDEO_READER_H_ | 
|  | #define AOM_COMMON_VIDEO_READER_H_ | 
|  |  | 
|  | #include "common/video_common.h" | 
|  |  | 
|  | // The following code is work in progress. It is going to  support transparent | 
|  | // reading of input files. Right now only IVF format is supported for | 
|  | // simplicity. The main goal the API is to be simple and easy to use in example | 
|  | // code and in aomenc/aomdec later. All low-level details like memory | 
|  | // buffer management are hidden from API users. | 
|  | struct AvxVideoReaderStruct; | 
|  | typedef struct AvxVideoReaderStruct AvxVideoReader; | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  |  | 
|  | // Opens the input file for reading and inspects it to determine file type. | 
|  | // Returns an opaque AvxVideoReader* upon success, or NULL upon failure. | 
|  | // Right now only IVF format is supported. | 
|  | AvxVideoReader *aom_video_reader_open(const char *filename); | 
|  |  | 
|  | // Frees all resources associated with AvxVideoReader* returned from | 
|  | // aom_video_reader_open() call. | 
|  | void aom_video_reader_close(AvxVideoReader *reader); | 
|  |  | 
|  | // Reads frame from the file and stores it in internal buffer. | 
|  | int aom_video_reader_read_frame(AvxVideoReader *reader); | 
|  |  | 
|  | // Returns the pointer to memory buffer with frame data read by last call to | 
|  | // aom_video_reader_read_frame(). | 
|  | const uint8_t *aom_video_reader_get_frame(AvxVideoReader *reader, size_t *size); | 
|  |  | 
|  | // Returns the pts of the frame. | 
|  | int64_t aom_video_reader_get_frame_pts(AvxVideoReader *reader); | 
|  | // Return the reader file. | 
|  | FILE *aom_video_reader_get_file(AvxVideoReader *reader); | 
|  |  | 
|  | // Fills AvxVideoInfo with information from opened video file. | 
|  | const AvxVideoInfo *aom_video_reader_get_info(AvxVideoReader *reader); | 
|  |  | 
|  | // Set fourcc. | 
|  | void aom_video_reader_set_fourcc(AvxVideoReader *reader, uint32_t fourcc); | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | }  // extern "C" | 
|  | #endif | 
|  |  | 
|  | #endif  // AOM_COMMON_VIDEO_READER_H_ |