[TTVD] Pass suspend&resume state in decoder constructor 27/318527/3
authorJakub Gajownik <j.gajownik2@samsung.com>
Thu, 26 Sep 2024 12:07:15 +0000 (14:07 +0200)
committerBot Blink <blinkbot@samsung.com>
Tue, 1 Oct 2024 21:53:42 +0000 (21:53 +0000)
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-516
Change-Id: I7864d1e0c690c897df04bb2209b5d54fdbfe6104
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
media/filters/tizen/ttvd_video_decoder.cc
media/filters/tizen/ttvd_video_decoder_impl.cc
media/filters/tizen/ttvd_video_decoder_impl.h

index 85a81a41c25eb7ba108949447f2fdfa0fd680e4d..2ba1300391355978cafc98b79286561cee04a79f 100644 (file)
@@ -107,10 +107,7 @@ void TTvdVideoDecoder::Initialize(const VideoDecoderConfig& config,
         base::BindRepeating(&TTvdVideoDecoder::GetCommandBufferHelper,
                             base::Unretained(this)),
         gpu_task_runner_, decoder_thread_.task_runner(), get_video_facade_cb_,
-        workarounds_);
-    // Since it's not allowed to allocate resources in some states, we should
-    // notify new instance about current known state.
-    OnStateChange(last_state_);
+        workarounds_, last_state_);
   }
   decoder_impl_.AsyncCall(&TTvdVideoDecoderImpl::Initialize)
       .WithArgs(config, low_delay, cdm_context,
index c79e4694e4ed7ea6ccecce2b35ba4d9b3f5ad796..6e75da74b5dbb8ee246dd40038d13ef4332f0036 100644 (file)
@@ -152,7 +152,8 @@ TTvdVideoDecoderImpl::TTvdVideoDecoderImpl(
     scoped_refptr<base::SingleThreadTaskRunner> decoder_task_runner,
     base::RepeatingCallback<std::unique_ptr<DecoderFacadeVideo>(
         const gpu::GpuDriverBugWorkarounds*)> get_video_facade_cb,
-    const gpu::GpuDriverBugWorkarounds& workarounds)
+    const gpu::GpuDriverBugWorkarounds& workarounds,
+    suspend_resume::State suspend_state)
     : workarounds_(workarounds),
       last_processing_frame_(
           std::make_pair(base::TimeDelta(), ProcessingAction::kRender)),
@@ -187,6 +188,18 @@ TTvdVideoDecoderImpl::TTvdVideoDecoderImpl(
   }
 
   output_surface_manager_ = GetOrCreateOutputSurfaceManager(workarounds_);
+  TIZEN_MEDIA_LOG(INFO) << "Create decoder in state: " << suspend_state;
+  switch (suspend_state) {
+    case suspend_resume::State::SUSPENDED:
+      decoder_state_ = DecoderState::kSuspended;
+      break;
+    case suspend_resume::State::PARTIAL:
+      decoder_state_ = DecoderState::kReleasedBeforeInit;
+      break;
+    case suspend_resume::State::RESUMED:
+      // Do nothing, |kCreated| is proper state.
+      break;
+  }
 }
 
 DecodedCollectionOnGpu::~DecodedCollectionOnGpu() {
index 25e9a78397146d9e0ee3846b5c41d4e2bcb3370d..08542aac9a369528b96dde2b75881710dddf1d7f 100644 (file)
@@ -93,7 +93,8 @@ class MEDIA_EXPORT TTvdVideoDecoderImpl {
       scoped_refptr<base::SingleThreadTaskRunner> decoder_task_runner,
       base::RepeatingCallback<std::unique_ptr<DecoderFacadeVideo>(
           const gpu::GpuDriverBugWorkarounds*)> get_video_facade_cb,
-      const gpu::GpuDriverBugWorkarounds& workarounds);
+      const gpu::GpuDriverBugWorkarounds& workarounds,
+      suspend_resume::State suspend_state);
   ~TTvdVideoDecoderImpl();
 
   TTvdVideoDecoderImpl(const TTvdVideoDecoderImpl&) = delete;