On Thu Nov 30 21:56:36 2023 +0000, Alfred Agrell wrote:
Because WMV version 1 doesn't have codec data.
$ gst-launch-1.0 -vvv filesrc location=dlls/wmvcore/tests/test.wmv ! asfdemux ! avdec_wmv1 ! fakesink [...] /GstPipeline:pipeline0/avdec_wmv1:avdec_wmv1-0.GstPad:sink: caps = video/x-wmv, wmvversion=(int)1, width=(int)64, height=(int)48, pixel-aspect-ratio=(fraction)1/1, format=(string)WMV1 $ gst-launch-1.0 -vvv filesrc location=waga.wmv ! asfdemux ! avdec_wmv3 ! fakesink [...] /GstPipeline:pipeline0/avdec_wmv3:avdec_wmv3-0.GstPad:sink: caps = video/x-wmv, wmvversion=(int)3, format=(string)WMV3, width=(int)1280, height=(int)720, codec_data=(buffer)4ff1080100, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)10000000/333333
(Its absense is tested by the cbFormat check in compare_media_types().) But yes, certainly suboptimal. I'd be happy to test it if someone can find a suitable test file.
If you've tested manually, that's probably fine. My concern is primarily that we're actually translating formats correctly; GStreamer and DirectShow don't always store them in the same way, and it's too easy to make assumptions (cf. [1]).
[1] https://gitlab.winehq.org/wine/wine/-/merge_requests/3636#note_45288