Revert "Merge "Increase payload size to 484 bytes""
[gstreamer-omap:domx.git] / domx / omx_rpc / inc / omx_rpc_internal.h
1 /*
2  * Copyright (c) 2010, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * *  Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  *
12  * *  Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * *  Neither the name of Texas Instruments Incorporated nor the names of
17  *    its contributors may be used to endorse or promote products derived
18  *    from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32
33 /**
34  *  @file  omx_rpc_internal.h
35  *         This file contains methods that provides the functionality for
36  *         the OpenMAX1.1 DOMX Framework RPC.
37  *
38  *  @path \WTSD_DucatiMMSW\framework\domx\omx_rpc\inc
39  *
40  *  @rev 1.0
41  */
42
43 /*==============================================================
44  *! Revision History
45  *! ============================
46  *! 29-Mar-2010 Abhishek Ranka : Revamped DOMX implementation
47  *!
48  *! 19-August-2009 B Ravi Kiran ravi.kiran@ti.com: Initial Version
49  *================================================================*/
50
51
52 #ifndef OMXRPC_INTERNAL_H
53 #define OMXRPC_INTERNAL_H
54
55 #ifdef __cplusplus
56 extern "C"
57 {
58 #endif                          /* __cplusplus */
59
60 /******************************************************************
61  *   INCLUDE FILES
62  ******************************************************************/
63 /* ----- system and platform files ----------------------------*/
64 #include <pthread.h>
65
66 #include <OMX_Component.h>
67 #include <OMX_Core.h>
68 #include <OMX_Audio.h>
69 #include <OMX_Video.h>
70 #include <OMX_Types.h>
71 #include <OMX_Index.h>
72 #include <OMX_TI_Index.h>
73 #include <OMX_TI_Common.h>
74
75 /*-------program files ----------------------------------------*/
76 #include "omx_rpc.h"
77
78
79 /******************************************************************
80  *   DEFINES - CONSTANTS
81  ******************************************************************/
82 /* *********************** OMX RPC DEFINES***********************************/
83
84 /*This defines the maximum number of remote functions that can be registered*/
85 #define RPC_OMX_MAX_FUNCTION_LIST 21
86 /*Packet size for each message*/
87 #define RPC_PACKET_SIZE 0xF0
88
89
90
91 /*******************************************************************************
92 * Enumerated Types
93 *******************************************************************************/
94
95         typedef enum OMX_RPC_CORE_TYPE
96         {
97                 OMX_RPC_CORE_TESLA = 0,
98                 OMX_RPC_CORE_APPM3 = 1,
99                 OMX_RPC_CORE_SYSM3 = 2,
100                 RPC_CORE_CHIRON = 3,
101                 OMX_RPC_CORE_MAX = 4
102         } OMX_RPC_CORE_TYPE;
103
104
105
106 /*===============================================================*/
107 /** RPC_OMX_FXN_IDX_TYPE   : A unique function index for each OMX function
108  */
109 /*===============================================================*/
110         typedef enum RPC_OMX_FXN_IDX_TYPE
111         {
112
113                 RPC_OMX_FXN_IDX_GET_HANDLE = 0,
114                 RPC_OMX_FXN_IDX_SET_PARAMETER = 1,
115                 RPC_OMX_FXN_IDX_GET_PARAMETER = 2,
116                 RPC_OMX_FXN_IDX_USE_BUFFER = 3,
117                 RPC_OMX_FXN_IDX_FREE_HANDLE = 4,
118                 RPC_OMX_FXN_IDX_SET_CONFIG = 5,
119                 RPC_OMX_FXN_IDX_GET_CONFIG = 6,
120                 RPC_OMX_FXN_IDX_GET_STATE = 7,
121                 RPC_OMX_FXN_IDX_SEND_CMD = 8,
122                 RPC_OMX_FXN_IDX_GET_VERSION = 9,
123                 RPC_OMX_FXN_IDX_GET_EXT_INDEX = 10,
124                 RPC_OMX_FXN_IDX_FILLTHISBUFFER = 11,
125                 RPC_OMX_FXN_IDX_FILLBUFFERDONE = 12,
126                 RPC_OMX_FXN_IDX_FREE_BUFFER = 13,
127                 RPC_OMX_FXN_IDX_EMPTYTHISBUFFER = 14,
128                 RPC_OMX_FXN_IDX_EMPTYBUFFERDONE = 15,
129                 RPC_OMX_FXN_IDX_EVENTHANDLER = 16,
130                 RPC_OMX_FXN_IDX_ALLOCATE_BUFFER = 17,
131                 RPC_OMX_FXN_IDX_COMP_TUNNEL_REQUEST = 18,
132                 RPC_OMX_FXN_IDX_MAX = RPC_OMX_MAX_FUNCTION_LIST
133         } RPC_OMX_FXN_IDX_TYPE;
134
135
136
137 /*===============================================================*/
138 /** RPC_OMX_MAP_INFO_TYPE   : Tells the no. of buffers that the kernel has to
139                               map to remote core.
140  */
141 /*===============================================================*/
142         typedef enum RPC_OMX_MAP_INFO_TYPE
143         {
144                 RPC_OMX_MAP_INFO_NONE = 0,
145                 RPC_OMX_MAP_INFO_ONE_BUF = 1,
146                 RPC_OMX_MAP_INFO_TWO_BUF = 2,
147                 RPC_OMX_MAP_INFO_THREE_BUF = 3,
148                 RPC_OMX_MAP_INFO_MAX = 0x7FFFFFFF
149         } RPC_OMX_MAP_INFO_TYPE;
150
151
152
153 /*******************************************************************************
154 * STRUCTURES
155 *******************************************************************************/
156
157 /*===============================================================*/
158 /** RPC_OMX_CONTEXT                 : RPC context structure
159  *
160  *  @ param fd_omx                  : File descriptor corresponding to this
161  *                                    instance on remote core.
162  *  @ param fd_killcb               : File descriptor used to shut down the
163  *                                    callback thread.
164  *  @ param cbThread                : Callback thread.
165  *  @ param pMsgPipe                : Array of message pipes. One for each OMX
166  *                                    function. Used to post and receive the
167  *                                    return messages of each function.
168  *  @ param hRemoteHandle           : Handle to the context structure on the
169  *                                    remote core.
170  *  @ param hActualRemoteCompHandle : Actual component handle on remote core.
171  *  @ param pAppData                : App data of RPC caller
172  *
173  */
174 /*===============================================================*/
175         typedef struct RPC_OMX_CONTEXT
176         {
177                 OMX_S32 fd_omx;
178                 OMX_S32 fd_killcb;
179                 pthread_t cbThread;
180                 OMX_PTR pMsgPipe[RPC_OMX_MAX_FUNCTION_LIST];
181                 OMX_HANDLETYPE hRemoteHandle;
182                 OMX_HANDLETYPE hActualRemoteCompHandle;
183                 OMX_PTR pAppData;
184         } RPC_OMX_CONTEXT;
185
186 #ifdef __cplusplus
187 }
188 #endif
189 #endif