# HG changeset patch # User michaelni # Date 1031828093 0 # Node ID 850098147a3c322c0fd87f969f10448d6ba46b8f # Parent 714795876872b9faf4dff5e4192c218f8ddf7437 export pts from stream if available store pts in stream if available (otherwise use frame_rate) diff -r 714795876872 -r 850098147a3c avcodec.h --- 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; diff -r 714795876872 -r 850098147a3c h263.c --- 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++){