[FFmpeg-cvslog] r9577 - in trunk/libavcodec: h263.c mpegvideo.h mpegvideo_enc.c

aurel subversion
Tue Jul 10 16:37:33 CEST 2007


Author: aurel
Date: Tue Jul 10 16:37:33 2007
New Revision: 9577

Log:
Split ff_set_mpeg4_time() and move the non mpeg4 specific part
into mpegvideo_enc.c.


Modified:
   trunk/libavcodec/h263.c
   trunk/libavcodec/mpegvideo.h
   trunk/libavcodec/mpegvideo_enc.c

Modified: trunk/libavcodec/h263.c
==============================================================================
--- trunk/libavcodec/h263.c	(original)
+++ trunk/libavcodec/h263.c	Tue Jul 10 16:37:33 2007
@@ -2259,25 +2259,12 @@ void ff_mpeg4_stuffing(PutBitContext * p
 }
 
 /* must be called before writing the header */
-void ff_set_mpeg4_time(MpegEncContext * s, int picture_number){
-    int time_div, time_mod;
-
-    assert(s->current_picture_ptr->pts != AV_NOPTS_VALUE);
-    s->time= s->current_picture_ptr->pts*s->avctx->time_base.num;
-
-    time_div= s->time/s->avctx->time_base.den;
-    time_mod= s->time%s->avctx->time_base.den;
-
+void ff_set_mpeg4_time(MpegEncContext * s){
     if(s->pict_type==B_TYPE){
-        s->pb_time= s->pp_time - (s->last_non_b_time - s->time);
-        assert(s->pb_time > 0 && s->pb_time < s->pp_time);
         ff_mpeg4_init_direct_mv(s);
     }else{
         s->last_time_base= s->time_base;
-        s->time_base= time_div;
-        s->pp_time= s->time - s->last_non_b_time;
-        s->last_non_b_time= s->time;
-        assert(picture_number==0 || s->pp_time > 0);
+        s->time_base= s->time/s->avctx->time_base.den;
     }
 }
 

Modified: trunk/libavcodec/mpegvideo.h
==============================================================================
--- trunk/libavcodec/mpegvideo.h	(original)
+++ trunk/libavcodec/mpegvideo.h	Tue Jul 10 16:37:33 2007
@@ -834,7 +834,7 @@ int16_t *h263_pred_motion(MpegEncContext
                         int *px, int *py);
 void mpeg4_pred_ac(MpegEncContext * s, DCTELEM *block, int n,
                    int dir);
-void ff_set_mpeg4_time(MpegEncContext * s, int picture_number);
+void ff_set_mpeg4_time(MpegEncContext * s);
 void mpeg4_encode_picture_header(MpegEncContext *s, int picture_number);
 #ifdef CONFIG_ENCODERS
 void h263_encode_init(MpegEncContext *s);

Modified: trunk/libavcodec/mpegvideo_enc.c
==============================================================================
--- trunk/libavcodec/mpegvideo_enc.c	(original)
+++ trunk/libavcodec/mpegvideo_enc.c	Tue Jul 10 16:37:33 2007
@@ -2671,6 +2671,21 @@ static int estimate_qp(MpegEncContext *s
     return 0;
 }
 
+/* must be called before writing the header */
+static void set_frame_distances(MpegEncContext * s){
+    assert(s->current_picture_ptr->pts != AV_NOPTS_VALUE);
+    s->time= s->current_picture_ptr->pts*s->avctx->time_base.num;
+
+    if(s->pict_type==B_TYPE){
+        s->pb_time= s->pp_time - (s->last_non_b_time - s->time);
+        assert(s->pb_time > 0 && s->pb_time < s->pp_time);
+    }else{
+        s->pp_time= s->time - s->last_non_b_time;
+        s->last_non_b_time= s->time;
+        assert(s->picture_number==0 || s->pp_time > 0);
+    }
+}
+
 static int encode_picture(MpegEncContext *s, int picture_number)
 {
     int i;
@@ -2685,7 +2700,9 @@ static int encode_picture(MpegEncContext
     /* we need to initialize some time vars before we can encode b-frames */
     // RAL: Condition added for MPEG1VIDEO
     if (s->codec_id == CODEC_ID_MPEG1VIDEO || s->codec_id == CODEC_ID_MPEG2VIDEO || (s->h263_pred && !s->h263_msmpeg4))
-        ff_set_mpeg4_time(s, s->picture_number);  //FIXME rename and use has_b_frames or similar
+        set_frame_distances(s);
+    if(ENABLE_MPEG4_ENCODER && s->codec_id == CODEC_ID_MPEG4)
+        ff_set_mpeg4_time(s);
 
     s->me.scene_change_score=0;
 




More information about the ffmpeg-cvslog mailing list