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
3# found in the LICENSE file.
4
5{
6  'variables': {
7    'conditions': [
8      ['OS == "android"', {
9        # Android doesn't use ffmpeg.
10        'use_ffmpeg%': 0,
11      }, {  # 'OS != "android"'
12        'use_ffmpeg%': 1,
13      }],
14    ],
15    # Set |use_fake_video_decoder| to 1 to ignore input frames in |clearkeycdm|,
16    # and produce video frames filled with a solid color instead.
17    'use_fake_video_decoder%': 0,
18    # Set |use_libvpx| to 1 to use libvpx for VP8 decoding in |clearkeycdm|.
19    'use_libvpx%': 0,
20  },
21  'conditions': [
22    ['enable_pepper_cdms==1', {
23      'targets': [
24        {
25          'target_name': 'clearkeycdm',
26          'type': 'none',
27          # TODO(tomfinegan): Simplify this by unconditionally including all the
28          # decoders, and changing clearkeycdm to select which decoder to use
29          # based on environment variables.
30          'conditions': [
31            ['use_fake_video_decoder == 1' , {
32              'defines': ['CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER'],
33              'sources': [
34                'cdm/ppapi/external_clear_key/fake_cdm_video_decoder.cc',
35                'cdm/ppapi/external_clear_key/fake_cdm_video_decoder.h',
36              ],
37            }],
38            ['use_ffmpeg == 1'  , {
39              'defines': ['CLEAR_KEY_CDM_USE_FFMPEG_DECODER'],
40              'dependencies': [
41                '<(DEPTH)/third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
42              ],
43              'sources': [
44                'cdm/ppapi/external_clear_key/ffmpeg_cdm_audio_decoder.cc',
45                'cdm/ppapi/external_clear_key/ffmpeg_cdm_audio_decoder.h',
46              ],
47            }],
48            ['use_ffmpeg == 1 and use_fake_video_decoder == 0'  , {
49              'sources': [
50                'cdm/ppapi/external_clear_key/ffmpeg_cdm_video_decoder.cc',
51                'cdm/ppapi/external_clear_key/ffmpeg_cdm_video_decoder.h',
52              ],
53            }],
54            ['use_libvpx == 1 and use_fake_video_decoder == 0' , {
55              'defines': ['CLEAR_KEY_CDM_USE_LIBVPX_DECODER'],
56              'dependencies': [
57                '<(DEPTH)/third_party/libvpx/libvpx.gyp:libvpx',
58              ],
59              'sources': [
60                'cdm/ppapi/external_clear_key/libvpx_cdm_video_decoder.cc',
61                'cdm/ppapi/external_clear_key/libvpx_cdm_video_decoder.h',
62              ],
63            }],
64            ['os_posix == 1 and OS != "mac" and enable_pepper_cdms==1', {
65              'type': 'loadable_module',  # Must be in PRODUCT_DIR for ASAN bot.
66            }],
67            ['(OS == "mac" or OS == "win") and enable_pepper_cdms==1', {
68              'type': 'shared_library',
69            }],
70            ['OS == "mac"', {
71              'xcode_settings': {
72                'DYLIB_INSTALL_NAME_BASE': '@loader_path',
73              },
74            }]
75          ],
76          'defines': ['CDM_IMPLEMENTATION'],
77          'dependencies': [
78            'media',
79            '../url/url.gyp:url_lib',
80            # Include the following for media::AudioBus.
81            'shared_memory_support',
82            '<(DEPTH)/base/base.gyp:base',
83          ],
84          'sources': [
85            'cdm/ppapi/cdm_file_io_test.cc',
86            'cdm/ppapi/cdm_file_io_test.h',
87            'cdm/ppapi/external_clear_key/cdm_video_decoder.cc',
88            'cdm/ppapi/external_clear_key/cdm_video_decoder.h',
89            'cdm/ppapi/external_clear_key/clear_key_cdm.cc',
90            'cdm/ppapi/external_clear_key/clear_key_cdm.h',
91            'cdm/ppapi/external_clear_key/clear_key_cdm_common.h',
92          ],
93          # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
94          'msvs_disabled_warnings': [ 4267, ],
95        },
96        {
97          'target_name': 'clearkeycdmadapter',
98          'type': 'none',
99          # Check whether the plugin's origin URL is valid.
100          'defines': ['CHECK_DOCUMENT_URL'],
101          'dependencies': [
102            '<(DEPTH)/ppapi/ppapi.gyp:ppapi_cpp',
103            'media_cdm_adapter.gyp:cdmadapter',
104            'clearkeycdm',
105          ],
106          'conditions': [
107            ['os_posix == 1 and OS != "mac" and enable_pepper_cdms==1', {
108              # Because clearkeycdm has type 'loadable_module' (see comments),
109              # we must explicitly specify this dependency.
110              'libraries': [
111                # Built by clearkeycdm.
112                '<(PRODUCT_DIR)/libclearkeycdm.so',
113              ],
114            }],
115          ],
116        },
117      ],
118    }],
119  ],
120}
121