Can any one guide me on this? I am thinking to provide thread
synchronization mechanism! between state transition phase and buffer
allocation to I/O ports.

OR

Current implementation itself provides?
On Dec 31 2009, 5:32 pm, guru <[email protected]> wrote:
> HI Ravi
>
> According to Omx call sequence doc for OMX Transition Loaded->Idle
> State:
>
> The buffer allocation is handled as part of the allocation to the Idle
> state. During this transition,
> PV Framework:
> ● Issues command to the OMX component to change state from
> OMX_StateLoaded to
> OMX_StateIdle via “OMX_SendCommand” call
> ● Issues a series of either “OMX_UseBuffer” calls or
> “OMX_AllocateBuffer” calls to the
> OMX component. The call is used NumInputBuffer times for input port,
> and
> NumOutputBuffers for the output port.
> ● Waits for the EventHandler callback to arrive from the component
> which notifies the
> framework that the component state transition is complete
> (OMX_EventCmdComplete).
>
> Since buffer allocation takes time,component has to wait for buffer to
> be allocated so that it can go to Idle state.
> What mechanism they are using to make component wait for buffers.
>
> Are they using locking mechanism?. Please give me some inputs?
>
> Regards
> Gururaja B O
>
> On Dec 30, 9:26 am, guru <[email protected]> wrote:
>
>
>
> > Hi All,
>
> > I have integrated decoder component with OpenCore. If i try to play
> > audio file it is failing. when I saw the log it is failing when it
> > tries to change its state to Idle.
>
> > My understanding is :
>
> > Before it can change to idle state it has to allocate buffers to input
> > and output ports. then it should call event handler about the state
> > change.
>
> > But according to the log, before allocating the buffers it is trying
> > to check for buffers(whether allocated) then fails. after failure,
> > buffers are allocated.
>
> > It should be:
>
> > Buffer allocation
> > state transition to idle
>
> > but in my case
>
> > State transition to idle
> > Buffer allocation. is happening
>
> > What may be the reason?
> > Since state change is occuring in Component Thread and buffer
> > allocation in main thread, so  is there any timing issue?
>
> > E/PV      (  878): PVLOG:TID
> > (0x5b950):Time=1150:PVMFOMXAudioDecNode::DoPrepare()
> > : Changing Component state Loaded -> Idle
> > E/        (  878): ....Calling OMX_SendCommand
> > E/        (  878): OMX_AACLC_COMP.c MySendCommand IN
> > E/        (  878): .... State transition command start --> component
> > thread
> > E/        (  878): .... case OMX_StateIdle
> > E/        (  878): ........Inside StateIdle While Loop
> > E/        (  878): ........Inside StateIdle While Loop
> > E/        (  878): ........Inside StateIdle While Loop
> > E/        (  878): ........Inside StateIdle While Loop
> > E/        (  878): ........Inside StateIdle While Loop
> > E/        (  878): ........Inside StateIdle While Loop
> > E/        (  878): ........Inside StateIdle While Loop
> > E/        (  878): ........Inside StateIdle While Loop
> > E/        (  878): ........Inside StateIdle While Loop
> > E/        (  878): ........Inside StateIdle While Loop
> > E/        (  878): .... Calling Event Handler8
> > E/        (  878): CallbackEventHandler Multithread IN
> > E/        (  878): CallbackEventHandler Multithread OUT
> > E/        (  878): Idle transition failed
> > E/        (  878): .... State transition command end --> component
> > thread ends
> > E/        (  878): OMX_AACLC_COMP.c MySendCommand OUT
> > E/        (  878): ....Exiting in OMX_SenCommand
> > E/PV      (  878): PVLOG:TID
> > (0x5b950):Time=1152:PVMFOMXAudioDecNode::CreateInput
> > MemPool() start
> > E/PV      (  878): PVLOG:TID
> > (0x5b950):Time=1152:PVMFOMXAudioDecNode::CreateInput
> > MemPool() allocating buffer header pointers and shared media data
> > ptrs
> > E/PV      (  878): PVLOG:TID
> > (0x5b950):Time=1152:PVMFOMXAudioDecNode::CreateInput
> > MemPool() done
> > E/PV      (  878): PVLOG:TID
> > (0x5b950):Time=1152:PVMFOMXAudioDecNode::ProvideBuff
> > ersToComponent() enter
> > E/        (  878): OMX_AACLC_COMP.c  MyAllocateBuffer IN
> > E/        (  878): OMX_AACLC_COMP.c  MyAllocateBuffer OUT
> > E/PV      (  878): PVLOG:TID
> > (0x5b950):Time=1153:PVMFOMXAudioDecNode::ProvideBuff
> > ersToComponent() done
> > E/PV      (  878): PVLOG:TID
> > (0x5b950):Time=1153:PVMFOMXAudioDecNode::CreateOutMe
> > mPool() start
> > E/PV      (  878): PVLOG:TID
> > (0x5b950):Time=1153:PVMFOMXAudioDecNode::CreateOutMe
> > mPool() Allocating output buffer header pointers
> > E/PV      (  878): PVLOG:TID
> > (0x5b950):Time=1153:PVMFOMXAudioDecNode::CreateOutMe
> > mPool() done
> > E/PV      (  878): PVLOG:TID
> > (0x5b950):Time=1154:PVMFOMXAudioDecNode::ProvideBuff
> > ersToComponent() enter
> > E/        (  878): OMX_AACLC_COMP.c  MyAllocateBuffer IN
> > E/        (  878): OMX_AACLC_COMP.c  MyAllocateBuffer OUT
> > E/PV      (  878): PVLOG:TID
> > (0x5b950):Time=1154:PVMFOMXAudioDecNode::ProvideBuff
> > ersToComponent() done
> > E/PV      (  878): PVLOG:TID
> > (0x5b950):Time=1154:EventHandlerThreadSafeCallbackAO
> > ::Run() In
> > E/PV      (  878): PVLOG:TID
> > (0x5b950):Time=1154:EventHandlerThreadSafeCallbackAO
> > ::Run() - No more events, call PendForExec()
> > E/PV      (  878): PVLOG:TID
> > (0x5b950):Time=1155:EventHandlerThreadSafeCallbackAO
> > _Audio::Run() - Calling Process Event
> > E/PV      (  878): PVLOG:TID
> > (0x5b950):Time=1155:PVMFOMXAudioDecNode::EventHandle
> > rProcessing: Event Generated - 1
> > E/PV      (  878): PVLOG:TID
> > (0x5b950):Time=1155:PVMFOMXAudioDecNode::EventHandle
> > rProcessing: OMX_EventError
>
> > Thanks
> > Gururaja- Hide quoted text -
>
> - Show quoted text -

-- 
unsubscribe: [email protected]
website: http://groups.google.com/group/android-porting

Reply via email to