Diff of /src/xine-engine/metronom.c [90ca84] .. [544d3b]  Maximize  Restore

Switch to side-by-side view

--- a/src/xine-engine/metronom.c
+++ b/src/xine-engine/metronom.c
@@ -304,8 +304,6 @@
 
   /* video_vpts and audio_vpts adjustements */
   cur_time = this->xine->clock->get_current_time(this->xine->clock);
-  xprintf(this->xine, XINE_VERBOSITY_DEBUG,
-          "current time : %" PRId64 "\n", cur_time);
 
   switch (type) {
     case DISC_STREAMSTART:
@@ -322,12 +320,33 @@
 
     case DISC_ABSOLUTE:
     case DISC_RELATIVE:
-      if (this->video_vpts < this->audio_vpts) {
-        this->video_vpts = this->audio_vpts;
-        xprintf(this->xine, XINE_VERBOSITY_DEBUG, "video vpts adjusted to audio vpts %" PRId64 "\n", this->video_vpts);
+      if (this->video_vpts < cur_time) {
+        /* still frame */
+        if (this->audio_vpts > cur_time) {
+          /* still frame with audio */
+          this->video_vpts = this->audio_vpts;
+          xprintf(this->xine, XINE_VERBOSITY_DEBUG, "video vpts adjusted to audio vpts %" PRId64 "\n", this->video_vpts);
+        } else {
+          /* still frame, no audio */
+          this->video_vpts = this->prebuffer + cur_time;
+          this->audio_vpts = this->video_vpts;
+          this->audio_vpts_rmndr = 0;
+          this->force_video_jump = 1;
+          this->force_audio_jump = 1;
+          this->video_drift = 0;
+          xprintf(this->xine, XINE_VERBOSITY_DEBUG, "vpts adjusted with prebuffer to %" PRId64 "\n",
+	    this->video_vpts);
+        }
       } else {
-        this->audio_vpts = this->video_vpts;
-        xprintf(this->xine, XINE_VERBOSITY_DEBUG, "audio vpts adjusted to video vpts %" PRId64 "\n", this->video_vpts);
+        /* video */
+        if (this->audio_vpts < cur_time) {
+          /* video, no sound */
+          this->audio_vpts = this->video_vpts;
+          this->audio_vpts_rmndr = 0;
+          xprintf(this->xine, XINE_VERBOSITY_DEBUG, "audio vpts adjusted to video vpts %" PRId64 "\n", this->video_vpts);
+        } else {
+          /* video + audio */
+        }
       }
       break;
   }
@@ -353,7 +372,7 @@
     this->vpts_offset = this->video_vpts - disc_off;
     break;
   }
-
+  
   this->last_video_pts = 0;
   this->last_audio_pts = 0;
 }

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks