Opened 12 years ago
Closed 10 years ago
Last modified 9 years ago
#10878 closed Patch - Bug Fix (fixed)
[PATCH] Fix PiP playback with Xv
Reported by: | Owned by: | danielk | |
---|---|---|---|
Priority: | minor | Milestone: | 0.27.4 |
Component: | MythTV - Video Playback | Version: | Master Head |
Severity: | medium | Keywords: | PiP 'picture in picture' flicker |
Cc: | Ticket locked: | no |
Description
When using Xv-blit video output and trying to view two or more programs using PiP then the inset video often flickers or contains elements of 2 unrelated frames.
When displaying 'pictute in picture' (PiP), VideoOutput::ShowPIP composites the PiP windows onto the main video frame. To do so, it uses the player's GetCurrentFrame? method to obtain the most recently displayed PiP frame. However, MythPlayer::DisplayNormalFrames? immediately releases the last frame displayed back to the decoding queue. Consequently when GetCurrentFrame? calls GetLastShownFrame? to obtain that frame it may have been overwritten by the decoder thread.
This patch defers calling DoneDisplayingFrame? if the player is a PiP player so that future calls to GetLastShownFrame? return an intact frame.
This patch is for git master but is equally applicable to fixes 0.25 and 0.24
Attachments (1)
Change History (6)
Changed 12 years ago by
Attachment: | 0001-mythplayer-Don-t-call-DoneDisplayingFrame-for-PiP-un.patch added |
---|
comment:1 Changed 12 years ago by
Owner: | set to danielk |
---|---|
Status: | new → assigned |
comment:2 Changed 10 years ago by
comment:3 Changed 10 years ago by
Resolution: | → Fixed |
---|---|
Status: | assigned → closed |
issue isn't just with Xv, but also opengl and any software rendered output.
Thank you for the patch
comment:4 Changed 10 years ago by
Resolution: | Fixed → fixed |
---|
comment:5 Changed 9 years ago by
Milestone: | unknown → 0.27.4 |
---|
Are there any plans to integrate this into master? I'm seeing similar flickering in PiP and it sounds like it's related to this bug. It looks like the patch code fix would still work the same, at least in 0.27.