1*fb1b10abSAndroid Build Coastguard Worker /* 2*fb1b10abSAndroid Build Coastguard Worker * Copyright (c) 2014 The WebM project authors. All Rights Reserved. 3*fb1b10abSAndroid Build Coastguard Worker * 4*fb1b10abSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license 5*fb1b10abSAndroid Build Coastguard Worker * that can be found in the LICENSE file in the root of the source 6*fb1b10abSAndroid Build Coastguard Worker * tree. An additional intellectual property rights grant can be found 7*fb1b10abSAndroid Build Coastguard Worker * in the file PATENTS. All contributing project authors may 8*fb1b10abSAndroid Build Coastguard Worker * be found in the AUTHORS file in the root of the source tree. 9*fb1b10abSAndroid Build Coastguard Worker */ 10*fb1b10abSAndroid Build Coastguard Worker 11*fb1b10abSAndroid Build Coastguard Worker #ifndef VPX_VP9_COMMON_VP9_FRAME_BUFFERS_H_ 12*fb1b10abSAndroid Build Coastguard Worker #define VPX_VP9_COMMON_VP9_FRAME_BUFFERS_H_ 13*fb1b10abSAndroid Build Coastguard Worker 14*fb1b10abSAndroid Build Coastguard Worker #include "vpx/vpx_frame_buffer.h" 15*fb1b10abSAndroid Build Coastguard Worker #include "vpx/vpx_integer.h" 16*fb1b10abSAndroid Build Coastguard Worker 17*fb1b10abSAndroid Build Coastguard Worker #ifdef __cplusplus 18*fb1b10abSAndroid Build Coastguard Worker extern "C" { 19*fb1b10abSAndroid Build Coastguard Worker #endif 20*fb1b10abSAndroid Build Coastguard Worker 21*fb1b10abSAndroid Build Coastguard Worker typedef struct InternalFrameBuffer { 22*fb1b10abSAndroid Build Coastguard Worker uint8_t *data; 23*fb1b10abSAndroid Build Coastguard Worker size_t size; 24*fb1b10abSAndroid Build Coastguard Worker int in_use; 25*fb1b10abSAndroid Build Coastguard Worker } InternalFrameBuffer; 26*fb1b10abSAndroid Build Coastguard Worker 27*fb1b10abSAndroid Build Coastguard Worker typedef struct InternalFrameBufferList { 28*fb1b10abSAndroid Build Coastguard Worker int num_internal_frame_buffers; 29*fb1b10abSAndroid Build Coastguard Worker InternalFrameBuffer *int_fb; 30*fb1b10abSAndroid Build Coastguard Worker } InternalFrameBufferList; 31*fb1b10abSAndroid Build Coastguard Worker 32*fb1b10abSAndroid Build Coastguard Worker // Initializes |list|. Returns 0 on success. 33*fb1b10abSAndroid Build Coastguard Worker int vp9_alloc_internal_frame_buffers(InternalFrameBufferList *list); 34*fb1b10abSAndroid Build Coastguard Worker 35*fb1b10abSAndroid Build Coastguard Worker // Free any data allocated to the frame buffers. 36*fb1b10abSAndroid Build Coastguard Worker void vp9_free_internal_frame_buffers(InternalFrameBufferList *list); 37*fb1b10abSAndroid Build Coastguard Worker 38*fb1b10abSAndroid Build Coastguard Worker // Callback used by libvpx to request an external frame buffer. |cb_priv| 39*fb1b10abSAndroid Build Coastguard Worker // Callback private data, which points to an InternalFrameBufferList. 40*fb1b10abSAndroid Build Coastguard Worker // |min_size| is the minimum size in bytes needed to decode the next frame. 41*fb1b10abSAndroid Build Coastguard Worker // |fb| pointer to the frame buffer. 42*fb1b10abSAndroid Build Coastguard Worker int vp9_get_frame_buffer(void *cb_priv, size_t min_size, 43*fb1b10abSAndroid Build Coastguard Worker vpx_codec_frame_buffer_t *fb); 44*fb1b10abSAndroid Build Coastguard Worker 45*fb1b10abSAndroid Build Coastguard Worker // Callback used by libvpx when there are no references to the frame buffer. 46*fb1b10abSAndroid Build Coastguard Worker // |cb_priv| is not used. |fb| pointer to the frame buffer. 47*fb1b10abSAndroid Build Coastguard Worker int vp9_release_frame_buffer(void *cb_priv, vpx_codec_frame_buffer_t *fb); 48*fb1b10abSAndroid Build Coastguard Worker 49*fb1b10abSAndroid Build Coastguard Worker #ifdef __cplusplus 50*fb1b10abSAndroid Build Coastguard Worker } // extern "C" 51*fb1b10abSAndroid Build Coastguard Worker #endif 52*fb1b10abSAndroid Build Coastguard Worker 53*fb1b10abSAndroid Build Coastguard Worker #endif // VPX_VP9_COMMON_VP9_FRAME_BUFFERS_H_ 54