Merge branch: fix issues 54/269554/1
authorJeongyoon Nam <just.nam@samsung.com>
Tue, 18 Jan 2022 06:30:42 +0000 (15:30 +0900)
committerJeongyoon Nam <just.nam@samsung.com>
Tue, 18 Jan 2022 06:40:59 +0000 (15:40 +0900)
1. set false is_enough_data when FlushAppsrc
2. fix endless buffering when seeking
(skip updating segment in case of
normal seek)

Change-Id: I54f77d4310a6ae49b17b31152dc848e3e3856587

packaging/libtrackrenderer.spec
src/trackrenderer.cpp

index 31f1d46765587b8bae8926775772ca08a9210186..67f18c04615834a09e596f1aeebdb2181e3d7c02 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libtrackrenderer
 Summary:    new multimedia streaming player trackrenderer
-Version:    0.0.5
+Version:    0.0.6
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 50ba70028be2851c38496d3ee2690fd92e0fefe9..0a341b7860d51fe3056f5efbe212a4fb62e69dfe 100644 (file)
@@ -747,7 +747,7 @@ bool TrackRenderer::Seek(uint64_t time_millisecond,
   if (playback_rate > 0) {
     for (int i = 0; i < kTrackTypeMax; ++i) {
       trackctx_[i].is_enough_data = false;
-      trackctx_[i].need_update_segment = true;
+      trackctx_[i].need_update_segment = false;
     }
   }
   playback_rate_ = playback_rate;
@@ -803,7 +803,7 @@ bool TrackRenderer::Seek(uint64_t time_millisecond,
 
   for (int i = 0; i < kTrackTypeMax; ++i) {
     trackctx_[i].is_enough_data = false;
-    trackctx_[i].need_update_segment = true;
+    trackctx_[i].need_update_segment = false;
   }
   playback_rate_ = playback_rate;
 
@@ -954,6 +954,9 @@ bool TrackRenderer::SubmitPacket(const DecoderInputBufferPtr& data,
     start_time_cv_.notify_one();
   }
 
+  // TRACKRENDERER_DEBUG("[%d] Buffer :Timestamp:[%" GST_TIME_FORMAT "] dur:[%" GST_TIME_FORMAT "]",
+  //                      type, GST_TIME_ARGS(GST_BUFFER_TIMESTAMP(buffer)), GST_TIME_ARGS(GST_BUFFER_DURATION(buffer)));
+
   pipeline_->AppSrcPushBuffer(element, buffer);
   submitstate = SubmitStatus::kSuccess;
   return true;
@@ -1857,6 +1860,7 @@ void TrackRenderer::FlushAppsrc(TrackType type) {
   }
   pipeline_->Flush(element);
   is_flushing_ = true;
+  trackctx_[type].is_enough_data = false;
 
   Pipeline<Elements>::Pad pad;
   pipeline_->PadAddProbe(element, nullptr, "src", GST_PAD_PROBE_TYPE_IDLE,