-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Flickering of top line when using deinterlacer #463
Comments
I can confirm this is happening with other streams too on my RPI2. |
@popcornmix, did you had a chance to reproduce the issue? |
I have had a look. I have played with doing the normal deinterlace on the top and bottom lines, but treating the frame as reflected at the top/bottom edges for the context lines and that seems to improve things. That's only a proof of concept and is too slow for HD, but it should be possible to support this efficiently with some more work. |
Thanks for the analysis! So, the broadcast company is actually sending progressive content on a interlaced program? Sounds feasible, since the effect is seen only on certain material. In that case I'd appreciate if you could treat the top line in a way that reduces the flickering. Maybe this could be enabled per parameter? Currently, I use the advanced deinterlacer for SD and fast deinterlacer for HD material, so this workaround could be limitted to the advanced implementation only. Regards, |
…m edges See: #463 firmware: di_adv: Add config setting to add nop delays to shader See: http://forum.kodi.tv/showthread.php?tid=231092&pid=2150605#pid2150605 firmware: vcilcs: Avoid a potential deadlock when very threaded See: #449 firmware: vrf: Add spinlock around vrf acquire/release calls to avoid restoring an invalid p10 from ISR context firmware: rpi_display: only ratelimit if the backlight is actually changed See: raspberrypi/linux#1179 firmware: di_adv: Support multiple instances of qpu deinterlace at SD resolution See: popcornmix/omxplayer#386 linux: rpi-ft5406: Use interruptible sleep to avoid high load reported See: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=125034 linux: dts: Added overlay for Adafruit PiTFT 2.8 capacitive touch screen See: raspberrypi/linux#1192 linux: config: Add MCP320X See: raspberrypi/linux#1189 linux: Build i2c_gpio module and add a device tree overlay to configure it See: raspberrypi/linux#1183
…m edges See: raspberrypi/firmware#463 firmware: di_adv: Add config setting to add nop delays to shader See: http://forum.kodi.tv/showthread.php?tid=231092&pid=2150605#pid2150605 firmware: vcilcs: Avoid a potential deadlock when very threaded See: raspberrypi/firmware#449 firmware: vrf: Add spinlock around vrf acquire/release calls to avoid restoring an invalid p10 from ISR context firmware: rpi_display: only ratelimit if the backlight is actually changed See: raspberrypi/linux#1179 firmware: di_adv: Support multiple instances of qpu deinterlace at SD resolution See: popcornmix/omxplayer#386 linux: rpi-ft5406: Use interruptible sleep to avoid high load reported See: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=125034 linux: dts: Added overlay for Adafruit PiTFT 2.8 capacitive touch screen See: raspberrypi/linux#1192 linux: config: Add MCP320X See: raspberrypi/linux#1189 linux: Build i2c_gpio module and add a device tree overlay to configure it See: raspberrypi/linux#1183
Can you try updating firmware (rpi-update) and test again. |
Just updated the firmware, but flickering still exists… are there any new parameters I need to set for the deinterlacer? For SD I use advanced deinterlacer: BTW: When browsing through the firmware commits, I see many improvements at the deinterlacer component. So it might be very helpful to update the ilcompontens-Documentation contained in this repo, since (at least) I used it quite a lot. |
The fix only applies to advanced deinterlace. |
I just copied omxplayer's config to my application and with these parameters the issue is gone. Even the tickers on news channels are now running absolutely smooth - that's great, thanks a lot! However, could you please add some description of the new parameters to the documentation? I think it's worth to keep the docs in this repo up to date, otherwise others may struggle as well. Or is there still work in progress? |
I just observed a problem with omxplayer's deinterlacer config: My application uses OpenVG to draw the OSD on top. When replaying SD material with the advanced deinterlacer, the decoder freezes constantly when I open the OSD. This does not happen when using the fast deinterlacer and it's limitted only to replay, not live TV, where CPU usage is slightly increased. Could there be a resource problem or a race condition? I have 256MB allocated to the GPU, which should be enough. After the freeze, the application tries to flush the queues, but gets stocked in trying to disable port buffers with ilclient_disable_port_buffers(). There is no additional log with the default level, when setting the level to 64, it looks like this: Do you seen any obvious issue or is there any other debug information I could provide? |
OpenVG, OpenGL and the advanced deinterlace all use the v3d hardware so it is possible. Can you provide an application I can run that shows the problem? |
also what does |
The version is: I'll prepare a small howto to run my application (actually VDR is the application, I just did the plugin to run it on a Rpi) - there are now packets available for Raspbian, so it's easy to setup. |
Okay, you have this fix: 591b25a which might have been relevant. |
Here's a short how-to to show the issue with my application. I just tested it with a fresh Raspbian image, latest firmware and 128M of GPU RAM: get VDR and binary rpihddevice plugin
build rpihddevice plugin with omxplayer’s deinterlacer config from source
get sample recordingI've never observed the issue with live-TV but it's easily reproducible with a recording. I think the major difference is that buffer usage is quite low for live-TV while buffers are filled up to the maximum during playback. I've uploaded a sample recording which, by the way, also shows the problem of #499 (but the issue is also seen with other recordings, video size and codec does not make any difference): get remote plugin to control vdr via telnetVDR normally uses LIRC, but for easy testing there's a plugin which also supports OSD and remote by telnet: get sample remote config for telnet
start vdr
To reproduce the issue, open the Menu, goto Recordings and select the test sample. When replay has started, toggle the status OSD by pressing OK. After toggling a few times, playback will freeze... Please let me know, if you have any questions. Thanks a lot for your efforts! |
I got all the way to the telnet command without obvious failure. But:
I also can't telnet from the local pi itself. Starting vdr service did cause some overlay to appear (channel not available and then what looks like a channel number and date/time and then blank again). Any logs that are useful to you? |
Ok, it seems that VDR is running. Please make sure that the remote plugin's telnet server is enabled and VDR accepts connections from your client's address: /etc/vdr/svdrphosts.conf
/etc/vdr/conf.d/50-remote.conf
|
It's running now. (I had somehow lost the vdr-plugin-remote package). |
Yes, that's actually issue #499, but has no influence on this. The freeze also happens with all other recordings, no matter what size (SD/HD) or codec (H264/MPEG2) they are. If you want me to provide another sample, just let me know! |
I am sometimes seeing the stream stop before the end. Just left with a black screen. I can still bring up the menu and play the recording again. However I have once seen it once hang when pressing |
I have to check if VDR stops too early - it should actually query media time and compare it with latest PTS of the recording. But yes, the issue is the other one you observed. I was testing by toggling the replay screen by pressing OK (Enter) during playback, but this shouldn't make any difference. The abortion was probably triggered by VDR's watchdog, but I haven't been waiting for such a long time... |
Is there any progress on this issue? I just tried with today's firmware, but the problem still exists. I'd really appreciate to get a solution here, since people are complaining about the weak deinterlacer used as a workaround to avoid the crash. |
…m edges See: raspberrypi#463 firmware: di_adv: Add config setting to add nop delays to shader See: http://forum.kodi.tv/showthread.php?tid=231092&pid=2150605#pid2150605 firmware: vcilcs: Avoid a potential deadlock when very threaded See: raspberrypi#449 firmware: vrf: Add spinlock around vrf acquire/release calls to avoid restoring an invalid p10 from ISR context firmware: rpi_display: only ratelimit if the backlight is actually changed See: raspberrypi/linux#1179 firmware: di_adv: Support multiple instances of qpu deinterlace at SD resolution See: popcornmix/omxplayer#386 linux: rpi-ft5406: Use interruptible sleep to avoid high load reported See: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=125034 linux: dts: Added overlay for Adafruit PiTFT 2.8 capacitive touch screen See: raspberrypi/linux#1192 linux: config: Add MCP320X See: raspberrypi/linux#1189 linux: Build i2c_gpio module and add a device tree overlay to configure it See: raspberrypi/linux#1183
Hi
Since a while I'm observing a flickering of the top image line when using the deinterlacer. Today, I set up a fresh raspian image to test this with current omxplayer but the flickering is visible here as well. I've uploaded a sample of a SD-MPEG2 TS-stream:
http://www.reufer.ch/temp/00001.ts
I'm launching omxplayer with:
omxplayer -p -o hdmi -d 00001.ts
With this sample, the whole first line is flickering, sometimes it's only half of the line. With omxplayer there's an additional issue with the rest of the image, but this is not the case with my application.
When disabling the deinterlacer, the first line is fine:
omxplayer -p -o hdmi --nodeinterlace 00001.ts
Do you have any solution to get rid of this problem?
Regards,
Thomas
The text was updated successfully, but these errors were encountered: