mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-10-31 04:26:37 +08:00 
			
		
		
		
	tools/target_dec_fuzzer: Call avcodec_flush_buffers() in a fuzzer choosen pattern
This should increase coverage Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
		 Michael Niedermayer
					Michael Niedermayer
				
			
				
					committed by
					
						 James Almer
						James Almer
					
				
			
			
				
	
			
			
			 James Almer
						James Almer
					
				
			
						parent
						
							40dfb4328d
						
					
				
				
					commit
					cb59cd3466
				
			| @@ -110,6 +110,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { | |||||||
|                           const AVPacket *avpkt) = NULL; |                           const AVPacket *avpkt) = NULL; | ||||||
|     AVCodecParserContext *parser = NULL; |     AVCodecParserContext *parser = NULL; | ||||||
|     uint64_t keyframes = 0; |     uint64_t keyframes = 0; | ||||||
|  |     uint64_t flushpattern = -1; | ||||||
|     AVDictionary *opts = NULL; |     AVDictionary *opts = NULL; | ||||||
|  |  | ||||||
|     if (!c) { |     if (!c) { | ||||||
| @@ -239,6 +240,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { | |||||||
|         ctx->request_channel_layout             = bytestream2_get_le64(&gbc); |         ctx->request_channel_layout             = bytestream2_get_le64(&gbc); | ||||||
|  |  | ||||||
|         ctx->idct_algo                          = bytestream2_get_byte(&gbc) % 25; |         ctx->idct_algo                          = bytestream2_get_byte(&gbc) % 25; | ||||||
|  |         flushpattern                            = bytestream2_get_le64(&gbc); | ||||||
|  |  | ||||||
|         if (flags & 0x20) { |         if (flags & 0x20) { | ||||||
|             switch (ctx->codec_id) { |             switch (ctx->codec_id) { | ||||||
| @@ -332,6 +334,10 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { | |||||||
|                 av_packet_move_ref(&avpkt, &parsepkt); |                 av_packet_move_ref(&avpkt, &parsepkt); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  |           if (!(flushpattern & 7)) | ||||||
|  |               avcodec_flush_buffers(ctx); | ||||||
|  |           flushpattern = (flushpattern >> 3) + (flushpattern << 61); | ||||||
|  |  | ||||||
|           // Iterate through all data |           // Iterate through all data | ||||||
|           while (avpkt.size > 0 && it++ < maxiteration) { |           while (avpkt.size > 0 && it++ < maxiteration) { | ||||||
|             av_frame_unref(frame); |             av_frame_unref(frame); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user