OpenMAXBellagio
0.9.3
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
omx_base_component.h
Go to the documentation of this file.
1
26
#ifndef _OMX_BASE_COMPONENT_H_
27
#define _OMX_BASE_COMPONENT_H_
28
29
#include <stdlib.h>
30
#include <pthread.h>
31
#include <stdio.h>
32
#include <string.h>
33
#include <unistd.h>
34
#include <errno.h>
35
#include <asm/unistd.h>
36
37
#ifdef ANDROID_COMPILATION
38
#include <oscl_base_macros.h>
39
#else
40
#define OSCL_IMPORT_REF
41
#define OSCL_EXPORT_REF
42
#endif
43
#include "
omxcore.h
"
44
#include "
OMXComponentRMExt.h
"
45
#include "
tsemaphore.h
"
46
#include "
queue.h
"
47
#include "
omx_classmagic.h
"
48
#include "
omx_base_port.h
"
49
#include "
extension_struct.h
"
50
#include "
omx_reference_resource_manager.h
"
51
52
54
#define DEFAULT_IN_BUFFER_SIZE 4 * 1024
55
56
#define DEFAULT_OUT_BUFFER_SIZE 32 * 1024
/*16 * 1024 */
// TODO - check this size is ok
57
58
#define DEFAULT_MIME_STRING_LENGTH 128
59
60
#define NUM_DOMAINS 4
61
62
#define OMX_BUFFERFLAG_KEY_FRAME 0x11000000
63
64
typedef
struct
OMX_VENDOR_EXTRADATATYPE
{
65
OMX_U32
nPortIndex
;
66
OMX_U32
nDataSize
;
// Size of the supporting data to follow
67
OMX_U8
*
pData
;
// Supporting data hint
68
}
OMX_VENDOR_EXTRADATATYPE
;
69
70
typedef
struct
OMX_VENDOR_PROP_TUNNELSETUPTYPE
{
71
OMX_U32
nPortIndex
;
72
OMX_TUNNELSETUPTYPE
nTunnelSetup
;
// Tunnel setup flags
73
}
OMX_VENDOR_PROP_TUNNELSETUPTYPE
;
74
76
typedef
enum
OMX_INDEXVENDORTYPE
{
78
OMX_IndexVendorInputFilename
=
OMX_IndexVendorStartUnused
+1,
79
OMX_IndexVendorOutputFilename
,
80
OMX_IndexVendorCompPropTunnelFlags
,
/* Will use OMX_TUNNELSETUPTYPE structure*/
81
OMX_IndexParameterThreadsID
,
82
OMX_VIDEO_CodingTheora
83
}
OMX_INDEXVENDORTYPE
;
84
86
typedef
enum
OMX_TRANS_STATETYPE
{
87
OMX_TransStateInvalid
,
88
OMX_TransStateLoadedToIdle
,
89
OMX_TransStateIdleToPause
,
90
OMX_TransStatePauseToExecuting
,
91
OMX_TransStateIdleToExecuting
,
92
OMX_TransStateExecutingToIdle
,
93
OMX_TransStateExecutingToPause
,
94
OMX_TransStatePauseToIdle
,
95
OMX_TransStateIdleToLoaded
,
96
OMX_TransStateMax
= 0X7FFFFFFF
97
}
OMX_TRANS_STATETYPE
;
98
102
typedef
enum
INTERNAL_MESSAGE_TYPE
{
103
SENDCOMMAND_MSG_TYPE
= 1,
104
ERROR_MSG_TYPE
,
105
WARNING_MSG_TYPE
106
}
INTERNAL_MESSAGE_TYPE
;
107
113
typedef
struct
internalRequestMessageType
{
114
int
messageType
;
115
int
messageParam
;
116
OMX_PTR
pCmdData
;
117
}
internalRequestMessageType
;
118
122
CLASS
(
omx_base_component_PrivateType
)
123
#define omx_base_component_PrivateType_FIELDS \
124
OMX_COMPONENTTYPE *openmaxStandComp; \
125
omx_base_PortType **ports; \
126
OMX_PORT_PARAM_TYPE sPortTypesParam[NUM_DOMAINS]; \
127
char uniqueID; \
128
char* name; \
129
OMX_STATETYPE state; \
130
OMX_TRANS_STATETYPE transientState; \
135
OMX_CALLBACKTYPE* callbacks; \
137
OMX_PTR callbackData; \
139
queue_t* messageQueue;\
140
tsem_t* messageSem;\
141
OMX_U32 nGroupPriority; \
142
OMX_U32 nGroupID; \
143
OMX_PARAM_BELLAGIOTHREADS_ID* bellagioThreads;\
144
OMX_BOOL bIsEOSReached; \
145
OMX_MARKTYPE pMark; \
146
pthread_mutex_t flush_mutex; \
147
tsem_t* flush_all_condition; \
148
tsem_t* flush_condition; \
149
tsem_t* bMgmtSem;\
150
tsem_t* bStateSem;\
151
pthread_t messageHandlerThread; \
152
int bufferMgmtThreadID; \
153
pthread_t bufferMgmtThread; \
154
void *loader; \
155
void* (*BufferMgmtFunction)(void* param); \
156
OMX_ERRORTYPE (*messageHandler)(OMX_COMPONENTTYPE*,internalRequestMessageType*); \
157
OMX_ERRORTYPE (*DoStateSet)(OMX_COMPONENTTYPE *openmaxStandComp, OMX_U32); \
158
OMX_ERRORTYPE (*destructor)(OMX_COMPONENTTYPE *openmaxStandComp); \
159
OMX_ERRORTYPE (*getQualityLevel)(OMX_COMPONENTTYPE *openmaxStandComp, OMX_U32* pQualityLevel); \
160
OMX_ERRORTYPE (*setQualityLevel)(OMX_COMPONENTTYPE *openmaxStandComp, OMX_U32 nQualityLevel); \
161
OMX_U32 nqualitylevels; \
162
multiResourceDescriptor** multiResourceLevel; \
163
int currentQualityLevel;
164
ENDCLASS(omx_base_component_PrivateType)
165
166
void
base_constructor_remove_garbage_collected
(
omx_base_component_PrivateType
* omx_base_component_Private);
167
184
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_Constructor
(
OMX_COMPONENTTYPE
*openmaxStandComp,
OMX_STRING
cComponentName);
185
193
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_Destructor
(
OMX_COMPONENTTYPE
*openmaxStandComp);
194
195
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_getQualityLevel
(
OMX_COMPONENTTYPE
*openmaxStandComp,
OMX_U32
* pQualityLevel);
196
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_setQualityLevel
(
OMX_COMPONENTTYPE
*openmaxStandComp,
OMX_U32
nQualityLevel);
197
208
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_DoStateSet
(
209
OMX_COMPONENTTYPE
*openmaxStandComp,
210
OMX_U32
destinationState);
211
223
OSCL_IMPORT_REF
OMX_ERRORTYPE
checkHeader
(
OMX_PTR
header,
OMX_U32
size);
224
232
void
setHeader
(
OMX_PTR
header,
OMX_U32
size);
233
238
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_GetComponentVersion
(
239
OMX_HANDLETYPE
hComponent,
240
OMX_STRING
pComponentName,
241
OMX_VERSIONTYPE
* pComponentVersion,
242
OMX_VERSIONTYPE
* pSpecVersion,
243
OMX_UUIDTYPE
* pComponentUUID);
244
257
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_ComponentRoleEnum
(
258
OMX_HANDLETYPE
hComponent,
259
OMX_U8
*cRole,
260
OMX_U32
nIndex);
261
267
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_SetCallbacks
(
268
OMX_HANDLETYPE
hComponent,
269
OMX_CALLBACKTYPE
* pCallbacks,
270
OMX_PTR
pAppData);
271
278
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_GetParameter
(
279
OMX_HANDLETYPE
hComponent,
280
OMX_INDEXTYPE
nParamIndex,
281
OMX_PTR
ComponentParameterStructure);
282
291
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_SetParameter
(
292
OMX_HANDLETYPE
hComponent,
293
OMX_INDEXTYPE
nParamIndex,
294
OMX_PTR
ComponentParameterStructure);
295
303
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_GetConfig
(
304
OMX_HANDLETYPE
hComponent,
305
OMX_INDEXTYPE
nIndex,
306
OMX_PTR
pComponentConfigStructure);
307
315
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_SetConfig
(
316
OMX_HANDLETYPE
hComponent,
317
OMX_INDEXTYPE
nIndex,
318
OMX_PTR
pComponentConfigStructure);
319
325
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_GetExtensionIndex
(
326
OMX_HANDLETYPE
hComponent,
327
OMX_STRING
cParameterName,
328
OMX_INDEXTYPE
* pIndexType);
329
334
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_GetState
(
335
OMX_HANDLETYPE
hComponent,
336
OMX_STATETYPE
* pState);
337
343
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_SendCommand
(
344
OMX_HANDLETYPE
hComponent,
345
OMX_COMMANDTYPE
Cmd,
346
OMX_U32
nParam,
347
OMX_PTR
pCmdData);
348
357
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_ComponentDeInit
(
358
OMX_HANDLETYPE
hComponent);
359
366
void
*
compMessageHandlerFunction
(
void
*);
367
379
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_MessageHandler
(
OMX_COMPONENTTYPE
*openmaxStandComp,
internalRequestMessageType
* message);
380
384
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_ParameterSanityCheck
(
385
OMX_HANDLETYPE
hComponent,
386
OMX_U32
nPortIndex,
387
OMX_PTR
pStructure,
388
size_t
size);
389
390
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_AllocateBuffer
(
391
OMX_HANDLETYPE
hComponent,
392
OMX_BUFFERHEADERTYPE
** ppBuffer,
393
OMX_U32
nPortIndex,
394
OMX_PTR
pAppPrivate,
395
OMX_U32
nSizeBytes);
396
397
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_UseBuffer
(
398
OMX_HANDLETYPE
hComponent,
399
OMX_BUFFERHEADERTYPE
** ppBufferHdr,
400
OMX_U32
nPortIndex,
401
OMX_PTR
pAppPrivate,
402
OMX_U32
nSizeBytes,
403
OMX_U8
* pBuffer);
404
405
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_UseEGLImage
(
406
OMX_HANDLETYPE
hComponent,
407
OMX_BUFFERHEADERTYPE
** ppBufferHdr,
408
OMX_U32
nPortIndex,
409
OMX_PTR
pAppPrivate,
410
void
* eglImage);
411
412
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_FreeBuffer
(
413
OMX_HANDLETYPE
hComponent,
414
OMX_U32
nPortIndex,
415
OMX_BUFFERHEADERTYPE
* pBuffer);
416
417
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_EmptyThisBuffer
(
418
OMX_HANDLETYPE
hComponent,
419
OMX_BUFFERHEADERTYPE
* pBuffer);
420
421
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_FillThisBuffer
(
422
OMX_HANDLETYPE
hComponent,
423
OMX_BUFFERHEADERTYPE
* pBuffer);
424
425
OSCL_IMPORT_REF
OMX_ERRORTYPE
omx_base_component_ComponentTunnelRequest
(
426
OMX_HANDLETYPE
hComp,
427
OMX_U32
nPort,
428
OMX_HANDLETYPE
hTunneledComp,
429
OMX_U32
nTunneledPort,
430
OMX_TUNNELSETUPTYPE
* pTunnelSetup);
431
432
#endif
Generated for OpenMAX Bellagio rel. 0.9.3 by
1.5.1