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

Side by Side Diff: media/base/android/android_cdm_factory.cc

Issue 1408793009: media: Remove BrowserCdmFactory inferface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: real changes Created 5 years, 1 month 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
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "media/base/android/android_cdm_factory.h"
6
7 #include "base/strings/string_number_conversions.h"
8 #include "media/base/android/media_drm_bridge.h"
9 #include "media/base/bind_to_current_loop.h"
10 #include "media/base/cdm_config.h"
11 #include "media/base/key_systems.h"
12 #include "third_party/widevine/cdm/widevine_cdm_common.h"
13 #include "url/gurl.h"
14
15 namespace media {
16
17 AndroidCdmFactory::AndroidCdmFactory() {}
18
19 AndroidCdmFactory::~AndroidCdmFactory() {}
20
21 void AndroidCdmFactory::Create(
22 const std::string& key_system,
23 const GURL& security_origin,
24 const CdmConfig& cdm_config,
25 const SessionMessageCB& session_message_cb,
26 const SessionClosedCB& session_closed_cb,
27 const LegacySessionErrorCB& legacy_session_error_cb,
28 const SessionKeysChangeCB& session_keys_change_cb,
29 const SessionExpirationUpdateCB& session_expiration_update_cb,
30 const CdmCreatedCB& cdm_created_cb) {
31 // Bound |cdm_created_cb| so we always fire it asynchronously.
32 CdmCreatedCB bound_cdm_created_cb = BindToCurrentLoop(cdm_created_cb);
33
34 if (!security_origin.is_valid()) {
35 bound_cdm_created_cb.Run(nullptr, "Invalid origin.");
36 return;
37 }
38
39 std::string error_message;
40
41 if (!MediaDrmBridge::IsKeySystemSupported(key_system)) {
42 error_message = "Key system not supported unexpectedly: " + key_system;
43 NOTREACHED() << error_message;
44 bound_cdm_created_cb.Run(nullptr, error_message);
45 return;
46 }
47
48 scoped_refptr<MediaDrmBridge> cdm(
49 MediaDrmBridge::Create(key_system, session_message_cb, session_closed_cb,
50 legacy_session_error_cb, session_keys_change_cb,
51 session_expiration_update_cb));
52 if (!cdm) {
53 error_message = "MediaDrmBridge cannot be created for " + key_system;
54 NOTREACHED() << error_message;
55 bound_cdm_created_cb.Run(nullptr, error_message);
56 return;
57 }
58
59 if (key_system == kWidevineKeySystem) {
60 MediaDrmBridge::SecurityLevel security_level =
61 cdm_config.use_hw_secure_codecs ? MediaDrmBridge::SECURITY_LEVEL_1
62 : MediaDrmBridge::SECURITY_LEVEL_3;
63 if (!cdm->SetSecurityLevel(security_level)) {
64 error_message =
65 "failed to set security level " + base::IntToString(security_level);
66 DVLOG(1) << error_message;
67 bound_cdm_created_cb.Run(nullptr, error_message);
68 return;
69 }
70 } else if (!cdm_config.use_hw_secure_codecs) {
71 // Assume other key systems require hardware-secure codecs and thus do not
72 // support full compositing.
73 error_message =
74 key_system +
75 " may require use_video_overlay_for_embedded_encrypted_video";
76 NOTREACHED() << error_message;
77 bound_cdm_created_cb.Run(nullptr, error_message);
78 return;
79 }
80
81 // Success!
82 bound_cdm_created_cb.Run(cdm, "");
83 }
84
85 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698