14a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/* ------------------------------------------------------------------ 24a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber * Copyright (C) 1998-2009 PacketVideo 34a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber * 44a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 54a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber * you may not use this file except in compliance with the License. 64a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber * You may obtain a copy of the License at 74a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber * 84a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber * http://www.apache.org/licenses/LICENSE-2.0 94a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber * 104a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber * Unless required by applicable law or agreed to in writing, software 114a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 124a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 134a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber * express or implied. 144a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber * See the License for the specific language governing permissions 154a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber * and limitations under the License. 164a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber * ------------------------------------------------------------------- 174a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber */ 184a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/** 194a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis file contains common type definitions and enumerations used by AVC encoder 204a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberand decoder libraries which are exposed to the users. 214a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber@publishedAll 224a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/ 234a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 244a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber#ifndef AVCAPI_COMMON_H_INCLUDED 254a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber#define AVCAPI_COMMON_H_INCLUDED 264a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 274a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber#include "avc_types.h" 284a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 294a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber#define PV_MEMORY_POOL 304a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/** 314a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis is common return status. 324a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber@publishedAll 334a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/ 344a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubertypedef enum 354a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber{ 364a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_NO_BUFFER = -2, 374a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_MEMORY_FAIL = -1, 384a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_FAIL = 0, 394a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_SUCCESS = 1, 404a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_PICTURE_OUTPUT_READY = 2 414a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber} AVCStatus; 424a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 434a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/** 444a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis enumeration is for profiles. The value follows the profile_idc in sequence 454a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberparameter set rbsp. See Annex A. 464a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber@publishedAll 474a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/ 484a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubertypedef enum 494a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber{ 504a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_BASELINE = 66, 514a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_MAIN = 77, 524a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_EXTENDED = 88, 534a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_HIGH = 100, 544a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_HIGH10 = 110, 554a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_HIGH422 = 122, 564a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_HIGH444 = 144 574a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber} AVCProfile; 584a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 594a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/** 604a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis enumeration is for levels. The value follows the level_idc in sequence 614a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberparameter set rbsp. See Annex A. 624a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber@published All 634a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/ 644a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubertypedef enum 654a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber{ 664a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LEVEL_AUTO = 0, 674a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LEVEL1_B = 9, 684a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LEVEL1 = 10, 694a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LEVEL1_1 = 11, 704a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LEVEL1_2 = 12, 714a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LEVEL1_3 = 13, 724a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LEVEL2 = 20, 734a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LEVEL2_1 = 21, 744a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LEVEL2_2 = 22, 754a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LEVEL3 = 30, 764a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LEVEL3_1 = 31, 774a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LEVEL3_2 = 32, 784a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LEVEL4 = 40, 794a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LEVEL4_1 = 41, 804a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LEVEL4_2 = 42, 814a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LEVEL5 = 50, 824a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LEVEL5_1 = 51 834a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber} AVCLevel; 844a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 854a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/** 864a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis enumeration follows Table 7-1 for NAL unit type codes. 874a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis may go to avccommon_api.h later (external common). 884a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber@publishedAll 894a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/ 904a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubertypedef enum 914a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber{ 924a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_NALTYPE_SLICE = 1, /* non-IDR non-data partition */ 934a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_NALTYPE_DPA = 2, /* data partition A */ 944a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_NALTYPE_DPB = 3, /* data partition B */ 954a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_NALTYPE_DPC = 4, /* data partition C */ 964a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_NALTYPE_IDR = 5, /* IDR NAL */ 974a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_NALTYPE_SEI = 6, /* supplemental enhancement info */ 984a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_NALTYPE_SPS = 7, /* sequence parameter set */ 994a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_NALTYPE_PPS = 8, /* picture parameter set */ 1004a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_NALTYPE_AUD = 9, /* access unit delimiter */ 1014a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_NALTYPE_EOSEQ = 10, /* end of sequence */ 1024a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_NALTYPE_EOSTREAM = 11, /* end of stream */ 1034a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_NALTYPE_FILL = 12 /* filler data */ 1044a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber} AVCNalUnitType; 1054a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1064a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/** 1074a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis enumeration specifies debug logging type. 1084a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis may go to avccommon_api.h later (external common). 1094a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber@publishedAll 1104a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/ 1114a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubertypedef enum 1124a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber{ 1134a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LOGTYPE_ERROR = 0, 1144a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LOGTYPE_WARNING = 1, 1154a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_LOGTYPE_INFO = 2 1164a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber} AVCLogType; 1174a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1184a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/** 1194a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis enumerate the status of certain flags. 1204a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber@publishedAll 1214a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/ 1224a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubertypedef enum 1234a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber{ 1244a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_OFF = 0, 1254a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber AVC_ON = 1 1264a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber} AVCFlag; 1274a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1284a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/** 1294a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis structure contains input information. 1304a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberNote, this structure is identical to AVCDecOutput for now. 1314a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/ 1324a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubertypedef struct tagAVCFrameIO 1334a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber{ 1344a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber /** A unique identification number for a particular instance of this structure. 1354a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber To remain unchanged by the application between the time when it is given to the 1364a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber library and the time when the library returns it back. */ 1374a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber uint32 id; 1384a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1394a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber /** Array of pointers to Y,Cb,Cr content in 4:2:0 format. For AVC decoding, 1404a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber this memory is allocated by the AVC decoder library. For AVC encoding, only the 1414a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber memory for original unencoded frame is allocated by the application. Internal 1424a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber memory is also allocated by the AVC encoder library. */ 1434a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber uint8 *YCbCr[3]; 1444a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1454a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber /** In/Out: Coded width of the luma component, it has to be multiple of 16. */ 1464a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber int pitch; 1474a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1484a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber /** In/Out: Coded height of the luma component, must be multiple of 16. */ 1494a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber int height; 1504a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1514a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber /** In/Out: Display width, less than picth */ 1524a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber int clip_width; 1534a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1544a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber /** In/Out: Display height, less than height */ 1554a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber int clip_height; 1564a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1574a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber /** Input: Origin of the display area [0]=>row, [1]=>column */ 1584a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber int clip_origin[2]; 1594a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1604a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber /** Output: Frame number in de/encoding order (not necessary)*/ 1614a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber uint32 coding_order; 1624a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1634a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber /** Output: Frame number in displaying order (this may or may not be associated with the POC at all!!!). */ 1644a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber uint32 disp_order; 1654a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1664a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber /** In/Out: Flag for use for reference or not. */ 1674a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber uint is_reference; 1684a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1694a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber /** In/Out: Coding timestamp in msec (not display timestamp) */ 1704a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber uint32 coding_timestamp; 1714a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1724a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber /* there could be something else here such as format, DON (decoding order number) 1734a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber if available thru SEI, etc. */ 1744a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber} AVCFrameIO; 1754a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1764a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1774a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/** CALLBACK FUNCTION TO BE IMPLEMENTED BY APPLICATION */ 1784a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/** In AVCDecControls structure, userData is a pointer to an object with the following 1794a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber member functions. 1804a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/ 1814a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1824a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1834a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/** @brief Decoded picture buffers (DPB) must be allocated or re-allocated before an 1844a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber IDR frame is decoded. If PV_MEMORY_POOL is not defined, AVC lib will allocate DPB 1854a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber internally which cannot be shared with the application. In that case, this function 1864a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber will not be called. 1874a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber @param userData The same value of userData in AVCHandle object. 1884a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber @param frame_size_in_mbs The size of each frame in number of macroblocks. 1894a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber @param num_frames The number of frames in DPB. 1904a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber @return 1 for success, 0 for fail (cannot allocate DPB) 1914a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/ 1924a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1934a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubertypedef int (*FunctionType_DPBAlloc)(void *userData, uint frame_size_in_mbs, uint num_buffers); 1944a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 1954a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/** @brief AVC library calls this function is reserve a memory of one frame from the DPB. 1964a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber Once reserved, this frame shall not be deleted or over-written by the app. 1974a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber @param userData The same value of userData in AVCHandle object. 1984a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber @param indx Index of a frame in DPB (AVC library keeps track of the index). 1994a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber @param yuv The address of the yuv pointer returned to the AVC lib. 2004a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber @return 1 for success, 0 for fail (no frames available to bind). 2014a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber */ 2024a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubertypedef int (*FunctionType_FrameBind)(void *userData, int indx, uint8 **yuv); 2034a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2044a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/** @brief AVC library calls this function once a bound frame is not needed for decoding 2054a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber operation (falls out of the sliding window, or marked unused for reference). 2064a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber @param userData The same value of userData in AVCHandle object. 2074a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber @param indx Index of frame to be unbound (AVC library keeps track of the index). 2084a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber @return none. 2094a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/ 2104a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubertypedef void (*FuctionType_FrameUnbind)(void *userData, int); 2114a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2124a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/** Pointer to malloc function for general memory allocation, so that application can keep track of 2134a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber memory usage. 2144a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "size" "Size of requested memory in bytes." 2154a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "attribute" "Some value specifying types, priority, etc. of the memory." 2164a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "The address of the allocated memory casted to int" 2174a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/ 2184a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubertypedef int (*FunctionType_Malloc)(void *userData, int32 size, int attribute); 2194a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2204a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/** Function pointer to free 2214a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "mem" "Pointer to the memory to be freed casted to int" 2224a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void" 2234a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/ 2244a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubertypedef void (*FunctionType_Free)(void *userData, int mem); 2254a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2264a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/** Debug logging information is returned to the application thru this function. 2274a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "type" "Type of logging message, see definition of AVCLogType." 2284a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "string1" "Logging message." 2294a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "string2" "To be defined." 2304a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/ 2314a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubertypedef void (*FunctionType_DebugLog)(uint32 *userData, AVCLogType type, char *string1, int val1, int val2); 2324a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2334a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/** 2344a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis structure has to be allocated and maintained by the user of the library. 2354a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis structure is used as a handle to the library object. 2364a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/ 2374a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubertypedef struct tagAVCHandle 2384a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber{ 2394a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber /** A pointer to the internal data structure. Users have to make sure that this value 2404a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber is NULL at the beginning. 2414a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber */ 2424a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber void *AVCObject; 2434a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2444a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber /** A pointer to user object which has the following member functions used for 2454a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber callback purpose. !!! */ 2464a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber void *userData; 2474a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2484a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber /** Pointers to functions implemented by the users of AVC library */ 2494a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber FunctionType_DPBAlloc CBAVC_DPBAlloc; 2504a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2514a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber FunctionType_FrameBind CBAVC_FrameBind; 2524a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2534a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber FuctionType_FrameUnbind CBAVC_FrameUnbind; 2544a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2554a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber FunctionType_Malloc CBAVC_Malloc; 2564a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2574a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber FunctionType_Free CBAVC_Free; 2584a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2594a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber FunctionType_DebugLog CBAVC_DebugLog; 2604a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2614a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber /** Flag to enable debugging */ 2624a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber uint32 debugEnable; 2634a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2644a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber} AVCHandle; 2654a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2664a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2674a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2684a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber#ifdef PVDEBUGMSG_LOG 2694a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber#define DEBUG_LOG(a,b,c,d,e) CBAVC_DebugLog(a,b,c,d,e) 2704a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber#else 2714a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber#define DEBUG_LOG(a,b,c,d,e) 2724a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber#endif 2734a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber 2744a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber#endif /* _AVCAPI_COMMON_H_ */ 275