diff options
Diffstat (limited to 'webmdec.h')
-rw-r--r-- | webmdec.h | 43 |
1 files changed, 31 insertions, 12 deletions
@@ -16,34 +16,53 @@ extern "C" { #endif -struct nestegg; -struct nestegg_packet; struct VpxInputContext; struct WebmInputContext { - uint32_t chunk; - uint32_t chunks; - uint32_t video_track; - struct nestegg *nestegg_ctx; - struct nestegg_packet *pkt; + void *reader; + void *segment; + uint8_t *buffer; + const void *cluster; + const void *block_entry; + const void *block; + int block_frame_index; + int video_track_index; + uint64_t timestamp_ns; }; +// Checks if the input is a WebM file. If so, initializes WebMInputContext so +// that webm_read_frame can be called to retrieve a video frame. +// Returns 1 on success and 0 on failure or input is not WebM file. +// TODO(vigneshv): Refactor this function into two smaller functions specific +// to their task. int file_is_webm(struct WebmInputContext *webm_ctx, struct VpxInputContext *vpx_ctx); -/* Reads a WebM video frame. Return values: - * 0 - Success - * 1 - End of File - * -1 - Error - */ +// Reads a WebM Video Frame. Memory for the buffer is created, owned and managed +// by this function. For the first call, |buffer| should be NULL and +// |*bytes_in_buffer| should be 0. Once all the frames are read and used, +// webm_free() should be called, otherwise there will be a leak. +// Parameters: +// webm_ctx - WebmInputContext object +// buffer - pointer where the frame data will be filled. +// bytes_in_buffer - pointer to buffer size. +// buffer_size - unused TODO(vigneshv): remove this +// Return values: +// 0 - Success +// 1 - End of Stream +// -1 - Error +// TODO(vigneshv): Make the return values consistent across all functions in +// this file. int webm_read_frame(struct WebmInputContext *webm_ctx, uint8_t **buffer, size_t *bytes_in_buffer, size_t *buffer_size); +// Guesses the frame rate of the input file based on the container timestamps. int webm_guess_framerate(struct WebmInputContext *webm_ctx, struct VpxInputContext *vpx_ctx); +// Resets the WebMInputContext. void webm_free(struct WebmInputContext *webm_ctx); #ifdef __cplusplus |