mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-21 17:25:36 +00:00
a9d4b33f07
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
382 lines
9.0 KiB
Python
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'
|
|
]
|