Closed Bug 1231257 Opened 9 years ago Closed 8 years ago

Flush individual port instead of OMX_ALL

Categories

(Core :: Audio/Video: Playback, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla46
Tracking Status
firefox46 --- fixed

People

(Reporter: ayang, Assigned: ayang)

References

Details

Attachments

(1 file, 2 obsolete files)

During developing of video decoding bug 1224889, I found some omx components doesn't event OMX_ALL event back when flush with port OMX_ALL (flush all of port).
Instead, it send flush complete event for each port separately.

To have better compatibility, we should flush each port instead of OMX_ALL.
Attached patch change_omx_all_flush (obsolete) — Splinter Review
Assignee: nobody → ayang
Attachment #8696869 - Flags: review?(sotaro.ikeda.g)
By the way, codeaurora omx have problem around OMX_CommandFlush. See Bug 1101826.
See Also: → 1101826
(In reply to Sotaro Ikeda [:sotaro] from comment #2)
> By the way, codeaurora omx have problem around OMX_CommandFlush. See Bug
> 1101826.

hmm... it looks like some components even failed to handle flushing inport and outport continuously.
To address the problem like bug 1101826, we can't send flush command before previous flush is completed.
Is it correct?
Attached patch change_omx_all_flush (obsolete) — Splinter Review
Flush port one by one before previous flush is completed.
Attachment #8696869 - Attachment is obsolete: true
Attachment #8696869 - Flags: review?(sotaro.ikeda.g)
Attachment #8697980 - Flags: review?(sotaro.ikeda.g)
(In reply to Alfredo Yang (:alfredo) from comment #3)
> (In reply to Sotaro Ikeda [:sotaro] from comment #2)
> > By the way, codeaurora omx have problem around OMX_CommandFlush. See Bug
> > 1101826.
> 
> hmm... it looks like some components even failed to handle flushing inport
> and outport continuously.
> To address the problem like bug 1101826, we can't send flush command before
> previous flush is completed.
> Is it correct?

It should be OK. But it could cause the problem in some il components like Bug 1101826.

The il component in Bug 1101826 actually flush all ports when one port flush is requested. Then if another port flush command is sent before the previous one`s complete, it could not handle both command correctly in some timing cases.
Comment on attachment 8697980 [details] [diff] [review]
change_omx_all_flush

Review of attachment 8697980 [details] [diff] [review]:
-----------------------------------------------------------------

Don't we need to check if aParam1 is OMX_ALL?
(In reply to Sotaro Ikeda [:sotaro] from comment #6)
> Comment on attachment 8697980 [details] [diff] [review]
> change_omx_all_flush
> 
> Review of attachment 8697980 [details] [diff] [review]:
> -----------------------------------------------------------------
> 
> Don't we need to check if aParam1 is OMX_ALL?

We do.
OMX_ALL is actually 0xFFFFFFFF, so a OMX_ALL will divide into 2 flush commands, OMX_DirInput and OMX_DirOutput respectively.
And then adding to mFlushCommands list to perform flush one by one.
Fixed the correct OMX_ALL. And make sure each port is flushed.
Attachment #8697980 - Attachment is obsolete: true
Attachment #8697980 - Flags: review?(sotaro.ikeda.g)
Attachment #8699346 - Flags: review?(sotaro.ikeda.g)
Comment on attachment 8699346 [details] [diff] [review]
change_omx_all_flush

Review of attachment 8699346 [details] [diff] [review]:
-----------------------------------------------------------------

Looks good! Port type handling becomes clear.
Attachment #8699346 - Flags: review?(sotaro.ikeda.g) → review+
Blocks: 1231690
No longer blocks: 1231690
Blocks: 1224889
Keywords: checkin-needed
https://hg.mozilla.org/mozilla-central/rev/ff2cd5efa012
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla46
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: