fixup! [EMSS] Fix config validation in SW and HW with fallback mode 93/315893/3
authorPiotr Bałut <p.balut@samsung.com>
Tue, 3 Dec 2024 14:53:45 +0000 (15:53 +0100)
committerBot Blink <blinkbot@samsung.com>
Fri, 6 Dec 2024 09:02:33 +0000 (09:02 +0000)
[PROBLEM]
If decoding mode is not provided, config validation will fail. Default
value should be used instead.

[SOLUTION]
Use default decoding mode value if decoding mode is not explictly set.

Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1904
Change-Id: I9edbc68238c8f1cf92286fe48c26f86f291eb3c9
Signed-off-by: Piotr Bałut <p.balut@samsung.com>
tizen_src/chromium_impl/third_party/blink/renderer/modules/elementary_media_stream_source/elementary_media_track.cc

index 264a1f79c1a868df4324b2e2ede78ad538e5057f..5432ed6b4d7f851140166cc8af2389de352f781e 100644 (file)
@@ -162,6 +162,15 @@ media::DecoderSelectionPolicy V8DecodingModeToDecoderSelectionPolicy(
   }
 }
 
+media::DecoderSelectionPolicy GetDecoderSelectionPolicy(
+    const ElementaryMediaStreamTrackConfig* config) {
+  EMSS_LOG_ASSERT(config);
+  return config->hasDecodingModeNonNull()
+             ? V8DecodingModeToDecoderSelectionPolicy(
+                   config->decodingModeNonNull().AsEnum())
+             : media::DecoderSelectionPolicy::kDefault;
+}
+
 std::tuple<MediaStreamComponent*,
            std::shared_ptr<WebElementaryMediaTrackMsAudioSink>>
 CreateMsAudioComponent() {
@@ -640,19 +649,20 @@ ConfigVerificationResult VerifyVideoConfiguration(
   constexpr auto kIsHwDecoding = false;
   std::vector<bool> decoding_modes_to_check;
 
-  if (config->hasDecodingModeNonNull()) {
-    const auto decoding_mode_enum = config->decodingModeNonNull().AsEnum();
-    if (decoding_mode_enum == V8DecodingMode::Enum::kHardware ||
-        decoding_mode_enum == V8DecodingMode::Enum::kHardwareWithFallback) {
-      decoding_modes_to_check.push_back(kIsHwDecoding);
-    }
-    if (decoding_mode_enum == V8DecodingMode::Enum::kSoftware ||
-        decoding_mode_enum == V8DecodingMode::Enum::kHardwareWithFallback) {
-      decoding_modes_to_check.push_back(kIsSwDecoding);
-    }
+  const auto decoder_selection_policy = GetDecoderSelectionPolicy(config);
+
+  if (decoder_selection_policy == media::DecoderSelectionPolicy::kHardware ||
+      decoder_selection_policy ==
+          media::DecoderSelectionPolicy::kHardwareWithFallback) {
+    decoding_modes_to_check.push_back(kIsHwDecoding);
+  }
+  if (decoder_selection_policy == media::DecoderSelectionPolicy::kSoftware ||
+      decoder_selection_policy ==
+          media::DecoderSelectionPolicy::kHardwareWithFallback) {
+    decoding_modes_to_check.push_back(kIsSwDecoding);
   }
 
-  ConfigVerificationResult result;
+  ConfigVerificationResult result = ConfigVerificationResult::kUnknown;
   for (const auto decoding_mode : decoding_modes_to_check) {
     result =
         VerifyVideoCodecParameters(framerate, resolution, codec, profile,
@@ -1126,11 +1136,7 @@ media::AudioDecoderConfig ElementaryMediaTrack::CreateAudioDecoderConfig(
     return {};
   })();
 
-  const auto decoder_selection_policy =
-      config->hasDecodingModeNonNull()
-          ? V8DecodingModeToDecoderSelectionPolicy(
-                config->decodingModeNonNull().AsEnum())
-          : media::DecoderSelectionPolicy::kDefault;
+  const auto decoder_selection_policy = GetDecoderSelectionPolicy(config);
   const auto encryption_scheme =
       config->hasEncryptionModeNonNull()
           ? EncryptionModeAsEnum(config->encryptionModeNonNull().AsEnum())
@@ -1193,11 +1199,7 @@ media::VideoDecoderConfig ElementaryMediaTrack::CreateVideoDecoderConfig(
     return {};
   })();
 
-  const auto decoder_selection_policy =
-      config->hasDecodingModeNonNull()
-          ? V8DecodingModeToDecoderSelectionPolicy(
-                config->decodingModeNonNull().AsEnum())
-          : media::DecoderSelectionPolicy::kDefault;
+  const auto decoder_selection_policy = GetDecoderSelectionPolicy(config);
 
   auto encryption_scheme =
       config->hasEncryptionModeNonNull()