1 /******************************************************************************
2  *
3  * Copyright (C) 2015 The Android Open Source Project
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at:
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *****************************************************************************
18  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19 */
20 
21 #ifndef _IH264D_MEM_REQUEST_H_
22 #define _IH264D_MEM_REQUEST_H_
23 /*!
24  ***************************************************************************
25  * \file ih264d_mem_request.h
26  *
27  * \brief
28  *    This file contains declarations and data structures of the API's which
29  *    required to interact with Picture Buffer.
30  *
31  *
32  * \date
33  *    11/12/2002
34  *
35  * \author  NS
36  ***************************************************************************/
37 #include "ih264_typedefs.h"
38 #include "ih264_macros.h"
39 #include "ih264_platform_macros.h"
40 #include "ih264d_defs.h"
41 #include "ih264d_structs.h"
42 
43 #define MAX_MEM_BLOCKS      64 + 8
44 
45 struct MemBlock
46 {
47     void ** v_memLocation; /** memory location where address of allocated memory should be stored*/
48     UWORD32 u4_mem_size; /** Size of the memory block */
49 };
50 
51 struct MemReq
52 {
53     UWORD32 u4_num_memBlocks; /** Number of memory blocks */
54     struct MemBlock s_memBlock[MAX_MEM_BLOCKS]; /** Pointer to the first memory block */
55 };
56 
57 struct PicMemBlock
58 {
59     void * buf1; /** memory location for buf1 */
60     void * buf2; /** memory location for buf2 */
61     void * buf3; /** memory location for buf3 */
62 };
63 
64 struct PicMemReq
65 {
66     WORD32 i4_num_pic_memBlocks; /** Number of memory blocks */
67     UWORD32 u4_size1; /** Size of the buf1 in PicMemBlock */
68     UWORD32 u4_size2; /** Size of the buf2 in PicMemBlock */
69     UWORD32 u4_size3; /** Size of the buf3 in PicMemBlock */
70     struct PicMemBlock s_PicMemBlock[MAX_DISP_BUFS_NEW];
71 };
72 
73 WORD32 ih264d_create_pic_buffers(UWORD8 u1_num_of_buf,
74                                dec_struct_t *ps_dec);
75 
76 WORD32 ih264d_create_mv_bank(void * pv_codec_handle,
77                              UWORD32 u4_wd,
78                              UWORD32 u4_ht);
79 WORD16 ih264d_allocate_dynamic_bufs(dec_struct_t * ps_dec);
80 
81 
82 #endif  /* _IH264D_MEM_REQUEST_H_ */
83