17c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* 27c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project 37c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 47c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License"); 57c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * you may not use this file except in compliance with the License. 67c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * You may obtain a copy of the License at 77c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 87c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * http://www.apache.org/licenses/LICENSE-2.0 97c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Unless required by applicable law or agreed to in writing, software 117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS, 127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * See the License for the specific language governing permissions and 147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * limitations under the License. 157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */ 167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi************************************************************************* 187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi* @file VideoEditorBuffer.c 197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi* @brief StageFright shell Buffer 207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi************************************************************************* 217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef VIDEOEDITOR_BUFFER_H 237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define VIDEOEDITOR_BUFFER_H 247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Types.h" 267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Debug.h" 277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Memory.h" 287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_CharStar.h" 297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4_Utils.h" 307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "LV_Macros.h" 327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*--- Core id for VIDEOEDITOR Buffer allocations ---*/ 347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define VIDEOEDITOR_BUFFER_EXTERNAL 0x012F 357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* ----- errors -----*/ 377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4ERR_NO_BUFFER_AVAILABLE \ 387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_ERR_CREATE(M4_ERR,VIDEOEDITOR_BUFFER_EXTERNAL,0x000001) 397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4ERR_NO_BUFFER_MATCH \ 407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_ERR_CREATE(M4_ERR,VIDEOEDITOR_BUFFER_EXTERNAL,0x000002) 417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum { 437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi VIDEOEDITOR_BUFFER_kEmpty = 0, 447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi VIDEOEDITOR_BUFFER_kFilled, 457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} VIDEOEDITOR_BUFFER_State; 467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************ 497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Structure LVOMX_BUFFER_Buffer 507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief One OMX Buffer and data related to it 517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************ 527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct { 547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Void* pData; /**< Pointer to the data*/ 557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 size; 567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi VIDEOEDITOR_BUFFER_State state; /**< Buffer state */ 577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 idx; /**< Index of the buffer inside the pool */ 587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4_MediaTime buffCTS; /**< Time stamp of the buffer */ 597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} VIDEOEDITOR_BUFFER_Buffer; 607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************ 637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Structure LVOMX_BUFFER_Pool 647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief Structure to manage buffers 657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************ 667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct { 687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi VIDEOEDITOR_BUFFER_Buffer* pNXPBuffer; 697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 NB; 707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Char* poolName; 717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} VIDEOEDITOR_BUFFER_Pool; 727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef __cplusplus 747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiextern "C" 757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif //__cplusplus 777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************ 807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_ERR VIDEOEDITOR_BUFFER_allocatePool(VIDEOEDITOR_BUFFER_Pool** ppool, 817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4OSA_UInt32 nbBuffers) 827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief Allocate a pool of nbBuffers buffers 837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param ppool : IN The buffer pool to create 857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param nbBuffers : IN The number of buffers in the pool 867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param poolName : IN a name given to the pool 877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return Error code 887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************ 897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR VIDEOEDITOR_BUFFER_allocatePool(VIDEOEDITOR_BUFFER_Pool** ppool, 917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 nbBuffers, M4OSA_Char* poolName); 927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************ 957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_ERR VIDEOEDITOR_BUFFER_freePool(LVOMX_BUFFER_Pool* ppool) 967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief Deallocate a buffer pool 977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param ppool : IN The buffer pool to free 997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return Error code 1007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************ 1017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 1027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR VIDEOEDITOR_BUFFER_freePool(VIDEOEDITOR_BUFFER_Pool* ppool); 1037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 1057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************ 1067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_ERR VIDEOEDITOR_BUFFER_getBuffer(VIDEOEDITOR_BUFFER_Pool* ppool, 1077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * VIDEOEDITOR_BUFFER_Buffer** pNXPBuffer) 1087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief Returns a buffer in a given state 1097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 1107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param ppool : IN The buffer pool 1117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param desiredState : IN The buffer state 1127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param pNXPBuffer : IN The selected buffer 1137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return Error code 1147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************ 1157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 1167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR VIDEOEDITOR_BUFFER_getBuffer(VIDEOEDITOR_BUFFER_Pool* ppool, 1177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi VIDEOEDITOR_BUFFER_State desiredState, 1187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi VIDEOEDITOR_BUFFER_Buffer** pNXPBuffer); 1197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR VIDEOEDITOR_BUFFER_initPoolBuffers(VIDEOEDITOR_BUFFER_Pool* ppool, 1227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 lSize); 1237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR VIDEOEDITOR_BUFFER_getOldestBuffer(VIDEOEDITOR_BUFFER_Pool *pool, 1257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi VIDEOEDITOR_BUFFER_State desiredState, 1267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi VIDEOEDITOR_BUFFER_Buffer** pNXPBuffer); 1277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef __cplusplus 1297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} 1307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif //__cplusplus 1317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*VIDEOEDITOR_BUFFER_H*/ 1327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 133