According to current implementation of omx_base_sink_BufferMgmtFunction,
when the empty input buffer is processed (nFIlledLen==0) then
BufferMgmtCallback is not called.
Probably, it is all right most of the time (especially at worming up), but
it becomes an issue when a component sourcing the buffer passes EOS in
separate empty buffer. In result, my custom sink's BufferMgmtCallback never
receives a buffer with EOS, so it is not aware that the buffered data
should be sent immediately to hardware (as it might be accumulated in the
driver).
Possible solution - in omx_base_sink_BufferMgmtFunction replace as
follows:
<code>
if (omx_base_sink_Private->BufferMgmtCallback &&
pInputBuffer->nFilledLen > 0) {
(*(omx_base_sink_Private->BufferMgmtCallback))(openmaxStandComp,
pInputBuffer);
}
</code>
With:
<code>
if (omx_base_sink_Private->BufferMgmtCallback && (
(pInputBuffer->nFilledLen > 0) || (pInputBuffer->nFlags) ){
(*(omx_base_sink_Private->BufferMgmtCallback))(openmaxStandComp,
pInputBuffer);
}
</code>
Nobody/Anonymous
None
None
Public
|
Date: 2009-11-03 15:31 The suggestion has been applied to the code and included in the 0.9.2 |
|
Date: 2009-05-27 07:55 The proposed solution has been adopted. |
|
Date: 2009-05-13 13:10 Actually, it seems that EOS flag in nFlags is always cleared before calling |
| Field | Old Value | Date | By |
|---|---|---|---|
| status_id | Open | 2009-11-03 15:31 | gsent |
| allow_comments | 1 | 2009-11-03 15:31 | gsent |
| close_date | - | 2009-11-03 15:31 | gsent |
Copyright © 2010 Geeknet, Inc. All rights reserved. Terms of Use