changeset 654:850098147a3c libavcodec

export pts from stream if available store pts in stream if available (otherwise use frame_rate)
author michaelni
date Thu, 12 Sep 2002 10:54:53 +0000
parents 714795876872
children 0018e190cc4c
files avcodec.h h263.c
diffstat 2 files changed, 16 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/avcodec.h	Thu Sep 12 02:34:56 2002 +0000
+++ b/avcodec.h	Thu Sep 12 10:54:53 2002 +0000
@@ -5,8 +5,8 @@
 
 #define LIBAVCODEC_VERSION_INT 0x000406
 #define LIBAVCODEC_VERSION     "0.4.6"
-#define LIBAVCODEC_BUILD       4621
-#define LIBAVCODEC_BUILD_STR   "4621"
+#define LIBAVCODEC_BUILD       4622
+#define LIBAVCODEC_BUILD_STR   "4622"
 
 enum CodecID {
     CODEC_ID_NONE, 
@@ -318,6 +318,11 @@
 #define FF_DCT_MMX     3
 #define FF_DCT_MLIB    4
 
+    long long int pts; /* timestamp in micro seconds
+                          for decoding: the timestamp from the stream or 0
+                          for encoding: the timestamp which will be stored in the stream
+                                        if 0 then the frame_rate will be used */   
+
     //FIXME this should be reordered after kabis API is finished ...
     //TODO kill kabi
     /*
@@ -330,7 +335,7 @@
     */
     unsigned long long int
 	    ull_res0,ull_res1,ull_res2,ull_res3,ull_res4,ull_res5,
-	    ull_res6,ull_res7,ull_res8,ull_res9,ull_res10,ull_res11,ull_res12;
+	    ull_res6,ull_res7,ull_res8,ull_res9,ull_res10,ull_res11;
     float
 	    flt_res0,flt_res1,flt_res2,flt_res3,flt_res4,flt_res5,
 	    flt_res6,flt_res7,flt_res8,flt_res9,flt_res10,flt_res11,flt_res12;
--- a/h263.c	Thu Sep 12 02:34:56 2002 +0000
+++ b/h263.c	Thu Sep 12 10:54:53 2002 +0000
@@ -1314,8 +1314,11 @@
 
         s->time_increment_bits = av_log2(s->time_increment_resolution - 1) + 1;
     }
-
-    s->time= picture_number*(INT64)FRAME_RATE_BASE*s->time_increment_resolution/s->frame_rate;
+    
+    if(s->avctx->pts)
+        s->time= (s->avctx->pts*s->time_increment_resolution + 500*1000)/(1000*1000);
+    else
+        s->time= picture_number*(INT64)FRAME_RATE_BASE*s->time_increment_resolution/s->frame_rate;
     time_div= s->time/s->time_increment_resolution;
     time_mod= s->time%s->time_increment_resolution;
 
@@ -3993,7 +3996,9 @@
             return FRAME_SKIPED;
         }
     }
-
+    
+    s->avctx->pts= s->time*1000LL*1000LL / s->time_increment_resolution;
+    
     if(check_marker(&s->gb, "before vop_coded")==0 && s->picture_number==0){
         printf("hmm, seems the headers arnt complete, trying to guess time_increment_bits\n");
         for(s->time_increment_bits++ ;s->time_increment_bits<16; s->time_increment_bits++){