gecko-dev/dom/media/moz.build
alwu a9d4b33f07 Bug 1565689 - part1 : implement MediaController and MediaControlService. r=baku
In order to have a centralized audio control in the parent process, we create two new classes here.

* MediaController
MediaController is a class used to control certain amount of media in the content process. Every controller corresponds to a browsing context.
For example, TabMediaController would correspond to the top level browsing context, which mean it can control all media in the specific tab.

* MediaControlService
As there might be multiple tabs playing audio, so there would be multiple controllers. MediaControlService is a place to manage all of them, you can access specific controller through MediaControlService by providing controller ID.
Everytime a controller becomes active, which means there is a media starts in corresponding browsing context, then controller would be added into the list of the MediaControlService. And it would be removed from the list when the media in corresponding browsering context stopped.

Differential Revision: https://phabricator.services.mozilla.com/D38141

--HG--
extra : moz-landing-system : lando
2019-08-07 01:46:10 +00:00

382 lines
9.0 KiB
Python

# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
include('/media/webrtc/webrtc.mozbuild')
FILES_PER_UNIFIED_FILE = 6
with Files('*'):
BUG_COMPONENT = ('Core', 'Audio/Video')
with Files('test/**'):
BUG_COMPONENT = ('Core', 'Audio/Video: Playback')
with Files('gtest/TestGMP*'):
BUG_COMPONENT = ('Core', 'Audio/Video: GMP')
with Files('tests/**'):
BUG_COMPONENT = ('Core', 'WebRTC')
component_signaling = ('Core', 'WebRTC: Signaling')
with Files('IdpSandbox.jsm'):
BUG_COMPONENT = component_signaling
with Files('PeerConnection*'):
BUG_COMPONENT = component_signaling
with Files('RTC*'):
BUG_COMPONENT = component_signaling
component_av = ('Core', 'WebRTC: Audio/Video')
with Files('GetUserMedia*'):
BUG_COMPONENT = component_av
DIRS += [
'doctor',
'eme',
'encoder',
'fake-cdm',
'flac',
'gmp',
'gmp-plugin-openh264',
'imagecapture',
'ipc',
'mediacapabilities',
'mediacontrol',
'mediasink',
'mediasource',
'mp3',
'ogg',
'platforms',
'systemservices',
'wave',
'webaudio',
'webm',
'webrtc',
'webspeech',
'webvtt',
]
if CONFIG['MOZ_ANDROID_HLS_SUPPORT']:
DIRS += ['hls']
if CONFIG['MOZ_FMP4']:
DIRS += ['mp4']
if CONFIG['MOZ_WEBRTC']:
DIRS += ['bridge']
TEST_DIRS += [
'gtest',
]
# Add libFuzzer configuration directives
include('/tools/fuzzing/libfuzzer-config.mozbuild')
if CONFIG['FUZZING_INTERFACES']:
TEST_DIRS += [
'fuzz'
]
MOCHITEST_MANIFESTS += [
'test/mochitest.ini',
'tests/mochitest/identity/mochitest.ini',
]
BROWSER_CHROME_MANIFESTS += ['mediacontrol/tests/browser.ini']
if CONFIG['MOZ_WEBRTC']:
MOCHITEST_MANIFESTS += ['tests/mochitest/mochitest.ini']
WEBRTC_SIGNALLING_TEST_MANIFESTS += ['tests/mochitest/steeplechase.ini']
WEBRTC_SIGNALLING_TEST_MANIFESTS += ['tests/mochitest/steeplechase_long/steeplechase_long.ini']
XPIDL_SOURCES += [
'nsIAudioDeviceInfo.idl',
'nsIAutoplay.idl',
'nsIDOMNavigatorUserMedia.idl',
'nsIMediaManager.idl',
]
XPIDL_MODULE = 'dom_media'
EXPORTS += [
'../../third_party/rust/audio_thread_priority/audio_thread_priority.h',
'ADTSDecoder.h',
'ADTSDemuxer.h',
'AsyncLogger.h',
'AudioBufferUtils.h',
'AudioChannelFormat.h',
'AudioCompactor.h',
'AudioConfig.h',
'AudioConverter.h',
'AudioDeviceInfo.h',
'AudioMixer.h',
'AudioPacketizer.h',
'AudioSampleFormat.h',
'AudioSegment.h',
'AudioStream.h',
'AutoplayPolicy.h',
'BackgroundVideoDecodingPermissionObserver.h',
'Benchmark.h',
'BitReader.h',
'BitWriter.h',
'BufferMediaResource.h',
'BufferReader.h',
'ByteWriter.h',
'ChannelMediaDecoder.h',
'CubebUtils.h',
'DecoderTraits.h',
'DOMMediaStream.h',
'DriftCompensation.h',
'FileBlockCache.h',
'FrameStatistics.h',
'ImageToI420.h',
'Intervals.h',
'MediaCache.h',
'MediaContainerType.h',
'MediaData.h',
'MediaDataDemuxer.h',
'MediaDecoder.h',
'MediaDecoderOwner.h',
'MediaDecoderStateMachine.h',
'MediaEventSource.h',
'MediaFormatReader.h',
'MediaInfo.h',
'MediaMetadataManager.h',
'MediaMIMETypes.h',
'MediaPromiseDefs.h',
'MediaQueue.h',
'MediaRecorder.h',
'MediaResource.h',
'MediaResourceCallback.h',
'MediaResult.h',
'MediaSegment.h',
'MediaShutdownManager.h',
'MediaSpan.h',
'MediaStatistics.h',
'MediaStreamGraph.h',
'MediaStreamListener.h',
'MediaStreamTypes.h',
'MediaStreamWindowCapturer.h',
'MediaTimer.h',
'MediaTrack.h',
'MediaTrackList.h',
'MemoryBlockCache.h',
'nsIDocumentActivity.h',
'PrincipalChangeObserver.h',
'QueueObject.h',
'SeekJob.h',
'SeekTarget.h',
'SelfRef.h',
'SharedBuffer.h',
'StreamTracks.h',
'ThreadPoolCOMListener.h',
'TimeUnits.h',
'Tracing.h',
'TrackID.h',
'TrackUnionStream.h',
'VideoFrameContainer.h',
'VideoLimits.h',
'VideoSegment.h',
'VideoUtils.h',
'VorbisUtils.h',
'WavDumper.h',
'XiphExtradata.h',
]
EXPORTS.mozilla += [
'MediaManager.h',
]
EXPORTS.mozilla.media.webrtc += [
'webrtc/WebrtcGlobal.h',
'webrtc/WebrtcIPCTraits.h',
]
if not CONFIG['MOZ_WEBRTC']:
EXPORTS.mtransport += [
'../../media/mtransport/runnable_utils.h',
]
IPDL_SOURCES += [
'webrtc/PWebrtcGlobal.ipdl',
]
EXPORTS.mozilla.dom += [
'AudioDeviceInfo.h',
'AudioStreamTrack.h',
'AudioTrack.h',
'AudioTrackList.h',
'CanvasCaptureMediaStream.h',
'GetUserMediaRequest.h',
'MediaDeviceInfo.h',
'MediaDevices.h',
'MediaStreamError.h',
'MediaStreamTrack.h',
'TextTrack.h',
'TextTrackCue.h',
'TextTrackCueList.h',
'TextTrackList.h',
'TextTrackRegion.h',
'VideoPlaybackQuality.h',
'VideoStreamTrack.h',
'VideoTrack.h',
'VideoTrackList.h',
'webrtc/MediaTransportChild.h',
'webrtc/MediaTransportParent.h',
]
UNIFIED_SOURCES += [
'ADTSDecoder.cpp',
'ADTSDemuxer.cpp',
'AudioCaptureStream.cpp',
'AudioChannelFormat.cpp',
'AudioCompactor.cpp',
'AudioConfig.cpp',
'AudioConverter.cpp',
'AudioDeviceInfo.cpp',
'AudioSegment.cpp',
'AudioStream.cpp',
'AudioStreamTrack.cpp',
'AudioTrack.cpp',
'AudioTrackList.cpp',
'AutoplayPolicy.cpp',
'BackgroundVideoDecodingPermissionObserver.cpp',
'BaseMediaResource.cpp',
'Benchmark.cpp',
'BitReader.cpp',
'BitWriter.cpp',
'CanvasCaptureMediaStream.cpp',
'ChannelMediaDecoder.cpp',
'ChannelMediaResource.cpp',
'CloneableWithRangeMediaResource.cpp',
'DOMMediaStream.cpp',
'FileBlockCache.cpp',
'FileMediaResource.cpp',
'GetUserMediaRequest.cpp',
'GraphDriver.cpp',
'GraphRunner.cpp',
'ImageToI420.cpp',
'MediaCache.cpp',
'MediaContainerType.cpp',
'MediaData.cpp',
'MediaDecoder.cpp',
'MediaDecoderStateMachine.cpp',
'MediaDeviceInfo.cpp',
'MediaDevices.cpp',
'MediaFormatReader.cpp',
'MediaInfo.cpp',
'MediaManager.cpp',
'MediaMIMETypes.cpp',
'MediaRecorder.cpp',
'MediaResource.cpp',
'MediaShutdownManager.cpp',
'MediaStreamError.cpp',
'MediaStreamGraph.cpp',
'MediaStreamListener.cpp',
'MediaStreamTrack.cpp',
'MediaStreamWindowCapturer.cpp',
'MediaTimer.cpp',
'MediaTrack.cpp',
'MediaTrackList.cpp',
'MemoryBlockCache.cpp',
'QueueObject.cpp',
'ReaderProxy.cpp',
'SeekJob.cpp',
'StreamTracks.cpp',
'TextTrack.cpp',
'TextTrackCue.cpp',
'TextTrackCueList.cpp',
'TextTrackList.cpp',
'TextTrackRegion.cpp',
'Tracing.cpp',
'TrackUnionStream.cpp',
'VideoFrameContainer.cpp',
'VideoPlaybackQuality.cpp',
'VideoSegment.cpp',
'VideoStreamTrack.cpp',
'VideoTrack.cpp',
'VideoTrackList.cpp',
'VideoUtils.cpp',
'WebVTTListener.cpp',
'XiphExtradata.cpp',
]
if CONFIG['OS_TARGET'] == 'WINNT':
EXPORTS.mozilla.audio += [
'AudioNotificationReceiver.h',
'AudioNotificationSender.h',
]
SOURCES += [
'AudioNotificationReceiver.cpp',
'AudioNotificationSender.cpp',
'ThreadPoolCOMListener.cpp',
]
# CubebUtils.cpp needs to be built separately due to what appears to be some kind
# of compiler bug on Android 4.2 x86 opt. See bug 1408459.
# DecoderTraits.cpp needs to be built separately because of Mac OS X headers.
SOURCES += [
'CubebUtils.cpp',
'DecoderTraits.cpp',
]
# Some codec-related code uses multi-character constants, which GCC and clang
# warn about. Suppress turning this warning into an error.
SOURCES['DecoderTraits.cpp'].flags += ['-Wno-error=multichar']
if CONFIG['MOZ_WEBRTC']:
XPCOM_MANIFESTS += [
'components.conf',
]
EXTRA_JS_MODULES.media += [
'PeerConnection.jsm',
]
EXTRA_JS_MODULES.media += [
'IdpSandbox.jsm',
'PeerConnectionIdp.jsm',
'RTCStatsReport.jsm',
]
LOCAL_INCLUDES += [
'/caps',
'/docshell/base',
'/dom/base',
'/layout/generic',
'/layout/xul',
'/media/libyuv/libyuv/include',
'/netwerk/base',
]
if CONFIG['MOZ_WEBRTC']:
LOCAL_INCLUDES += [
'/media/webrtc/signaling/src/common',
'/media/webrtc/trunk',
'/media/webrtc/trunk/webrtc',
]
DEFINES['MOZILLA_INTERNAL_API'] = True
DEFINES['TRACING'] = True
if CONFIG['MOZ_ANDROID_HLS_SUPPORT']:
DEFINES['MOZ_ANDROID_HLS_SUPPORT'] = True
include('/ipc/chromium/chromium-config.mozbuild')
# Suppress some GCC warnings being treated as errors:
# - about attributes on forward declarations for types that are already
# defined, which complains about an important MOZ_EXPORT for android::AString
if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
CXXFLAGS += [
'-Wno-error=attributes',
'-Wno-error=shadow',
]
FINAL_LIBRARY = 'xul'
MARIONETTE_DOM_MEDIA_MANIFESTS += [
'test/marionette/manifest.ini'
]