Source code

Revision control

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
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
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.jsm"):
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",
"eme",
"encoder",
"fake-cdm",
"flac",
"gmp",
"gmp-plugin-openh264",
"imagecapture",
"ipc",
"mediacapabilities",
"mediacontrol",
"mediasink",
"mediasource",
"mediasession",
"mp3",
"ogg",
"platforms",
"systemservices",
"utils",
"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"]
if CONFIG["MOZ_WEBRTC_SIGNALING"]:
if CONFIG["FUZZING_INTERFACES"]:
TEST_DIRS += ["webrtc/tests/fuzztests"]
MOCHITEST_MANIFESTS += [
"test/mochitest.ini",
"webrtc/tests/mochitests/identity/mochitest.ini",
]
MOCHITEST_CHROME_MANIFESTS += ["test/chrome/chrome.ini"]
BROWSER_CHROME_MANIFESTS += [
"mediacontrol/tests/browser/browser.ini",
"mediasession/test/browser.ini",
"test/browser/browser.ini",
]
if CONFIG["MOZ_WEBRTC"]:
MOCHITEST_MANIFESTS += ["webrtc/tests/mochitests/mochitest.ini"]
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",
"AudioDriftCorrection.h",
"AudioMixer.h",
"AudioPacketizer.h",
"AudioRingBuffer.h",
"AudioSampleFormat.h",
"AudioSegment.h",
"AudioStream.h",
"AudioThreadRegistry.h",
"BackgroundVideoDecodingPermissionObserver.h",
"Benchmark.h",
"BitReader.h",
"BitWriter.h",
"BufferMediaResource.h",
"BufferReader.h",
"ByteWriter.h",
"ChannelMediaDecoder.h",
"CrossGraphPort.h",
"CubebUtils.h",
"DecoderTraits.h",
"DOMMediaStream.h",
"DriftCompensation.h",
"DynamicResampler.h",
"FileBlockCache.h",
"ForwardedInputTrack.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",
"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",
"MPSCQueue.h",
"nsIDocumentActivity.h",
"PrincipalChangeObserver.h",
"PrincipalHandle.h",
"QueueObject.h",
"SeekJob.h",
"SeekTarget.h",
"SelfRef.h",
"SharedBuffer.h",
"TimeUnits.h",
"Tracing.h",
"VideoFrameContainer.h",
"VideoLimits.h",
"VideoSegment.h",
"VideoUtils.h",
"VorbisUtils.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",
"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",
"AudioRingBuffer.cpp",
"AudioSegment.cpp",
"AudioStream.cpp",
"AudioStreamTrack.cpp",
"AudioTrack.cpp",
"AudioTrackList.cpp",
"BackgroundVideoDecodingPermissionObserver.cpp",
"BaseMediaResource.cpp",
"Benchmark.cpp",
"BitReader.cpp",
"BitWriter.cpp",
"CanvasCaptureMediaStream.cpp",
"ChannelMediaDecoder.cpp",
"ChannelMediaResource.cpp",
"CloneableWithRangeMediaResource.cpp",
"CrossGraphPort.cpp",
"DOMMediaStream.cpp",
"DynamicResampler.cpp",
"FileBlockCache.cpp",
"FileMediaResource.cpp",
"ForwardedInputTrack.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",
"MediaPlaybackDelayPolicy.cpp",
"MediaRecorder.cpp",
"MediaResource.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",
"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
# 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",
]
LOCAL_INCLUDES += [
"/caps",
"/docshell/base",
"/dom/base",
"/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/libwebrtc",
"/third_party/libwebrtc/webrtc",
]
DEFINES["MOZILLA_INTERNAL_API"] = True
DEFINES["TRACING"] = True
if CONFIG["MOZ_ANDROID_HLS_SUPPORT"]:
DEFINES["MOZ_ANDROID_HLS_SUPPORT"] = True
if CONFIG["COMPILE_ENVIRONMENT"]:
EXPORTS += [
"!audioipc_client_ffi_generated.h",
"!audioipc_server_ffi_generated.h",
]
CbindgenHeader(
"audioipc_client_ffi_generated.h", inputs=["/third_party/rust/audioipc-client"]
)
CbindgenHeader(
"audioipc_server_ffi_generated.h", inputs=["/third_party/rust/audioipc-server"]
)
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",
]
CXXFLAGS += ["-Werror=switch"]
FINAL_LIBRARY = "xul"