Opened 17 years ago

Last modified 17 years ago

#798 new defect

filmdint pixelates when fed high resolution video

Reported by: thaspist@… Owned by: reimar
Priority: important Component: core
Version: unspecified Severity: major
Keywords: Cc: mikkila@…
Blocked By: Blocking:
Reproduced by developer: no Analyzed by developer: no

Description

If I use scale prior to using filmdint, or do not use scale, there is no green pixelation in the video. If I use scale and pullup, there is no pixelation.

filmdint is the only filter that both maintains good A/V sync and uncombs properly, but it does this to the video.

http://www.ingraldi.us/thasp/thasp/testforbadivtc12.mkv

I've read the documentation 1000 times by now, I've tried every setting of filmdint and scale. I don't know what to do to get rid of that - there's no reason for such distortion to be added to the output.

Attachments (1)

dintbug (515 bytes ) - added by mtr_mplayerhq@… 17 years ago.
Minimal patch which fixes this bug

Download all attachments as: .zip

Change History (4)

comment:1 by mikkila@…, 17 years ago

Cc: mikkila@… added

I can replicate this on a 1080p24 MPEG-2 source (which isn't telecined, but I only used it to test if filmdint has this bug in handling HD resolutions). Tested on MPlayer SVN (~r23000). Note that the artifacts are at the top of the video frame and if there are black borders, the problem might not be visible. Cropping to a smaller frame size (such as 1280x720) prior to filmdint helps too, as one could expect.

by mtr_mplayerhq@…, 17 years ago

Attachment: dintbug added

Minimal patch which fixes this bug

comment:2 by mtr_mplayerhq@…, 17 years ago

comment:3 by mtr_mplayerhq@…, 17 years ago

This is caused because 1080i video from MPEG-2 sources is typically stored with an extra 8 pixels of height to get an even number of macroblocks. The buffer filmdint was allocating was using the displayed size instead of the stored size. So, buffer overflow. The patch fixes it for 1080i sources, but in general there needs to be more sanity checking in the get_image routine in filmdint. If the image size is not constant, buffer overflows can still occur.

Note: See TracTickets for help on using tickets.