changeset 5273:101f20612a94 libavcodec

Split ff_set_mpeg4_time() and move the non mpeg4 specific part into mpegvideo_enc.c.
author aurel
date Tue, 10 Jul 2007 14:37:33 +0000
parents b51c25603164
children c6bc608d2659
files h263.c mpegvideo.h mpegvideo_enc.c
diffstat 3 files changed, 21 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/h263.c	Tue Jul 10 14:30:57 2007 +0000
+++ b/h263.c	Tue Jul 10 14:37:33 2007 +0000
@@ -2259,25 +2259,12 @@
 }
 
 /* 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;
     }
 }
 
--- a/mpegvideo.h	Tue Jul 10 14:30:57 2007 +0000
+++ b/mpegvideo.h	Tue Jul 10 14:37:33 2007 +0000
@@ -834,7 +834,7 @@
                         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);
--- a/mpegvideo_enc.c	Tue Jul 10 14:30:57 2007 +0000
+++ b/mpegvideo_enc.c	Tue Jul 10 14:37:33 2007 +0000
@@ -2671,6 +2671,21 @@
     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 @@
     /* 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;