| 172 | } |
| 173 | |
| 174 | int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { |
| 175 | uint64_t maxpixels_per_frame = 4096 * 4096; |
| 176 | uint64_t maxpixels; |
| 177 | |
| 178 | uint64_t maxsamples_per_frame = 256*1024*32; |
| 179 | uint64_t maxsamples; |
| 180 | const uint64_t fuzz_tag = FUZZ_TAG; |
| 181 | const uint8_t *last = data; |
| 182 | const uint8_t *end = data + size; |
| 183 | uint32_t it = 0; |
| 184 | uint64_t ec_pixels = 0; |
| 185 | uint64_t nb_samples = 0; |
| 186 | int (*decode_handler)(AVCodecContext *avctx, AVFrame *picture, |
| 187 | int *got_picture_ptr, |
| 188 | const AVPacket *avpkt) = NULL; |
| 189 | AVCodecParserContext *parser = NULL; |
| 190 | uint64_t keyframes = 0; |
| 191 | uint64_t flushpattern = -1; |
| 192 | AVDictionary *opts = NULL; |
| 193 | |
| 194 | if (!c) { |
| 195 | #ifdef FFMPEG_DECODER |
| 196 | #define DECODER_SYMBOL0(CODEC) ff_##CODEC##_decoder |
| 197 | #define DECODER_SYMBOL(CODEC) DECODER_SYMBOL0(CODEC) |
| 198 | extern FFCodec DECODER_SYMBOL(FFMPEG_DECODER); |
| 199 | codec_list[0] = &DECODER_SYMBOL(FFMPEG_DECODER); |
| 200 | |
| 201 | c = &DECODER_SYMBOL(FFMPEG_DECODER); |
| 202 | #else |
| 203 | c = AVCodecInitialize(FFMPEG_CODEC); // Done once. |
| 204 | #endif |
| 205 | av_log_set_level(AV_LOG_PANIC); |
| 206 | } |
| 207 | |
| 208 | switch (c->p.type) { |
| 209 | case AVMEDIA_TYPE_AUDIO : |
| 210 | case AVMEDIA_TYPE_VIDEO : decode_handler = audio_video_handler ; break; |
| 211 | case AVMEDIA_TYPE_SUBTITLE: decode_handler = subtitle_handler ; break; |
| 212 | } |
| 213 | switch (c->p.id) { |
| 214 | case AV_CODEC_ID_APE: maxsamples_per_frame /= 256; break; |
| 215 | } |
| 216 | maxpixels = maxpixels_per_frame * maxiteration; |
| 217 | maxsamples = maxsamples_per_frame * maxiteration; |
| 218 | switch (c->p.id) { |
| 219 | case AV_CODEC_ID_AASC: maxpixels /= 1024; break; |
| 220 | case AV_CODEC_ID_AGM: maxpixels /= 1024; break; |
| 221 | case AV_CODEC_ID_ANM: maxpixels /= 1024; break; |
| 222 | case AV_CODEC_ID_APE: maxsamples /= 16384; break; |
| 223 | case AV_CODEC_ID_ARBC: maxpixels /= 1024; break; |
| 224 | case AV_CODEC_ID_ARGO: maxpixels /= 1024; break; |
| 225 | case AV_CODEC_ID_BETHSOFTVID: maxpixels /= 8192; break; |
| 226 | case AV_CODEC_ID_BFI: maxpixels /= 8192; break; |
| 227 | case AV_CODEC_ID_BINKVIDEO: maxpixels /= 32; break; |
| 228 | case AV_CODEC_ID_BONK: maxsamples /= 1<<20; break; |
| 229 | case AV_CODEC_ID_CAVS: maxpixels /= 1024; break; |
| 230 | case AV_CODEC_ID_CDTOONS: maxpixels /= 1024; break; |
| 231 | case AV_CODEC_ID_CFHD: maxpixels /= 16384; break; |
nothing calls this directly
no test coverage detected