mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
tools: Eliminate codec_type complexity from fuzzer
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
7796f29065
commit
a9b5b6a97f
@ -1,15 +1,8 @@
|
|||||||
TOOLS = qt-faststart trasher uncoded_frame
|
TOOLS = qt-faststart trasher uncoded_frame
|
||||||
TOOLS-$(CONFIG_ZLIB) += cws2fws
|
TOOLS-$(CONFIG_ZLIB) += cws2fws
|
||||||
|
|
||||||
tools/target_dec_video_%_fuzzer.o: tools/target_dec_fuzzer.c
|
tools/target_dec_%_fuzzer.o: tools/target_dec_fuzzer.c
|
||||||
$(COMPILE_C) -DFFMPEG_CODEC=AV_CODEC_ID_$* -DFUZZ_FFMPEG_VIDEO
|
$(COMPILE_C) -DFFMPEG_CODEC=AV_CODEC_ID_$*
|
||||||
|
|
||||||
tools/target_dec_audio_%_fuzzer.o: tools/target_dec_fuzzer.c
|
|
||||||
$(COMPILE_C) -DFFMPEG_CODEC=AV_CODEC_ID_$* -DFUZZ_FFMPEG_AUDIO
|
|
||||||
|
|
||||||
tools/target_dec_subtitle_%_fuzzer.o: tools/target_dec_fuzzer.c
|
|
||||||
$(COMPILE_C) -DFFMPEG_CODEC=AV_CODEC_ID_$* -DFUZZ_FFMPEG_SUBTITLE
|
|
||||||
|
|
||||||
|
|
||||||
OBJDIRS += tools
|
OBJDIRS += tools
|
||||||
|
|
||||||
|
@ -74,11 +74,6 @@ static AVCodec *AVCodecInitialize(enum AVCodecID codec_id)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(FUZZ_FFMPEG_VIDEO)
|
|
||||||
#define decode_handler avcodec_decode_video2
|
|
||||||
#elif defined(FUZZ_FFMPEG_AUDIO)
|
|
||||||
#define decode_handler avcodec_decode_audio4
|
|
||||||
#elif defined(FUZZ_FFMPEG_SUBTITLE)
|
|
||||||
static int subtitle_handler(AVCodecContext *avctx, void *frame,
|
static int subtitle_handler(AVCodecContext *avctx, void *frame,
|
||||||
int *got_sub_ptr, AVPacket *avpkt)
|
int *got_sub_ptr, AVPacket *avpkt)
|
||||||
{
|
{
|
||||||
@ -89,11 +84,6 @@ static int subtitle_handler(AVCodecContext *avctx, void *frame,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define decode_handler subtitle_handler
|
|
||||||
#else
|
|
||||||
#error "Specify encoder type" // To catch mistakes
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Class to handle buffer allocation and resize for each frame
|
// Class to handle buffer allocation and resize for each frame
|
||||||
typedef struct FuzzDataBuffer {
|
typedef struct FuzzDataBuffer {
|
||||||
size_t size_;
|
size_t size_;
|
||||||
@ -146,10 +136,19 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
|||||||
const uint8_t *last = data;
|
const uint8_t *last = data;
|
||||||
const uint8_t *end = data + size;
|
const uint8_t *end = data + size;
|
||||||
uint32_t it = 0;
|
uint32_t it = 0;
|
||||||
|
int (*decode_handler)(AVCodecContext *avctx, AVFrame *picture,
|
||||||
|
int *got_picture_ptr,
|
||||||
|
const AVPacket *avpkt) = NULL;
|
||||||
|
|
||||||
if (!c)
|
if (!c)
|
||||||
c = AVCodecInitialize(FFMPEG_CODEC); // Done once.
|
c = AVCodecInitialize(FFMPEG_CODEC); // Done once.
|
||||||
|
|
||||||
|
switch (c->type) {
|
||||||
|
case AVMEDIA_TYPE_AUDIO : decode_handler = avcodec_decode_audio4; break;
|
||||||
|
case AVMEDIA_TYPE_VIDEO : decode_handler = avcodec_decode_video2; break;
|
||||||
|
case AVMEDIA_TYPE_SUBTITLE: decode_handler = subtitle_handler ; break;
|
||||||
|
}
|
||||||
|
|
||||||
AVCodecContext* ctx = avcodec_alloc_context3(NULL);
|
AVCodecContext* ctx = avcodec_alloc_context3(NULL);
|
||||||
if (!ctx)
|
if (!ctx)
|
||||||
error("Failed memory allocation");
|
error("Failed memory allocation");
|
||||||
|
Loading…
Reference in New Issue
Block a user