Opened 9 years ago
Last modified 4 years ago
#3705 open defect
Seeking fails for H264 file
Reported by: | Aleksoid1978 | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | avcodec |
Version: | git-master | Keywords: | h264 |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | yes | |
Analyzed by developer: | no |
Description
Summary of the bug:
Sample: http://aleksoid.voserver.net/Sample/H264/no_recovery_ffmpeg.m2ts
Ticket #3652 fixed(decoding is good), but seek is not working
How to reproduce:
% ffplay.exe no_recovery_ffmpeg.m2ts ffplay version N-63843-g6d40849 Copyright (c) 2003-2014 the FFmpeg developers built on Jun 8 2014 22:02:04 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-li bass --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 --enable-decklink --enable-zlib libavutil 52. 89.100 / 52. 89.100 libavcodec 55. 66.100 / 55. 66.100 libavformat 55. 42.101 / 55. 42.101 libavdevice 55. 13.101 / 55. 13.101 libavfilter 4. 6.100 / 4. 6.100 libswscale 2. 6.100 / 2. 6.100 libswresample 0. 19.100 / 0. 19.100 libpostproc 52. 3.100 / 52. 3.100 Input #0, mpegts, from 'no_recovery_ffmpeg.m2ts': sq= 0B f=0/0 Duration: 00:01:58.20, start: 4328.545078, bitrate: 13543 kb/s Program 1 Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc [h264 @ 0464ce20] mmco: unref short failure 49KB sq= 0B f=0/0 Last message repeated 1 times [h264 @ 0464c600] mmco: unref short failure 0KB sq= 0B f=0/0 [h264 @ 0464c600] number of reference frames (0+4) exceeds max (3; probably corrupt input), discarding one [h264 @ 0464dc60] reference picture missing during reorder [h264 @ 0464dc60] Missing reference picture, default is 65512 [h264 @ 045677c0] mmco: unref short failure [h264 @ 045677c0] number of reference frames (0+4) exceeds max (3; probably corrupt input), discarding one [h264 @ 0464dc60] reference picture missing during reorder [h264 @ 0464dc60] Missing reference picture, default is 65512 [h264 @ 0464dc60] reference picture missing during reorderB f=0/0 [h264 @ 0464dc60] Missing reference picture, default is 65512 [h264 @ 0464dc60] reference picture missing during reorder [h264 @ 0464dc60] Missing reference picture, default is 65512 [h264 @ 0464ce20] mmco: unref short failure 433KB sq= 0B f=0/0 [h264 @ 0464ce20] number of reference frames (0+4) exceeds max (3; probably corrupt input), discarding one [h264 @ 04566700] mmco: unref short failure [h264 @ 04566700] number of reference frames (0+4) exceeds max (3; probably corrupt input), discarding one [h264 @ 05540a80] Missing reference picture, default is 00B f=0/0 [h264 @ 0464c600] reference picture missing during reorder Last message repeated 1 times [h264 @ 0464c600] Missing reference picture, default is 0 Last message repeated 1 times [h264 @ 05540a80] Missing reference picture, default is 0 [h264 @ 0464dc60] mmco: unref short failure [h264 @ 0464c600] reference picture missing during reorder Last message repeated 1 times [h264 @ 0464c600] Missing reference picture, default is 0 Last message repeated 1 times [h264 @ 04566d00] reference picture missing during reorder [h264 @ 04566d00] Missing reference picture, default is 65540 [h264 @ 05540a80] Missing reference picture, default is 0 [h264 @ 0464c600] reference picture missing during reorderB f=0/0 Last message repeated 1 times [h264 @ 0464c600] Missing reference picture, default is 0 Last message repeated 1 times [h264 @ 04566d00] reference picture missing during reorder [h264 @ 04566d00] Missing reference picture, default is 65540 [h264 @ 05540a80] Missing reference picture, default is 00B f=0/0 [h264 @ 0464c600] reference picture missing during reorder Last message repeated 1 times [h264 @ 0464c600] Missing reference picture, default is 0 Last message repeated 1 times [h264 @ 04566d00] reference picture missing during reorder [h264 @ 04566d00] Missing reference picture, default is 65540 [h264 @ 04566d00] reference picture missing during reorder [h264 @ 04566d00] Missing reference picture, default is 65540 [h264 @ 0464c600] mmco: unref short failure 0KB sq= 0B f=0/0 [h264 @ 0464c600] number of reference frames (0+4) exceeds max (3; probably corrupt input), discarding one [h264 @ 0464dc60] mmco: unref short failure [h264 @ 0464dc60] number of reference frames (0+4) exceeds max (3; probably corrupt input), discarding one [h264 @ 0464c600] mmco: unref short failure 424KB sq= 0B f=0/0 [h264 @ 0464ce20] mmco: unref short failure 29KB sq= 0B f=0/0 [h264 @ 045677c0] reference picture missing during reorder [h264 @ 045677c0] Missing reference picture, default is 65542 [h264 @ 04567fe0] mmco: unref short failure [h264 @ 045677c0] reference picture missing during reorder [h264 @ 045677c0] Missing reference picture, default is 65542 [h264 @ 045677c0] reference picture missing during reorder [h264 @ 045677c0] Missing reference picture, default is 65542 [h264 @ 045677c0] reference picture missing during reorderB f=0/0 [h264 @ 045677c0] Missing reference picture, default is 65542
After pressing RIGHT/LEFT key - picture freezes.
Attachments (1)
Change History (16)
comment:1 by , 9 years ago
Component: | ffplay → undetermined |
---|---|
Reproduced by developer: | set |
Status: | new → open |
Summary: | FFPlay cannot seek H264 file → Seeking fails for H264 file |
Version: | unspecified → git-master |
by , 8 years ago
Attachment: | no_recovery_ffmpeg_cut.h264 added |
---|
comment:8 by , 8 years ago
It's can give an artifact after seeking, but PotPlayer & Microsoft DTV-DVD Video decoder seeking normal.
comment:9 by , 5 years ago
Another sample - https://yadi.sk/i/JZeFZiDFfXlmRg
Rough patch - https://pastebin.com/kZiRU1uQ
comment:10 by , 5 years ago
After searching, I get this log
Reinit context to 1920x1088, pix_fmt: dxva2_vld [h264 @ 000000000f00e0c0] co located POCs unavailable [h264 @ 000000000f00e0c0] co located POCs unavailable [h264 @ 000000000f00e0c0] co located POCs unavailable [h264 @ 000000000f00e0c0] co located POCs unavailable [h264 @ 000000000f00e0c0] mmco: unref short failure [h264 @ 000000000f00e0c0] number of reference frames (0+4) exceeds max (3; probably corrupt input), discarding one [h264 @ 000000000f00e0c0] reference picture missing during reorder [h264 @ 000000000f00e0c0] Missing reference picture, default is 65534 [h264 @ 000000000f00e0c0] reference picture missing during reorder [h264 @ 000000000f00e0c0] Missing reference picture, default is 65534 [h264 @ 000000000f00e0c0] reference picture missing during reorder [h264 @ 000000000f00e0c0] Missing reference picture, default is 65534 [h264 @ 000000000f00e0c0] reference picture missing during reorder [h264 @ 000000000f00e0c0] Missing reference picture, default is 65534 [h264 @ 000000000f00e0c0] mmco: unref short failure [h264 @ 000000000f00e0c0] number of reference frames (0+4) exceeds max (3; probably corrupt input), discarding one [h264 @ 000000000f00e0c0] mmco: unref short failure
On line h->cur_pic_ptr->recovered |= 1; I get the following data.
err == 0 h->short_ref_count == 3 pps_ref_count[0] == 4 pps_ref_count[1] == 1 h->avctx->has_b_frames == 2 h->picture_structure == PICT_FRAME h->has_recovery_point == 0
I see two ways to change the check.
Replace 2 with 3
h->short_ref_count<=3
or 2 with 4.
pps_ref_count[0] <= 4 && pps_ref_count[1] <= 1 && h->avctx->has_b_frames
But I do not know which one is more correct.
comment:11 by , 5 years ago
Component: | undetermined → avcodec |
---|---|
Keywords: | h264 added |
comment:12 by , 5 years ago
Another more radical patch - https://sourceforge.net/p/mpcbe/code/4315/
We haven't found any problems with it yet. If anyone has information, why not do this, please write here.
comment:13 by , 5 years ago
Not every H.264 I-frame is a recovery point.
Please understand that patches - made with git format-patch
- can only be discussed on the development mailing list.
comment:14 by , 4 years ago
comment:15 by , 4 years ago
Moment - not working with DXVA2 decoder on NVIDIA GeForce? 9500 GS, after seeking artefact on screen.