omxparsertest.c File Reference

#include "omxparsertest.h"

Go to the source code of this file.

Defines

#define MPEG4_TYPE_SEL   1
#define AVC_TYPE_SEL   2
#define VIDEO_COMPONENT_NAME_BASE   "OMX.st.video_decoder"
#define AUDIO_COMPONENT_NAME_BASE   "OMX.st.audio_decoder"
#define VIDEO_BASE_ROLE   "video_decoder.avc"
#define AUDIO_BASE_ROLE   "audio_decoder.mp3"
#define VIDEO_DEC_MPEG4_ROLE   "video_decoder.mpeg4"
#define VIDEO_DEC_H264_ROLE   "video_decoder.avc"
#define AUDIO_DEC_MP3_ROLE   "audio_decoder.mp3"
#define AUDIO_DEC_AAC_ROLE   "audio_decoder.aac"
#define VIDEO_SINK   "OMX.st.fbdev.fbdev_sink"
#define COLOR_CONV   "OMX.st.video_colorconv.ffmpeg"
#define AUDIO_SINK   "OMX.st.alsa.alsasink"
#define AUDIO_EFFECT   "OMX.st.volume.component"
#define PARSER_3GP   "OMX.st.parser.3gp"
#define CLOCK_SRC   "OMX.st.clocksrc"
#define COMPONENT_NAME_BASE_LEN   20
#define extradata_size   1024
#define VIDEO_PORT_INDEX   0
#define AUDIO_PORT_INDEX   1
#define PARSER_PORT_INDEX   2
#define CLIENT_CLOCK_PORT_INDEX   1
#define PARSER_CLOCK_PORT_INDEX   2

Functions

int SetPortParametersAudio ()
int SetPortParametersVideo ()
void display_help ()
OMX_ERRORTYPE test_OMX_ComponentNameEnum ()
OMX_ERRORTYPE test_OMX_RoleEnum (OMX_STRING component_name)
OMX_ERRORTYPE test_OMX_ComponentEnumByRole (OMX_STRING role_name)
OMX_ERRORTYPE test_OpenClose (OMX_STRING component_name)
int main (int argc, char **argv)
OMX_ERRORTYPE parser3gpEventHandler (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_EVENTTYPE eEvent, OMX_OUT OMX_U32 Data1, OMX_OUT OMX_U32 Data2, OMX_OUT OMX_PTR pEventData)
OMX_ERRORTYPE parser3gpFillBufferDone (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_BUFFERHEADERTYPE *pBuffer)
OMX_ERRORTYPE videodecEventHandler (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_EVENTTYPE eEvent, OMX_OUT OMX_U32 Data1, OMX_OUT OMX_U32 Data2, OMX_OUT OMX_PTR pEventData)
OMX_ERRORTYPE videodecEmptyBufferDone (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_BUFFERHEADERTYPE *pBuffer)
OMX_ERRORTYPE videodecFillBufferDone (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_BUFFERHEADERTYPE *pBuffer)
OMX_ERRORTYPE colorconvEventHandler (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_EVENTTYPE eEvent, OMX_OUT OMX_U32 Data1, OMX_OUT OMX_U32 Data2, OMX_OUT OMX_PTR pEventData)
OMX_ERRORTYPE colorconvEmptyBufferDone (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_BUFFERHEADERTYPE *pBuffer)
OMX_ERRORTYPE colorconvFillBufferDone (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_BUFFERHEADERTYPE *pBuffer)
OMX_ERRORTYPE fb_sinkEventHandler (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_EVENTTYPE eEvent, OMX_OUT OMX_U32 Data1, OMX_OUT OMX_U32 Data2, OMX_OUT OMX_PTR pEventData)
OMX_ERRORTYPE fb_sinkEmptyBufferDone (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_BUFFERHEADERTYPE *pBuffer)
OMX_ERRORTYPE audiodecEventHandler (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_EVENTTYPE eEvent, OMX_OUT OMX_U32 Data1, OMX_OUT OMX_U32 Data2, OMX_OUT OMX_PTR pEventData)
OMX_ERRORTYPE audiodecEmptyBufferDone (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_BUFFERHEADERTYPE *pBuffer)
OMX_ERRORTYPE audiodecFillBufferDone (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_BUFFERHEADERTYPE *pBuffer)
OMX_ERRORTYPE volumeEventHandler (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_EVENTTYPE eEvent, OMX_OUT OMX_U32 Data1, OMX_OUT OMX_U32 Data2, OMX_OUT OMX_PTR pEventData)
OMX_ERRORTYPE volumeEmptyBufferDone (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_BUFFERHEADERTYPE *pBuffer)
OMX_ERRORTYPE volumeFillBufferDone (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_BUFFERHEADERTYPE *pBuffer)
OMX_ERRORTYPE audiosinkEventHandler (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_EVENTTYPE eEvent, OMX_OUT OMX_U32 Data1, OMX_OUT OMX_U32 Data2, OMX_OUT OMX_PTR pEventData)
OMX_ERRORTYPE audiosinkEmptyBufferDone (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_BUFFERHEADERTYPE *pBuffer)
OMX_ERRORTYPE clocksrcEventHandler (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_EVENTTYPE eEvent, OMX_OUT OMX_U32 Data1, OMX_OUT OMX_U32 Data2, OMX_OUT OMX_PTR pEventData)
OMX_ERRORTYPE clocksrcFillBufferDone (OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_BUFFERHEADERTYPE *pBuffer)

Variables

OMX_COLOR_FORMATTYPE COLOR_CONV_OUT_RGB_FORMAT = OMX_COLOR_Format24bitRGB888
OMX_BUFFERHEADERTYPEoutBufferParseVideo [2]
OMX_BUFFERHEADERTYPEoutBufferParseAudio [2]
OMX_BUFFERHEADERTYPEinBufferVideoDec [2]
OMX_BUFFERHEADERTYPEoutBufferVideoDec [2]
OMX_BUFFERHEADERTYPEinBufferAudioDec [2]
OMX_BUFFERHEADERTYPEoutBufferAudioDec [2]
OMX_BUFFERHEADERTYPEinBufferColorconv [2]
OMX_BUFFERHEADERTYPEoutBufferColorconv [2]
OMX_BUFFERHEADERTYPEinBufferSinkVideo [2]
OMX_BUFFERHEADERTYPEinBufferVolume [2]
OMX_BUFFERHEADERTYPEoutBufferVolume [2]
OMX_BUFFERHEADERTYPEinBufferSinkAudio [2]
int buffer_in_size = 4096
int buffer_out_size = 640*480*3
OMX_PARAM_PORTDEFINITIONTYPE decparamPortVideo
OMX_PARAM_PORTDEFINITIONTYPE decparamPortAudio
OMX_CALLBACKTYPE videodeccallbacks
OMX_CALLBACKTYPE colorconv_callbacks
OMX_CALLBACKTYPE fbdev_sink_callbacks
OMX_CALLBACKTYPE parser3gpcallbacks
OMX_CALLBACKTYPE clocksrccallbacks
OMX_CALLBACKTYPE audiodeccallbacks
OMX_CALLBACKTYPE audiosinkcallbacks
OMX_CALLBACKTYPE volumecallbacks
OMX_U32 out_width = 0
OMX_U32 new_out_width = 0
OMX_U32 out_height = 0
OMX_U32 new_out_height = 0
appPrivateTypeappPriv
char * input_file
char * output_file_audio
char * output_file_video
FILE * outfileAudio
FILE * outfileVideo
int flagIsAudioOutputFileExpected
int flagIsVideoOutputFileExpected
int flagDecodedOutputReceived
int flagInputReceived
int flagIsDisplayRequested
int flagSetupTunnel
int flagAVsync


Detailed Description

Test application that uses five OpenMAX components, a parser3gp, an audio decoder, a video deocder, an alsa sink and a video sink. The application reads a 3gp stream from a file, parses the audio and video content to the respective audio and video decoders. And sends the decoded data to respective audio and video sink components. Only components based on ffmpeg library are supported. The video formats supported are: MPEG4 (ffmpeg) H264 (ffmpeg) The audio formats supported are: mp3 (ffmpeg) aac (ffmpeg)

Copyright (C) 2007-2008 STMicroelectronics Copyright (C) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

Date
2008-07-02 15:17:00 +0200 (Wed, 02 Jul 2008)
Revision
Rev
557
Author
Author
gsent

Definition in file omxparsertest.c.


Define Documentation

#define AUDIO_BASE_ROLE   "audio_decoder.mp3"

Definition at line 46 of file omxparsertest.c.

Referenced by main().

#define AUDIO_COMPONENT_NAME_BASE   "OMX.st.audio_decoder"

Definition at line 44 of file omxparsertest.c.

Referenced by main(), and test_OpenClose().

#define AUDIO_DEC_AAC_ROLE   "audio_decoder.aac"

Definition at line 50 of file omxparsertest.c.

#define AUDIO_DEC_MP3_ROLE   "audio_decoder.mp3"

Definition at line 49 of file omxparsertest.c.

#define AUDIO_EFFECT   "OMX.st.volume.component"

Definition at line 54 of file omxparsertest.c.

#define AUDIO_PORT_INDEX   1

Definition at line 60 of file omxparsertest.c.

#define AUDIO_SINK   "OMX.st.alsa.alsasink"

Definition at line 53 of file omxparsertest.c.

Referenced by main().

#define AVC_TYPE_SEL   2

Definition at line 42 of file omxparsertest.c.

Referenced by main().

#define CLIENT_CLOCK_PORT_INDEX   1

Definition at line 62 of file omxparsertest.c.

Referenced by main().

#define CLOCK_SRC   "OMX.st.clocksrc"

Definition at line 56 of file omxparsertest.c.

Referenced by main().

#define COLOR_CONV   "OMX.st.video_colorconv.ffmpeg"

Definition at line 52 of file omxparsertest.c.

Referenced by main().

#define COMPONENT_NAME_BASE_LEN   20

Definition at line 57 of file omxparsertest.c.

#define extradata_size   1024

Definition at line 58 of file omxparsertest.c.

#define MPEG4_TYPE_SEL   1

Definition at line 41 of file omxparsertest.c.

Referenced by main().

#define PARSER_3GP   "OMX.st.parser.3gp"

Definition at line 55 of file omxparsertest.c.

Referenced by main().

#define PARSER_CLOCK_PORT_INDEX   2

Definition at line 63 of file omxparsertest.c.

Referenced by main().

#define PARSER_PORT_INDEX   2

Definition at line 61 of file omxparsertest.c.

Referenced by main().

#define VIDEO_BASE_ROLE   "video_decoder.avc"

Definition at line 45 of file omxparsertest.c.

Referenced by main().

#define VIDEO_COMPONENT_NAME_BASE   "OMX.st.video_decoder"

Definition at line 43 of file omxparsertest.c.

Referenced by main(), and test_OpenClose().

#define VIDEO_DEC_H264_ROLE   "video_decoder.avc"

Definition at line 48 of file omxparsertest.c.

#define VIDEO_DEC_MPEG4_ROLE   "video_decoder.mpeg4"

Definition at line 47 of file omxparsertest.c.

#define VIDEO_PORT_INDEX   0

Definition at line 59 of file omxparsertest.c.

#define VIDEO_SINK   "OMX.st.fbdev.fbdev_sink"

Definition at line 51 of file omxparsertest.c.

Referenced by main().


Function Documentation

OMX_ERRORTYPE audiodecEmptyBufferDone ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_BUFFERHEADERTYPE pBuffer 
)

Definition at line 2438 of file omxparsertest.c.

References buffer_in_size, DEB_LEV_ERR, DEB_LEV_FULL_SEQ, DEB_LEV_SIMPLE_SEQ, DEBUG, appPrivateType::eofSem, err, fd, appPrivateType::filereaderhandle, flagIsMadUsingFileReader, flagUsingFFMpeg, OMX_BUFFERHEADERTYPE::nFilledLen, OMX_BUFFERFLAG_EOS, OMX_EmptyThisBuffer, OMX_ErrorNone, OMX_FillThisBuffer, OMX_TRUE, appPrivateType::parser3gphandle, OMX_BUFFERHEADERTYPE::pBuffer, tsem_t::semval, and tsem_up().

OMX_ERRORTYPE audiodecEventHandler ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_EVENTTYPE  eEvent,
OMX_OUT OMX_U32  Data1,
OMX_OUT OMX_U32  Data2,
OMX_OUT OMX_PTR  pEventData 
)

callback prototypes for audio Decoder

Definition at line 2365 of file omxparsertest.c.

References appPrivateType::audiodechandle, appPrivateType::audioDecoderEventSem, appPrivateType::audiosinkhandle, buffer_out_size, DEB_LEV_ERR, DEB_LEV_SIMPLE_SEQ, DEBUG, appPrivateType::decoderEventSem, appPrivateType::eofSem, err, flagPlaybackOn, flagSetupTunnel, OMX_AUDIO_PARAM_PCMMODETYPE::nPortIndex, OMX_PARAM_PORTDEFINITIONTYPE::nPortIndex, OMX_BUFFERFLAG_EOS, OMX_CommandFlush, OMX_CommandPortDisable, OMX_CommandPortEnable, OMX_CommandStateSet, OMX_ErrorNone, OMX_EventBufferFlag, OMX_EventCmdComplete, OMX_EventPortSettingsChanged, OMX_FreeBuffer, OMX_GetParameter, OMX_IndexParamAudioPcm, OMX_IndexParamPortDefinition, OMX_SendCommand, OMX_SetParameter, OMX_StateExecuting, OMX_StateIdle, OMX_StateInvalid, OMX_StateLoaded, OMX_StatePause, OMX_StateWaitForResources, OMX_UseBuffer, OMX_BUFFERHEADERTYPE::pBuffer, setHeader(), appPrivateType::sinkEventSem, tsem_down(), tsem_up(), appPrivateType::volumeEventSem, and appPrivateType::volumehandle.

OMX_ERRORTYPE audiodecFillBufferDone ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_BUFFERHEADERTYPE pBuffer 
)

Definition at line 2477 of file omxparsertest.c.

References DEB_LEV_ERR, DEB_LEV_FUNCTION_NAME, DEBUG, err, flagDecodedOutputReceived, flagDirect, flagIsDisplayRequested, flagOutputReceived, flagPlaybackOn, flagSetupTunnel, OMX_BUFFERHEADERTYPE::nFilledLen, OMX_BUFFERHEADERTYPE::nFlags, OMX_BUFFERHEADERTYPE::nTimeStamp, OMX_BUFFERFLAG_STARTTIME, OMX_EmptyThisBuffer, OMX_ErrorNone, OMX_FillThisBuffer, outfile, outfileAudio, OMX_BUFFERHEADERTYPE::pBuffer, and appPrivateType::volumehandle.

OMX_ERRORTYPE audiosinkEmptyBufferDone ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_BUFFERHEADERTYPE pBuffer 
)

Definition at line 2758 of file omxparsertest.c.

References DEB_LEV_ERR, DEB_LEV_FULL_SEQ, DEB_LEV_PARAMS, DEBUG, DEFAULT_MESSAGES, appPrivateType::eofSem, err, OMX_BUFFERHEADERTYPE::nFilledLen, OMX_ErrorNone, OMX_FillThisBuffer, OMX_BUFFERHEADERTYPE::pBuffer, tsem_up(), and appPrivateType::volumehandle.

OMX_ERRORTYPE audiosinkEventHandler ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_EVENTTYPE  eEvent,
OMX_OUT OMX_U32  Data1,
OMX_OUT OMX_U32  Data2,
OMX_OUT OMX_PTR  pEventData 
)

callback prototypes for audio sink

Definition at line 2705 of file omxparsertest.c.

References appPrivateType::audioSinkEventSem, DEB_LEV_ERR, DEB_LEV_SIMPLE_SEQ, DEBUG, appPrivateType::eofSem, OMX_BUFFERFLAG_EOS, OMX_CommandFlush, OMX_CommandPortDisable, OMX_CommandPortEnable, OMX_CommandStateSet, OMX_ErrorNone, OMX_EventBufferFlag, OMX_StateExecuting, OMX_StateIdle, OMX_StateInvalid, OMX_StateLoaded, OMX_StatePause, OMX_StateWaitForResources, appPrivateType::sinkEventSem, and tsem_up().

OMX_ERRORTYPE clocksrcEventHandler ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_EVENTTYPE  eEvent,
OMX_OUT OMX_U32  Data1,
OMX_OUT OMX_U32  Data2,
OMX_OUT OMX_PTR  pEventData 
)

Definition at line 2790 of file omxparsertest.c.

References appPrivateType::clockEventSem, DEB_LEV_FULL_SEQ, DEB_LEV_SIMPLE_SEQ, DEBUG, OMX_BUFFERFLAG_EOS, OMX_CommandPortDisable, OMX_CommandPortEnable, OMX_CommandStateSet, OMX_ErrorNone, OMX_EventBufferFlag, OMX_EventCmdComplete, OMX_EventPortFormatDetected, OMX_EventPortSettingsChanged, OMX_StateExecuting, OMX_StateIdle, OMX_StateInvalid, OMX_StateLoaded, OMX_StatePause, OMX_StateWaitForResources, and tsem_up().

OMX_ERRORTYPE clocksrcFillBufferDone ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_BUFFERHEADERTYPE pBuffer 
)

Definition at line 2851 of file omxparsertest.c.

References appPrivateType::clocksrchandle, DEB_LEV_ERR, DEB_LEV_SIMPLE_SEQ, DEBUG, err, OMX_BUFFERFLAG_EOS, OMX_EmptyThisBuffer, OMX_ErrorNone, and OMX_TRUE.

OMX_ERRORTYPE colorconvEmptyBufferDone ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_BUFFERHEADERTYPE pBuffer 
)

Definition at line 2189 of file omxparsertest.c.

References DEB_LEV_ERR, DEBUG, err, OMX_BUFFERHEADERTYPE::nFilledLen, OMX_ErrorNone, OMX_FillThisBuffer, OMX_BUFFERHEADERTYPE::pBuffer, and appPrivateType::videodechandle.

OMX_ERRORTYPE colorconvEventHandler ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_EVENTTYPE  eEvent,
OMX_OUT OMX_U32  Data1,
OMX_OUT OMX_U32  Data2,
OMX_OUT OMX_PTR  pEventData 
)

callbacks implementation of color converter component

Definition at line 2137 of file omxparsertest.c.

References appPrivateType::colorconvEventSem, DEB_LEV_ERR, DEB_LEV_SIMPLE_SEQ, DEBUG, OMX_BUFFERFLAG_EOS, OMX_CommandFlush, OMX_CommandPortDisable, OMX_CommandPortEnable, OMX_CommandStateSet, OMX_ErrorNone, OMX_EventBufferFlag, OMX_EventCmdComplete, OMX_StateExecuting, OMX_StateIdle, OMX_StateInvalid, OMX_StateLoaded, OMX_StatePause, OMX_StateWaitForResources, and tsem_up().

OMX_ERRORTYPE colorconvFillBufferDone ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_BUFFERHEADERTYPE pBuffer 
)

if there is no sink component then write buffer content in output file, in non tunneled case else in non tunneled case, call the sink comp handle to process this buffer as its input buffer

Definition at line 2225 of file omxparsertest.c.

References DEB_LEV_ERR, DEBUG, err, flagIsDisplayRequested, flagSetupTunnel, OMX_BUFFERHEADERTYPE::nFilledLen, OMX_BUFFERHEADERTYPE::nFlags, OMX_BUFFERHEADERTYPE::nTimeStamp, OMX_BUFFERFLAG_EOS, OMX_BUFFERFLAG_STARTTIME, OMX_EmptyThisBuffer, OMX_ErrorNone, OMX_FillThisBuffer, OMX_TRUE, outfileVideo, OMX_BUFFERHEADERTYPE::pBuffer, and appPrivateType::videosinkhandle.

void display_help (  ) 

function prototype declaration display general help

help display

Definition at line 335 of file omxparsertest.c.

OMX_ERRORTYPE fb_sinkEmptyBufferDone ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_BUFFERHEADERTYPE pBuffer 
)

Definition at line 2330 of file omxparsertest.c.

OMX_ERRORTYPE fb_sinkEventHandler ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_EVENTTYPE  eEvent,
OMX_OUT OMX_U32  Data1,
OMX_OUT OMX_U32  Data2,
OMX_OUT OMX_PTR  pEventData 
)

callbacks implementation of video sink component

Definition at line 2278 of file omxparsertest.c.

int main ( int  argc,
char **  argv 
)

input file name check

output file name check

setting input picture width to a default value (vga format) for allocation of video decoder buffers

initializing appPriv structure

initialising openmax

parser3gp component -- gethandle

getting video decoder handle

getting audio decoder handle

getting handle of other components in audio and video pipeline, if specified

getting color converter component handle

getting video sink component handle

getting audio sink component handle

getting volume component handle

setting the input format in parser3gp

set the parser3gp component to idle state

allocation of parser3gp component's output buffers for video decoder component

allocation of parser3gp component's output buffers for audio decoder component

the output buffers of parser 3gp component will be used in the video decoder component as input buffers

the output buffers of parser3gp component will be used in the audio decoder component as input buffers

freeing all handles and deinit omx

Definition at line 517 of file omxparsertest.c.

References OMX_PARAM_PORTDEFINITIONTYPE::audio, AUDIO_BASE_ROLE, AUDIO_COMPONENT_NAME_BASE, AUDIO_DEC_AAC_ROLE, AUDIO_DEC_MP3_ROLE, AUDIO_EFFECT, AUDIO_PORT_INDEX, AUDIO_SINK, appPrivateType::audiodechandle, appPrivateType::audioDecoderEventSem, appPrivateType::audioSinkEventSem, appPrivateType::audiosinkhandle, buffer_out_size, CLIENT_CLOCK_PORT_INDEX, CLOCK_SRC, appPrivateType::clockEventSem, appPrivateType::clocksrchandle, COLOR_CONV, appPrivateType::colorconv_handle, appPrivateType::colorconvEventSem, OMX_PARAM_COMPONENTROLETYPE::cRole, DEB_LEV_ERR, DEB_LEV_PARAMS, DEB_LEV_SIMPLE_SEQ, DEBUG, DEFAULT_MESSAGES, display_help(), OMX_PARAM_BUFFERSUPPLIERTYPE::eBufferSupplier, OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE::eClock, OMX_VIDEO_PORTDEFINITIONTYPE::eCompressionFormat, OMX_AUDIO_PORTDEFINITIONTYPE::eEncoding, appPrivateType::eofSem, err, OMX_TIME_CONFIG_CLOCKSTATETYPE::eState, appPrivateType::fbdevSinkEventSem, flagAVsync, flagDecodedOutputReceived, flagInputReceived, flagIsAudioOutputFileExpected, flagIsDisplayRequested, flagIsVideoOutputFileExpected, flagSetupTunnel, OMX_PARAM_PORTDEFINITIONTYPE::format, input_file, OMX_PARAM_BUFFERSUPPLIERTYPE::nPortIndex, OMX_BS32::nValue, OMX_TIME_CONFIG_CLOCKSTATETYPE::nWaitMask, OMX_AllocateBuffer, OMX_AUDIO_CodingAAC, OMX_AUDIO_CodingMP3, OMX_BufferSupplyInput, OMX_CLOCKPORT0, OMX_CLOCKPORT1, OMX_CommandPortDisable, OMX_CommandPortEnable, OMX_CommandStateSet, OMX_Deinit(), OMX_ErrorNone, OMX_FillThisBuffer, OMX_FreeBuffer, OMX_FreeHandle(), OMX_GetConfig, OMX_GetExtensionIndex, OMX_GetHandle(), OMX_GetParameter, OMX_IndexConfigAudioVolume, OMX_IndexConfigTimeActiveRefClock, OMX_IndexConfigTimeClockState, OMX_IndexConfigTimeScale, OMX_IndexParamCompBufferSupplier, OMX_IndexParamStandardComponentRole, OMX_Init(), OMX_SendCommand, OMX_SetConfig, OMX_SetParameter, OMX_SetupTunnel(), OMX_StateExecuting, OMX_StateIdle, OMX_StateLoaded, OMX_TIME_ClockStateWaitingForStartTime, OMX_TIME_RefClockAudio, OMX_TRUE, OMX_UseBuffer, OMX_VIDEO_CodingAVC, OMX_VIDEO_CodingMPEG4, out_height, out_width, outfileAudio, outfileVideo, output_file_audio, output_file_video, appPrivateType::parser3gpEventSem, appPrivateType::parser3gphandle, PARSER_3GP, PARSER_CLOCK_PORT_INDEX, PARSER_PORT_INDEX, OMX_BUFFERHEADERTYPE::pBuffer, tsem_t::semval, setHeader(), SetPortParametersAudio(), SetPortParametersVideo(), OMX_AUDIO_CONFIG_VOLUMETYPE::sVolume, test_OMX_ComponentEnumByRole(), test_OMX_ComponentNameEnum(), test_OMX_RoleEnum(), test_OpenClose(), tsem_down(), tsem_init(), OMX_PARAM_PORTDEFINITIONTYPE::video, VIDEO_BASE_ROLE, VIDEO_COMPONENT_NAME_BASE, VIDEO_DEC_H264_ROLE, VIDEO_DEC_MPEG4_ROLE, VIDEO_PORT_INDEX, VIDEO_SINK, appPrivateType::videodechandle, appPrivateType::videoDecoderEventSem, appPrivateType::videosinkhandle, appPrivateType::volumeEventSem, appPrivateType::volumehandle, and OMX_TIME_CONFIG_SCALETYPE::xScale.

OMX_ERRORTYPE parser3gpEventHandler ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_EVENTTYPE  eEvent,
OMX_OUT OMX_U32  Data1,
OMX_OUT OMX_U32  Data2,
OMX_OUT OMX_PTR  pEventData 
)

callback prototypes for parser3gp

Definition at line 1704 of file omxparsertest.c.

References AUDIO_PORT_INDEX, appPrivateType::audiodechandle, appPrivateType::audiosinkhandle, appPrivateType::colorconv_handle, DEB_LEV_ERR, DEB_LEV_SIMPLE_SEQ, DEBUG, err, extradata_size, flagIsDisplayRequested, flagSetupTunnel, OMX_ALL, OMX_BUFFERFLAG_EOS, OMX_CommandFlush, OMX_CommandPortDisable, OMX_CommandPortEnable, OMX_CommandStateSet, OMX_ErrorNone, OMX_EventBufferFlag, OMX_EventCmdComplete, OMX_EventError, OMX_EventPortFormatDetected, OMX_EventPortSettingsChanged, OMX_GetConfig, OMX_GetExtensionIndex, OMX_SendCommand, OMX_SetConfig, OMX_StateExecuting, OMX_StateIdle, OMX_StateInvalid, OMX_StateLoaded, OMX_StatePause, OMX_StateWaitForResources, appPrivateType::parser3gpEventSem, appPrivateType::parser3gphandle, tsem_up(), VIDEO_PORT_INDEX, appPrivateType::videodechandle, appPrivateType::videosinkhandle, and appPrivateType::volumehandle.

OMX_ERRORTYPE parser3gpFillBufferDone ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_BUFFERHEADERTYPE pBuffer 
)

Definition at line 1884 of file omxparsertest.c.

References AUDIO_PORT_INDEX, appPrivateType::audiodechandle, DEB_LEV_ERR, DEB_LEV_SIMPLE_SEQ, DEBUG, err, OMX_BUFFERHEADERTYPE::nFilledLen, OMX_BUFFERHEADERTYPE::nFlags, OMX_BUFFERHEADERTYPE::nTimeStamp, OMX_BUFFERFLAG_EOS, OMX_BUFFERFLAG_STARTTIME, OMX_EmptyThisBuffer, OMX_ErrorNone, OMX_TRUE, OMX_BUFFERHEADERTYPE::pBuffer, VIDEO_PORT_INDEX, and appPrivateType::videodechandle.

int SetPortParametersAudio (  ) 

this function sets the audio deocder, volume and audio sink port characteristics based on the parser3gp output port settings

Definition at line 162 of file omxparsertest.c.

References OMX_PARAM_PORTDEFINITIONTYPE::audio, AUDIO_PORT_INDEX, appPrivateType::audiodechandle, DEB_LEV_ERR, DEBUG, OMX_AUDIO_PORTDEFINITIONTYPE::eEncoding, err, OMX_PARAM_PORTDEFINITIONTYPE::format, OMX_PARAM_PORTDEFINITIONTYPE::nPortIndex, OMX_ErrorNone, OMX_GetParameter, OMX_IndexParamPortDefinition, OMX_SetParameter, appPrivateType::parser3gphandle, and setHeader().

Referenced by main().

int SetPortParametersVideo (  ) 

this function sets the video deocder, color converter and video sink port characteristics based on the parser3gp output port settings

setting the color converter and sink component chararacteristics, if selected - both in tunneled as well as non tunneled case

setting the color conv input port width, height it will be same as the video decoder output port width, height

setting the color converter output width height it will be same as input dimensions

setting the input color format of color converter component it will be same as output yuv color format of the decoder component

setting output RGB color format of the color converter component

if video sink component is selected then set its input port settings accroding to the output port settings of the color converter component

Definition at line 213 of file omxparsertest.c.

References COLOR_CONV_OUT_RGB_FORMAT, appPrivateType::colorconv_handle, DEB_LEV_ERR, DEB_LEV_SIMPLE_SEQ, DEBUG, OMX_VIDEO_PORTDEFINITIONTYPE::eColorFormat, OMX_VIDEO_PORTDEFINITIONTYPE::eCompressionFormat, err, flagIsDisplayRequested, OMX_PARAM_PORTDEFINITIONTYPE::format, new_out_height, new_out_width, OMX_VIDEO_PORTDEFINITIONTYPE::nFrameHeight, OMX_VIDEO_PORTDEFINITIONTYPE::nFrameWidth, OMX_PARAM_PORTDEFINITIONTYPE::nPortIndex, omx_colorconvPortDefinition, OMX_ErrorBadParameter, OMX_ErrorNone, OMX_GetParameter, OMX_IndexParamPortDefinition, OMX_SetParameter, appPrivateType::parser3gphandle, setHeader(), OMX_PARAM_PORTDEFINITIONTYPE::video, VIDEO_PORT_INDEX, appPrivateType::videodechandle, and appPrivateType::videosinkhandle.

Referenced by main().

OMX_ERRORTYPE test_OMX_ComponentEnumByRole ( OMX_STRING  role_name  ) 

Definition at line 427 of file omxparsertest.c.

References DEB_LEV_ERR, DEBUG, DEFAULT_MESSAGES, err, OMX_ErrorNone, OMX_GetComponentsOfRole(), and OMX_MAX_STRINGNAME_SIZE.

OMX_ERRORTYPE test_OMX_ComponentNameEnum (  ) 

Definition at line 358 of file omxparsertest.c.

References DEBUG, DEFAULT_MESSAGES, err, OMX_ComponentNameEnum(), OMX_ErrorNone, and OMX_MAX_STRINGNAME_SIZE.

OMX_ERRORTYPE test_OMX_RoleEnum ( OMX_STRING  component_name  ) 

Definition at line 381 of file omxparsertest.c.

References DEB_LEV_ERR, DEB_LEV_SIMPLE_SEQ, DEBUG, DEFAULT_MESSAGES, err, OMX_ErrorInvalidComponentName, OMX_ErrorNone, OMX_GetRolesOfComponent(), and OMX_MAX_STRINGNAME_SIZE.

OMX_ERRORTYPE test_OpenClose ( OMX_STRING  component_name  ) 

Definition at line 487 of file omxparsertest.c.

References AUDIO_COMPONENT_NAME_BASE, appPrivateType::audiodechandle, DEB_LEV_ERR, DEBUG, DEFAULT_MESSAGES, err, OMX_ErrorNone, OMX_FreeHandle(), OMX_GetHandle(), VIDEO_COMPONENT_NAME_BASE, and appPrivateType::videodechandle.

OMX_ERRORTYPE videodecEmptyBufferDone ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_BUFFERHEADERTYPE pBuffer 
)

Definition at line 2033 of file omxparsertest.c.

OMX_ERRORTYPE videodecEventHandler ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_EVENTTYPE  eEvent,
OMX_OUT OMX_U32  Data1,
OMX_OUT OMX_U32  Data2,
OMX_OUT OMX_PTR  pEventData 
)

Definition at line 1961 of file omxparsertest.c.

OMX_ERRORTYPE videodecFillBufferDone ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_BUFFERHEADERTYPE pBuffer 
)

Definition at line 2071 of file omxparsertest.c.

OMX_ERRORTYPE volumeEmptyBufferDone ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_BUFFERHEADERTYPE pBuffer 
)

Definition at line 2597 of file omxparsertest.c.

References appPrivateType::audiodechandle, appPrivateType::audiosrchandle, DEB_LEV_ERR, DEB_LEV_FULL_SEQ, DEB_LEV_SIMPLE_SEQ, DEBUG, DEFAULT_MESSAGES, appPrivateType::eofSem, err, OMX_BUFFERHEADERTYPE::nFilledLen, OMX_ErrorNone, OMX_FillThisBuffer, OMX_BUFFERHEADERTYPE::pBuffer, tsem_t::semval, and tsem_up().

OMX_ERRORTYPE volumeEventHandler ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_EVENTTYPE  eEvent,
OMX_OUT OMX_U32  Data1,
OMX_OUT OMX_U32  Data2,
OMX_OUT OMX_PTR  pEventData 
)

callback prototypes for color converter

Definition at line 2541 of file omxparsertest.c.

References DEB_LEV_ERR, DEB_LEV_SIMPLE_SEQ, DEBUG, appPrivateType::eofSem, OMX_BUFFERFLAG_EOS, OMX_CommandFlush, OMX_CommandPortDisable, OMX_CommandPortEnable, OMX_CommandStateSet, OMX_ErrorNone, OMX_EventBufferFlag, OMX_EventCmdComplete, OMX_StateExecuting, OMX_StateIdle, OMX_StateInvalid, OMX_StateLoaded, OMX_StatePause, OMX_StateWaitForResources, tsem_up(), and appPrivateType::volumeEventSem.

OMX_ERRORTYPE volumeFillBufferDone ( OMX_OUT OMX_HANDLETYPE  hComponent,
OMX_OUT OMX_PTR  pAppData,
OMX_OUT OMX_BUFFERHEADERTYPE pBuffer 
)

if there is no sink component then write buffer content in output file, in non tunneled case else in non tunneled case, call the sink comp handle to process this buffer as its input buffer

Definition at line 2636 of file omxparsertest.c.

References appPrivateType::alsasink_handle, appPrivateType::audiosinkhandle, DEB_LEV_ERR, DEB_LEV_FUNCTION_NAME, DEBUG, DEFAULT_MESSAGES, err, flagDecodedOutputReceived, flagIsDisplayRequested, flagIsSinkRequested, flagSetupTunnel, OMX_BUFFERHEADERTYPE::nFilledLen, OMX_BUFFERHEADERTYPE::nFlags, OMX_BUFFERHEADERTYPE::nTimeStamp, OMX_BUFFERFLAG_EOS, OMX_BUFFERFLAG_STARTTIME, OMX_EmptyThisBuffer, OMX_ErrorNone, OMX_FillThisBuffer, OMX_TRUE, outfile, outfileAudio, and OMX_BUFFERHEADERTYPE::pBuffer.


Variable Documentation

appPrivateType* appPriv

Definition at line 135 of file omxparsertest.c.

OMX_CALLBACKTYPE audiodeccallbacks

Initial value:

 {
  .EventHandler    = audiodecEventHandler,
  .EmptyBufferDone = audiodecEmptyBufferDone,
  .FillBufferDone  = audiodecFillBufferDone
}

Definition at line 114 of file omxparsertest.c.

OMX_CALLBACKTYPE audiosinkcallbacks

Initial value:

 {
  .EventHandler    = audiosinkEventHandler,
  .EmptyBufferDone = audiosinkEmptyBufferDone,
  .FillBufferDone  = NULL
}

Definition at line 120 of file omxparsertest.c.

int buffer_in_size = 4096

Definition at line 76 of file omxparsertest.c.

int buffer_out_size = 640*480*3

Definition at line 77 of file omxparsertest.c.

OMX_CALLBACKTYPE clocksrccallbacks

Initial value:

 {
  .EventHandler    = clocksrcEventHandler,
  .EmptyBufferDone = NULL,
  .FillBufferDone  = clocksrcFillBufferDone
}

Definition at line 108 of file omxparsertest.c.

OMX_COLOR_FORMATTYPE COLOR_CONV_OUT_RGB_FORMAT = OMX_COLOR_Format24bitRGB888

Definition at line 65 of file omxparsertest.c.

Referenced by main(), setPortParameters(), and SetPortParametersVideo().

OMX_CALLBACKTYPE colorconv_callbacks

Initial value:

 { 
  .EventHandler = colorconvEventHandler,
  .EmptyBufferDone = colorconvEmptyBufferDone,
  .FillBufferDone = colorconvFillBufferDone
}

Definition at line 90 of file omxparsertest.c.

OMX_PARAM_PORTDEFINITIONTYPE decparamPortAudio

Definition at line 82 of file omxparsertest.c.

OMX_PARAM_PORTDEFINITIONTYPE decparamPortVideo

Definition at line 81 of file omxparsertest.c.

OMX_CALLBACKTYPE fbdev_sink_callbacks

Initial value:

 { 
  .EventHandler = fb_sinkEventHandler,
  .EmptyBufferDone = fb_sinkEmptyBufferDone,
  .FillBufferDone = NULL
}

Definition at line 96 of file omxparsertest.c.

int flagAVsync

Definition at line 147 of file omxparsertest.c.

Referenced by main().

int flagDecodedOutputReceived

Definition at line 143 of file omxparsertest.c.

int flagInputReceived

Definition at line 144 of file omxparsertest.c.

int flagIsAudioOutputFileExpected

Definition at line 141 of file omxparsertest.c.

Referenced by main().

int flagIsDisplayRequested

Definition at line 145 of file omxparsertest.c.

Referenced by audiodecFillBufferDone(), colorconvFillBufferDone(), main(), parser3gpEventHandler(), SetPortParametersVideo(), videodecFillBufferDone(), and volumeFillBufferDone().

int flagIsVideoOutputFileExpected

Definition at line 142 of file omxparsertest.c.

Referenced by main().

int flagSetupTunnel

Definition at line 146 of file omxparsertest.c.

OMX_BUFFERHEADERTYPE* inBufferAudioDec[2]

Definition at line 69 of file omxparsertest.c.

OMX_BUFFERHEADERTYPE* inBufferColorconv[2]

used with color converter if selected

Definition at line 71 of file omxparsertest.c.

OMX_BUFFERHEADERTYPE* inBufferSinkAudio[2]

Definition at line 75 of file omxparsertest.c.

OMX_BUFFERHEADERTYPE* inBufferSinkVideo[2]

Definition at line 72 of file omxparsertest.c.

OMX_BUFFERHEADERTYPE* inBufferVideoDec[2]

Definition at line 68 of file omxparsertest.c.

OMX_BUFFERHEADERTYPE* inBufferVolume[2]

Definition at line 74 of file omxparsertest.c.

char* input_file

Definition at line 137 of file omxparsertest.c.

OMX_U32 new_out_height = 0

Definition at line 133 of file omxparsertest.c.

Referenced by setPortParameters(), and SetPortParametersVideo().

OMX_U32 new_out_width = 0

Definition at line 132 of file omxparsertest.c.

Referenced by setPortParameters(), and SetPortParametersVideo().

OMX_U32 out_height = 0

Definition at line 133 of file omxparsertest.c.

Referenced by find_resolution(), main(), omx_ffmpeg_colorconv_component_Init(), and setPortParameters().

OMX_U32 out_width = 0

Definition at line 132 of file omxparsertest.c.

Referenced by find_resolution(), main(), omx_ffmpeg_colorconv_component_Init(), and setPortParameters().

OMX_BUFFERHEADERTYPE * outBufferAudioDec[2]

Definition at line 69 of file omxparsertest.c.

OMX_BUFFERHEADERTYPE * outBufferColorconv[2]

Definition at line 71 of file omxparsertest.c.

OMX_BUFFERHEADERTYPE * outBufferParseAudio[2]

Definition at line 67 of file omxparsertest.c.

OMX_BUFFERHEADERTYPE* outBufferParseVideo[2]

Definition at line 67 of file omxparsertest.c.

OMX_BUFFERHEADERTYPE * outBufferVideoDec[2]

Definition at line 68 of file omxparsertest.c.

OMX_BUFFERHEADERTYPE * outBufferVolume[2]

Definition at line 74 of file omxparsertest.c.

FILE* outfileAudio

Definition at line 139 of file omxparsertest.c.

Referenced by audiodecFillBufferDone(), main(), and volumeFillBufferDone().

FILE * outfileVideo

Definition at line 139 of file omxparsertest.c.

Referenced by colorconvFillBufferDone(), main(), and videodecFillBufferDone().

char * output_file_audio

Definition at line 137 of file omxparsertest.c.

Referenced by main().

char * output_file_video

Definition at line 137 of file omxparsertest.c.

Referenced by main().

OMX_CALLBACKTYPE parser3gpcallbacks

Initial value:

 { 
  .EventHandler    = parser3gpEventHandler,
  .EmptyBufferDone = NULL,
  .FillBufferDone  = parser3gpFillBufferDone
}

Definition at line 102 of file omxparsertest.c.

OMX_CALLBACKTYPE videodeccallbacks

Initial value:

 { 
  .EventHandler = videodecEventHandler,
  .EmptyBufferDone = videodecEmptyBufferDone,
  .FillBufferDone = videodecFillBufferDone
}

Definition at line 84 of file omxparsertest.c.

OMX_CALLBACKTYPE volumecallbacks

Initial value:

 {
  .EventHandler    = volumeEventHandler,
  .EmptyBufferDone = volumeEmptyBufferDone,
  .FillBufferDone  = volumeFillBufferDone
}

Definition at line 126 of file omxparsertest.c.


Generated for OpenMAX Bellagio rel. 0.9.0 by  doxygen 1.5.1
SourceForge.net Logo