mirror of https://git.ffmpeg.org/ffmpeg.git
tools/target_dec_fuzzer: Use decoder and not codec_id as argument
This allows fuzzing decoders with the same codec_id We also avoid register all to allow the linker to prune unused sections and symbols Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
3f17751eeb
commit
dec2fa8cc7
|
@ -2,7 +2,7 @@ TOOLS = qt-faststart trasher uncoded_frame
|
||||||
TOOLS-$(CONFIG_ZLIB) += cws2fws
|
TOOLS-$(CONFIG_ZLIB) += cws2fws
|
||||||
|
|
||||||
tools/target_dec_%_fuzzer.o: tools/target_dec_fuzzer.c
|
tools/target_dec_%_fuzzer.o: tools/target_dec_fuzzer.c
|
||||||
$(COMPILE_C) -DFFMPEG_CODEC=AV_CODEC_ID_$*
|
$(COMPILE_C) -DFFMPEG_DECODER=$*
|
||||||
|
|
||||||
OBJDIRS += tools
|
OBJDIRS += tools
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ static AVCodec *c = NULL;
|
||||||
static AVCodec *AVCodecInitialize(enum AVCodecID codec_id)
|
static AVCodec *AVCodecInitialize(enum AVCodecID codec_id)
|
||||||
{
|
{
|
||||||
AVCodec *res;
|
AVCodec *res;
|
||||||
avcodec_register_all();
|
|
||||||
av_log_set_level(AV_LOG_PANIC);
|
av_log_set_level(AV_LOG_PANIC);
|
||||||
res = avcodec_find_decoder(codec_id);
|
res = avcodec_find_decoder(codec_id);
|
||||||
if (!res)
|
if (!res)
|
||||||
|
@ -140,8 +140,20 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||||
int *got_picture_ptr,
|
int *got_picture_ptr,
|
||||||
const AVPacket *avpkt) = NULL;
|
const AVPacket *avpkt) = NULL;
|
||||||
|
|
||||||
if (!c)
|
if (!c) {
|
||||||
|
#ifdef FFMPEG_DECODER
|
||||||
|
#define DECODER_SYMBOL0(CODEC) ff_##CODEC##_decoder
|
||||||
|
#define DECODER_SYMBOL(CODEC) DECODER_SYMBOL0(CODEC)
|
||||||
|
extern AVCodec DECODER_SYMBOL(FFMPEG_DECODER);
|
||||||
|
avcodec_register(&DECODER_SYMBOL(FFMPEG_DECODER));
|
||||||
|
int codec_id = DECODER_SYMBOL(FFMPEG_DECODER).id;
|
||||||
|
|
||||||
|
c = AVCodecInitialize(codec_id); // Done once.
|
||||||
|
#else
|
||||||
|
avcodec_register_all();
|
||||||
c = AVCodecInitialize(FFMPEG_CODEC); // Done once.
|
c = AVCodecInitialize(FFMPEG_CODEC); // Done once.
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
switch (c->type) {
|
switch (c->type) {
|
||||||
case AVMEDIA_TYPE_AUDIO : decode_handler = avcodec_decode_audio4; break;
|
case AVMEDIA_TYPE_AUDIO : decode_handler = avcodec_decode_audio4; break;
|
||||||
|
|
Loading…
Reference in New Issue