[FFmpeg-user] libaom - first frame not lossless when > 7 frames in source
Kieran O Leary
kieran.o.leary at gmail.com
Sat Jun 6 21:57:39 EEST 2020
Hi,
I was doing some tests with libaom and lossness encoding and with synthetic
files and some real world files, I kept finding that the framemd5s for the
first frame was different than the source, but every other libaom encoded
frame produced matching framemd5s for source and output.
I then tried with smaller frame counts, and with synthetic files, I found
that all frames would produce matching framemd5s when there was between 1
and 7 frames in the input. Once you went to 8 frames and above, the first
frame would produce a framemd5 mismatch.
here's a bunch of commands using ffmpeg git-master and what I assume to be
libaom git master, or whatever the Ubuntu ffmpeg compilation wiki is using:
0) framemd5 output of the 8fr source - note the first frame value
1) Make a 8frame v210 via testsrc
2) Turn into av1 with -crf 0
3) get framemd5 of av1 output - note that first framemd5 value is different
4-6 - same as 1 to 3 but with a 7 frame testsrc file
Any idea what's happening? Will I get the libx264-style answer: 'this is
googles issue, not
ffmpeg'0b1ae3e77528dcdacfab21761076d2b0b1ae3e77528dcdacfab21761076d2b
/ffmpeg -i 8fr.mkv -f framemd5 -
ffmpeg version N-98060-g1c32d7d Copyright (c) 2000-2020 the FFmpeg
developers
built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)
configuration: --prefix=/home/kieranjol/ffmpeg_build
--pkg-config-flags=--static
--extra-cflags=-I/home/kieranjol/ffmpeg_build/include
--extra-ldflags=-L/home/kieranjol/ffmpeg_build/lib --extra-libs='-lpthread
-lm' --bindir=/home/kieranjol/bin --enable-libaom
libavutil 56. 50.100 / 56. 50.100
libavcodec 58. 90.100 / 58. 90.100
libavformat 58. 44.100 / 58. 44.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 84.100 / 7. 84.100
libswscale 5. 6.101 / 5. 6.101
libswresample 3. 6.100 / 3. 6.100
Input #0, matroska,webm, from '8fr.mkv':
Metadata:
ENCODER : Lavf58.44.100
Duration: 00:00:00.32, start: 0.000000, bitrate: 43031 kb/s
Stream #0:0: Video: v210 (v210 / 0x30313276), yuv422p10le, 320x240, SAR
1:1 DAR 4:3, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
Metadata:
ENCODER : Lavc58.90.100 v210
DURATION : 00:00:00.320000000
Stream mapping:
Stream #0:0 -> #0:0 (v210 (native) -> rawvideo (native))
Press [q] to stop, [?] for help
#format: frame checksums
#version: 2
#hash: MD5
#software: Lavf58.44.100
#tb 0: 1/25
#media_type 0: video
#codec_id 0: rawvideo
#dimensions 0: 320x240
#sar 0: 1/1
#stream#, dts, pts, duration, size, hash
Output #0, framemd5, to 'pipe:':
Metadata:
encoder : Lavf58.44.100
Stream #0:0: Video: rawvideo (Y3[10][10] / 0xA0A3359), yuv422p10le,
320x240 [SAR 1:1 DAR 4:3], q=2-31, 38400 kb/s, 25 fps, 25 tbn, 25 tbc
(default)
Metadata:
DURATION : 00:00:00.320000000
encoder : Lavc58.90.100 rawvideo
0, 0, 0, 1, 307200,
50b1ae3e77528dcdacfab21761076d2b
0, 1, 1, 1, 307200,
8213a857506c099160fffb2f606f3590
0, 2, 2, 1, 307200,
a5e0786c6d9d152c45e2d3a0122c8987
0, 3, 3, 1, 307200,
fd93af578482e418d1378f6d9cd94f14
0, 4, 4, 1, 307200,
abfca35c7aae65d1dcddee1ce370479f
0, 5, 5, 1, 307200,
da151dbf22f7e818344d5efd0cbb6f09
0, 6, 6, 1, 307200,
b87bdb747fbd80060f71585e7d2c6ac9
0, 7, 7, 1, 307200,
af69163b6455654da3a37cf52cfc4525
frame= 8 fps=0.0 q=-0.0 Lsize= 1kB time=00:00:00.32 bitrate=
21.4kbits/s speed=33.1x
video:2400kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: unknown
./ffmpeg -f lavfi -i testsrc -c:v v210 -vframes 8 8fr.mkv
ffmpeg version N-98060-g1c32d7d Copyright (c) 2000-2020 the FFmpeg
developers
built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)
configuration: --prefix=/home/kieranjol/ffmpeg_build
--pkg-config-flags=--static
--extra-cflags=-I/home/kieranjol/ffmpeg_build/include
--extra-ldflags=-L/home/kieranjol/ffmpeg_build/lib --extra-libs='-lpthread
-lm' --bindir=/home/kieranjol/bin --enable-libaom
libavutil 56. 50.100 / 56. 50.100
libavcodec 58. 90.100 / 58. 90.100
libavformat 58. 44.100 / 58. 44.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 84.100 / 7. 84.100
libswscale 5. 6.101 / 5. 6.101
libswresample 3. 6.100 / 3. 6.100
Input #0, lavfi, from 'testsrc':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: rawvideo (RGB[24] / 0x18424752), rgb24, 320x240
[SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> v210 (native))
Press [q] to stop, [?] for help
Output #0, matroska, to '8fr.mkv':
Metadata:
encoder : Lavf58.44.100
Stream #0:0: Video: v210 (v210 / 0x30313276), yuv422p, 320x240 [SAR 1:1
DAR 4:3], q=2-31, 40960 kb/s, 25 fps, 1k tbn, 25 tbc
Metadata:
encoder : Lavc58.90.100 v210
frame= 8 fps=0.0 q=-0.0 Lsize= 1681kB time=00:00:00.28
bitrate=49003.7kbits/s speed=39.4x
video:1680kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 0.054408%
kieranjol at POWERVIRUS:~/ffmpeg_sources/ffmpeg$ ./ffmpeg -i 8fr.mkv -c:v av1
-crf 0 8fr_av1.mkv
ffmpeg version N-98060-g1c32d7d Copyright (c) 2000-2020 the FFmpeg
developers
built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)
configuration: --prefix=/home/kieranjol/ffmpeg_build
--pkg-config-flags=--static
--extra-cflags=-I/home/kieranjol/ffmpeg_build/include
--extra-ldflags=-L/home/kieranjol/ffmpeg_build/lib --extra-libs='-lpthread
-lm' --bindir=/home/kieranjol/bin --enable-libaom
libavutil 56. 50.100 / 56. 50.100
libavcodec 58. 90.100 / 58. 90.100
libavformat 58. 44.100 / 58. 44.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 84.100 / 7. 84.100
libswscale 5. 6.101 / 5. 6.101
libswresample 3. 6.100 / 3. 6.100
Input #0, matroska,webm, from '8fr.mkv':
Metadata:
ENCODER : Lavf58.44.100
Duration: 00:00:00.32, start: 0.000000, bitrate: 43031 kb/s
Stream #0:0: Video: v210 (v210 / 0x30313276), yuv422p10le, 320x240, SAR
1:1 DAR 4:3, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
Metadata:
ENCODER : Lavc58.90.100 v210
DURATION : 00:00:00.320000000
Stream mapping:
Stream #0:0 -> #0:0 (v210 (native) -> av1 (libaom-av1))
Press [q] to stop, [?] for help
[libaom-av1 @ 0x5620559e0600] v2.0.0
Output #0, matroska, to '8fr_av1.mkv':
Metadata:
encoder : Lavf58.44.100
Stream #0:0: Video: av1 (libaom-av1) (AV01 / 0x31305641), yuv422p10le,
320x240 [SAR 1:1 DAR 4:3], q=-1--1, 25 fps, 1k tbn, 25 tbc (default)
Metadata:
DURATION : 00:00:00.320000000
encoder : Lavc58.90.100 libaom-av1
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
frame= 8 fps=3.7 q=0.0 Lsize= 29kB time=00:00:00.28 bitrate=
837.3kbits/s speed=0.129x
video:28kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 2.188944%
kieranjol at POWERVIRUS:~/ffmpeg_sources/ffmpeg$ ./ffmpeg -i 8fr_av1.mkv -f
framemd5 -
ffmpeg version N-98060-g1c32d7d Copyright (c) 2000-2020 the FFmpeg
developers
built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)
configuration: --prefix=/home/kieranjol/ffmpeg_build
--pkg-config-flags=--static
--extra-cflags=-I/home/kieranjol/ffmpeg_build/include
--extra-ldflags=-L/home/kieranjol/ffmpeg_build/lib --extra-libs='-lpthread
-lm' --bindir=/home/kieranjol/bin --enable-libaom
libavutil 56. 50.100 / 56. 50.100
libavcodec 58. 90.100 / 58. 90.100
libavformat 58. 44.100 / 58. 44.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 84.100 / 7. 84.100
libswscale 5. 6.101 / 5. 6.101
libswresample 3. 6.100 / 3. 6.100
[libaom-av1 @ 0x558d1646b740] v2.0.0
Input #0, matroska,webm, from '8fr_av1.mkv':
Metadata:
ENCODER : Lavf58.44.100
Duration: 00:00:00.32, start: 0.000000, bitrate: 735 kb/s
Stream #0:0: Video: av1 (Professional), yuv422p10le(tv), 320x240, SAR
1:1 DAR 4:3, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
Metadata:
ENCODER : Lavc58.90.100 libaom-av1
DURATION : 00:00:00.320000000
[libaom-av1 @ 0x558d16479800] v2.0.0
Stream mapping:
Stream #0:0 -> #0:0 (av1 (libaom-av1) -> rawvideo (native))
Press [q] to stop, [?] for help
#format: frame checksums
#version: 2
#hash: MD5
#software: Lavf58.44.100
#tb 0: 1/25
#media_type 0: video
#codec_id 0: rawvideo
#dimensions 0: 320x240
#sar 0: 1/1
#stream#, dts, pts, duration, size, hash
Output #0, framemd5, to 'pipe:':
Metadata:
encoder : Lavf58.44.100
Stream #0:0: Video: rawvideo (Y3[10][10] / 0xA0A3359), yuv422p10le,
320x240 [SAR 1:1 DAR 4:3], q=2-31, 38400 kb/s, 25 fps, 25 tbn, 25 tbc
(default)
Metadata:
DURATION : 00:00:00.320000000
encoder : Lavc58.90.100 rawvideo
0, 0, 0, 1, 307200,
e790aa300c6bdd6bad6770c6c6346585
0, 1, 1, 1, 307200,
8213a857506c099160fffb2f606f3590
0, 2, 2, 1, 307200,
a5e0786c6d9d152c45e2d3a0122c8987
0, 3, 3, 1, 307200,
fd93af578482e418d1378f6d9cd94f14
0, 4, 4, 1, 307200,
abfca35c7aae65d1dcddee1ce370479f
0, 5, 5, 1, 307200,
da151dbf22f7e818344d5efd0cbb6f09
0, 6, 6, 1, 307200,
b87bdb747fbd80060f71585e7d2c6ac9
0, 7, 7, 1, 307200,
af69163b6455654da3a37cf52cfc4525
frame= 8 fps=0.0 q=-0.0 Lsize= 1kB time=00:00:00.32 bitrate=
21.4kbits/s speed=15.7x
video:2400kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: unknown
kieranjol at POWERVIRUS:~/ffmpeg_sources/ffmpeg$ ./ffmpeg -f lavfi -i testsrc
-c:v v210 -vframes 7 7fr.mkv
ffmpeg version N-98060-g1c32d7d Copyright (c) 2000-2020 the FFmpeg
developers
built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)
configuration: --prefix=/home/kieranjol/ffmpeg_build
--pkg-config-flags=--static
--extra-cflags=-I/home/kieranjol/ffmpeg_build/include
--extra-ldflags=-L/home/kieranjol/ffmpeg_build/lib --extra-libs='-lpthread
-lm' --bindir=/home/kieranjol/bin --enable-libaom
libavutil 56. 50.100 / 56. 50.100
libavcodec 58. 90.100 / 58. 90.100
libavformat 58. 44.100 / 58. 44.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 84.100 / 7. 84.100
libswscale 5. 6.101 / 5. 6.101
libswresample 3. 6.100 / 3. 6.100
Input #0, lavfi, from 'testsrc':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: rawvideo (RGB[24] / 0x18424752), rgb24, 320x240
[SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> v210 (native))
Press [q] to stop, [?] for help
Output #0, matroska, to '7fr.mkv':
Metadata:
encoder : Lavf58.44.100
Stream #0:0: Video: v210 (v210 / 0x30313276), yuv422p, 320x240 [SAR 1:1
DAR 4:3], q=2-31, 40960 kb/s, 25 fps, 1k tbn, 25 tbc
Metadata:
encoder : Lavc58.90.100 v210
frame= 7 fps=0.0 q=-0.0 Lsize= 1471kB time=00:00:00.24
bitrate=49997.4kbits/s speed=37.6x
video:1470kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 0.059258%
kieranjol at POWERVIRUS:~/ffmpeg_sources/ffmpeg$ ./ffmpeg -i 7fr.mkv -c:v av1
-crf 0 7fr_av1.mkv
ffmpeg version N-98060-g1c32d7d Copyright (c) 2000-2020 the FFmpeg
developers
built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)
configuration: --prefix=/home/kieranjol/ffmpeg_build
--pkg-config-flags=--static
--extra-cflags=-I/home/kieranjol/ffmpeg_build/include
--extra-ldflags=-L/home/kieranjol/ffmpeg_build/lib --extra-libs='-lpthread
-lm' --bindir=/home/kieranjol/bin --enable-libaom
libavutil 56. 50.100 / 56. 50.100
libavcodec 58. 90.100 / 58. 90.100
libavformat 58. 44.100 / 58. 44.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 84.100 / 7. 84.100
libswscale 5. 6.101 / 5. 6.101
libswresample 3. 6.100 / 3. 6.100
Input #0, matroska,webm, from '7fr.mkv':
Metadata:
ENCODER : Lavf58.44.100
Duration: 00:00:00.28, start: 0.000000, bitrate: 43033 kb/s
Stream #0:0: Video: v210 (v210 / 0x30313276), yuv422p10le, 320x240, SAR
1:1 DAR 4:3, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
Metadata:
ENCODER : Lavc58.90.100 v210
DURATION : 00:00:00.280000000
Stream mapping:
Stream #0:0 -> #0:0 (v210 (native) -> av1 (libaom-av1))
Press [q] to stop, [?] for help
[libaom-av1 @ 0x5613e4bb0600] v2.0.0
Output #0, matroska, to '7fr_av1.mkv':
Metadata:
encoder : Lavf58.44.100
Stream #0:0: Video: av1 (libaom-av1) (AV01 / 0x31305641), yuv422p10le,
320x240 [SAR 1:1 DAR 4:3], q=-1--1, 25 fps, 1k tbn, 25 tbc (default)
Metadata:
DURATION : 00:00:00.280000000
encoder : Lavc58.90.100 libaom-av1
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
frame= 7 fps=4.2 q=0.0 Lsize= 23kB time=00:00:00.24 bitrate=
793.4kbits/s speed=0.143x
video:23kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 2.685054%
kieranjol at POWERVIRUS:~/ffmpeg_sources/ffmpeg$ ./ffmpeg -i 7fr_av1.mkv -f
framemd5 -
ffmpeg version N-98060-g1c32d7d Copyright (c) 2000-2020 the FFmpeg
developers
built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)
configuration: --prefix=/home/kieranjol/ffmpeg_build
--pkg-config-flags=--static
--extra-cflags=-I/home/kieranjol/ffmpeg_build/include
--extra-ldflags=-L/home/kieranjol/ffmpeg_build/lib --extra-libs='-lpthread
-lm' --bindir=/home/kieranjol/bin --enable-libaom
libavutil 56. 50.100 / 56. 50.100
libavcodec 58. 90.100 / 58. 90.100
libavformat 58. 44.100 / 58. 44.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 84.100 / 7. 84.100
libswscale 5. 6.101 / 5. 6.101
libswresample 3. 6.100 / 3. 6.100
[libaom-av1 @ 0x5632da787740] v2.0.0
Input #0, matroska,webm, from '7fr_av1.mkv':
Metadata:
ENCODER : Lavf58.44.100
Duration: 00:00:00.28, start: 0.000000, bitrate: 682 kb/s
Stream #0:0: Video: av1 (Professional), yuv422p10le(tv), 320x240, SAR
1:1 DAR 4:3, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
Metadata:
ENCODER : Lavc58.90.100 libaom-av1
DURATION : 00:00:00.280000000
[libaom-av1 @ 0x5632da78cf00] v2.0.0
Stream mapping:
Stream #0:0 -> #0:0 (av1 (libaom-av1) -> rawvideo (native))
Press [q] to stop, [?] for help
#format: frame checksums
#version: 2
#hash: MD5
#software: Lavf58.44.100
#tb 0: 1/25
#media_type 0: video
#codec_id 0: rawvideo
#dimensions 0: 320x240
#sar 0: 1/1
#stream#, dts, pts, duration, size, hash
Output #0, framemd5, to 'pipe:':
Metadata:
encoder : Lavf58.44.100
Stream #0:0: Video: rawvideo (Y3[10][10] / 0xA0A3359), yuv422p10le,
320x240 [SAR 1:1 DAR 4:3], q=2-31, 38400 kb/s, 25 fps, 25 tbn, 25 tbc
(default)
Metadata:
DURATION : 00:00:00.280000000
encoder : Lavc58.90.100 rawvideo
0, 0, 0, 1, 307200,
50b1ae3e77528dcdacfab21761076d2b
0, 1, 1, 1, 307200,
8213a857506c099160fffb2f606f3590
0, 2, 2, 1, 307200,
a5e0786c6d9d152c45e2d3a0122c8987
0, 3, 3, 1, 307200,
fd93af578482e418d1378f6d9cd94f14
0, 4, 4, 1, 307200,
abfca35c7aae65d1dcddee1ce370479f
0, 5, 5, 1, 307200,
da151dbf22f7e818344d5efd0cbb6f09
0, 6, 6, 1, 307200,
b87bdb747fbd80060f71585e7d2c6ac9
frame= 7 fps=0.0 q=-0.0 Lsize= 1kB time=00:00:00.28 bitrate=
22.1kbits/s speed=15.3x
video:2100kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: unknown0b1ae3e77528dcdacfab21761076d2b
Best,
Kieran O'Leary
Irish Film Institute
More information about the ffmpeg-user
mailing list