[M120 Migration][Audio] Fix wav audio playback issue 56/309356/4
authorpeng.yin <peng8.yin@samsung.com>
Mon, 11 Sep 2023 09:40:34 +0000 (17:40 +0800)
committerBot Blink <blinkbot@samsung.com>
Thu, 11 Apr 2024 04:28:36 +0000 (04:28 +0000)
1. fixup for https://review.tizen.org/gerrit/#/c/285499/
remove hard code, or it will fills wrong sample format after converting
`VCodecContext` to `AudioDecoderConfig` for audio.

2. use default renderer for wav audio
since most wav files contain PCM audio, it should not use Tizen
multi-media pipeline for this type of raw audio playback.

for more information, see DF230908-00250.

refer to:
https://review.tizen.org/gerrit/#/c/298608/

Change-Id: I176d885ced3a120e3f8279bf0299d78cc1874f75
Signed-off-by: peng.yin <peng8.yin@samsung.com>
content/renderer/media/media_factory.cc
content/renderer/media/media_factory.h
media/ffmpeg/ffmpeg_common.cc

index 0cb2303..33813f8 100644 (file)
@@ -552,6 +552,15 @@ blink::WebEncryptedMediaClient* MediaFactory::EncryptedMediaClient() {
   return web_encrypted_media_client_.get();
 }
 
+bool MediaFactory::UseDefaultRendererForRawAudio(blink::WebURL url) {
+  auto filename = GURL(url).ExtractFileName();
+  if (filename.empty())
+    return false;
+
+  base::FilePath file_path(filename);
+  return file_path.MatchesFinalExtension(".wav");
+}
+
 std::unique_ptr<media::RendererFactorySelector>
 MediaFactory::CreateRendererFactorySelector(
     media::MediaPlayerLoggingID player_id,
@@ -592,12 +601,15 @@ MediaFactory::CreateRendererFactorySelector(
   }
 
 #if defined(TIZEN_MULTIMEDIA)
-  auto media_player_factory =
-      std::make_unique<MediaPlayerRendererClientFactory>(
-          render_thread->compositor_task_runner(), CreateMojoRendererFactory());
-  factory_selector->AddBaseFactory(RendererType::kMediaPlayer,
-                                   std::move(media_player_factory));
-  is_base_renderer_factory_set = true;
+  if (!UseDefaultRendererForRawAudio(url)) {
+    auto media_player_factory =
+        std::make_unique<MediaPlayerRendererClientFactory>(
+            render_thread->compositor_task_runner(),
+            CreateMojoRendererFactory());
+    factory_selector->AddBaseFactory(RendererType::kMediaPlayer,
+                                     std::move(media_player_factory));
+    is_base_renderer_factory_set = true;
+  }
 #endif
 
 #if BUILDFLAG(IS_ANDROID)
index 0042134..14b7489 100644 (file)
@@ -152,6 +152,8 @@ class MediaFactory {
   // |media_player_delegate_| is NULL, one is created.
   media::RendererWebMediaPlayerDelegate* GetWebMediaPlayerDelegate();
 
+  bool UseDefaultRendererForRawAudio(blink::WebURL url);
+
 #if BUILDFLAG(ENABLE_MEDIA_REMOTING)
   media::mojom::RemoterFactory* GetRemoterFactory();
 #endif
index bb78e1b..a88f613 100644 (file)
@@ -388,11 +388,6 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
                       codec_context->extradata + codec_context->extradata_size);
   }
 
-#if defined(EWK_BRINGUP) && defined(TIZEN_MULTIMEDIA)
-  // TODO: Address the hardcoding.
-  sample_format = kSampleFormatS16;
-#endif
-
   config->Initialize(codec, sample_format, channel_layout, codec_context->sample_rate,
                      extra_data, encryption_scheme, seek_preroll,
                      codec_context->delay);