Opened 15 years ago
Closed 14 years ago
#769 closed defect (fixed)
png gray8 alpha decodes incorrectly
| Reported by: | ami_stuff | Owned by: | |
|---|---|---|---|
| Priority: | normal | Component: | avcodec |
| Version: | git-master | Keywords: | gray8a alpha png |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | yes | |
| Analyzed by developer: | no |
Description
I get different output with ffmpeg and ffplay
C:\>ffmpeg -i basi4a08.png
ffmpeg version N-35709-g7d531e8, Copyright (c) 2000-2011 the FFmpeg developers
built on Dec 12 2011 13:50:00 with gcc 4.6.2
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-ru
ntime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libope
ncore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --en
able-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger -
-enable-libspeex --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwben
c --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-
libxvid --enable-zlib
libavutil 51. 32. 0 / 51. 32. 0
libavcodec 53. 43. 0 / 53. 43. 0
libavformat 53. 24. 0 / 53. 24. 0
libavdevice 53. 4. 0 / 53. 4. 0
libavfilter 2. 53. 0 / 2. 53. 0
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 51. 2. 0 / 51. 2. 0
Input #0, image2, from 'basi4a08.png':
Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
Stream #0:0: Video: png, gray8a, 32x32, 25 tbr, 25 tbn, 25 tbc
At least one output file must be specified
Attachments (6)
Change History (20)
by , 15 years ago
| Attachment: | basi4a08.png added |
|---|
comment:1 by , 15 years ago
by , 15 years ago
| Attachment: | ffplay.bmp added |
|---|
by , 15 years ago
| Attachment: | ffmpeg.bmp added |
|---|
comment:3 by , 15 years ago
C:\>ffmpeg -i basi4a08.png ffmpeg.bmp
ffmpeg version N-35709-g7d531e8, Copyright (c) 2000-2011 the FFmpeg developers
built on Dec 12 2011 13:50:00 with gcc 4.6.2
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-ru
ntime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libope
ncore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --en
able-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger -
-enable-libspeex --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwben
c --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-
libxvid --enable-zlib
libavutil 51. 32. 0 / 51. 32. 0
libavcodec 53. 43. 0 / 53. 43. 0
libavformat 53. 24. 0 / 53. 24. 0
libavdevice 53. 4. 0 / 53. 4. 0
libavfilter 2. 53. 0 / 2. 53. 0
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 51. 2. 0 / 51. 2. 0
Input #0, image2, from 'basi4a08.png':
Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
Stream #0:0: Video: png, gray8a, 32x32, 25 tbr, 25 tbn, 25 tbc
Incompatible pixel format 'gray8a' for codec 'bmp', auto-selecting format 'bgr24
'
[buffer @ 020D1700] w:32 h:32 pixfmt:gray8a tb:1/1000000 sar:0/1 sws_param:
[buffersink @ 020D1980] auto-inserting filter 'auto-inserted scale 0' between th
e filter 'src' and the filter 'out'
[scale @ 020D1D80] w:32 h:32 fmt:gray8a -> w:32 h:32 fmt:bgr24 flags:0x4
Output #0, image2, to 'ffmpeg.bmp':
Metadata:
encoder : Lavf53.24.0
Stream #0:0: Video: bmp, bgr24, 32x32, q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (png -> bmp)
Press [q] to stop, [?] for help
frame= 1 fps= 0 q=0.0 Lsize= 0kB time=00:00:00.04 bitrate= 0.0kbits/
s
video:3kB audio:0kB global headers:0kB muxing overhead -100.000000%
C:\>ffplay basi4a08.png
ffplay version N-35709-g7d531e8, Copyright (c) 2003-2011 the FFmpeg developers
built on Dec 12 2011 13:50:00 with gcc 4.6.2
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-ru
ntime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libope
ncore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --en
able-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger -
-enable-libspeex --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwben
c --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-
libxvid --enable-zlib
libavutil 51. 32. 0 / 51. 32. 0
libavcodec 53. 43. 0 / 53. 43. 0
libavformat 53. 24. 0 / 53. 24. 0
libavdevice 53. 4. 0 / 53. 4. 0
libavfilter 2. 53. 0 / 2. 53. 0
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 51. 2. 0 / 51. 2. 0
Input #0, image2, from 'basi4a08.png':
Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
Stream #0:0: Video: png, gray8a, 32x32, 25 tbr, 25 tbn, 25 tbc
[buffersink @ 020D2880] auto-inserting filter 'auto-inserted scale 0' between th
e filter 'src' and the filter 'out'
[scale @ 020D2CA0] w:32 h:32 fmt:gray8a -> w:32 h:32 fmt:yuv420p flags:0x4
1.44 A-V: 0.000 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
follow-up: 5 comment:4 by , 15 years ago
| Component: | undetermined → swscale |
|---|---|
| Keywords: | gray8a alpha added |
| Reproduced by developer: | set |
| Status: | new → open |
| Version: | unspecified → git-master |
The following commands work as expected:
ffmpeg -i basi4a08.png out.avi
ffmpeg -i basi4a08.png -pix_fmt yuv420p out.tif
comment:5 by , 15 years ago
Replying to cehoyos:
ffmpeg -i basi4a08.png -pix_fmt yuv420p out.tif
I can reproduce the problem with it (please see the attached output tif file), so maybe a bug in gray8a -> yuv420p conversion?
by , 15 years ago
| Attachment: | out_yuv420p.tif added |
|---|
comment:6 by , 15 years ago
Afaict, the conversion from gray8a to yuv (including yuv420p) is the only one that works (for gray8a).
out_yuv420p.tif looks fine with ImageMagick.
comment:7 by , 15 years ago
I attache output from irfanview which I consider correct.
Now please create these files:
ffmpeg -loop 1 -t 5 -i basi4a08.png -vcodec rawvideo -pix_fmt rgba rgba.avi
ffmpeg -loop 1 -t 5 -i basi4a08.png -vcodec rawvideo -pix_fmt yuv420p yuv420p.avi
and play rgba.avi and yuv420p.avi with vlc.
rgba.avi will look more or less ok (there are still some strange black dots - something like flipped "F", but let's ignore it for now). yuv420p.avi will have vertical black lines, which is not correct.
by , 15 years ago
| Attachment: | irfanview.bmp added |
|---|
by , 15 years ago
| Attachment: | gray_alpha.png added |
|---|
comment:9 by , 15 years ago
attached pngs works with this:
} else if (s->bit_depth == 1) {
avctx->pix_fmt = PIX_FMT_MONOBLACK;
} else if (s->bit_depth == 8 &&
s->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
- avctx->pix_fmt = PIX_FMT_GRAY8A;
+ avctx->pix_fmt = PIX_FMT_GRAY16BE;
} else {
comment:10 by , 15 years ago
| Keywords: | png added |
|---|
gray_alpha.png was fixed by Michael, the transparency information of basi4a08.png gets lost with
ffmpeg -i basi4a08.png -pix_fmt rgba out.tif
comment:11 by , 14 years ago
| Resolution: | → fixed |
|---|---|
| Status: | open → closed |
Cant reproduce any of the mentioned issues anymore.
Also please try to keep 1 issue per bug report.
comment:12 by , 14 years ago
The transparency information of basi4a08.png gets lost with the following command:
$ ffmpeg -i basi4a08.png -pix_fmt rgba out.png
ffmpeg version N-43716-g92b8c9d Copyright (c) 2000-2012 the FFmpeg developers
built on Aug 18 2012 18:47:44 with gcc 4.6.1 (GCC)
configuration: --cc=/usr/local/gcc-4.6.1/bin/gcc
libavutil 51. 70.100 / 51. 70.100
libavcodec 54. 53.100 / 54. 53.100
libavformat 54. 25.104 / 54. 25.104
libavdevice 54. 2.100 / 54. 2.100
libavfilter 3. 11.101 / 3. 11.101
libswscale 2. 1.101 / 2. 1.101
libswresample 0. 15.100 / 0. 15.100
Input #0, image2, from 'basi4a08.png':
Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
Stream #0:0: Video: png, gray8a, 32x32, 25 tbr, 25 tbn, 25 tbc
Output #0, image2, to 'out.png':
Metadata:
encoder : Lavf54.25.104
Stream #0:0: Video: png, rgba, 32x32, q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (png -> png)
Press [q] to stop, [?] for help
frame= 1 fps=0.0 q=0.0 Lsize= 0kB time=00:00:00.04 bitrate= 0.0kbits/s
video:0kB audio:0kB subtitle:0 global headers:0kB muxing overhead -100.000000%
comment:13 by , 14 years ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
comment:14 by , 14 years ago
| Component: | swscale → avcodec |
|---|---|
| Resolution: | → fixed |
| Status: | reopened → closed |
One problem - that the decoded picture looked incorrect with ffplay - was fixed by Michael in January, I opened ticket #1702 for the remaining problem (that the transparency information of gray8a gets lost when converting to rgba).



Please provide the ffmpeg command line that produces the output different from ffplay for you.