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

Side by Side Diff: content/renderer/media/android/webmediaplayer_android.cc

Issue 594713002: Pass initial CDM to CreateMediaPlayer() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixes for android + mojo Created 6 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/media/android/webmediaplayer_android.h" 5 #include "content/renderer/media/android/webmediaplayer_android.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/android/build_info.h" 9 #include "base/android/build_info.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 } // namespace 108 } // namespace
109 109
110 namespace content { 110 namespace content {
111 111
112 WebMediaPlayerAndroid::WebMediaPlayerAndroid( 112 WebMediaPlayerAndroid::WebMediaPlayerAndroid(
113 blink::WebFrame* frame, 113 blink::WebFrame* frame,
114 blink::WebMediaPlayerClient* client, 114 blink::WebMediaPlayerClient* client,
115 base::WeakPtr<media::WebMediaPlayerDelegate> delegate, 115 base::WeakPtr<media::WebMediaPlayerDelegate> delegate,
116 RendererMediaPlayerManager* player_manager, 116 RendererMediaPlayerManager* player_manager,
117 RendererCdmManager* cdm_manager, 117 RendererCdmManager* cdm_manager,
118 blink::WebContentDecryptionModule* initial_cdm,
118 scoped_refptr<StreamTextureFactory> factory, 119 scoped_refptr<StreamTextureFactory> factory,
119 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 120 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
120 media::MediaLog* media_log) 121 media::MediaLog* media_log)
121 : RenderFrameObserver(RenderFrame::FromWebFrame(frame)), 122 : RenderFrameObserver(RenderFrame::FromWebFrame(frame)),
122 frame_(frame), 123 frame_(frame),
123 client_(client), 124 client_(client),
124 delegate_(delegate), 125 delegate_(delegate),
125 buffered_(static_cast<size_t>(1)), 126 buffered_(static_cast<size_t>(1)),
126 media_task_runner_(task_runner), 127 media_task_runner_(task_runner),
127 ignore_metadata_duration_change_(false), 128 ignore_metadata_duration_change_(false),
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 HasSwitch(switches::kForceUseOverlayEmbeddedVideo); 167 HasSwitch(switches::kForceUseOverlayEmbeddedVideo);
167 if (force_use_overlay_embedded_video_ || 168 if (force_use_overlay_embedded_video_ ||
168 player_manager_->ShouldUseVideoOverlayForEmbeddedEncryptedVideo()) { 169 player_manager_->ShouldUseVideoOverlayForEmbeddedEncryptedVideo()) {
169 // Defer stream texture creation until we are sure it's necessary. 170 // Defer stream texture creation until we are sure it's necessary.
170 needs_establish_peer_ = false; 171 needs_establish_peer_ = false;
171 current_frame_ = VideoFrame::CreateBlackFrame(gfx::Size(1, 1)); 172 current_frame_ = VideoFrame::CreateBlackFrame(gfx::Size(1, 1));
172 } 173 }
173 #endif // defined(VIDEO_HOLE) 174 #endif // defined(VIDEO_HOLE)
174 TryCreateStreamTextureProxyIfNeeded(); 175 TryCreateStreamTextureProxyIfNeeded();
175 interpolator_.SetUpperBound(base::TimeDelta()); 176 interpolator_.SetUpperBound(base::TimeDelta());
177
178 // Set the initial CDM, if specified.
179 if (initial_cdm) {
180 web_cdm_ = ToWebContentDecryptionModuleImpl(initial_cdm);
181 if (web_cdm_->GetCdmId() != RendererCdmManager::kInvalidCdmId)
182 player_manager_->SetCdm(player_id_, web_cdm_->GetCdmId());
183 }
176 } 184 }
177 185
178 WebMediaPlayerAndroid::~WebMediaPlayerAndroid() { 186 WebMediaPlayerAndroid::~WebMediaPlayerAndroid() {
179 DCHECK(main_thread_checker_.CalledOnValidThread()); 187 DCHECK(main_thread_checker_.CalledOnValidThread());
180 SetVideoFrameProviderClient(NULL); 188 SetVideoFrameProviderClient(NULL);
181 client_->setWebLayer(NULL); 189 client_->setWebLayer(NULL);
182 190
183 if (player_manager_) { 191 if (player_manager_) {
184 player_manager_->DestroyPlayer(player_id_); 192 player_manager_->DestroyPlayer(player_id_);
185 player_manager_->UnregisterMediaPlayer(player_id_); 193 player_manager_->UnregisterMediaPlayer(player_id_);
(...skipping 1481 matching lines...) Expand 10 before | Expand all | Expand 10 after
1667 } else { 1675 } else {
1668 // No pipeline/decoder connected, so resolve the promise. When something 1676 // No pipeline/decoder connected, so resolve the promise. When something
1669 // is connected, setting the CDM will happen in SetDecryptorReadyCB(). 1677 // is connected, setting the CDM will happen in SetDecryptorReadyCB().
1670 ContentDecryptionModuleAttached(result, true); 1678 ContentDecryptionModuleAttached(result, true);
1671 } 1679 }
1672 1680
1673 if (web_cdm_->GetCdmId() != RendererCdmManager::kInvalidCdmId) 1681 if (web_cdm_->GetCdmId() != RendererCdmManager::kInvalidCdmId)
1674 player_manager_->SetCdm(player_id_, web_cdm_->GetCdmId()); 1682 player_manager_->SetCdm(player_id_, web_cdm_->GetCdmId());
1675 } 1683 }
1676 1684
1677 void WebMediaPlayerAndroid::setContentDecryptionModuleSync(
1678 blink::WebContentDecryptionModule* cdm) {
1679 DCHECK(main_thread_checker_.CalledOnValidThread());
1680
1681 // TODO(xhwang): Support setMediaKeys(0) if necessary: http://crbug.com/330324
1682 if (!cdm)
1683 return;
1684
1685 DCHECK(decryptor_ready_cb_.is_null());
1686
1687 web_cdm_ = ToWebContentDecryptionModuleImpl(cdm);
1688 if (web_cdm_->GetCdmId() != RendererCdmManager::kInvalidCdmId)
1689 player_manager_->SetCdm(player_id_, web_cdm_->GetCdmId());
1690 }
1691
1692 void WebMediaPlayerAndroid::ContentDecryptionModuleAttached( 1685 void WebMediaPlayerAndroid::ContentDecryptionModuleAttached(
1693 blink::WebContentDecryptionModuleResult result, 1686 blink::WebContentDecryptionModuleResult result,
1694 bool success) { 1687 bool success) {
1695 if (success) { 1688 if (success) {
1696 result.complete(); 1689 result.complete();
1697 return; 1690 return;
1698 } 1691 }
1699 1692
1700 result.completeWithError( 1693 result.completeWithError(
1701 blink::WebContentDecryptionModuleExceptionNotSupportedError, 1694 blink::WebContentDecryptionModuleExceptionNotSupportedError,
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
1821 1814
1822 bool WebMediaPlayerAndroid::IsHLSStream() const { 1815 bool WebMediaPlayerAndroid::IsHLSStream() const {
1823 std::string mime; 1816 std::string mime;
1824 GURL url = redirected_url_.is_empty() ? url_ : redirected_url_; 1817 GURL url = redirected_url_.is_empty() ? url_ : redirected_url_;
1825 if (!net::GetMimeTypeFromFile(base::FilePath(url.path()), &mime)) 1818 if (!net::GetMimeTypeFromFile(base::FilePath(url.path()), &mime))
1826 return false; 1819 return false;
1827 return !mime.compare("application/x-mpegurl"); 1820 return !mime.compare("application/x-mpegurl");
1828 } 1821 }
1829 1822
1830 } // namespace content 1823 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698