- int frame_finished;
-DCPOMATIC_DISABLE_WARNINGS
- if (avcodec_decode_video2 (context, _frame, &frame_finished, &_packet) >= 0 && frame_finished) {
-DCPOMATIC_ENABLE_WARNINGS
- if (!_first_video) {
- _first_video = frame_time (_format_context->streams[_video_stream.get()]);
- }
- if (_need_video_length) {
- _video_length = frame_time (
- _format_context->streams[_video_stream.get()]
- ).get_value_or (ContentTime ()).frames_round (video_frame_rate().get ());
+ bool pending = false;
+ do {
+ int r = avcodec_send_packet (context, packet);
+ if (r < 0) {
+ LOG_WARNING("avcodec_send_packet returned %1 for a video packet", r);