[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


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.


More information about the ffmpeg-user mailing list