1/* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16/** 17************************************************************************* 18* @file VideoEditorBuffer.c 19* @brief StageFright shell Buffer 20************************************************************************* 21*/ 22#ifndef VIDEOEDITOR_BUFFER_H 23#define VIDEOEDITOR_BUFFER_H 24 25#include "M4OSA_Types.h" 26#include "M4OSA_Debug.h" 27#include "M4OSA_Memory.h" 28#include "M4OSA_CharStar.h" 29#include "M4_Utils.h" 30 31#include "LV_Macros.h" 32 33/*--- Core id for VIDEOEDITOR Buffer allocations ---*/ 34#define VIDEOEDITOR_BUFFER_EXTERNAL 0x012F 35 36/* ----- errors -----*/ 37#define M4ERR_NO_BUFFER_AVAILABLE \ 38 M4OSA_ERR_CREATE(M4_ERR,VIDEOEDITOR_BUFFER_EXTERNAL,0x000001) 39#define M4ERR_NO_BUFFER_MATCH \ 40 M4OSA_ERR_CREATE(M4_ERR,VIDEOEDITOR_BUFFER_EXTERNAL,0x000002) 41 42typedef enum { 43 VIDEOEDITOR_BUFFER_kEmpty = 0, 44 VIDEOEDITOR_BUFFER_kFilled, 45} VIDEOEDITOR_BUFFER_State; 46 47/** 48 ************************************************************************ 49 * Structure LVOMX_BUFFER_Buffer 50 * @brief One OMX Buffer and data related to it 51 ************************************************************************ 52*/ 53typedef struct { 54 M4OSA_Void* pData; /**< Pointer to the data*/ 55 M4OSA_UInt32 size; 56 VIDEOEDITOR_BUFFER_State state; /**< Buffer state */ 57 M4OSA_UInt32 idx; /**< Index of the buffer inside the pool */ 58 M4_MediaTime buffCTS; /**< Time stamp of the buffer */ 59} VIDEOEDITOR_BUFFER_Buffer; 60 61/** 62 ************************************************************************ 63 * Structure LVOMX_BUFFER_Pool 64 * @brief Structure to manage buffers 65 ************************************************************************ 66*/ 67typedef struct { 68 VIDEOEDITOR_BUFFER_Buffer* pNXPBuffer; 69 M4OSA_UInt32 NB; 70 M4OSA_Char* poolName; 71} VIDEOEDITOR_BUFFER_Pool; 72 73#ifdef __cplusplus 74extern "C" 75{ 76#endif //__cplusplus 77 78/** 79 ************************************************************************ 80 M4OSA_ERR VIDEOEDITOR_BUFFER_allocatePool(VIDEOEDITOR_BUFFER_Pool** ppool, 81 * M4OSA_UInt32 nbBuffers) 82 * @brief Allocate a pool of nbBuffers buffers 83 * 84 * @param ppool : IN The buffer pool to create 85 * @param nbBuffers : IN The number of buffers in the pool 86 * @param poolName : IN a name given to the pool 87 * @return Error code 88 ************************************************************************ 89*/ 90M4OSA_ERR VIDEOEDITOR_BUFFER_allocatePool(VIDEOEDITOR_BUFFER_Pool** ppool, 91 M4OSA_UInt32 nbBuffers, M4OSA_Char* poolName); 92 93/** 94 ************************************************************************ 95 M4OSA_ERR VIDEOEDITOR_BUFFER_freePool(LVOMX_BUFFER_Pool* ppool) 96 * @brief Deallocate a buffer pool 97 * 98 * @param ppool : IN The buffer pool to free 99 * @return Error code 100 ************************************************************************ 101*/ 102M4OSA_ERR VIDEOEDITOR_BUFFER_freePool(VIDEOEDITOR_BUFFER_Pool* ppool); 103 104/** 105 ************************************************************************ 106 M4OSA_ERR VIDEOEDITOR_BUFFER_getBuffer(VIDEOEDITOR_BUFFER_Pool* ppool, 107 * VIDEOEDITOR_BUFFER_Buffer** pNXPBuffer) 108 * @brief Returns a buffer in a given state 109 * 110 * @param ppool : IN The buffer pool 111 * @param desiredState : IN The buffer state 112 * @param pNXPBuffer : IN The selected buffer 113 * @return Error code 114 ************************************************************************ 115*/ 116M4OSA_ERR VIDEOEDITOR_BUFFER_getBuffer(VIDEOEDITOR_BUFFER_Pool* ppool, 117 VIDEOEDITOR_BUFFER_State desiredState, 118 VIDEOEDITOR_BUFFER_Buffer** pNXPBuffer); 119 120 121M4OSA_ERR VIDEOEDITOR_BUFFER_initPoolBuffers(VIDEOEDITOR_BUFFER_Pool* ppool, 122 M4OSA_UInt32 lSize); 123 124M4OSA_ERR VIDEOEDITOR_BUFFER_getOldestBuffer(VIDEOEDITOR_BUFFER_Pool *pool, 125 VIDEOEDITOR_BUFFER_State desiredState, 126 VIDEOEDITOR_BUFFER_Buffer** pNXPBuffer); 127 128#ifdef __cplusplus 129} 130#endif //__cplusplus 131#endif /*VIDEOEDITOR_BUFFER_H*/ 132 133