Source code
Revision control
Copy as Markdown
Other Tools
# -*- 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
include("/dom/media/webrtc/third_party_build/webrtc.mozbuild")
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.sys.mjs"):
BUG_COMPONENT = component_signaling
with Files("PeerConnection*"):
BUG_COMPONENT = component_signaling
component_av = ("Core", "WebRTC: Audio/Video")
with Files("GetUserMedia*"):
BUG_COMPONENT = component_av
DIRS += [
"autoplay",
"doctor",
"driftcontrol",
"eme",
"encoder",
"fake-cdm",
"flac",
"gmp",
"gmp-plugin-openh264",
"imagecapture",
"ipc",
"mediacapabilities",
"mediacontrol",
"mediasink",
"mediasource",
"mediasession",
"mp3",
"mp4",
"ogg",
"platforms",
"systemservices",
"utils",
"wave",
"webaudio",
"webcodecs",
"webm",
"webrtc",
"webspeech",
"webvtt",
]
if CONFIG["MOZ_ANDROID_HLS_SUPPORT"]:
DIRS += ["hls"]
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"]
if CONFIG["MOZ_WEBRTC_SIGNALING"]:
if CONFIG["FUZZING_INTERFACES"]:
TEST_DIRS += ["webrtc/tests/fuzztests"]
MOCHITEST_MANIFESTS += [
"test/mochitest.toml",
"test/mochitest_background_video.toml",
"test/mochitest_bugs.toml",
"test/mochitest_compat.toml",
"test/mochitest_eme.toml",
"test/mochitest_eme_compat.toml",
"test/mochitest_media_engine.toml",
"test/mochitest_media_recorder.toml",
"test/mochitest_seek.toml",
"test/mochitest_stream.toml",
"webrtc/tests/mochitests/identity/mochitest.toml",
]
MOCHITEST_CHROME_MANIFESTS += ["test/chrome/chrome.toml"]
BROWSER_CHROME_MANIFESTS += [
"mediacontrol/tests/browser/browser.toml",
"mediasession/test/browser.toml",
"test/browser/browser.toml",
"test/browser/wmfme/browser.toml",
]
if CONFIG["MOZ_WEBRTC"]:
MOCHITEST_MANIFESTS += [
"webrtc/tests/mochitests/mochitest.toml",
"webrtc/tests/mochitests/mochitest_datachannel.toml",
"webrtc/tests/mochitests/mochitest_getusermedia.toml",
"webrtc/tests/mochitests/mochitest_peerconnection.toml",
]
CRASHTEST_MANIFESTS += ["webrtc/tests/crashtests/crashtests.list"]
XPIDL_SOURCES += [
"nsIAudioDeviceInfo.idl",
"nsIMediaDevice.idl",
"nsIMediaManager.idl",
]
XPIDL_MODULE = "dom_media"
EXPORTS += [
"../../third_party/rust/audio_thread_priority/audio_thread_priority.h",
"ADTSDecoder.h",
"ADTSDemuxer.h",
"AsyncLogger.h",
"AudibilityMonitor.h",
"AudioBufferUtils.h",
"AudioChannelFormat.h",
"AudioCompactor.h",
"AudioConfig.h",
"AudioConverter.h",
"AudioDeviceInfo.h",
"AudioMixer.h",
"AudioPacketizer.h",
"AudioRingBuffer.h",
"AudioSampleFormat.h",
"AudioSegment.h",
"AudioStream.h",
"BackgroundVideoDecodingPermissionObserver.h",
"Benchmark.h",
"BitReader.h",
"BitWriter.h",
"BufferMediaResource.h",
"BufferReader.h",
"ByteWriter.h",
"CallbackThreadRegistry.h",
"ChannelMediaDecoder.h",
"CrossGraphPort.h",
"CubebUtils.h",
"DecoderTraits.h",
"DOMMediaStream.h",
"DriftCompensation.h",
"EncoderTraits.h",
"ExternalEngineStateMachine.h",
"FileBlockCache.h",
"ForwardedInputTrack.h",
"FrameStatistics.h",
"ImageConversion.h",
"Intervals.h",
"MediaCache.h",
"MediaContainerType.h",
"MediaData.h",
"MediaDataDemuxer.h",
"MediaDecoder.h",
"MediaDecoderOwner.h",
"MediaDecoderStateMachine.h",
"MediaDecoderStateMachineBase.h",
"MediaEventSource.h",
"MediaFormatReader.h",
"MediaInfo.h",
"MediaMetadataManager.h",
"MediaMIMETypes.h",
"MediaPlaybackDelayPolicy.h",
"MediaPromiseDefs.h",
"MediaQueue.h",
"MediaRecorder.h",
"MediaResource.h",
"MediaResourceCallback.h",
"MediaResult.h",
"MediaSegment.h",
"MediaShutdownManager.h",
"MediaSpan.h",
"MediaStatistics.h",
"MediaStreamWindowCapturer.h",
"MediaTimer.h",
"MediaTrack.h",
"MediaTrackGraph.h",
"MediaTrackList.h",
"MediaTrackListener.h",
"MemoryBlockCache.h",
"nsIDocumentActivity.h",
"PrincipalChangeObserver.h",
"PrincipalHandle.h",
"QueueObject.h",
"ReaderProxy.h",
"SeekJob.h",
"SeekTarget.h",
"SelfRef.h",
"SharedBuffer.h",
"TimedPacketizer.h",
"TimeUnits.h",
"Tracing.h",
"VideoFrameContainer.h",
"VideoLimits.h",
"VideoSegment.h",
"VideoUtils.h",
"WavDumper.h",
"XiphExtradata.h",
]
EXPORTS.mozilla += [
"MediaManager.h",
"UnderrunHandler.h",
]
EXPORTS.mozilla.media.webrtc += [
"webrtc/WebrtcGlobal.h",
"webrtc/WebrtcIPCTraits.h",
]
if not CONFIG["MOZ_WEBRTC"]:
EXPORTS.transport += [
"webrtc/transport/runnable_utils.h",
]
EXPORTS.mozilla.dom += [
"AudioDeviceInfo.h",
"AudioStreamTrack.h",
"AudioTrack.h",
"AudioTrackList.h",
"CanvasCaptureMediaStream.h",
"GetUserMediaRequest.h",
"MediaDeviceInfo.h",
"MediaDevices.h",
"MediaStreamError.h",
"MediaStreamTrack.h",
"MPSCQueue.h",
"VideoPlaybackQuality.h",
"VideoStreamTrack.h",
"VideoTrack.h",
"VideoTrackList.h",
"webrtc/MediaTransportChild.h",
"webrtc/MediaTransportParent.h",
]
UNIFIED_SOURCES += [
"ADTSDecoder.cpp",
"ADTSDemuxer.cpp",
"AudioCaptureTrack.cpp",
"AudioChannelFormat.cpp",
"AudioCompactor.cpp",
"AudioConfig.cpp",
"AudioConverter.cpp",
"AudioDeviceInfo.cpp",
"AudioInputSource.cpp",
"AudioRingBuffer.cpp",
"AudioSegment.cpp",
"AudioStream.cpp",
"AudioStreamTrack.cpp",
"AudioTrack.cpp",
"AudioTrackList.cpp",
"BackgroundVideoDecodingPermissionObserver.cpp",
"BaseMediaResource.cpp",
"Benchmark.cpp",
"BitReader.cpp",
"BitWriter.cpp",
"CallbackThreadRegistry.cpp",
"CanvasCaptureMediaStream.cpp",
"ChannelMediaDecoder.cpp",
"ChannelMediaResource.cpp",
"CloneableWithRangeMediaResource.cpp",
"CrossGraphPort.cpp",
"CubebInputStream.cpp",
"DeviceInputTrack.cpp",
"DOMMediaStream.cpp",
"ExternalEngineStateMachine.cpp",
"FileBlockCache.cpp",
"FileMediaResource.cpp",
"ForwardedInputTrack.cpp",
"GetUserMediaRequest.cpp",
"GraphDriver.cpp",
"GraphRunner.cpp",
"ImageConversion.cpp",
"MediaCache.cpp",
"MediaContainerType.cpp",
"MediaDecoder.cpp",
"MediaDecoderStateMachine.cpp",
"MediaDecoderStateMachineBase.cpp",
"MediaDeviceInfo.cpp",
"MediaDevices.cpp",
"MediaFormatReader.cpp",
"MediaInfo.cpp",
"MediaManager.cpp",
"MediaMIMETypes.cpp",
"MediaPlaybackDelayPolicy.cpp",
"MediaRecorder.cpp",
"MediaResource.cpp",
"MediaResult.cpp",
"MediaShutdownManager.cpp",
"MediaStreamError.cpp",
"MediaStreamTrack.cpp",
"MediaStreamWindowCapturer.cpp",
"MediaTimer.cpp",
"MediaTrack.cpp",
"MediaTrackGraph.cpp",
"MediaTrackList.cpp",
"MediaTrackListener.cpp",
"MemoryBlockCache.cpp",
"QueueObject.cpp",
"ReaderProxy.cpp",
"SeekJob.cpp",
"TimeUnits.cpp",
"Tracing.cpp",
"VideoFrameContainer.cpp",
"VideoPlaybackQuality.cpp",
"VideoSegment.cpp",
"VideoStreamTrack.cpp",
"VideoTrack.cpp",
"VideoTrackList.cpp",
"VideoUtils.cpp",
"XiphExtradata.cpp",
]
if CONFIG["OS_TARGET"] == "Linux":
UNIFIED_SOURCES += ["UnderrunHandlerLinux.cpp"]
else:
UNIFIED_SOURCES += ["UnderrunHandlerNoop.cpp"]
# CubebUtils.cpp needs to be built separately due to what appears to be some kind
# DecoderTraits.cpp needs to be built separately because of Mac OS X headers.
# MediaData.cpp : ambiguous compilation error caused by Mac OS X headers.
SOURCES += [
"CubebUtils.cpp",
"DecoderTraits.cpp",
"MediaData.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.sys.mjs",
]
EXTRA_JS_MODULES.media += [
"IdpSandbox.sys.mjs",
"PeerConnectionIdp.sys.mjs",
]
LOCAL_INCLUDES += [
"!/media/libsoundtouch/src",
"/caps",
"/docshell/base",
"/dom/base",
"/dom/media/webrtc",
"/layout/generic",
"/layout/xul",
"/media/libyuv/libyuv/include",
"/netwerk/base",
"/toolkit/content/tests/browser/",
]
if CONFIG["MOZ_WEBRTC"]:
LOCAL_INCLUDES += [
"/dom/media/webrtc/common",
"/third_party/abseil-cpp",
"/third_party/libwebrtc",
]
DEFINES["MOZILLA_INTERNAL_API"] = True
if CONFIG["MOZ_ANDROID_HLS_SUPPORT"]:
DEFINES["MOZ_ANDROID_HLS_SUPPORT"] = True
if CONFIG["COMPILE_ENVIRONMENT"]:
EXPORTS += [
"!audioipc2_client_ffi_generated.h",
"!audioipc2_server_ffi_generated.h",
]
CbindgenHeader(
"audioipc2_client_ffi_generated.h",
inputs=["/third_party/rust/audioipc2-client"],
)
CbindgenHeader(
"audioipc2_server_ffi_generated.h",
inputs=["/third_party/rust/audioipc2-server"],
)
if CONFIG["ENABLE_TESTS"]:
DIRS += [
"test/rdd_process_xpcom",
]
include("/ipc/chromium/chromium-config.mozbuild")
LOCAL_INCLUDES += CONFIG["SKIA_INCLUDES"]
# 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",
]
CXXFLAGS += ["-Werror=switch"]
FINAL_LIBRARY = "xul"