diff --git a/starboard/android/shared/media_codec_bridge.cc b/starboard/android/shared/media_codec_bridge.cc index 12f1ecc315f..c9be40d7f4e 100644 --- a/starboard/android/shared/media_codec_bridge.cc +++ b/starboard/android/shared/media_codec_bridge.cc @@ -255,7 +255,6 @@ std::unique_ptr MediaCodecBridge::CreateVideoMediaCodecBridge( *error_message = FormatString("Unsupported mime for codec %d", video_codec); return std::unique_ptr(); } - const bool must_support_secure = require_secured_decoder; const bool must_support_hdr = color_metadata; const bool must_support_tunnel_mode = tunnel_mode_audio_session_id != -1; @@ -279,6 +278,16 @@ std::unique_ptr MediaCodecBridge::CreateVideoMediaCodecBridge( /* bitrate = */ 0, /* fps = */ 0); } + if (decoder_name.empty() && require_software_codec) { + // On third pass, forget software codec required. + decoder_name = MediaCapabilitiesCache::GetInstance()->FindVideoDecoder( + mime, must_support_secure, /* must_support_hdr = */ false, + /* require_software_codec = */ false, must_support_tunnel_mode, + /* frame_width = */ 0, + /* frame_height = */ 0, + /* bitrate = */ 0, + /* fps = */ 0); + } if (decoder_name.empty()) { *error_message =