[FFmpeg-trac] #10961(avcodec:new): RTSP h264 hardware decode shows a very strange log: Increasing reorder buffer to 1920921104
FFmpeg
trac at avcodec.org
Fri Apr 12 12:14:49 EEST 2024
#10961: RTSP h264 hardware decode shows a very strange log: Increasing reorder
buffer to 1920921104
-------------------------------------+-------------------------------------
Reporter: hechuan | Type: task
Status: new | Priority: critical
Component: avcodec | Version: 4.2.9
Keywords: FFmpeg | Blocked By:
decode hw_decode RTSP |
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Use FFmpeg to hardware decode (h264_nvdec) two RTSP h264 IP camera.Eache
camera has a seperate thread to read frame, decode and scale.After run
some time, ffmpeg show some very strange log as blow:
1710848158.543170 [243] [debug] non-existing PPS 1920921104 referenced
1710848158.543174 [243] [debug] decode_slice_header error
1710848158.543174 [243] [debug] no frame!
1710848158.647788 [243] [debug] non-existing PPS 1920957856 referenced
1710848158.647867 [243] [debug] non-existing PPS 1920921104 referenced
1710848158.647872 [243] [debug] decode_slice_header error
1710848158.647873 [243] [debug] no frame!
1710848158.705852 [243] [debug] error while decoding MB 1920958160 0,
bytestream -6
1710848158.763328 [243] [debug] Increasing reorder buffer to 1920921104
1710848160.782519 [265] [debug] Increasing reorder buffer to 635491232
1710864812.410619 [260] [debug] SEI type 1101054320 size 0 truncated at
136
1710864812.410726 [260] [debug] SEI type 1101055152 size 0 truncated at
134
1710864812.453565 [265] [debug] SEI type 635527536 size 0 truncated at 136
1710864812.453646 [265] [debug] SEI type 635528368 size 0 truncated at 132
1710864812.470501 [260] [debug] SEI type 1101054320 size 0 truncated at
136
1710864812.470550 [260] [debug] SEI type 1101055152 size 0 truncated at
134
1710864812.500707 [260] [debug] SEI type 1101054320 size 0 truncated at
136
Used version: 4.2.9
I read ffmpeg source code, the key code as blow:
out_of_order = MAX_DELAYED_PIC_COUNT - i;
if( cur->f->pict_type == AV_PICTURE_TYPE_B
|| (h->last_pocs[MAX_DELAYED_PIC_COUNT-2] > INT_MIN &&
h->last_pocs[MAX_DELAYED_PIC_COUNT-1] -
(int64_t)h->last_pocs[MAX_DELAYED_PIC_COUNT-2] > 2))
out_of_order = FFMAX(out_of_order, 1);
if (out_of_order == MAX_DELAYED_PIC_COUNT) {
av_log(h->avctx, AV_LOG_VERBOSE, "Invalid POC %d<%d\n", cur->poc,
h->last_pocs[0]);
for (i = 1; i < MAX_DELAYED_PIC_COUNT; i++)
h->last_pocs[i] = INT_MIN;
h->last_pocs[0] = cur->poc;
cur->mmco_reset = 1;
} else if(h->avctx->has_b_frames < out_of_order &&
!sps->bitstream_restriction_flag){
int loglevel = h->avctx->frame_number > 1 ? AV_LOG_WARNING :
AV_LOG_VERBOSE;
av_log(h->avctx, loglevel, "Increasing reorder buffer to %d\n",
out_of_order);
h->avctx->has_b_frames = out_of_order;
}
It seems that, out_of_order will never be a so large number!!!
If so, I think hardware decoder will appear "No decoder surfaces left"
error.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/10961>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list