This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Open max buffer confusion in capture component

Hi I'm running EZSDK version 5.03.01.15

Here is the basic scenario. I have one capture component feeding one encoder (1080p).

I transition these components back to loaded state (via IDLE and then releasing all buffers…).

When I reconfigure both components and start the capture component (after the encoder), I get a FillBufferDone callback with with an invalid buffer header. The buffer header is from the initial configuration (not the second one) of the capture component. These buffer headers were released and new ones were allocated and fed to the component. Off course this causes the application to fail miserably.

With the current state of affairs it is impossible to take components from loaded to executing and back more than once it would seem.

Is this a known issue and will it be addressed in the next SDK release?

I've included some traces from my application below: (ctrlhead refers to the buffer header's private data)

Notice that the first buffer filled by the capture component is the first buffer supplied to it but the buffer header is incorrect (this is the one from the initial configuration).

[06:31:28.260-201,(0x40150000)INFO ] VFCC_Start(capture.c:711): Called.
[06:31:28.260-202,(0x40150000)INFO ] VFCC_Start(capture.c:716): Sending OMX_CommandStateSet->OMX_StateExecuting command to capture component.
[06:31:28.261-203,(0x40150000)INFO ] DoSetComponentState(utils.c:387): Component "OMX.TI.VPSSM3.VFCC" state changed from IDLE to PRE_EXECUTING.
[06:31:28.261-204,(0x40150000)INFO ] VFCC_Start(capture.c:724): Command successfull, waiting for executing callback.
[06:31:28.277-205,(0x400B9490)INFO ] _VFCC_EventHandler(capture.c:290): Called.
[06:31:28.277-206,(0x400B9490)INFO ] _VFCC_EventHandler(capture.c:297): Got OMX_EventCmdComplete event.
[06:31:28.277-207,(0x400B9490)INFO ] _VFCC_EventHandler(capture.c:300): Got OMX_CommandStateSet cmd.
[06:31:28.277-208,(0x400B9490)INFO ] _VFCC_EventHandler(capture.c:318): Switching state to OMX_StateExecuting.
[06:31:28.277-209,(0x400B9490)INFO ] DoSetComponentState(utils.c:387): Component "OMX.TI.VPSSM3.VFCC" state changed from PRE_EXECUTING to EXECUTING.
[06:31:28.277-210,(0x400B9490)INFO ] _VFCC_EventHandler(capture.c:335): Posting completion semaphore.
[06:31:28.277-211,(0x400B9490)INFO ] _VFCC_EventHandler(capture.c:375): Done.
[06:31:28.277-212,(0x40150000)INFO ] VFCC_Start(capture.c:727): Wait successfull.
[06:31:28.277-213,(0x40150000)INFO ] VFCC_Start(capture.c:728): Providing buffers to fill.
[06:31:28.277-214,(0x40150000)INFO ] _SetOutputBuffers(capture.c:93): Feeding 6 buffers to capture component.
[06:31:28.277-215,(0x40150000)DEBUG] _SetOutputBuffers(capture.c:101): Feeding capture with header=0x16cc50 buffer=0x43a35100, ctrlhead=0x16c328.
[06:31:28.278-216,(0x40150000)INFO ] _SetOutputBuffers(capture.c:113): 1 buffers are being filled by capture component.
[06:31:28.278-217,(0x40150000)DEBUG] _SetOutputBuffers(capture.c:101): Feeding capture with header=0x16ccb0 buffer=0x43d2c900, ctrlhead=0x16c298.
[06:31:28.279-218,(0x40150000)INFO ] _SetOutputBuffers(capture.c:113): 2 buffers are being filled by capture component.
[06:31:28.279-219,(0x40150000)DEBUG] _SetOutputBuffers(capture.c:101): Feeding capture with header=0x16cd10 buffer=0x44024100, ctrlhead=0x16c208.
[06:31:28.280-220,(0x40150000)INFO ] _SetOutputBuffers(capture.c:113): 3 buffers are being filled by capture component.
[06:31:28.280-221,(0x40150000)DEBUG] _SetOutputBuffers(capture.c:101): Feeding capture with header=0x16cd70 buffer=0x4431b900, ctrlhead=0x16c178.
[06:31:28.281-222,(0x40150000)INFO ] _SetOutputBuffers(capture.c:113): 4 buffers are being filled by capture component.
[06:31:28.281-223,(0x40150000)DEBUG] _SetOutputBuffers(capture.c:101): Feeding capture with header=0x16cdd0 buffer=0x44613100, ctrlhead=0x16c0e8.
[06:31:28.282-224,(0x40150000)INFO ] _SetOutputBuffers(capture.c:113): 5 buffers are being filled by capture component.
[06:31:28.282-225,(0x40150000)DEBUG] _SetOutputBuffers(capture.c:101): Feeding capture with header=0x16ce30 buffer=0x4490a900, ctrlhead=0x16c058.
[06:31:28.283-226,(0x40150000)INFO ] _SetOutputBuffers(capture.c:113): 6 buffers are being filled by capture component.
[06:31:28.283-227,(0x40150000)INFO ] _SetOutputBuffers(capture.c:124): Buffers given to capture component successfully.
[06:31:28.283-228,(0x40150000)INFO ] VFCC_Start(capture.c:731): returning TRUE.
[06:31:28.283-229,(0x40150000)INFO ] main(main.c:831): Starting CTRL#1.
[06:31:28.283-230,(0x40150000)INFO ] CTRL_Start(control.c:432): Called, sending OMX_CommandStateSet for OMX_StateExecuting.
[06:31:28.283-231,(0x40150000)INFO ] CTRL_Start(control.c:439): OMX_SendCommand OK, waiting for completion...
[06:31:28.905-232,(0x4001D490)INFO ] _CTRL_EventHandler(control.c:58): Called.
[06:31:28.905-233,(0x4001D490)INFO ] _CTRL_EventHandler(control.c:64): Got OMX_EventCmdComplete event.
[06:31:28.906-234,(0x4001D490)INFO ] _CTRL_EventHandler(control.c:67): Got OMX_CommandStateSet cmd.
[06:31:28.906-235,(0x4001D490)INFO ] _CTRL_EventHandler(control.c:83): Switching state to OMX_StateExecuting.
[06:31:28.906-236,(0x4001D490)INFO ] _CTRL_EventHandler(control.c:99): Posting completion semaphore.
[06:31:28.906-237,(0x4001D490)INFO ] _CTRL_EventHandler(control.c:138): Done.
[06:31:28.906-238,(0x40150000)INFO ] CTRL_Start(control.c:442): Wait successfull.
[06:31:28.973-239,(0x400B9490)DEBUG] _VFCC_FillBufferDone(capture.c:154): Called with header=0x16c088 buffer=0x43a35100, ctrlhead=(nil).

[Sat Dec 17 06:31:28 2011] ASSERT occured in file "capture.c" at line 156.
Expression = "pBufCtrl != NULL"
Process = "omax_test"

I've entered other issues related with buffer handling but I want to make sure if you are aware of this issue or not...
Best regards.