[FFmpeg-user] rgb8
Michael Koch
astroelectronic at t-online.de
Sun Jun 11 09:43:05 EEST 2023
Am 10.06.2023 um 11:48 schrieb Nicolas George:
> Michael Koch (12023-06-10):
>> Might it be possible that RGB8 in DirectShow is not the same as rgb8 in
>> FFmpeg?
> Duh.
>
There is a problem with a ASI178MM (monochrome) camera and its
DirectShow driver. When I check the options with this command
ffmpeg -list_options 1 -f dshow -i video="ASI178MM Camera (ZWO Design)"
I get this output:
[dshow @ 00000203f5b315c0] pixel_format=rgb8 min s=3096x2080
fps=1.0842e-12 max s=3096x2080 fps=30
[dshow @ 00000203f5b315c0] pixel_format=rgb8 min s=1280x960
fps=1.0842e-12 max s=1280x960 fps=30
[dshow @ 00000203f5b315c0] pixel_format=rgb8 min s=1280x800
fps=1.0842e-12 max s=1280x800 fps=30
... (there are more sizes listed, all with the same pixel format rgb8)
When FFmpeg gets a frame, it thinks the pixel format is rgb8 (as defined
in FFmpeg: 2 bits red, 3 bits green, 3 bits blue). Of course that's
wrong, because it's a monochrome camera and the data is 8-bit gray.
My first idea was that it must be a bug in the DirectShow driver. The
data is obviously correct 8-bit gray, but it's incorrectly labeled as
"rgb8" instead of "gray".
However when you look at the specifications of DirectShow
https://learn.microsoft.com/en-us/windows/win32/directshow/uncompressed-rgb-video-subtypes
you see that there exists no "gray" pixel format, and "RGB8" is a
different pixel format described as "RGB, 8 bpp, palettized". It seems
an uncompressed 8-bit gray frame must be encoded with "RGB8" pixel
format, together with a palette which contains 256 levels of gray. With
other words: It might be correct that the DirectShow driver reports
"rgb8" pixel format.
That's why I think that perhaps the issue is not in the DirectShow
driver, but in FFmpeg.
Michael
More information about the ffmpeg-user
mailing list