replay: flush codec buffers after seeking (#34556)

* flush codec buffers after seeking

* replace avio_seek with the higher-level avformat_seek_file

* exit early
pull/34557/head
Dean Lee 3 months ago committed by GitHub
parent 65e478f27f
commit ad2b1edbd0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 9
      tools/replay/framereader.cc

@ -177,7 +177,14 @@ bool VideoDecoder::decode(FrameReader *reader, int idx, VisionBuf *buf) {
break; break;
} }
} }
avio_seek(reader->input_ctx->pb, reader->packets_info[from_idx].pos, SEEK_SET);
auto pos = reader->packets_info[from_idx].pos;
int ret = avformat_seek_file(reader->input_ctx, 0, pos, pos, pos, AVSEEK_FLAG_BYTE);
if (ret < 0) {
rError("Failed to seek to byte position %lld: %d", pos, AVERROR(ret));
return false;
}
avcodec_flush_buffers(decoder_ctx);
} }
reader->prev_idx = idx; reader->prev_idx = idx;

Loading…
Cancel
Save