modify condition to get resources 09/298409/5 accepted/tizen/unified/20230913.172608
authorEunhye Choi <eunhae1.choi@samsung.com>
Wed, 6 Sep 2023 11:25:08 +0000 (20:25 +0900)
committereunhae choi <eunhae1.choi@samsung.com>
Thu, 7 Sep 2023 03:41:25 +0000 (03:41 +0000)
- check decoder and display type
  to get HW resources
- get resources after creating plugin and
  before changing state to paused.

[Version] 0.0.37

Change-Id: I99a791f799be201785ee6ad94bc302ec01bcb19b

packaging/libtrackrenderer.spec
src/include_internal/trackrenderer/resource.h
src/trackrenderer.cpp

index 00cb1285389276d0174ee8f2204498b95ad9164c..4cd5e95ec0f2c175d7a6de8d93dfd4af333894fc 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libtrackrenderer
 Summary:    new multimedia streaming player trackrenderer
-Version:    0.0.36
+Version:    0.0.37
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 83e56af359f8ffb3cc7a253b7cdd83e752309059..ab7f10608432856357e42ee16a6c9d6d946f74a2 100644 (file)
@@ -18,9 +18,8 @@ enum class ResourceCategory {
 };
 
 struct ResourceProperty {
-  ResourceCategory category = ResourceCategory::kVideoDecoder;
+  ResourceCategory category;
   Track track;
-  bool is_vr360 = false;
 };
 
 class Resource {
index 91f3d17d21ad680ba9cb0a94223babb4ac2b49e0..547111d5c523386e28a1ce15568ff0394ec7647f 100644 (file)
@@ -519,14 +519,14 @@ bool TrackRenderer::Prepare() {
     return false;
   }
 
-  if (GetResource_() == false) {
-    TRACKRENDERER_ERROR("resource acquire failed.");
-    ReleaseResource_();
+  if (!CreatePipeline_()) {
+    TRACKRENDERER_ERROR("renderer pipeline creation failed");
     return false;
   }
 
-  if (CreatePipeline_() == false) {
-    TRACKRENDERER_ERROR("renderer pipeline creation failed");
+  if (!GetResource_()) {
+    TRACKRENDERER_ERROR("resource acquire failed");
+    ReleaseResource_();
     return false;
   }
 
@@ -1334,37 +1334,30 @@ bool TrackRenderer::CreatePipeline_() {
 bool TrackRenderer::GetResource_() {
   assert(!trackinfo_.empty());
   std::list<ResourceProperty> properties;
-  Track trackinfo;
-  for (const Track& track : trackinfo_) {
-    if (track.active == false) continue;
-    if (track.type != kTrackTypeVideo) continue;
-    if (track.use_swdecoder) continue; // FIXME: need to acquire the renderer res
-
-    ResourceProperty videodecproperty;
-    videodecproperty.category = ResourceCategory::kVideoDecoder;
-    videodecproperty.track = track;
-
-    bool need_renderer_resource = true;
-    if (decoded_buffer_type_ ==
-        DecodedVideoFrameBufferType::kCopy) {  // for videotexturing mode
-      need_renderer_resource = false;
-    } else if (decoded_buffer_type_ ==
-               DecodedVideoFrameBufferType::kReference) {
-      videodecproperty.is_vr360 = true;
-    }
-    properties.push_back(videodecproperty);
 
-    if (need_renderer_resource) {
-      ResourceProperty videorenderproperty;
-      videorenderproperty.category = ResourceCategory::kVideoRenderer;
-      properties.push_back(videorenderproperty);
-    }
+  Track track;
+  if (!track_util::GetActiveTrack(trackinfo_, kTrackTypeVideo, &track)) {
+    TRACKRENDERER_ERROR("There is no active video track");
+    return true;
+  }
+
+  if (pipeline_->IsFactoryListType(Elements::kDecVideo,
+        GST_ELEMENT_FACTORY_TYPE_HARDWARE)) {
+    TRACKRENDERER_DEBUG("will get video decoder resource");
+    properties.push_back({ ResourceCategory::kVideoDecoder, track });
+  }
+
+  DisplayType display_type;
+  display_->GetDisplay(&display_type);
+  if (internal::IsDisplayNeeded(display_type)) {
+    TRACKRENDERER_DEBUG("will get video renderer resource");
+    properties.push_back({ ResourceCategory::kVideoRenderer, {} });
   }
 
   bool ret = resource_manager_->Acquire(properties);
-  if (!ret) {
+  if (!ret)
     TRACKRENDERER_ERROR("GetResource_ Fail");
-  }
+
   return ret;
 }