[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