AVSampleBufferDisplayLayer drop frame when play uncompressed video with bframe>3

When using AVSampleBufferDisplayLayer to play uncompressed H.264 and H.265 video with B-frames more than 7, frame drops occur. The more B-frames there are, the more noticeable the frame drops become, for example 15 bframes.

  1. Use FFmpeg to transcode a video file with visible timestamps and frame numbers (x264 or x265 ):

ffmpeg -i test.mp4 -vf "drawtext=fontsize=45:text=%{pts} %{n}:y=400" -c:v libx264 -x264-params "bframes=15:b-adapt=0" -crf 30 -y x264_bf15.mp4

ffmpeg -i test.mp4 -vf "drawtext=fontsize=45:text=%{pts} %{n}:y=400" -c:v libx265 -x265-params "bframes=15:b-adapt=0" -crf 30 -y x265_bf15.mp4

  1. Use the demo player from this repository to reproduce the issue: https://github.com/msfrms/CustomPlayer

frame drops can be observed. And following log can be found in devices console.

mediaserverd <<<< IQ-CA >>>> piqca_gmstats_dump: FIQCA(0x1266f4000) recent frames: enqueued: 184, displayed: 138, dropped: 42, flushed: 0, evicted: 3, >16ms late: 2

PS. I was using iphone11 iOS14.6, to replay this issue.

May I ask why frame drops occur in this case? Is there any configuration or API usage change that could help fix the frame drop issue?

Many thanks!

Using iPhone 14 + iOS 18.4.1, frame drop also happens.

Sorry the title is wrong , it should be compressed video sample buffers. Is it possibe to change the tiltle?

AVSampleBufferDisplayLayer drop frame when play uncompressed video with bframe&gt;3
 
 
Q