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

Side by Side Diff: webkit/media/crypto/key_systems.cc

Issue 11492003: Encrypted Media: Support Audio Decrypt-Only. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years 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 | Annotate | Revision Log
« no previous file with comments | « media/tools/player_x11/player_x11.cc ('k') | webkit/media/crypto/key_systems_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <map> 5 #include <map>
6 6
7 #include "webkit/media/crypto/key_systems.h" 7 #include "webkit/media/crypto/key_systems.h"
8 8
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 20 matching lines...) Expand all
31 const char* mime_type; 31 const char* mime_type;
32 const char* codecs_list; 32 const char* codecs_list;
33 const char* key_system; 33 const char* key_system;
34 }; 34 };
35 35
36 struct KeySystemPluginTypePair { 36 struct KeySystemPluginTypePair {
37 const char* key_system; 37 const char* key_system;
38 const char* plugin_type; 38 const char* plugin_type;
39 }; 39 };
40 40
41 // TODO(xhwang): Remove this and ifdefs after fixing http://crbug.com/123421.
42 #define DECRYPT_ONLY_AUDIO_NOT_SUPPORTED
43 // TODO(ddorwin): Automatically support parent systems: http://crbug.com/164303. 41 // TODO(ddorwin): Automatically support parent systems: http://crbug.com/164303.
44 static const char kWidevineBaseKeySystem[] = "com.widevine"; 42 static const char kWidevineBaseKeySystem[] = "com.widevine";
45 43
46 // Specifies the container and codec combinations supported by individual 44 // Specifies the container and codec combinations supported by individual
47 // key systems. Each line is a container-codecs combination and the key system 45 // key systems. Each line is a container-codecs combination and the key system
48 // that supports it. Multiple codecs can be listed. A trailing commas in 46 // that supports it. Multiple codecs can be listed. A trailing commas in
49 // the |codecs_list| allows the container to be specified without a codec. 47 // the |codecs_list| allows the container to be specified without a codec.
50 // This list is converted at runtime into individual container-codec-key system 48 // This list is converted at runtime into individual container-codec-key system
51 // entries in KeySystems::key_system_map_. 49 // entries in KeySystems::key_system_map_.
52 static const MediaFormatAndKeySystem kSupportedFormatKeySystemCombinations[] = { 50 static const MediaFormatAndKeySystem kSupportedFormatKeySystemCombinations[] = {
53 // Clear Key. 51 // Clear Key.
54 #if defined(DECRYPT_ONLY_AUDIO_NOT_SUPPORTED)
55 { "video/webm", "vp8,vp8.0,", kClearKeyKeySystem },
56 #else
57 { "video/webm", "vorbis,vp8,vp8.0,", kClearKeyKeySystem }, 52 { "video/webm", "vorbis,vp8,vp8.0,", kClearKeyKeySystem },
58 { "audio/webm", "vorbis,", kClearKeyKeySystem }, 53 { "audio/webm", "vorbis,", kClearKeyKeySystem },
59 #endif
60 #if defined(GOOGLE_CHROME_BUILD) || defined(USE_PROPRIETARY_CODECS) 54 #if defined(GOOGLE_CHROME_BUILD) || defined(USE_PROPRIETARY_CODECS)
61 #if defined(DECRYPT_ONLY_AUDIO_NOT_SUPPORTED)
62 { "video/mp4", "avc1,", kClearKeyKeySystem },
63 #else
64 { "video/mp4", "avc1,mp4a,", kClearKeyKeySystem }, 55 { "video/mp4", "avc1,mp4a,", kClearKeyKeySystem },
65 { "audio/mp4", "mp4a,", kClearKeyKeySystem }, 56 { "audio/mp4", "mp4a,", kClearKeyKeySystem },
66 #endif 57 #endif
67 #endif
68 58
69 // External Clear Key (used for testing). 59 // External Clear Key (used for testing).
70 { "video/webm", "vorbis,vp8,vp8.0,", kExternalClearKeyKeySystem }, 60 { "video/webm", "vorbis,vp8,vp8.0,", kExternalClearKeyKeySystem },
71 { "audio/webm", "vorbis,", kExternalClearKeyKeySystem }, 61 { "audio/webm", "vorbis,", kExternalClearKeyKeySystem },
72 #if defined(GOOGLE_CHROME_BUILD) || defined(USE_PROPRIETARY_CODECS) 62 #if defined(GOOGLE_CHROME_BUILD) || defined(USE_PROPRIETARY_CODECS)
73 { "video/mp4", "avc1,mp4a,", kExternalClearKeyKeySystem }, 63 { "video/mp4", "avc1,mp4a,", kExternalClearKeyKeySystem },
74 { "audio/mp4", "mp4a,", kExternalClearKeyKeySystem }, 64 { "audio/mp4", "mp4a,", kExternalClearKeyKeySystem },
75 #endif 65 #endif
76 66
77 #if defined(WIDEVINE_CDM_AVAILABLE) 67 #if defined(WIDEVINE_CDM_AVAILABLE)
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 std::string GetPluginType(const std::string& key_system) { 229 std::string GetPluginType(const std::string& key_system) {
240 for (size_t i = 0; i < arraysize(kKeySystemToPluginTypeMapping); ++i) { 230 for (size_t i = 0; i < arraysize(kKeySystemToPluginTypeMapping); ++i) {
241 if (kKeySystemToPluginTypeMapping[i].key_system == key_system) 231 if (kKeySystemToPluginTypeMapping[i].key_system == key_system)
242 return kKeySystemToPluginTypeMapping[i].plugin_type; 232 return kKeySystemToPluginTypeMapping[i].plugin_type;
243 } 233 }
244 234
245 return std::string(); 235 return std::string();
246 } 236 }
247 237
248 } // namespace webkit_media 238 } // namespace webkit_media
OLDNEW
« no previous file with comments | « media/tools/player_x11/player_x11.cc ('k') | webkit/media/crypto/key_systems_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698