Opened 17 years ago
Closed 17 years ago
Last modified 17 years ago
#6266 closed defect (invalid)
bug in vdpau advanced deinterlacing
| Reported by: | Andy Cohen | Owned by: | markk |
|---|---|---|---|
| Priority: | minor | Milestone: | 0.22 |
| Component: | MythTV - Video Playback | Version: | head |
| Severity: | medium | Keywords: | vdpau deinterlacing |
| Cc: | Ticket locked: | no |
Description
I may have found a bug in VDPAU deinterlacing. For reference I am using a motherboard with integrated nvidia geforce 9400 graphics. Deinterlacing with Temporal (2x, hw) works fine, but Advanced (2x, hw) gives a slightly juddery image. These deinterlacing methods are selected by passing enable flags through vdp_video_mixer_set_feature_enables(). In the Temporal case, the flag to enable VDP_MIXER_FEATURE_DEINTERLACE_TEMPORAL is passed. In the Advanced case the flag for VDP_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL should be passed, but the code in util-vdpau.cpp actually passes BOTH of these flags. According to the Nvidia docs this should be OK: "When multiple de-interlacing options are requested and enabled, the back-end implementation chooses the best algorithm to apply." However it isn't OK, at least on this IGP---when I pass ONLY the flag to enable VDP_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL then I get a fine, non-juddery image, while passing both flags leads to the judder.
There doesn't seem to be much reason to pass both flags, so the simple fix is to pass only one flag or the other. A (trivial) patch to do this is attached.
Attachments (1)
Change History (5)
by , 17 years ago
| Attachment: | util-vdpau.cpp.diff added |
|---|
comment:1 by , 17 years ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
comment:2 by , 17 years ago
| Resolution: | → invalid |
|---|---|
| Status: | assigned → closed |
follow-up: 4 comment:3 by , 17 years ago
Tested on a gigabyte GA-E7AUM-DS2H motherboard (9400M chipset) and it works fine as well with the default code.
Note that the 9400 chipset doesn't do Advanced 2X on HD material ; but works fine with SD.
comment:4 by , 17 years ago
Replying to jyavenard@gmail.com:
Tested on a gigabyte GA-E7AUM-DS2H motherboard (9400M chipset) and it works fine as well with the default code.
Note that the 9400 chipset doesn't do Advanced 2X on HD material ; but works fine with SD.
Yes, I just couldn't understand why this board would not be capable of TEMPORAL_SPATIAL on HD material. The NVIDIA API seems quite clear that both flags are not necessary. But markk is absolutely right that it is just falling back to bob, so the API docs are just wrong.

On 2 test systems here, if VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL is not set then VDPAU clearly uses bob deinterlacing. This is probably why you get smooth playback with your patch applied. I assume that the deinterlacing API is meant to be 'incremental'.