Opened 6 years ago
Closed 10 months ago
#8515 closed defect (fixed)
vc1_parser erroneously flagged every packet as keyframe
| Reported by: | HolyWu | Owned by: | |
|---|---|---|---|
| Priority: | important | Component: | avcodec |
| Version: | git-master | Keywords: | vc1 regression |
| Cc: | Mika Fischer | Blocked By: | |
| Blocking: | Reproduced by developer: | no | |
| Analyzed by developer: | no |
Description (last modified by )
Since 701e8b42e12ad625c64ceae2252acb1de390278c, vc-1 parser erroneously flagged every packet as keyframe. If you recompile the tool with that commit reverted, you will get the expected result.
The first shows the result with that commit. The second shows the result without that commit.
$ ffprobe -pretty -show_packets vc1_sample.mkv
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=959
dts_time=0:00:00.959000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=9.016602 Kibyte
pos=5494
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1001
dts_time=0:00:01.001000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=14734
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1043
dts_time=0:00:01.043000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=16302
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1084
dts_time=0:00:01.084000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=5 byte
pos=17869
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1126
dts_time=0:00:01.126000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=17881
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1168
dts_time=0:00:01.168000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=19449
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1210
dts_time=0:00:01.210000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=5 byte
pos=21016
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1251
dts_time=0:00:01.251000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=21028
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1293
dts_time=0:00:01.293000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=22596
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1335
dts_time=0:00:01.335000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=5 byte
pos=24163
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1376
dts_time=0:00:01.376000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=24175
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1418
dts_time=0:00:01.418000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=25743
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1460
dts_time=0:00:01.460000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=5 byte
pos=27310
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1502
dts_time=0:00:01.502000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=27322
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1543
dts_time=0:00:01.543000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=28890
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1585
dts_time=0:00:01.585000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=5 byte
pos=30457
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1627
dts_time=0:00:01.627000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=30469
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1668
dts_time=0:00:01.668000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=32037
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1710
dts_time=0:00:01.710000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=5 byte
pos=33604
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1752
dts_time=0:00:01.752000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=33616
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1793
dts_time=0:00:01.793000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=35184
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1835
dts_time=0:00:01.835000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=5 byte
pos=36751
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1877
dts_time=0:00:01.877000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=36763
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1919
dts_time=0:00:01.919000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=38331
flags=K_
[/PACKET]
ffprobe version 4.2.git Copyright (c) 2007-2020 the FFmpeg developers
built with gcc 9.2.0 (Rev2, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --disable-doc --disable-debug
libavutil 56. 39.100 / 56. 39.100
libavcodec 58. 68.100 / 58. 68.100
libavformat 58. 38.100 / 58. 38.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 75.100 / 7. 75.100
libswscale 5. 6.100 / 5. 6.100
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
Input #0, matroska,webm, from 'vc1_sample.mkv':
Metadata:
encoder : libebml v1.3.10 + libmatroska v1.5.2
creation_time : 2020-02-09T07:04:30.000000Z
Duration: 00:00:01.00, bitrate: 321 kb/s
Stream #0:0: Video: vc1 (Advanced) (WVC1 / 0x31435657), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
Metadata:
BPS-eng : 273405
DURATION-eng : 00:00:01.002000000
NUMBER_OF_FRAMES-eng: 24
NUMBER_OF_BYTES-eng: 34244
_STATISTICS_WRITING_APP-eng: mkvmerge v43.0.0 ('The Quartermaster') 64-bit
_STATISTICS_WRITING_DATE_UTC-eng: 2020-02-09 07:04:30
_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
$ ffprobe -pretty -show_packets vc1_sample.mkv
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=959
dts_time=0:00:00.959000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=9.016602 Kibyte
pos=5494
flags=K_
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=1001
pts_time=0:00:01.001000
dts=1001
dts_time=0:00:01.001000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=14734
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=1043
pts_time=0:00:01.043000
dts=1043
dts_time=0:00:01.043000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=16302
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1084
dts_time=0:00:01.084000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=5 byte
pos=17869
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=1126
pts_time=0:00:01.126000
dts=1126
dts_time=0:00:01.126000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=17881
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=1168
pts_time=0:00:01.168000
dts=1168
dts_time=0:00:01.168000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=19449
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1210
dts_time=0:00:01.210000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=5 byte
pos=21016
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=1251
pts_time=0:00:01.251000
dts=1251
dts_time=0:00:01.251000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=21028
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=1293
pts_time=0:00:01.293000
dts=1293
dts_time=0:00:01.293000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=22596
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1335
dts_time=0:00:01.335000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=5 byte
pos=24163
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=1376
pts_time=0:00:01.376000
dts=1376
dts_time=0:00:01.376000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=24175
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=1418
pts_time=0:00:01.418000
dts=1418
dts_time=0:00:01.418000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=25743
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1460
dts_time=0:00:01.460000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=5 byte
pos=27310
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=1502
pts_time=0:00:01.502000
dts=1502
dts_time=0:00:01.502000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=27322
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=1543
pts_time=0:00:01.543000
dts=1543
dts_time=0:00:01.543000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=28890
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1585
dts_time=0:00:01.585000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=5 byte
pos=30457
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=1627
pts_time=0:00:01.627000
dts=1627
dts_time=0:00:01.627000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=30469
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=1668
pts_time=0:00:01.668000
dts=1668
dts_time=0:00:01.668000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=32037
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1710
dts_time=0:00:01.710000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=5 byte
pos=33604
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=1752
pts_time=0:00:01.752000
dts=1752
dts_time=0:00:01.752000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=33616
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=1793
pts_time=0:00:01.793000
dts=1793
dts_time=0:00:01.793000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=35184
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=N/A
pts_time=N/A
dts=1835
dts_time=0:00:01.835000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=5 byte
pos=36751
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=1877
pts_time=0:00:01.877000
dts=1877
dts_time=0:00:01.877000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=36763
flags=__
[/PACKET]
[PACKET]
codec_type=video
stream_index=0
pts=1919
pts_time=0:00:01.919000
dts=1919
dts_time=0:00:01.919000
duration=41
duration_time=0:00:00.041000
convergence_duration=N/A
convergence_duration_time=N/A
size=1.524414 Kibyte
pos=38331
flags=__
[/PACKET]
ffprobe version 4.2.git Copyright (c) 2007-2020 the FFmpeg developers
built with gcc 9.2.0 (Rev2, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --disable-doc --disable-debug
libavutil 56. 39.100 / 56. 39.100
libavcodec 58. 68.100 / 58. 68.100
libavformat 58. 38.100 / 58. 38.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 75.100 / 7. 75.100
libswscale 5. 6.100 / 5. 6.100
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
Input #0, matroska,webm, from 'vc1_sample.mkv':
Metadata:
encoder : libebml v1.3.10 + libmatroska v1.5.2
creation_time : 2020-02-09T07:04:30.000000Z
Duration: 00:00:01.00, bitrate: 321 kb/s
Stream #0:0: Video: vc1 (Advanced) (WVC1 / 0x31435657), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
Metadata:
BPS-eng : 273405
DURATION-eng : 00:00:01.002000000
NUMBER_OF_FRAMES-eng: 24
NUMBER_OF_BYTES-eng: 34244
_STATISTICS_WRITING_APP-eng: mkvmerge v43.0.0 ('The Quartermaster') 64-bit
_STATISTICS_WRITING_DATE_UTC-eng: 2020-02-09 07:04:30
_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Attachments (1)
Change History (9)
by , 6 years ago
| Attachment: | vc1_sample.mkv added |
|---|
comment:1 by , 6 years ago
| Description: | modified (diff) |
|---|---|
| Keywords: | vc1 regression added; vc-1 parser removed |
| Priority: | normal → important |
comment:2 by , 6 years ago
| Status: | new → open |
|---|
comment:3 by , 6 years ago
Interestingly enough it does not happen in Blu-rays like here
Stream #0:0[0x1011]: Video: vc1 (Advanced) (VC-1 / 0x312D4356), yuv420p(bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
but it does show some warnings in ffplay while seeking
[vc1 @ 0000026d58d23480] warning: first frame is no keyframe
Also in THIS vc1_sample.mkv file it is a little bit different (WVC1?)
Stream #0:0: Video: vc1 (Advanced) (WVC1 / 0x31435657), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
follow-up: 5 comment:4 by , 6 years ago
It happens whenever the PARSER_FLAG_COMPLETE_FRAMES is set (it is for Matroska), because unesc_index is never reset in this case after having parsed the first frame.
comment:5 by , 5 years ago
Replying to mkver:
It happens whenever the PARSER_FLAG_COMPLETE_FRAMES is set (it is for Matroska), because unesc_index is never reset in this case after having parsed the first frame.
Can you fix it? Or just revert 701e8b42e12ad625c64ceae2252acb1de390278c.
comment:6 by , 3 years ago
| Cc: | added |
|---|
comment:7 by , 18 months ago
Can somebody revert this cleanly? This causes issue with Nvidia decoder.
From this commit message:
"1) locate frame boundaries (not needed for MKV etc)
2) copy the data into a contiguous block (not needed for MKV etc)"
Clearly this is a total lie...
comment:8 by , 10 months ago
| Resolution: | → fixed |
|---|---|
| Status: | open → closed |
mpv and CUDA VC1 decoder still has some problem after this is fixed:



How does it even work if it thinks every frame is a key frame? WTF?