You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	avformat: Add max_probe_packets option
Allows user to set maximum number of buffered packets when probing a codec. It was a hard-coded parameter before this commit. Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
		
				
					committed by
					
						 Michael Niedermayer
						Michael Niedermayer
					
				
			
			
				
	
			
			
			
						parent
						
							33583803e1
						
					
				
				
					commit
					5e3229df4c
				
			| @@ -27,6 +27,10 @@ stream information. A higher value will enable detecting more | ||||
| information in case it is dispersed into the stream, but will increase | ||||
| latency. Must be an integer not lesser than 32. It is 5000000 by default. | ||||
|  | ||||
| @item max_probe_packets @var{integer} (@emph{input}) | ||||
| Set the maximum number of buffered packets when probing a codec. | ||||
| Default is 2500 packets. | ||||
|  | ||||
| @item packetsize @var{integer} (@emph{output}) | ||||
| Set packet size. | ||||
|  | ||||
|   | ||||
| @@ -1951,6 +1951,13 @@ typedef struct AVFormatContext { | ||||
|      * - decoding: set by user | ||||
|      */ | ||||
|     int skip_estimate_duration_from_pts; | ||||
|  | ||||
|     /** | ||||
|      * Maximum number of packets that can be probed | ||||
|      * - encoding: unused | ||||
|      * - decoding: set by user | ||||
|      */ | ||||
|     int max_probe_packets; | ||||
| } AVFormatContext; | ||||
|  | ||||
| #if FF_API_FORMAT_GET_SET | ||||
|   | ||||
| @@ -33,8 +33,6 @@ | ||||
| #define PROBE_BUF_MIN 2048 | ||||
| #define PROBE_BUF_MAX (1 << 20) | ||||
|  | ||||
| #define MAX_PROBE_PACKETS 2500 | ||||
|  | ||||
| #ifdef DEBUG | ||||
| #    define hex_dump_debug(class, buf, size) av_hex_dump_log(class, AV_LOG_DEBUG, buf, size) | ||||
| #else | ||||
|   | ||||
| @@ -111,6 +111,7 @@ static const AVOption avformat_options[] = { | ||||
| {"protocol_blacklist", "List of protocols that are not allowed to be used", OFFSET(protocol_blacklist), AV_OPT_TYPE_STRING, { .str = NULL },  CHAR_MIN, CHAR_MAX, D }, | ||||
| {"max_streams", "maximum number of streams", OFFSET(max_streams), AV_OPT_TYPE_INT, { .i64 = 1000 }, 0, INT_MAX, D }, | ||||
| {"skip_estimate_duration_from_pts", "skip duration calculation in estimate_timings_from_pts", OFFSET(skip_estimate_duration_from_pts), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, D}, | ||||
| {"max_probe_packets", "Maximum number of packets to probe a codec", OFFSET(max_probe_packets), AV_OPT_TYPE_INT, { .i64 = 2500 }, 0, INT_MAX, D }, | ||||
| {NULL}, | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -363,7 +363,7 @@ static int set_codec_from_probe_data(AVFormatContext *s, AVStream *st, | ||||
|         int i; | ||||
|         av_log(s, AV_LOG_DEBUG, | ||||
|                "Probe with size=%d, packets=%d detected %s with score=%d\n", | ||||
|                pd->buf_size, MAX_PROBE_PACKETS - st->probe_packets, | ||||
|                pd->buf_size, s->max_probe_packets - st->probe_packets, | ||||
|                fmt->name, score); | ||||
|         for (i = 0; fmt_id_type[i].name; i++) { | ||||
|             if (!strcmp(fmt->name, fmt_id_type[i].name)) { | ||||
| @@ -1948,7 +1948,7 @@ void ff_read_frame_flush(AVFormatContext *s) | ||||
|             /* We set the current DTS to an unspecified origin. */ | ||||
|             st->cur_dts = AV_NOPTS_VALUE; | ||||
|  | ||||
|         st->probe_packets = MAX_PROBE_PACKETS; | ||||
|         st->probe_packets = s->max_probe_packets; | ||||
|  | ||||
|         for (j = 0; j < MAX_REORDER_DELAY + 1; j++) | ||||
|             st->pts_buffer[j] = AV_NOPTS_VALUE; | ||||
| @@ -4570,7 +4570,7 @@ FF_ENABLE_DEPRECATION_WARNINGS | ||||
|     st->start_time = AV_NOPTS_VALUE; | ||||
|     st->duration   = AV_NOPTS_VALUE; | ||||
|     st->first_dts     = AV_NOPTS_VALUE; | ||||
|     st->probe_packets = MAX_PROBE_PACKETS; | ||||
|     st->probe_packets = s->max_probe_packets; | ||||
|     st->pts_wrap_reference = AV_NOPTS_VALUE; | ||||
|     st->pts_wrap_behavior = AV_PTS_WRAP_IGNORE; | ||||
|  | ||||
|   | ||||
| @@ -32,7 +32,7 @@ | ||||
| // Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium) | ||||
| // Also please add any ticket numbers that you believe might be affected here | ||||
| #define LIBAVFORMAT_VERSION_MAJOR  58 | ||||
| #define LIBAVFORMAT_VERSION_MINOR  33 | ||||
| #define LIBAVFORMAT_VERSION_MINOR  34 | ||||
| #define LIBAVFORMAT_VERSION_MICRO 100 | ||||
|  | ||||
| #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user