[FFmpeg-devel] [PATCH] tools/target_dec_bsf: call avcodec_flush_buffers() on random keyframes
James Almer
jamrial at gmail.com
Fri Dec 6 21:16:23 EET 2019
This should increase coverage on some decoders by executing flushing code.
Signed-off-by: James Almer <jamrial at gmail.com>
---
tools/target_dec_fuzzer.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/target_dec_fuzzer.c b/tools/target_dec_fuzzer.c
index dcf47b0f4d..3c2f9125bb 100644
--- a/tools/target_dec_fuzzer.c
+++ b/tools/target_dec_fuzzer.c
@@ -256,6 +256,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
error("Failed memory allocation");
memcpy(parsepkt.data, last, data - last);
parsepkt.flags = (keyframes & 1) * AV_PKT_FLAG_DISCARD + (!!(keyframes & 2)) * AV_PKT_FLAG_KEY;
+ int flush = !!(keyframes & 4);
keyframes = (keyframes >> 2) + (keyframes<<62);
data += sizeof(fuzz_tag);
last = data;
@@ -289,6 +290,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
av_packet_move_ref(&avpkt, &parsepkt);
}
+ if (avpkt.flags & AV_PKT_FLAG_KEY && flush)
+ avcodec_flush_buffers(ctx);
+
// Iterate through all data
while (avpkt.size > 0 && it++ < maxiteration) {
av_frame_unref(frame);
--
2.24.0
More information about the ffmpeg-devel
mailing list