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 declarations of internal functions for common encoder/decoder library.
204a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber@publishedAll
214a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
224a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber#ifndef AVCCOMMON_LIB_H_INCLUDED
234a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber#define AVCCOMMON_LIB_H_INCLUDED
244a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
25913730739f89ddf64439251d0d8c6b503c3b9d04Andreas Huber#include <stdlib.h>
26913730739f89ddf64439251d0d8c6b503c3b9d04Andreas Huber
274a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber#ifndef AVCINT_COMMON_H_INCLUDED
284a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber#include "avcint_common.h"
294a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber#endif
304a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
314a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/*----------- deblock.c --------------*/
324a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
334a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs conditional deblocking on a complete picture.
344a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video"  "Pointer to AVCCommonObj."
354a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "AVC_SUCCESS for success and AVC_FAIL otherwise."
364a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
374a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberOSCL_IMPORT_REF AVCStatus DeblockPicture(AVCCommonObj *video);
384a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
394a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
404a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs MB-based deblocking when MB_BASED_DEBLOCK
414a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberis defined at compile time.
424a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video"  "Pointer to AVCCommonObj."
434a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "AVC_SUCCESS for success and AVC_FAIL otherwise."
444a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
454a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid MBInLoopDeblock(AVCCommonObj *video);
464a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
474a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
484a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/*---------- dpb.c --------------------*/
494a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
504a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function is called everytime a new sequence is detected.
514a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "avcHandle"  "Pointer to AVCHandle."
524a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video" "Pointer to AVCCommonObj."
534a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "padding"    "Flag specifying whether padding in luma component is needed (used for encoding)."
544a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "AVC_SUCCESS or AVC_FAIL."
554a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
564a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberOSCL_IMPORT_REF AVCStatus AVCConfigureSequence(AVCHandle *avcHandle, AVCCommonObj *video, bool padding);
574a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
584a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
594a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function allocates and initializes the decoded picture buffer structure based on
604a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberthe profile and level for the first sequence parameter set. Currently,
614a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberit does not allow changing in profile/level for subsequent SPS.
624a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "avcHandle"  "Pointer to AVCHandle."
634a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video" "Pointer to AVCCommonObj."
644a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "FrameHeightInMbs"   "Height of the frame in the unit of MBs."
654a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "PicWidthInMbs"  "Width of the picture in the unit of MBs."
664a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "padding"    "Flag specifying whether padding in luma component is needed (used for encoding)."
674a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "AVC_SUCCESS or AVC_FAIL."
684a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
694a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberAVCStatus InitDPB(AVCHandle *avcHandle, AVCCommonObj *video, int FrameHeightInMbs, int PicWidthInMbs, bool padding);
704a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
714a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
724a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function frees the DPB memory.
734a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "avcHandle"  "Pointer to AVCHandle."
744a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video" "Pointer to AVCCommonObj."
754a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "AVC_SUCCESS or AVC_FAIL."
764a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
774a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberOSCL_IMPORT_REF AVCStatus CleanUpDPB(AVCHandle *avcHandle, AVCCommonObj *video);
784a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
794a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
804a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function finds empty frame in the decoded picture buffer to be used for the
814a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubercurrent picture, initializes the corresponding picture structure with Sl, Scb, Scr,
824a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberwidth, height and pitch.
834a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "avcHandle" "Pointer to the main handle object."
844a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video"  "Pointer to AVCCommonObj."
854a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "AVC_SUCCESS or AVC_FAIL."
864a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
874a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberOSCL_IMPORT_REF AVCStatus DPBInitBuffer(AVCHandle *avcHandle, AVCCommonObj *video);
884a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
894a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function finds empty frame in the decoded picture buffer to be used for the
904a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubercurrent picture, initializes the corresponding picture structure with Sl, Scb, Scr,
914a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberwidth, height and pitch.
924a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video"  "Pointer to AVCCommonObj."
934a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "CurrPicNum" "Current picture number (only used in decoder)."
944a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "AVC_SUCCESS or AVC_FAIL."
954a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
964a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
974a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberOSCL_IMPORT_REF void DPBInitPic(AVCCommonObj *video, int CurrPicNum);
984a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
994a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
1004a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function releases the current frame back to the available pool for skipped frame after encoding.
1014a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "avcHandle" "Pointer to the main handle object."
1024a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video" "Pointer to the AVCCommonObj."
1034a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void."
1044a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
1054a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberOSCL_IMPORT_REF void DPBReleaseCurrentFrame(AVCHandle *avcHandle, AVCCommonObj *video);
1064a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
1074a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
1084a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs decoded reference picture marking process and store the current picture to the
1094a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubercorresponding frame storage in the decoded picture buffer.
1104a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "avcHandle" "Pointer to the main handle object."
1114a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video" "Pointer to the AVCCommonObj."
1124a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "AVC_SUCCESS or AVC_FAIL."
1134a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
1144a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberOSCL_IMPORT_REF AVCStatus StorePictureInDPB(AVCHandle *avcHandle, AVCCommonObj *video);
1154a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
1164a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
1174a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function perform sliding window operation on the reference picture lists, see subclause 8.2.5.3.
1184a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberIt removes short-term ref frames with smallest FrameNumWrap from the reference list.
1194a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "avcHandle" "Pointer to the main handle object."
1204a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video" "Pointer to the AVCCommonObj."
1214a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "dpb"  "Pointer to the AVCDecPicBuffer."
1224a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "AVC_SUCCESS or AVC_FAIL (contradicting values or scenario as in the Note in the draft)."
1234a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
1244a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberAVCStatus sliding_window_process(AVCHandle *avcHandle, AVCCommonObj *video, AVCDecPicBuffer *dpb);
1254a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
1264a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
1274a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
1284a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function perform adaptive memory marking operation on the reference picture lists,
1294a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubersee subclause 8.2.5.4. It calls other functions for specific operations.
1304a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video" "Pointer to the AVCCommonObj."
1314a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "dpb"  "Pointer to the AVCDecPicBuffer."
1324a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "sliceHdr"   "Pointer to the AVCSliceHeader."
1334a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "AVC_SUCCESS or AVC_FAIL (contradicting values or scenario as in the Note in the draft)."
1344a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
1354a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberAVCStatus adaptive_memory_marking(AVCHandle *avcHandle, AVCCommonObj *video, AVCDecPicBuffer *dpb, AVCSliceHeader *sliceHdr);
1364a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
1374a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
1384a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs memory management control operation 1, marking a short-term picture
1394a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberas unused for reference. See subclause 8.2.5.4.1.
1404a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video" "Pointer to the AVCCommonObj."
1414a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "dpb"  "Pointer to the AVCDecPicBuffer."
1424a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "difference_of_pic_nums_minus1"  "From the syntax in dec_ref_pic_marking()."
1434a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
1444a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid MemMgrCtrlOp1(AVCHandle *avcHandle, AVCCommonObj *video, AVCDecPicBuffer *dpb, int difference_of_pic_nums_minus1);
1454a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
1464a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
1474a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs memory management control operation 2, marking a long-term picture
1484a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberas unused for reference. See subclause 8.2.5.4.2.
1494a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "dpb"  "Pointer to the AVCDecPicBuffer."
1504a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "field_pic_flag"  "Flag whether the current picture is field or not."
1514a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "long_term_pic_num"  "From the syntax in dec_ref_pic_marking()."
1524a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
1534a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid MemMgrCtrlOp2(AVCHandle *avcHandle, AVCDecPicBuffer *dpb, int long_term_pic_num);
1544a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
1554a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
1564a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs memory management control operation 3, assigning a LongTermFrameIdx to
1574a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubera short-term reference picture. See subclause 8.2.5.4.3.
1584a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video" "Pointer to the AVCCommonObj."
1594a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "dpb"  "Pointer to the AVCDecPicBuffer."
1604a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "difference_of_pic_nums_minus1"  "From the syntax in dec_ref_pic_marking()."
1614a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "long_term_pic_num"  "From the syntax in dec_ref_pic_marking()."
1624a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
1634a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid MemMgrCtrlOp3(AVCHandle *avcHandle, AVCCommonObj *video, AVCDecPicBuffer *dpb, uint difference_of_pic_nums_minus1,
1644a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber                   uint long_term_frame_idx);
1654a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
1664a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
1674a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs memory management control operation 4, getting new MaxLongTermFrameIdx.
1684a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber See subclause 8.2.5.4.4.
1694a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video" "Pointer to the AVCCommonObj."
1704a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "dpb"  "Pointer to the AVCDecPicBuffer."
1714a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "max_long_term_frame_idx_plus1"  "From the syntax in dec_ref_pic_marking()."
1724a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
1734a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid MemMgrCtrlOp4(AVCHandle *avcHandle, AVCCommonObj *video, AVCDecPicBuffer *dpb, uint max_long_term_frame_idx_plus1);
1744a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
1754a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
1764a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs memory management control operation 5, marking all reference pictures
1774a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberas unused for reference and set MaxLongTermFrameIdx to no long-termframe indices.
1784a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber See subclause 8.2.5.4.5.
1794a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video" "Pointer to the AVCCommonObj."
1804a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "dpb"  "Pointer to the AVCDecPicBuffer."
1814a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
1824a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid MemMgrCtrlOp5(AVCHandle *avcHandle, AVCCommonObj *video, AVCDecPicBuffer *dpb);
1834a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
1844a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
1854a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs memory management control operation 6, assigning a long-term frame index
1864a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberto the current picture. See subclause 8.2.5.4.6.
1874a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video" "Pointer to the AVCCommonObj."
1884a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "dpb"  "Pointer to the AVCDecPicBuffer."
1894a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "long_term_frame_idx"  "From the syntax in dec_ref_pic_marking()."
1904a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
1914a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid MemMgrCtrlOp6(AVCHandle *avcHandle, AVCCommonObj *video, AVCDecPicBuffer *dpb, uint long_term_frame_idx);
1924a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
1934a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
1944a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function mark a long-term ref frame with a specific frame index as unused for reference.
1954a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "dpb"  "Pointer to the AVCDecPicBuffer."
1964a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "long_term_frame_idx"  "To look for"
1974a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
1984a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid unmark_long_term_frame_for_reference_by_frame_idx(AVCHandle *avcHandle, AVCDecPicBuffer *dpb, uint long_term_frame_idx);
1994a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
2004a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
2014a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function mark a long-term ref field with a specific frame index as unused for reference except
2024a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubera frame that contains a picture with picNumX.
2034a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "dpb"  "Pointer to the AVCDecPicBuffer."
2044a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "long_term_frame_idx"  "To look for."
2054a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "picNumX"    "To look for."
2064a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
2074a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid unmark_long_term_field_for_reference_by_frame_idx(AVCCommonObj *video, AVCDecPicBuffer *dpb, uint long_term_frame_indx, int picNumX);
2084a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
2094a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
2104a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function mark a frame to unused for reference.
2114a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "fs" "Pointer to AVCFrameStore to be unmarked."
2124a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
2134a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid unmark_for_reference(AVCHandle *avcHandle, AVCDecPicBuffer *dpb, uint idx);
2144a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
2154a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid update_ref_list(AVCDecPicBuffer *dpb);
2164a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
2174a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
2184a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/*---------- fmo.c --------------*/
2194a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
2204a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function initializes flexible macroblock reordering.
2214a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video"  "Pointer to AVCCommonObj."
2224a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "AVC_SUCCESS for success and AVC_FAIL otherwise."
2234a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
2244a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberOSCL_IMPORT_REF AVCStatus FMOInit(AVCCommonObj *video);
2254a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
2264a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
2274a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function fills up an array that maps Map unit to the slice group
2284a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberfollowing the interleaved slice group map type.
2294a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "mapUnitToSliceGroupMap" "Array of slice group mapping."
2304a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "run_length_minus1"  "Array of the run-length."
2314a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "num_slice_groups_minus_1"   "Number of slice group minus 1."
2324a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "PicSizeInMapUnit"   "Size of the picture in number Map units."
2334a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "Void."
2344a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
2354a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid FmoGenerateType0MapUnitMap(int *mapUnitToSliceGroupMap, uint *run_length_minus1, uint num_slice_groups_minus1, uint PicSizeInMapUnits);
2364a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
2374a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
2384a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function fills up an array that maps Map unit to the slice group
2394a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberfollowing the dispersed slice group map type.
2404a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "mapUnitToSliceGroupMap" "Array of slice group mapping."
2414a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "PicWidthInMbs"  "Width of the luma picture in macroblock unit."
2424a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "num_slice_groups_minus_1"   "Number of slice group minus 1."
2434a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "PicSizeInMapUnit"   "Size of the picture in number Map units."
2444a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "Void."
2454a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
2464a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid FmoGenerateType1MapUnitMap(int *mapUnitToSliceGroupMap, int PicWidthInMbs, uint num_slice_groups_minus1, uint PicSizeInMapUnits);
2474a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
2484a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
2494a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function fills up an array that maps Map unit to the slice group
2504a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberfollowing the foreground with left-over slice group map type.
2514a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "pps"    "Pointer to AVCPicParamSets structure."
2524a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "mapUnitToSliceGroupMap" "Array of slice group mapping."
2534a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "PicWidthInMbs"  "Width of the luma picture in macroblock unit."
2544a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "num_slice_groups_minus_1"   "Number of slice group minus 1."
2554a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "PicSizeInMapUnit"   "Size of the picture in number Map units."
2564a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "Void."
2574a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
2584a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid FmoGenerateType2MapUnitMap(AVCPicParamSet *pps, int *mapUnitToSliceGroupMap, int PicWidthInMbs,
2594a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber                                uint num_slice_groups_minus1, uint PicSizeInMapUnits);
2604a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
2614a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
2624a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function fills up an array that maps Map unit to the slice group
2634a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberfollowing the box-out slice group map type.
2644a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "pps"    "Pointer to AVCPicParamSets structure."
2654a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "mapUnitToSliceGroupMap" "Array of slice group mapping."
2664a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "PicWidthInMbs"  "Width of the luma picture in macroblock unit."
2674a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "Void."
2684a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
2694a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid FmoGenerateType3MapUnitMap(AVCCommonObj *video, AVCPicParamSet* pps, int *mapUnitToSliceGroupMap,
2704a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber                                int PicWidthInMbs);
2714a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
2724a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
2734a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function fills up an array that maps Map unit to the slice group
2744a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberfollowing the raster scan slice group map type.
2754a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "mapUnitToSliceGroupMap" "Array of slice group mapping."
2764a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "MapUnitsInSliceGroup0"  "Derived in subclause 7.4.3."
2774a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "slice_group_change_direction_flag"  "A value from the slice header."
2784a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "PicSizeInMapUnit"   "Size of the picture in number Map units."
2794a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void"
2804a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
2814a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid FmoGenerateType4MapUnitMap(int *mapUnitToSliceGroupMap, int MapUnitsInSliceGroup0,
2824a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber                                int slice_group_change_direction_flag, uint PicSizeInMapUnits);
2834a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
2844a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
2854a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function fills up an array that maps Map unit to the slice group
2864a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberfollowing wipe slice group map type.
2874a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "mapUnitToSliceGroupMap" "Array of slice group mapping."
2884a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video"  "Pointer to AVCCommonObj structure."
2894a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "slice_group_change_direction_flag"  "A value from the slice header."
2904a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "PicSizeInMapUnit"   "Size of the picture in number Map units."
2914a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void"
2924a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
2934a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid FmoGenerateType5MapUnitMap(int *mapUnitsToSliceGroupMap, AVCCommonObj *video,
2944a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber                                int slice_group_change_direction_flag, uint PicSizeInMapUnits);
2954a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
2964a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
2974a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function fills up an array that maps Map unit to the slice group
2984a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberfollowing wipe slice group map type.
2994a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "mapUnitToSliceGroupMap" "Array of slice group mapping."
3004a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "slice_group_id" "Array of slice_group_id from AVCPicParamSet structure."
3014a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "PicSizeInMapUnit"   "Size of the picture in number Map units."
3024a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void"
3034a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
3044a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid FmoGenerateType6MapUnitMap(int *mapUnitsToSliceGroupMap, int *slice_group_id, uint PicSizeInMapUnits);
3054a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
3064a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/*------------- itrans.c --------------*/
3074a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
3084a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs transformation of the Intra16x16DC value according to
3094a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubersubclause 8.5.6.
3104a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "block"  "Pointer to the video->block[0][0][0]."
3114a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "QPy"    "Quantization parameter."
3124a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void."
3134a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
3144a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid Intra16DCTrans(int16 *block, int Qq, int Rq);
3154a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
3164a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
3174a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs transformation of a 4x4 block according to
3184a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubersubclause 8.5.8.
3194a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "block"  "Pointer to the origin of transform coefficient area."
3204a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "pred"   "Pointer to the origin of predicted area."
3214a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "cur"    "Pointer to the origin of the output area."
3224a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "width"  "Pitch of cur."
3234a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void."
3244a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
3254a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid itrans(int16 *block, uint8 *pred, uint8 *cur, int width);
3264a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
3274a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/*
3284a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function is the same one as itrans except for chroma.
3294a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "block"  "Pointer to the origin of transform coefficient area."
3304a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "pred"   "Pointer to the origin of predicted area."
3314a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "cur"    "Pointer to the origin of the output area."
3324a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "width"  "Pitch of cur."
3334a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void."
3344a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
3354a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid ictrans(int16 *block, uint8 *pred, uint8 *cur, int width);
3364a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
3374a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
3384a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs transformation of the DCChroma value according to
3394a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubersubclause 8.5.7.
3404a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "block"  "Pointer to the video->block[0][0][0]."
3414a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "QPc"    "Quantization parameter."
3424a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void."
3434a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
3444a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid ChromaDCTrans(int16 *block, int Qq, int Rq);
3454a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
3464a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
3474a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function copies a block from pred to cur.
3484a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "pred"   "Pointer to prediction block."
3494a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "cur"    "Pointer to the current YUV block."
3504a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "width"  "Pitch of cur memory."
3514a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "pred_pitch" "Pitch for pred memory.
3524a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void."
3534a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
3544a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid copy_block(uint8 *pred, uint8 *cur, int width, int pred_pitch);
3554a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
3564a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/*--------- mb_access.c ----------------*/
3574a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
3584a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function initializes the neighboring information before start macroblock decoding.
3594a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video"  "Pointer to AVCCommonObj."
3604a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "mbNum"  "The current macroblock index."
3614a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "currMB" "Pointer to the current AVCMacroblock structure."
3624a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void"
3634a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
3644a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberOSCL_IMPORT_REF void InitNeighborAvailability(AVCCommonObj *video, int mbNum);
3654a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
3664a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
3674a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function checks whether the requested neighboring macroblock is available.
3684a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "MbToSliceGroupMap"  "Array containing the slice group ID mapping to MB index."
3694a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "PicSizeInMbs"   "Size of the picture in number of MBs."
3704a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "mbAddr"     "Neighboring macroblock index to check."
3714a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "currMbAddr" "Current macroblock index."
3724a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "TRUE if the neighboring MB is available, FALSE otherwise."
3734a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
3744a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberbool mb_is_available(AVCMacroblock *mblock, uint PicSizeInMbs, int mbAddr, int currMbAddr);
3754a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
3764a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
3774a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs prediction of the nonzero coefficient for a luma block (i,j).
3784a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video"  "Pointer to AVCCommonObj."
3794a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "i"  "Block index, horizontal."
3804a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "j"  "Block index, vertical."
3814a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "Predicted number of nonzero coefficient."
3824a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
3834a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberOSCL_IMPORT_REF int predict_nnz(AVCCommonObj *video, int i, int j);
3844a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
3854a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
3864a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs prediction of the nonzero coefficient for a chroma block (i,j).
3874a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video"  "Pointer to AVCCommonObj."
3884a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "i"  "Block index, horizontal."
3894a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "j"  "Block index, vertical."
3904a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "Predicted number of nonzero coefficient."
3914a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
3924a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberOSCL_IMPORT_REF int predict_nnz_chroma(AVCCommonObj *video, int i, int j);
3934a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
3944a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
3954a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function calculates the predicted motion vectors for the current macroblock.
3964a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video" "Pointer to AVCCommonObj."
3974a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "encFlag"    "Boolean whether this function is used by encoder or decoder."
3984a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void."
3994a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
4004a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberOSCL_IMPORT_REF void GetMotionVectorPredictor(AVCCommonObj *video, int encFlag);
4014a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
4024a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/*---------- reflist.c -----------------*/
4034a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
4044a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function initializes reference picture list used in INTER prediction
4054a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberat the beginning of each slice decoding. See subclause 8.2.4.
4064a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video"  "Pointer to AVCCommonObj."
4074a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void"
4084a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberOutput is video->RefPicList0, video->RefPicList1, video->refList0Size and video->refList1Size.
4094a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
4104a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberOSCL_IMPORT_REF void RefListInit(AVCCommonObj *video);
4114a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
4124a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
4134a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function generates picture list from frame list. Used when current picture is field.
4144a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubersee subclause 8.2.4.2.5.
4154a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video"  "Pointer to AVCCommonObj."
4164a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "IsL1"   "Is L1 list?"
4174a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "long_term"  "Is long-term prediction?"
4184a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void"
4194a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
4204a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid    GenPicListFromFrameList(AVCCommonObj *video, int IsL1, int long_term);
4214a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
4224a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
4234a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs reference picture list reordering according to the
4244a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberref_pic_list_reordering() syntax. See subclause 8.2.4.3.
4254a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video"  "Pointer to AVCCommonObj."
4264a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "AVC_SUCCESS or AVC_FAIL"
4274a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberOutput is video->RefPicList0, video->RefPicList1, video->refList0Size and video->refList1Size.
4284a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
4294a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberOSCL_IMPORT_REF AVCStatus ReOrderList(AVCCommonObj *video);
4304a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
4314a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
4324a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs reference picture list reordering according to the
4334a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberref_pic_list_reordering() syntax regardless of list 0 or list 1. See subclause 8.2.4.3.
4344a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video"  "Pointer to AVCCommonObj."
4354a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "isL1"   "Is list 1 or not."
4364a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "AVC_SUCCESS or AVC_FAIL"
4374a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberOutput is video->RefPicList0 and video->refList0Size or video->RefPicList1 and video->refList1Size.
4384a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
4394a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberAVCStatus ReorderRefPicList(AVCCommonObj *video, int isL1);
4404a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
4414a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
4424a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs reordering process of reference picture list for short-term pictures.
4434a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberSee subclause 8.2.4.3.1.
4444a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video"  "Pointer to AVCCommonObj."
4454a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "picNumLX"   "picNumLX of an entry in the reference list."
4464a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "refIdxLX"   "Pointer to the current entry index in the reference."
4474a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "isL1"       "Is list 1 or not."
4484a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "AVC_SUCCESS or AVC_FAIL"
4494a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
4504a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberAVCStatus ReorderShortTerm(AVCCommonObj *video, int picNumLX, int *refIdxLX, int isL1);
4514a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
4524a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
4534a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function performs reordering process of reference picture list for long-term pictures.
4544a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberSee subclause 8.2.4.3.2.
4554a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video"  "Pointer to AVCCommonObj."
4564a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "LongTermPicNum" "LongTermPicNum of an entry in the reference list."
4574a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "refIdxLX"   "Pointer to the current entry index in the reference."
4584a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "isL1"       "Is list 1 or not."
4594a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "AVC_SUCCESS or AVC_FAIL"
4604a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
4614a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberAVCStatus ReorderLongTerm(AVCCommonObj *video, int LongTermPicNum, int *refIdxLX, int isL1);
4624a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
4634a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
4644a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function gets the pictures in DPB according to the PicNum.
4654a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video"  "Pointer to AVCCommonObj."
4664a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "picNum" "PicNum of the picture we are looking for."
4674a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "Pointer to the AVCPictureData or NULL if not found"
4684a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
4694a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberAVCPictureData*  GetShortTermPic(AVCCommonObj *video, int picNum);
4704a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
4714a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
4724a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function gets the pictures in DPB according to the LongtermPicNum.
4734a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "video"  "Pointer to AVCCommonObj."
4744a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "LongtermPicNum" "LongtermPicNum of the picture we are looking for."
4754a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "Pointer to the AVCPictureData."
4764a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
4774a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberAVCPictureData*  GetLongTermPic(AVCCommonObj *video, int LongtermPicNum);
4784a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
4794a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
4804a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function indicates whether the picture is used for short-term reference or not.
4814a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "s"  "Pointer to AVCPictureData."
4824a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "1 if it is used for short-term, 0 otherwise."
4834a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
4844a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberint is_short_ref(AVCPictureData *s);
4854a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
4864a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
4874a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function indicates whether the picture is used for long-term reference or not.
4884a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "s"  "Pointer to AVCPictureData."
4894a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "1 if it is used for long-term, 0 otherwise."
4904a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
4914a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberint is_long_ref(AVCPictureData *s);
4924a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
4934a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
4944a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function sorts array of pointers to AVCPictureData in descending order of
4954a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberthe PicNum value.
4964a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "data"   "Array of pointers to AVCPictureData."
4974a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "num"    "Size of the array."
4984a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void"
4994a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
5004a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid SortPicByPicNum(AVCPictureData *data[], int num);
5014a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
5024a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
5034a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function sorts array of pointers to AVCPictureData in ascending order of
5044a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberthe PicNum value.
5054a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "data"   "Array of pointers to AVCPictureData."
5064a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "num"    "Size of the array."
5074a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void"
5084a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
5094a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid SortPicByPicNumLongTerm(AVCPictureData *data[], int num);
5104a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
5114a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
5124a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function sorts array of pointers to AVCFrameStore in descending order of
5134a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberthe FrameNumWrap value.
5144a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "data"   "Array of pointers to AVCFrameStore."
5154a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "num"    "Size of the array."
5164a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void"
5174a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
5184a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid SortFrameByFrameNumWrap(AVCFrameStore *data[], int num);
5194a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
5204a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
5214a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function sorts array of pointers to AVCFrameStore in ascending order of
5224a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberthe LongTermFrameIdx value.
5234a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "data"   "Array of pointers to AVCFrameStore."
5244a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "num"    "Size of the array."
5254a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void"
5264a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
5274a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid SortFrameByLTFrameIdx(AVCFrameStore *data[], int num);
5284a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
5294a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
5304a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function sorts array of pointers to AVCPictureData in descending order of
5314a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberthe PicOrderCnt value.
5324a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "data"   "Array of pointers to AVCPictureData."
5334a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "num"    "Size of the array."
5344a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void"
5354a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
5364a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid SortPicByPOC(AVCPictureData *data[], int num, int descending);
5374a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
5384a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
5394a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function sorts array of pointers to AVCPictureData in ascending order of
5404a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberthe LongTermPicNum value.
5414a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "data"   "Array of pointers to AVCPictureData."
5424a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "num"    "Size of the array."
5434a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void"
5444a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
5454a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid SortPicByLTPicNum(AVCPictureData *data[], int num);
5464a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
5474a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber/**
5484a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas HuberThis function sorts array of pointers to AVCFrameStore in descending order of
5494a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huberthe PicOrderCnt value.
5504a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "data"   "Array of pointers to AVCFrameStore."
5514a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\param "num"    "Size of the array."
5524a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber\return "void"
5534a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber*/
5544a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Hubervoid SortFrameByPOC(AVCFrameStore *data[], int num, int descending);
5554a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
5564a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber
5574a0ec3fda9c0e8e74b36e4e201b65ced80263b1fAndreas Huber#endif /* _AVCCOMMON_LIB_H_ */
558