[0.0.9] set the decoder's caps to ones from its srcpad if there is no parser 05/274905/4 accepted/tizen/unified/20220525.134545 submit/tizen/20220524.092710
authorJeongyoon Nam <just.nam@samsung.com>
Thu, 12 May 2022 00:14:27 +0000 (09:14 +0900)
committerJeongyoon Nam <just.nam@samsung.com>
Thu, 12 May 2022 07:07:59 +0000 (16:07 +0900)
Change-Id: Id408ec9d1a2185e3afc1812de42b01de52b56c66

packaging/libtrackrenderer.spec
src/trackrenderer.cpp

index e5e63b7c8f971e7bc8e5378c68cc26a63812f275..39f9fbc935ff06eeecfb93a1ea5d14df215e4fa7 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libtrackrenderer
 Summary:    new multimedia streaming player trackrenderer
-Version:    0.0.8
+Version:    0.0.9
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 01cbb632fe72c04941a43796be08c643f6563cf7..ede7ff1f11121be8387d30d2dfc769472b43e04b 100644 (file)
@@ -1024,19 +1024,23 @@ bool TrackRenderer::CreateVideoPipeline_(const Track* track) {
   if (internal::IsDecryptorElementNecessary(drm_property_)) {
     auto caps_for_parser = caps_builder_.BuildOrgMediaType(*track, internal::IsDrmEmeElementNecessary(
                                           drm_property_, track->mimetype));
-    pipeline_->FactoryMake(Elements::kParseVideo, (GstCaps*)caps_for_parser.GetCaps_(),
-                          GST_ELEMENT_FACTORY_TYPE_PARSER, NULL);
+    if (!pipeline_->FactoryMake(Elements::kParseVideo, (GstCaps*)caps_for_parser.GetCaps_(),
+                          GST_ELEMENT_FACTORY_TYPE_PARSER, NULL))
+      TRACKRENDERER_ERROR("fail to make parser");
   } else {
-    pipeline_->FactoryMake(Elements::kParseVideo, (GstCaps*)caps.GetCaps_(),
-                            GST_ELEMENT_FACTORY_TYPE_PARSER, NULL);
+    if (!pipeline_->FactoryMake(Elements::kParseVideo, (GstCaps*)caps.GetCaps_(),
+                            GST_ELEMENT_FACTORY_TYPE_PARSER, NULL))
+      TRACKRENDERER_ERROR("fail to make parser");
   }
 
   auto parse_caps =
       gstguard::make_guard(pipeline_->GetSrcPadCaps(Elements::kParseVideo));
 
-  if (!pipeline_->FactoryMake(Elements::kDecVideo, (GstCaps*)parse_caps.get(),
+  if (!pipeline_->FactoryMake(Elements::kDecVideo,
+                          static_cast<GstCaps*>(parse_caps ? parse_caps.get() : caps.GetCaps_()),
                           GST_ELEMENT_FACTORY_TYPE_DECODER, NULL)) {
     const ErrorType err = ErrorType::kNotSupportedVideoCodec;
+    TRACKRENDERER_ERROR("fail to make decoder");
     eventlistener_->OnError(err);
     return false;
   }