[Ffmpeg-cvslog] r7669 - in trunk/libavformat: avformat.h utils.c

michael subversion
Tue Jan 23 18:34:26 CET 2007


Author: michael
Date: Tue Jan 23 18:34:26 2007
New Revision: 7669

Modified:
   trunk/libavformat/avformat.h
   trunk/libavformat/utils.c

Log:
make av_find_stream_info() duration user selectable


Modified: trunk/libavformat/avformat.h
==============================================================================
--- trunk/libavformat/avformat.h	(original)
+++ trunk/libavformat/avformat.h	Tue Jan 23 18:34:26 2007
@@ -373,6 +373,11 @@
     int loop_input;
     /* decoding: size of data to probe; encoding unused */
     unsigned int probesize;
+
+    /**
+     * maximum duration in AV_TIME_BASE units over which the input should be analyzed in av_find_stream_info()
+     */
+    int max_analyze_duration;
 } AVFormatContext;
 
 typedef struct AVPacketList {

Modified: trunk/libavformat/utils.c
==============================================================================
--- trunk/libavformat/utils.c	(original)
+++ trunk/libavformat/utils.c	Tue Jan 23 18:34:26 2007
@@ -329,6 +329,7 @@
 {"genpts", "generate pts", 0, FF_OPT_TYPE_CONST, AVFMT_FLAG_GENPTS, INT_MIN, INT_MAX, D, "fflags"},
 {"track", " set the track number", OFFSET(track), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, E},
 {"year", "set the year", OFFSET(year), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, E},
+{"analyzeduration", NULL, OFFSET(max_analyze_duration), FF_OPT_TYPE_INT, 3*AV_TIME_BASE, 0, INT_MAX, D},
 {NULL},
 };
 
@@ -1757,9 +1758,6 @@
 /* absolute maximum size we read until we abort */
 #define MAX_READ_SIZE        5000000
 
-/* maximum duration until we stop analysing the stream */
-#define MAX_STREAM_DURATION  ((int)(AV_TIME_BASE * 3.0))
-
 #define MAX_STD_TIMEBASES (60*12+5)
 static int get_std_framerate(int i){
     if(i<60*12) return i*1001;
@@ -1942,7 +1940,7 @@
              (st->codec->codec_id == CODEC_ID_MPEG4 && !st->need_parsing))*/)
             try_decode_frame(st, pkt->data, pkt->size);
 
-        if (av_rescale_q(st->codec_info_duration, st->time_base, AV_TIME_BASE_Q) >= MAX_STREAM_DURATION) {
+        if (av_rescale_q(st->codec_info_duration, st->time_base, AV_TIME_BASE_Q) >= ic->max_analyze_duration) {
             break;
         }
         count++;




More information about the ffmpeg-cvslog mailing list