1bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/* /////////////////////////////////////////////////////////////////////// 2bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// 3bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// INTEL CORPORATION PROPRIETARY INFORMATION 4bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// This software is supplied under the terms of a license agreement or 5bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// nondisclosure agreement with Intel Corporation and may not be copied 6bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// or disclosed except in accordance with the terms of that agreement. 7bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// Copyright (c) 2001-2006 Intel Corporation. All Rights Reserved. 8bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// 9bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// Description: MPEG-4 header. 10bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee// 11bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/ 12bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 13bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 14bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef _H264_DPB_CTL_H_ 15bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define _H264_DPB_CTL_H_ 16bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 17bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 18bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#include "h264.h" 19bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 20bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifdef __cplusplus 21bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern "C" { 22bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif 23bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 24bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee//////////////////////////////////////////////////////////////////// 25bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee///////////////////////////// Parser control functions 26bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee//////////////////////////////////////////////////////////////////// 27bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 28bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee///// Reference list 29bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_update_ref_lists(h264_Info * pInfo); 30bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_reorder_lists(h264_Info * pInfo); 31bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 32bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_insert_ref_lists(h264_DecodedPictureBuffer * p_dpb,int32_t NonExisting); 33bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 34bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee///// POC 35bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_hdr_decoding_poc (h264_Info * pInfo,int32_t NonExisting, int32_t frame_num); 36bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_hdr_post_poc(h264_Info* pInfo,int32_t NonExisting, int32_t frame_num, int32_t use_old); 37bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 38bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee///// DPB buffer mangement 39bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_init_dpb(h264_DecodedPictureBuffer * p_dpb); 40bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 41bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_unmark_for_reference(h264_DecodedPictureBuffer *p_dpb, int32_t fs_idc); 42bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_unmark_for_long_term_reference(h264_DecodedPictureBuffer *p_dpb, int32_t fs_idc); 43bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_unmark_long_term_frame_for_reference_by_frame_idx(h264_DecodedPictureBuffer *p_dpb, int32_t long_term_frame_idx); 44bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_unmark_long_term_field_for_reference_by_frame_idx(h264_DecodedPictureBuffer *p_dpb, int32_t long_term_frame_idx, int32_t fs_idc, int32_t polarity); 45bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_mark_pic_long_term(h264_Info * pInfo, int32_t long_term_frame_idx, int32_t picNumX); 46bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_mark_dangling_field(h264_DecodedPictureBuffer *p_dpb, int32_t fs_idc); 47bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 48bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_update_queue_dangling_field(h264_Info * pInfo); 49bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_is_used_for_reference(int32_t * flag); 50bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 51bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 52bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_set_active_fs(h264_DecodedPictureBuffer * p_dpb,int32_t index); 53bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_flush_dpb (h264_Info * pInfo,int32_t output_all, int32_t keep_complement, int32_t num_ref_frames); 54bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 55bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_idr_memory_management (h264_Info * pInfo, 56bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee seq_param_set_used_ptr active_sps, 57bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int32_t no_output_of_prior_pics_flag); 58bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 59bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_init_frame_store(h264_Info * pInfo); 60bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_reset_dpb(h264_Info * pInfo,int32_t PicWidthInMbs, int32_t FrameHeightInMbs, 61bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int32_t SizeChange, int32_t no_output_of_prior_pics_flag); 62bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 63bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_gaps_in_frame_num_mem_management(h264_Info * pInfo); 64bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 65bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern int32_t h264_dpb_assign_frame_store(h264_Info * pInfo, int32_t NonExisting); 66bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 67bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_get_smallest_poc(h264_DecodedPictureBuffer *p_dpb, int32_t *poc, int32_t *pos); 68bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_remove_unused_frame_from_dpb(h264_DecodedPictureBuffer *p_dpb, int32_t * flag); 69bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 70bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_sliding_window_memory_management(h264_DecodedPictureBuffer *p_dpb, 71bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int32_t NonExisting, 72bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int32_t num_ref_frames); 73bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern int32_t h264_dpb_queue_update(h264_Info * pInfo, 74bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int32_t push, 75bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int32_t direct, 76bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int32_t frame_request, 77bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int32_t num_ref_frames); 78bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 79bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_split_field (h264_Info * pInfo); 80bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_combine_field(int32_t use_old); 81bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 82bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_insert_picture_in_dpb(h264_Info * pInfo, 83bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int32_t used_for_reference, 84bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int32_t add2dpb, 85bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int32_t NonExisting, 86bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int32_t use_old); 87bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 88bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_store_previous_picture_in_dpb(h264_Info * pInfo, 89bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int32_t NonExisting, 90bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int32_t use_old); 91bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 92bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_adaptive_memory_management (h264_Info * pInfo); 93bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 94bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern int32_t h264_dpb_output_one_frame_from_dpb(h264_Info* pInfo, 95bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee int32_t direct, int32_t request, int32_t num_ref_frames); 96bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 97bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_remove_frame_from_dpb(h264_DecodedPictureBuffer *p_dpb, int32_t idx); 98bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern void h264_dpb_frame_output(h264_Info * pInfo,int32_t fs_idc, int32_t direct, int32_t * existing); 99bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 100bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee//////////////////////////////////////////////////////////// Globals 101bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeextern frame_store *active_fs; 102bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 103bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 104bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 105bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif //_H264_DPB_CTL_H_ 106bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 107bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 108