summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorxhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-19 01:08:23 +0000
committerxhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-19 01:08:23 +0000
commit8e0f4b4eb7802239c7cc999a4e77e868ee6e9409 (patch)
tree1df2e2bfb98b0f1eb55f640b8e8bf4c941efb248 /media
parent6ad3689049978411ecd67c2a60017c5d3a3d7152 (diff)
downloadchromium_src-8e0f4b4eb7802239c7cc999a4e77e868ee6e9409.zip
chromium_src-8e0f4b4eb7802239c7cc999a4e77e868ee6e9409.tar.gz
chromium_src-8e0f4b4eb7802239c7cc999a4e77e868ee6e9409.tar.bz2
Add media_cdm_adapter.gyp: a common base for all CDM adapters.
This removes duplicate code in CDM adapter gyp targets. Also move more code under the condition enable_pepper_cdms==1 so that when enable_pepper_cdms==0, clearkeycdm, clearkeycdmadapter and widevinecdmadapter targets won't exist. BUG=329097 TEST=Widevine and ClearKey CDM adapters still work. Review URL: https://codereview.chromium.org/108703004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@241736 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r--media/media_cdm.gypi201
-rw-r--r--media/media_cdm_adapter.gyp67
2 files changed, 153 insertions, 115 deletions
diff --git a/media/media_cdm.gypi b/media/media_cdm.gypi
index 7c11765..553d360 100644
--- a/media/media_cdm.gypi
+++ b/media/media_cdm.gypi
@@ -18,129 +18,100 @@
# Set |use_libvpx| to 1 to use libvpx for VP8 decoding in |clearkeycdm|.
'use_libvpx%': 0,
},
- 'targets': [
- {
- 'target_name': 'clearkeycdm',
- 'type': 'none',
- # TODO(tomfinegan): Simplify this by unconditionally including all the
- # decoders, and changing clearkeycdm to select which decoder to use
- # based on environment variables.
- 'conditions': [
- ['use_fake_video_decoder == 1' , {
- 'defines': ['CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER'],
- 'sources': [
- 'cdm/ppapi/fake_cdm_video_decoder.cc',
- 'cdm/ppapi/fake_cdm_video_decoder.h',
+ 'conditions': [
+ ['enable_pepper_cdms==1', {
+ 'targets': [
+ {
+ 'target_name': 'clearkeycdm',
+ 'type': 'none',
+ # TODO(tomfinegan): Simplify this by unconditionally including all the
+ # decoders, and changing clearkeycdm to select which decoder to use
+ # based on environment variables.
+ 'conditions': [
+ ['use_fake_video_decoder == 1' , {
+ 'defines': ['CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER'],
+ 'sources': [
+ 'cdm/ppapi/fake_cdm_video_decoder.cc',
+ 'cdm/ppapi/fake_cdm_video_decoder.h',
+ ],
+ }],
+ ['use_ffmpeg == 1' , {
+ 'defines': ['CLEAR_KEY_CDM_USE_FFMPEG_DECODER'],
+ 'dependencies': [
+ '<(DEPTH)/third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
+ ],
+ 'sources': [
+ 'cdm/ppapi/ffmpeg_cdm_audio_decoder.cc',
+ 'cdm/ppapi/ffmpeg_cdm_audio_decoder.h',
+ ],
+ }],
+ ['use_ffmpeg == 1 and use_fake_video_decoder == 0' , {
+ 'sources': [
+ 'cdm/ppapi/ffmpeg_cdm_video_decoder.cc',
+ 'cdm/ppapi/ffmpeg_cdm_video_decoder.h',
+ ],
+ }],
+ ['use_libvpx == 1 and use_fake_video_decoder == 0' , {
+ 'defines': ['CLEAR_KEY_CDM_USE_LIBVPX_DECODER'],
+ 'dependencies': [
+ '<(DEPTH)/third_party/libvpx/libvpx.gyp:libvpx',
+ ],
+ 'sources': [
+ 'cdm/ppapi/libvpx_cdm_video_decoder.cc',
+ 'cdm/ppapi/libvpx_cdm_video_decoder.h',
+ ],
+ }],
+ ['os_posix == 1 and OS != "mac" and enable_pepper_cdms==1', {
+ 'type': 'loadable_module', # Must be in PRODUCT_DIR for ASAN bot.
+ }],
+ ['(OS == "mac" or OS == "win") and enable_pepper_cdms==1', {
+ 'type': 'shared_library',
+ }],
+ ['OS == "mac"', {
+ 'xcode_settings': {
+ 'DYLIB_INSTALL_NAME_BASE': '@loader_path',
+ },
+ }]
],
- }],
- ['use_ffmpeg == 1' , {
- 'defines': ['CLEAR_KEY_CDM_USE_FFMPEG_DECODER'],
+ 'defines': ['CDM_IMPLEMENTATION'],
'dependencies': [
- '<(DEPTH)/third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
- ],
- 'sources': [
- 'cdm/ppapi/ffmpeg_cdm_audio_decoder.cc',
- 'cdm/ppapi/ffmpeg_cdm_audio_decoder.h',
+ 'media',
+ # Include the following for media::AudioBus.
+ 'shared_memory_support',
+ '<(DEPTH)/base/base.gyp:base',
],
- }],
- ['use_ffmpeg == 1 and use_fake_video_decoder == 0' , {
'sources': [
- 'cdm/ppapi/ffmpeg_cdm_video_decoder.cc',
- 'cdm/ppapi/ffmpeg_cdm_video_decoder.h',
+ 'cdm/ppapi/cdm_video_decoder.cc',
+ 'cdm/ppapi/cdm_video_decoder.h',
+ 'cdm/ppapi/clear_key_cdm.cc',
+ 'cdm/ppapi/clear_key_cdm.h',
+ 'cdm/ppapi/clear_key_cdm_common.h',
],
- }],
- ['use_libvpx == 1 and use_fake_video_decoder == 0' , {
- 'defines': ['CLEAR_KEY_CDM_USE_LIBVPX_DECODER'],
+ # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
+ 'msvs_disabled_warnings': [ 4267, ],
+ },
+ {
+ 'target_name': 'clearkeycdmadapter',
+ 'type': 'none',
+ # Check whether the plugin's origin URL is valid.
+ 'defines': ['CHECK_DOCUMENT_URL'],
'dependencies': [
- '<(DEPTH)/third_party/libvpx/libvpx.gyp:libvpx',
- ],
- 'sources': [
- 'cdm/ppapi/libvpx_cdm_video_decoder.cc',
- 'cdm/ppapi/libvpx_cdm_video_decoder.h',
+ '<(DEPTH)/ppapi/ppapi.gyp:ppapi_cpp',
+ 'media_cdm_adapter.gyp:cdmadapter',
+ 'clearkeycdm',
],
- }],
- ['os_posix == 1 and OS != "mac" and enable_pepper_cdms==1', {
- 'type': 'loadable_module', # Must be in PRODUCT_DIR for ASAN bots.
- }],
- ['(OS == "mac" or OS == "win") and enable_pepper_cdms==1', {
- 'type': 'shared_library',
- }],
- ['OS == "mac"', {
- 'xcode_settings': {
- 'DYLIB_INSTALL_NAME_BASE': '@loader_path',
- },
- }]
- ],
- 'defines': ['CDM_IMPLEMENTATION'],
- 'dependencies': [
- 'media',
- # Include the following for media::AudioBus.
- 'shared_memory_support',
- '<(DEPTH)/base/base.gyp:base',
- ],
- 'sources': [
- 'cdm/ppapi/cdm_video_decoder.cc',
- 'cdm/ppapi/cdm_video_decoder.h',
- 'cdm/ppapi/clear_key_cdm.cc',
- 'cdm/ppapi/clear_key_cdm.h',
- 'cdm/ppapi/clear_key_cdm_common.h',
- ],
- # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
- 'msvs_disabled_warnings': [ 4267, ],
- },
- {
- 'target_name': 'clearkeycdmadapter',
- 'type': 'none',
- # Check whether the plugin's origin URL is valid.
- 'defines': ['CHECK_DOCUMENT_URL'],
- 'dependencies': [
- '<(DEPTH)/ppapi/ppapi.gyp:ppapi_cpp',
- 'clearkeycdm',
- ],
- 'sources': [
- 'cdm/ppapi/api/content_decryption_module.h',
- 'cdm/ppapi/cdm_adapter.cc',
- 'cdm/ppapi/cdm_adapter.h',
- 'cdm/ppapi/cdm_file_io_impl.cc',
- 'cdm/ppapi/cdm_file_io_impl.h',
- 'cdm/ppapi/cdm_helpers.cc',
- 'cdm/ppapi/cdm_helpers.h',
- 'cdm/ppapi/cdm_logging.cc',
- 'cdm/ppapi/cdm_logging.h',
- 'cdm/ppapi/cdm_wrapper.h',
- 'cdm/ppapi/linked_ptr.h',
- 'cdm/ppapi/supported_cdm_versions.h',
- ],
- 'conditions': [
- ['os_posix == 1 and OS != "mac" and enable_pepper_cdms==1', {
- 'cflags': ['-fvisibility=hidden'],
- 'type': 'loadable_module',
- # Allow the plugin adapter to find the CDM in the same directory.
- 'ldflags': ['-Wl,-rpath=\$$ORIGIN'],
- 'libraries': [
- # Built by clearkeycdm.
- '<(PRODUCT_DIR)/libclearkeycdm.so',
+ 'conditions': [
+ ['os_posix == 1 and OS != "mac" and enable_pepper_cdms==1', {
+ # Because clearkeycdm has type 'loadable_module' (see comments),
+ # we must explicitly specify this dependency.
+ 'libraries': [
+ # Built by clearkeycdm.
+ '<(PRODUCT_DIR)/libclearkeycdm.so',
+ ],
+ }],
],
- }],
- ['OS == "win" and enable_pepper_cdms==1', {
- 'type': 'shared_library',
- # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
- 'msvs_disabled_warnings': [ 4267, ],
- }],
- ['OS == "mac" and enable_pepper_cdms==1', {
- 'type': 'loadable_module',
- 'product_extension': 'plugin',
- 'xcode_settings': {
- 'OTHER_LDFLAGS': [
- # Not to strip important symbols by -Wl,-dead_strip.
- '-Wl,-exported_symbol,_PPP_GetInterface',
- '-Wl,-exported_symbol,_PPP_InitializeModule',
- '-Wl,-exported_symbol,_PPP_ShutdownModule'
- ],
- 'DYLIB_INSTALL_NAME_BASE': '@loader_path',
- },
- }],
+ },
],
- }
+ }],
],
}
diff --git a/media/media_cdm_adapter.gyp b/media/media_cdm_adapter.gyp
new file mode 100644
index 0000000..e71efcc
--- /dev/null
+++ b/media/media_cdm_adapter.gyp
@@ -0,0 +1,67 @@
+# Copyright 2013 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This file defines a common base target for all CDM adapter implementations.
+# We use 'direct_dependent_settings' to override target type and settings so
+# that all CDM adapter implementations have the correct type and settings
+# automatically.
+#
+# WARNING: Keep 'cdmadapter' target out of media.gyp. /build/all.gyp:All depends
+# directly on media.gyp:*. If 'cdmadapter' is defined in media.gyp, then
+# 'direct_dependent_settings' will be applied to 'All' target and bad
+# things happen, e.g. the type of 'All' target becomes a plugin on Mac.
+{
+ 'conditions': [
+ ['enable_pepper_cdms==1', {
+ 'targets': [
+ {
+ 'target_name': 'cdmadapter',
+ 'type': 'none',
+ 'direct_dependent_settings': {
+ 'sources': [
+ 'cdm/ppapi/api/content_decryption_module.h',
+ 'cdm/ppapi/cdm_adapter.cc',
+ 'cdm/ppapi/cdm_adapter.h',
+ 'cdm/ppapi/cdm_file_io_impl.cc',
+ 'cdm/ppapi/cdm_file_io_impl.h',
+ 'cdm/ppapi/cdm_helpers.cc',
+ 'cdm/ppapi/cdm_helpers.h',
+ 'cdm/ppapi/cdm_logging.cc',
+ 'cdm/ppapi/cdm_logging.h',
+ 'cdm/ppapi/cdm_wrapper.h',
+ 'cdm/ppapi/linked_ptr.h',
+ 'cdm/ppapi/supported_cdm_versions.h',
+ ],
+ 'conditions': [
+ ['os_posix == 1 and OS != "mac"', {
+ 'cflags': ['-fvisibility=hidden'],
+ 'type': 'loadable_module',
+ # Allow the adapter to find the CDM in the same directory.
+ 'ldflags': ['-Wl,-rpath=\$$ORIGIN'],
+ }],
+ ['OS == "win"', {
+ 'type': 'shared_library',
+ # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
+ 'msvs_disabled_warnings': [ 4267, ],
+ }],
+ ['OS == "mac"', {
+ 'type': 'loadable_module',
+ 'product_extension': 'plugin',
+ 'xcode_settings': {
+ 'OTHER_LDFLAGS': [
+ # Not to strip important symbols by -Wl,-dead_strip.
+ '-Wl,-exported_symbol,_PPP_GetInterface',
+ '-Wl,-exported_symbol,_PPP_InitializeModule',
+ '-Wl,-exported_symbol,_PPP_ShutdownModule'
+ ],
+ 'DYLIB_INSTALL_NAME_BASE': '@loader_path',
+ },
+ }],
+ ],
+ },
+ },
+ ],
+ }],
+ ],
+}