[SCM] libav/experimental: remove codec_info_duration/nb_frames from AVStream

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 15:57:37 UTC 2013


The following commit has been merged in the experimental branch:
commit ea486ab3bede4fc68b8cccb70791cdfa589a0fcb
Author: Baptiste Coudurier <baptiste.coudurier at gmail.com>
Date:   Mon Mar 12 10:59:47 2007 +0000

    remove codec_info_duration/nb_frames from AVStream
    
    Originally committed as revision 8337 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index c2136a6..b6fefaf 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -275,9 +275,11 @@ typedef struct AVStream {
      */
     AVRational r_frame_rate;
     void *priv_data;
+#if LIBAVFORMAT_VERSION_INT < (52<<16)
     /* internal data used in av_find_stream_info() */
     int64_t codec_info_duration;
     int codec_info_nb_frames;
+#endif
     /** encoding: PTS generation when outputing stream */
     AVFrac pts;
 
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 0c1259c..768d0b8 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -1679,6 +1679,8 @@ int av_find_stream_info(AVFormatContext *ic)
     int duration_count[MAX_STREAMS]={0};
     double (*duration_error)[MAX_STD_TIMEBASES];
     offset_t old_offset = url_ftell(&ic->pb);
+    int64_t codec_info_duration[MAX_STREAMS]={0};
+    int codec_info_nb_frames[MAX_STREAMS]={0};
 
     duration_error = av_mallocz(MAX_STREAMS * sizeof(*duration_error));
     if (!duration_error) return AVERROR_NOMEM;
@@ -1777,10 +1779,10 @@ int av_find_stream_info(AVFormatContext *ic)
         read_size += pkt->size;
 
         st = ic->streams[pkt->stream_index];
-        if(st->codec_info_nb_frames>1) //FIXME move codec_info_nb_frames and codec_info_duration from AVStream into this func
-            st->codec_info_duration += pkt->duration;
+        if(codec_info_nb_frames[st->index]>1)
+            codec_info_duration[st->index] += pkt->duration;
         if (pkt->duration != 0)
-            st->codec_info_nb_frames++;
+            codec_info_nb_frames[st->index]++;
 
         {
             int index= pkt->stream_index;
@@ -1801,9 +1803,6 @@ int av_find_stream_info(AVFormatContext *ic)
                     duration_error[index][i] += error*error;
                 }
                 duration_count[index]++;
-
-                if(st->codec_info_nb_frames == 0 && 0)
-                    st->codec_info_duration += duration;
             }
             if(last == AV_NOPTS_VALUE || duration_count[index]<=1)
                 last_dts[pkt->stream_index]= pkt->dts;
@@ -1839,7 +1838,7 @@ int av_find_stream_info(AVFormatContext *ic)
              (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) >= ic->max_analyze_duration) {
+        if (av_rescale_q(codec_info_duration[st->index], st->time_base, AV_TIME_BASE_Q) >= ic->max_analyze_duration) {
             break;
         }
         count++;

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list