Set the audio decoder's caps to ones from its srcpad if there is no parser 18/275618/2
authorJeongyoon Nam <just.nam@samsung.com>
Fri, 27 May 2022 05:55:32 +0000 (14:55 +0900)
committerJeongyoon Nam <just.nam@samsung.com>
Fri, 27 May 2022 08:44:29 +0000 (17:44 +0900)
Additionally,
fix: AddressSanitizer: alloc-dealloc-mismatch (Merge Branch)
is included.

[Version] 0.0.10
[Issue Type] Bug fix

Change-Id: I3b225981d972d4b7f1782a3cdd5098e5ecee2ed4

packaging/libtrackrenderer.spec
src/trackrenderer.cpp
src/trackrenderer_capi_utils.cpp

index 39f9fbc935ff06eeecfb93a1ea5d14df215e4fa7..f20125278aec32a849c91077e42ac9cd3e65b599 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libtrackrenderer
 Summary:    new multimedia streaming player trackrenderer
-Version:    0.0.9
+Version:    0.0.10
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index ede7ff1f11121be8387d30d2dfc769472b43e04b..7bef543ba7aca7c22af9af3e29adbb9c8a880be9 100644 (file)
@@ -1209,14 +1209,17 @@ bool TrackRenderer::CreateAudioPipeline_(const Track* track) {
 
   CreateAppSrc_(kTrackTypeAudio, track->mimetype);
   auto caps = caps_builder_.Build(*track, false);
-  pipeline_->FactoryMake(Elements::kParseAudio, (GstCaps*)caps.GetCaps_(),
-                          GST_ELEMENT_FACTORY_TYPE_PARSER, NULL);
+  if (!pipeline_->FactoryMake(Elements::kParseAudio, (GstCaps*)caps.GetCaps_(),
+                          GST_ELEMENT_FACTORY_TYPE_PARSER, NULL))
+    TRACKRENDERER_ERROR("fail to make parser");
 
   auto parse_caps =
       gstguard::make_guard(pipeline_->GetSrcPadCaps(Elements::kParseAudio));
-  if (!pipeline_->FactoryMake(Elements::kDecAudio, (GstCaps*)parse_caps.get(),
+  if (!pipeline_->FactoryMake(Elements::kDecAudio,
+                              static_cast<GstCaps*>(parse_caps ? parse_caps.get() : caps.GetCaps_()),
                               GST_ELEMENT_FACTORY_TYPE_DECODER, NULL)) {
     const ErrorType err = ErrorType::kNotSupportedAudioCodec;
+    TRACKRENDERER_ERROR("fail to make decoder");
     eventlistener_->OnError(err);
     return false;
   }
index 1c2974e3da0f518d3afc434f75d6a232a200dd95..c8727375a0a173994f7ad53cd78aa39db47695c9 100644 (file)
@@ -87,7 +87,8 @@ std::vector<Track> MakeTrack(const TrackRendererTrack* trackrenderertrack,
     if (track_util::IsValidCodecDataSize(
             trackrenderertrack[index].codec_data_len)) {
       track.codec_data = std::shared_ptr<char>(
-          new char[trackrenderertrack[index].codec_data_len]);
+          new char[trackrenderertrack[index].codec_data_len],
+          std::default_delete<char[]>());
       memcpy(track.codec_data.get(), trackrenderertrack[index].codec_data,
              trackrenderertrack[index].codec_data_len);
       track.codec_data_len = trackrenderertrack[index].codec_data_len;