changeset 17910:5ae29dc47c17

feed something (hopefully correct timestamps) into the video filter chain
author michael
date Tue, 21 Mar 2006 23:09:52 +0000
parents f7048eaffa85
children 52f95509cd05
files libmpcodecs/dec_video.c libmpcodecs/dec_video.h mencoder.c mplayer.c
diffstat 4 files changed, 6 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/libmpcodecs/dec_video.c	Tue Mar 21 23:06:09 2006 +0000
+++ b/libmpcodecs/dec_video.c	Tue Mar 21 23:09:52 2006 +0000
@@ -304,7 +304,7 @@
 
 extern int vo_directrendering;
 
-int decode_video(sh_video_t *sh_video,unsigned char *start,int in_size,int drop_frame){
+int decode_video(sh_video_t *sh_video,unsigned char *start,int in_size,int drop_frame, double pts){
 vf_instance_t* vf;
 mp_image_t *mpi=NULL;
 unsigned int t=GetTimer();
@@ -336,7 +336,7 @@
 
 //vo_draw_image(video_out,mpi);
 vf=sh_video->vfilter;
-ret = vf->put_image(vf,mpi, MP_NOPTS_VALUE); // apply video filters and call the leaf vo/ve
+ret = vf->put_image(vf,mpi, pts); // apply video filters and call the leaf vo/ve
 if(ret>0) vf->control(vf,VFCTRL_DRAW_OSD,NULL);
 
     t2=GetTimer()-t2;
--- a/libmpcodecs/dec_video.h	Tue Mar 21 23:06:09 2006 +0000
+++ b/libmpcodecs/dec_video.h	Tue Mar 21 23:09:52 2006 +0000
@@ -10,7 +10,7 @@
 extern int init_video(sh_video_t *sh_video,char* codecname,char* vfm,int status);
 extern void uninit_video(sh_video_t *sh_video);
 
-extern int decode_video(sh_video_t *sh_video,unsigned char *start,int in_size,int drop_frame);
+extern int decode_video(sh_video_t *sh_video,unsigned char *start,int in_size,int drop_frame, double pts);
 
 extern int get_video_quality_max(sh_video_t *sh_video);
 extern void set_video_quality(sh_video_t *sh_video,int quality);
--- a/mencoder.c	Tue Mar 21 23:06:09 2006 +0000
+++ b/mencoder.c	Tue Mar 21 23:09:52 2006 +0000
@@ -1321,7 +1321,7 @@
 default:
     // decode_video will callback down to ve_*.c encoders, through the video filters
     blit_frame=decode_video(sh_video,frame_data.start,frame_data.in_size,
-      skip_flag>0 && (!sh_video->vfilter || ((vf_instance_t *)sh_video->vfilter)->control(sh_video->vfilter, VFCTRL_SKIP_NEXT_FRAME, 0) != CONTROL_TRUE));
+      skip_flag>0 && (!sh_video->vfilter || ((vf_instance_t *)sh_video->vfilter)->control(sh_video->vfilter, VFCTRL_SKIP_NEXT_FRAME, 0) != CONTROL_TRUE), mux_v->timer);
     
     if (sh_video->vf_inited < 0) mencoder_exit(1, NULL);
     
@@ -1739,7 +1739,7 @@
 
         if (vfilter) {
             int softskip = (vfilter->control(vfilter, VFCTRL_SKIP_NEXT_FRAME, 0) == CONTROL_TRUE);
-            decode_video(sh_video, frame_data->start, frame_data->in_size, !softskip);
+            decode_video(sh_video, frame_data->start, frame_data->in_size, !softskip, MP_NOPTS_VALUE);
         }
 
 #ifdef USE_EDL
--- a/mplayer.c	Tue Mar 21 23:06:09 2006 +0000
+++ b/mplayer.c	Tue Mar 21 23:09:52 2006 +0000
@@ -2693,7 +2693,7 @@
 	// decode:
 	current_module="decode_video";
 //	printf("Decode! %p  %d  \n",start,in_size);
-	blit_frame=decode_video(sh_video,start,in_size,drop_frame);
+	blit_frame=decode_video(sh_video,start,in_size,drop_frame, MP_NOPTS_VALUE);
 	break;
     }
     vdecode_time=video_time_usage-vdecode_time;