Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(430)

Unified Diff: content/renderer/render_frame_impl.cc

Issue 1690063002: Fix mime type mappings when the unified media pipeline is enabled. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix compile error. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/render_frame_impl.cc
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index ea267fb7335da56178f7ea73dcbfcbdc195843b4..1eeb265aebd9df728aeae7b4705d3ca5e5dbb93d 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -131,6 +131,7 @@
#include "gin/modules/module_registry.h"
#include "media/audio/audio_output_device.h"
#include "media/base/audio_renderer_mixer_input.h"
+#include "media/base/media.h"
#include "media/base/media_log.h"
#include "media/base/media_switches.h"
#include "media/blink/url_index.h"
@@ -747,42 +748,29 @@ bool IsContentWithCertificateErrorsRelevantToUI(
}
#if defined(OS_ANDROID)
-// Returns true if WMPI must be used for playback because WMPA will not work.
-bool MustUseWebMediaPlayerImpl(blink::WebMediaPlayer::LoadType load_type,
- const GURL& url) {
- // WMPA can't play MSE if MediaCodec is unavailable. In this case WMPI may
- // still work (via libvpx).
- return (load_type == blink::WebMediaPlayer::LoadTypeMediaSource &&
- !media::MediaCodecUtil::IsMediaCodecAvailable());
-}
-
-// Returns true if WMPI can be used for playback, false if it may not work.
+// Returns true if WMPI should be used for playback, false otherwise.
//
-// Note that HLS and WebM detection are pre-redirect and path-based. It is
+// Note that HLS and MP4 detection are pre-redirect and path-based. It is
// possible to load such a URL and find different content.
-bool CanUseWebMediaPlayerImpl(blink::WebMediaPlayer::LoadType load_type,
- const GURL& url) {
- if (MustUseWebMediaPlayerImpl(load_type, url))
- return true;
+bool UseWebMediaPlayerImpl(blink::WebMediaPlayer::LoadType load_type,
+ const GURL& url) {
+ if (load_type == blink::WebMediaPlayer::LoadTypeMediaSource)
+ return media::IsUnifiedMediaPipelineEnabledForMse();
// WMPI does not support HLS.
if (media::MediaCodecUtil::IsHLSPath(url))
return false;
- // Otherwise --enable-unified-media-pipeline always enables WMPI.
- if (base::CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableUnifiedMediaPipeline)) {
- return true;
+ // Don't use WMPI if the container likely contains a codec we can't decode in
+ // software and hardware decoders are not available.
+ if (base::EndsWith(url.path(), ".mp4",
+ base::CompareCase::INSENSITIVE_ASCII) &&
+ !media::HasPlatformDecoderSupport()) {
+ return false;
}
- // WMPI can always play WebM (via libvpx).
- if (base::EndsWith(url.path(), ".webm", base::CompareCase::INSENSITIVE_ASCII))
- return true;
-
- // Otherwise, WMPI can only be used if AVDA is working.
- return (!base::CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kDisableAcceleratedVideoDecode) &&
- media::MediaCodecUtil::IsMediaCodecAvailable());
+ // Otherwise enable WMPI if indicated via experiment or command line.
+ return media::IsUnifiedMediaPipelineEnabled();
}
#endif // defined(OS_ANDROID)
@@ -2503,27 +2491,8 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer(
GetMediaPermission(), initial_cdm, media_surface_manager_);
#if defined(OS_ANDROID)
- if (!CanUseWebMediaPlayerImpl(load_type, url)) {
+ if (!UseWebMediaPlayerImpl(load_type, url))
return CreateAndroidWebMediaPlayer(client, encrypted_client, params);
- } else if (!MustUseWebMediaPlayerImpl(load_type, url)) {
- // TODO(dalecurtis): This experiment is temporary and should be removed once
- // we have enough data to support the primacy of the unified media pipeline;
- // see http://crbug.com/533190 for details.
- //
- // Note: It's important to query the field trial state first, to ensure that
- // UMA reports the correct group.
- const std::string group_name =
- base::FieldTrialList::FindFullName("UnifiedMediaPipelineTrial");
- const bool enabled_via_cli =
- base::CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableUnifiedMediaPipeline);
- const bool enable_unified_media_pipeline =
- enabled_via_cli ||
- base::StartsWith(group_name, "Enabled", base::CompareCase::SENSITIVE);
-
- if (!enable_unified_media_pipeline)
- return CreateAndroidWebMediaPlayer(client, encrypted_client, params);
- }
#endif // defined(OS_ANDROID)
#if defined(ENABLE_MOJO_RENDERER)
« no previous file with comments | « content/common/gpu/media/android_video_decode_accelerator.cc ('k') | content/renderer/render_thread_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698