[FFmpeg-trac] #3567(undetermined:new): Infinite PSNR Values with X265
FFmpeg
trac at avcodec.org
Tue Apr 15 18:50:25 CEST 2014
#3567: Infinite PSNR Values with X265
-------------------------------------+-------------------------------------
Reporter: ooe | Type: defect
Status: new | Priority: normal
Component: | Version: git-
undetermined | master
Keywords: x265, PSNR, | Blocked By:
HEVC, H265 | Reproduced by developer: 0
Blocking: |
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Summary of the bug:
When I encode a YUV file with libx265 with the -psnr flag turned on, the
given values are infinite/do not make sense.
How to reproduce:
{{{
% ffmpeg -i bunny1_test_small_QCIF.y4m -report -ssim 1 -psnr -v 9
-loglevel 99 -y bunny1_QCIF_small.hevc
ffmpeg version 2.2.git Copyright (c) 2000-2014 the FFmpeg developers
built on Mar 12 2014 00:14:34 with gcc 4.8 (Ubuntu/Linaro
4.8.1-10ubuntu9)
configuration: --prefix=/home/system/ffmpeg_build --extra-
cflags=-I/home/system/ffmpeg_build/include --extra-
ldflags=-L/home/system/ffmpeg_build/lib --bindir=/home/system/bin --extra-
libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-
libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis
--enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab
--enable-libx265
libavutil 52. 66.101 / 52. 66.101
libavcodec 55. 52.102 / 55. 52.102
libavformat 55. 34.100 / 55. 34.100
libavdevice 55. 11.100 / 55. 11.100
libavfilter 4. 3.100 / 4. 3.100
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 18.100 / 0. 18.100
libpostproc 52. 3.100 / 52. 3.100
Splitting the commandline.
Reading option '-i' ... matched as input file with argument
'bunny1_test_small_QCIF.y4m'.
Reading option '-report' ... matched as option 'report' (generate a
report) with argument '1'.
Reading option '-ssim' ... matched as AVOption 'ssim' with argument '1'.
Reading option '-psnr' ... matched as option 'psnr' (calculate PSNR of
compressed frames) with argument '1'.
Reading option '-v' ... matched as option 'v' (set logging level) with
argument '9'.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging
level) with argument '99'.
Reading option '-y' ... matched as option 'y' (overwrite output files)
with argument '1'.
Reading option 'bunny1_QCIF_small.hevc' ... matched as output file.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option report (generate a report) with argument 1.
Applying option psnr (calculate PSNR of compressed frames) with argument
1.
Applying option v (set logging level) with argument 9.
Applying option loglevel (set logging level) with argument 99.
Applying option y (overwrite output files) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input file bunny1_test_small_QCIF.y4m.
Successfully parsed a group of options.
Opening an input file: bunny1_test_small_QCIF.y4m.
[yuv4mpegpipe @ 0x2a66a80] Format yuv4mpegpipe probed with size=2048 and
score=100
[yuv4mpegpipe @ 0x2a66a80] Before avformat_find_stream_info() pos: 60
bytes read:32768 seeks:0
[yuv4mpegpipe @ 0x2a66a80] max_analyze_duration 5000000 reached at 5000000
microseconds
[yuv4mpegpipe @ 0x2a66a80] After avformat_find_stream_info() pos: 4600722
bytes read:4622982 seeks:0 frames:120
Input #0, yuv4mpegpipe, from 'bunny1_test_small_QCIF.y4m':
Duration: N/A, bitrate: N/A
Stream #0:0, 120, 1/24: Video: rawvideo (I420 / 0x30323449), yuv420p,
176x144, 1/24, SAR 16:11 DAR 16:9, 24 fps, 24 tbr, 24 tbn, 24 tbc
Successfully opened the file.
Parsing a group of options: output file bunny1_QCIF_small.hevc.
Successfully parsed a group of options.
Opening an output file: bunny1_QCIF_small.hevc.
Codec AVOption ssim (Calculate and print SSIM stats.) specified for output
file #0 (bunny1_QCIF_small.hevc) has not been used for any stream. The
most likely reason is either wrong type (e.g. a video option with no video
streams) or that it is a private option of some encoder which was not
actually used for any stream.
Successfully opened the file.
detected 4 logical cores
[graph 0 input from stream 0:0 @ 0x2a6a4c0] Setting 'video_size' to value
'176x144'
[graph 0 input from stream 0:0 @ 0x2a6a4c0] Setting 'pix_fmt' to value '0'
[graph 0 input from stream 0:0 @ 0x2a6a4c0] Setting 'time_base' to value
'1/24'
[graph 0 input from stream 0:0 @ 0x2a6a4c0] Setting 'pixel_aspect' to
value '16/11'
[graph 0 input from stream 0:0 @ 0x2a6a4c0] Setting 'sws_param' to value
'flags=2'
[graph 0 input from stream 0:0 @ 0x2a6a4c0] Setting 'frame_rate' to value
'24/1'
[graph 0 input from stream 0:0 @ 0x2a6a4c0] w:176 h:144 pixfmt:yuv420p
tb:1/24 fr:24/1 sar:16/11 sws_param:flags=2
[format @ 0x2a6aba0] compat: called with args=[yuv420p|yuv444p]
[format @ 0x2a6aba0] Setting 'pix_fmts' to value 'yuv420p|yuv444p'
[AVFilterGraph @ 0x2a68080] query_formats: 4 queried, 3 merged, 0 already
done, 0 delayed
Output #0, hevc, to 'bunny1_QCIF_small.hevc':
Metadata:
encoder : Lavf55.34.100
Stream #0:0, 0, 1/90000: Video: hevc (libx265), yuv420p, 176x144 [SAR
16:11 DAR 16:9], 1/24, q=2-31, 200 kb/s, 90k tbn, 24 tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo -> libx265)
Press [q] to stop, [?] for help
[output stream 0:0 @ 0x2a6a820] EOF on sink link output stream
0:0:default.=00:00:10.00 bitrate= 257.1kbits/s
No more output streams to write to, finishing.
frame= 269 fps= 28 q=0.0 **LPSNR=Y:inf U:inf V:inf *:inf *** size=
338kB time=00:00:11.12 bitrate= 248.6kbits/s
video:338kB audio:0kB subtitle:0 data:0 global headers:0kB muxing overhead
0.000000%
269 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0x2a68320] Statistics: 0 seeks, 269 writeouts
[AVIOContext @ 0x2a6f200] Statistics: 10240000 bytes read, 0 seeks
}}}
This is interesting because using x265 by itself prints out a valid-
looking value for global PSNR.
{{{
%system at ubuntu:~$ x265 bunny1_test_small_QCIF.y4m --psnr --log-level debug
-o bunny1_QCIF_small.hevc
y4m [info]: 176x144 fps 24/1 i420 sar 16:11 frames 0 - 268 of 269
x265 [info]: HEVC encoder version 0.9+48-9f0f011294bd
x265 [info]: build info [Linux][GCC 4.8.2][64 bit] 8bpp
x265 [warning]: Assembly not supported in this binary
x265 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX AVX2
FMA3 LZCNT BMI2
x265 [info]: WPP streams / pool / frames : 3 / 4 / 2
x265 [info]: Main profile, Level-2 (Main tier)
x265 [info]: CU size : 64
x265 [info]: Max RQT depth inter / intra : 1 / 1
x265 [info]: ME / range / subpel / merge : hex / 57 / 2 / 2
x265 [info]: Keyframe min / max / scenecut : 24 / 250 / 40
x265 [info]: Lookahead / bframes / badapt : 20 / 4 / 2
x265 [info]: b-pyramid / weightp / weightb / refs: 1 / 1 / 0 / 3
x265 [info]: Rate Control / AQ-Strength / CUTree : CRF-28.0 / 1.0 / 1
x265 [info]: tools: rect amp rd=3 lft sao-lcu sign-hide
x265 [debug]: POC:0 I QP 30.67(33) 280 bits [Y: 69.71 U: 66.70 V:
66.70]
x265 [debug]: POC:4 P QP 30.78(33) 200 bits [Y: 58.42 U: 66.70 V:
65.54] [L0 0 ]
x265 [debug]: POC:2 B QP 30.67(33) 144 bits [Y: 69.71 U: 66.70 V:
66.70] [L0 0 ] [L1 4 ]
x265 [debug]: POC:1 b QP 30.67(33) 144 bits [Y: 69.71 U: 66.70 V:
66.70] [L0 0 ] [L1 2 4 ]
x265 [debug]: POC:3 b QP 30.67(33) 160 bits [Y: 68.48 U: 66.70 V:
66.70] [L0 2 0 ] [L1 4 ]
x265 [debug]: POC:7 P QP 31.33(33) 304 bits [Y: 52.89 U: 59.31 V:
55.42] [L0 4 2 0 ]
x265 [debug]: POC:6 B QP 31.33(33) 176 bits [Y: 53.39 U: 61.85 V:
55.81] [L0 4 2 0 ] [L1 7 ]
x265 [debug]: POC:5 b QP 30.89(33) 176 bits [Y: 59.29 U: 65.15 V:
60.82] [L0 4 2 ] [L1 6 7 ]
x265 [debug]: POC:8 P QP 30.78(33) 296 bits [Y: 55.98 U: 57.62 V:
54.57] [L0 7 6 4 ]
x265 [debug]: POC:10 P QP 31.00(33) 240 bits [Y: 53.07 U: 54.54 V:
51.37] [L0 8 7 6 ]
x265 [debug]: POC:9 b QP 31.00(33) 232 bits [Y: 53.57 U: 55.79 V:
52.41] [L0 8 7 6 ] [L1 10 ]
x265 [debug]: POC:12 P QP 31.00(33) 384 bits [Y: 52.31 U: 52.89 V:
54.57] [L0 10 8 7 ]
x265 [debug]: POC:11 b QP 31.22(33) 248 bits [Y: 51.76 U: 53.51 V:
54.20] [L0 10 8 6 ] [L1 12 ]
x265 [debug]: POC:13 P QP 31.22(33) 344 bits [Y: 50.97 U: 51.64 V:
54.06] [L0 12 10 8 ]
x265 [debug]: POC:14 P QP 31.22(33) 296 bits [Y: 50.82 U: 50.32 V:
51.66] [L0 13
<---Output truncated>
x265 [debug]: POC:265 b QP 37.89(33) 152 bits [Y: 36.51 U: 38.22 V:
40.60] [L0 264 262 ] [L1 266 268 ]
x265 [debug]: POC:267 b QP 38.00(33) 160 bits [Y: 35.85 U: 37.93 V:
40.48] [L0 266 264 262 ] [L1 268 ]
x265 [info]: frame I: 2 Avg QP:29.28 kb/s: 520.80 PSNR Mean:
Y:54.948 U:53.609 V:54.084
x265 [info]: frame P: 76 Avg QP:31.38 kb/s: 40.48 PSNR Mean:
Y:39.390 U:42.399 V:41.899
x265 [info]: frame B: 191 Avg QP:35.64 kb/s: 4.74 PSNR Mean:
Y:38.310 U:41.205 V:40.852
x265 [info]: global : 269 Avg QP:34.39 kb/s: 18.67 PSNR Mean:
Y:38.739 U:41.634 V:41.246
x265 [info]: Weighted P-Frames: Y:36.8% UV:22.4%
x265 [info]: consecutive B-frames: 17.9% 5.1% 9.0% 50.0% 17.9%
encoded 269 frames in 6.47s (41.60 fps), 18.67 kb/s, Global PSNR: 39.414
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/3567>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list