Log in

View Full Version : FFDShow - lossless video format problems


Reino
26th August 2010, 20:15
Hello,

There are certain issues I'd like to report and some things I'd like to request.


First of all the most important thing; colors are screwed up while trying to decode lossless RGB32 video made by the latest ffdshow (rev.3529) itself. Since only FFV1 and LJPG support RGB32, this only applies to these. The funny thing however is, last year I also made a FFV1(RGB32) sample, with on older revision of course, and colors look just fine while decoding this old sample with the latest ffdshow revision.

left picture: Original
right picture: FFV1(RGB32) & LJPG(RGB32)
http://img185.imageshack.us/img185/8519/originalz.th.png (http://img185.imageshack.us/i/originalz.png/) http://img534.imageshack.us/img534/7733/sampleffv1rgb32vlcsmall.th.png (http://img534.imageshack.us/i/sampleffv1rgb32vlcsmall.png/)
Is this a known issue, or did I do something wrong?

Trying to create a FFV1(RGB32) file with "Context Model: Large", in combination with all possible settings, immediately results in a crash upon starting the encoding process in VirtualDub. No problem with "YV12", "Coder type: AC", "Context Model: Large", "Keyframe distance: 10" though.

Besides the colors being screwed up, when I open ffdshow-created-RGB32-files in Avisynth, I'm told these actually have the YV12 colorspace (also the old sample from a year ago with good colours!)! Also ffdshow puts out YV12 instead of RGB32. The only program that appears to show correct colors with FFV1(RGB32) and can convert it to a genuinely RGB32-file again is VirtualDub. LJPG(RGB32) doesn't open in VirtualDub :S. It says it "Couldn't locate decompressor for format 'LJPG' (unknown). And I always thought every format in ffdshow would work with VFW because of "ffvdub.vdf" residing in VirtualDub's plugin directory.
Anyway, something appears to be going wrong with the encoding process. Again, is this a known issue?

Although genuinely being recognized by Avisynth as RGB32-files, and NOT created with ffdshow but with HuffYUV 2.1.1 and Fraps for example, ffdshow also somehow outputs YV12 (without any conversions set). The input colorspace is correct though; RGB32.
Forcing an RGB32 output by only selecting RGB32 on ffdshow's "Output"-tab does work of course, but apparently the option "Select closest matching colorspace" doesn't work at all.
So in short, HFYU(RGB32) and FPS1(RGB32) ffdshow decodes as YV12 despite having enabled "Select closest matching colorspace". Is there a way to fix this?

And finally a request.
Every Avisynth user working with YV12-material (or by using ConverttoYV12) needs a YV12 decompressor, because Windows doesn't have one. In the early days XviD had one, but I guess nowadays most people would install Helix YUV Codecs 1.2. There's no need for that however, because ffdshow supports raw YV12 material no problem...in Avisynth because ffavisynth.dll resides in the Avisynth-plugin directory.
...and with DirectShow:
AVI/WAV File Source --> ffdshow Video Decoder --> Video Renderer
\-> Audio Renderer
However, at this moment having enabled YV12 in ffdshow means it becomes an unnecessary extra DirectShow filter in case of encoded YV12 material. An MPEG-2 or H.264 video decoder, which already puts out YV12, will pass its data through to an unnecessary ffdshow YV12 raw video decoder.
Would it be possible to somehow make an option in ffdshow to only enable YV12 for raw video material?
Thanks a lot!

Snowknight26
27th August 2010, 04:14
The first issue has been around for months. I reported it a while ago but no fixes have come to fruition.

Leeloo Minaļ
28th August 2010, 19:35
I always thought FFV1 works in YV12 colorspace.

From my experience, you should switch to a real RGB32 lossless codec, like UT Video which is available in VFW and DShow filter format, and in 32/64bits.

Reino
29th August 2010, 11:03
When I save a screenshot of one particular frame within both videosamples (old_FFV1(RGB32) (with correct colors) and FFV1(YV12)) I have with Avisynth to png, compressibility of both images appear to be the same; filesizes are identical! So it may indeed look like FFV1(RGB32) is in fact the same as FFV1(YV12), despite the FFV1(RGB32)-files being ±150% bigger than FFV1(YV12) files.
At the moment I can't use UT Video Codec Suite, because I'm still using an AMD Athlon XP 3200+, which doesn't support SSE2.
But nontheless, it seems odd to me that FFShow offers you to encode raw RGB32 to their own FFV1 lossless video format without the need for colorspace conversions, but which in the end doesn't seem to be RGB32 at all in the end.