#3185 closed defect (fixed)
ffprobe do not handle HEVC correctly
| Reported by: | figgis | Owned by: | |
|---|---|---|---|
| Priority: | normal | Component: | avcodec |
| Version: | git-master | Keywords: | hevc |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | yes | |
| Analyzed by developer: | no |
Description
Summary of the bug:
How to reproduce:
I encoded some frames using the HM-encoder.
This is what the decoder says:
$ ./TAppDecoderStatic -b foreman_352x288.hevc
HM software: Decoder Version [12.1][Linux][GCC 4.7.3][64 bit]
POC 0 TId: 0 ( I-SLICE, QP 32 ) [DT 0.020] [L0 ] [L1 ] [:,,,(unk)]
POC 1 TId: 0 ( P-SLICE, QP 35 ) [DT 0.000] [L0 0 ] [L1 ] [:,,,(unk)]
POC 2 TId: 0 ( B-SLICE, QP 34 ) [DT 0.000] [L0 1 0 ] [L1 1 0 ] [:,,,(unk)]
POC 3 TId: 0 ( B-SLICE, QP 35 ) [DT 0.010] [L0 2 1 0 ] [L1 2 1 0 ] [:,,,(unk)]
POC 4 TId: 0 ( B-SLICE, QP 33 ) [DT 0.010] [L0 3 2 1 0 ] [L1 3 2 1 0 ] [:,,,(unk)]
Total Time: 0.040 sec.
This is the output from ffprobe for the first frame:
$ ./ffprobe -show_frames ~/src/jctvc-hm/bin/foreman_352x288.hevc
ffprobe version N-58684-gf068aed Copyright (c) 2007-2013 the FFmpeg developers
built on Nov 30 2013 23:52:44 with gcc 4.7 (Ubuntu/Linaro 4.7.3-1ubuntu1)
configuration: --enable-libx264 --enable-gpl --enable-libmp3lame
libavutil 52. 56.100 / 52. 56.100
libavcodec 55. 44.100 / 55. 44.100
libavformat 55. 21.102 / 55. 21.102
libavdevice 55. 5.102 / 55. 5.102
libavfilter 3. 91.100 / 3. 91.100
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 17.104 / 0. 17.104
libpostproc 52. 3.100 / 52. 3.100
Input #0, hevc, from '/home/fp/src/jctvc-hm/bin/foreman_352x288.hevc':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: hevc (Main), yuv420p(tv), 352x288, 25 fps, 25 tbr, 1200k tbn, 25 tbc
[FRAME]
media_type=video
key_frame=1
pkt_pts=0
pkt_pts_time=0.000000
pkt_dts=0
pkt_dts_time=0.000000
pkt_duration=48000
pkt_duration_time=0.040000
pkt_pos=0
pkt_size=3695
width=352
height=288
pix_fmt=yuv420p
sample_aspect_ratio=N/A
pict_type=?
coded_picture_number=0
display_picture_number=0
interlaced_frame=0
top_field_first=0
repeat_pict=0
[/FRAME]
in the above, pict_type do not display the correct frame-type, also coded_picture_number and display_picture_number always displays as zero.
HEVC reference decoder/encoder uses the slize-type do determine the type, i.e. I, P, B.
Valid code in the reference decoder is
Lib/TLibDecoder/TDecGop.cpp:219
Char c = (pcSlice->isIntra() ? 'I' : pcSlice->isInterP() ? 'P' : 'B');
if (!pcSlice->isReferenced()) c += 32;
//-- For time output for each slice
printf("\nPOC %4d TId: %1d ( %c-SLICE, QP%3d ) ", pcSlice->getPOC(),
pcSlice->getTLayer(),
c,
pcSlice->getSliceQp() );
See e.g. table 7.7, page 77. in HEVC-standard
http://www.itu.int/rec/T-REC-H.265-201304-I/en
Attachments (1)
Change History (8)
by , 12 years ago
| Attachment: | foreman_352x288.hevc added |
|---|
comment:1 by , 12 years ago
| Version: | unspecified → git-master |
|---|
comment:2 by , 12 years ago
| Component: | FFprobe → avcodec |
|---|---|
| Keywords: | hevc added |
comment:3 by , 12 years ago
| Reproduced by developer: | set |
|---|---|
| Resolution: | → fixed |
| Status: | new → closed |
comment:4 by , 12 years ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
I hope it's not too daring from me to reopen a ticket, but I'm still having problems with detection of duration of H.265 files in N-63366-gf932e5f.
I have a H.265 file and FFprobe still tells me that the duration is unknown :-(
D:\UgcTestFiles\Video>ffprobe Sintel_272p_logo.265
ffprobe version N-63366-gf932e5f Copyright (c) 2007-2014 the FFmpeg developers
built on May 21 2014 22:09:16 with gcc 4.8.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable
-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex
--enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --ena
ble-decklink --enable-zlib
libavutil 52. 86.100 / 52. 86.100
libavcodec 55. 63.100 / 55. 63.100
libavformat 55. 40.100 / 55. 40.100
libavdevice 55. 13.101 / 55. 13.101
libavfilter 4. 5.100 / 4. 5.100
libswscale 2. 6.100 / 2. 6.100
libswresample 0. 19.100 / 0. 19.100
libpostproc 52. 3.100 / 52. 3.100
[hevc @ 0000000000355ba0] Unknown HEVC profile: 0
Last message repeated 3 times
Input #0, hevc, from 'Sintel_272p_logo.265':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: hevc, yuv420p(tv), 640x272, 25 fps, 25 tbr, 1200k tbn, 25 tbc
[hevc @ 000000000034c960] Unknown HEVC profile: 0
Last message repeated 1 times
Download the test file form here: http://docs.voanews.eu/en-US-TEST-LTR/2014/05/22/34be68b8-b0c9-4185-9332-8bc1d85a31bb.265
comment:5 by , 12 years ago
durations are just not supported for raw video files like .h265, the same thing will most likely happen with .h264
You cannot determine the duration of a .h265 file without reading it from start to end, which it doesn't do.
comment:6 by , 12 years ago
| Resolution: | → fixed |
|---|---|
| Status: | reopened → closed |
comment:7 by , 12 years ago
Aha thanks for info,
is there any way to actually instruct ffprobe to read it from start to end to determine the duration?



hevc-binary file to show different slize-types