# -*- 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.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", "eme", "encoder", "fake-cdm", "flac", "gmp", "gmp-plugin-openh264", "imagecapture", "ipc", "mediacapabilities", "mediacontrol", "mediasink", "mediasource", "mediasession", "mp3", "ogg", "platforms", "systemservices", "utils", "wave", "webaudio", "webcodecs", "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", "test/mochitest_background_video.ini", "test/mochitest_bugs.ini", "test/mochitest_compat.ini", "test/mochitest_eme.ini", "test/mochitest_media_recorder.ini", "test/mochitest_seek.ini", "test/mochitest_stream.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", "test/browser/wmfme/browser.ini", ] if CONFIG["MOZ_WEBRTC"]: MOCHITEST_MANIFESTS += [ "webrtc/tests/mochitests/mochitest.ini", "webrtc/tests/mochitests/mochitest_datachannel.ini", "webrtc/tests/mochitests/mochitest_getusermedia.ini", "webrtc/tests/mochitests/mochitest_peerconnection.ini", ] 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", "AudioDriftCorrection.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", "DynamicResampler.h", "ExternalEngineStateMachine.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", "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", "MPSCQueue.h", "nsIDocumentActivity.h", "PrincipalChangeObserver.h", "PrincipalHandle.h", "QueueObject.h", "ReaderProxy.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", "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", "DynamicResampler.cpp", "ExternalEngineStateMachine.cpp", "FileBlockCache.cpp", "FileMediaResource.cpp", "ForwardedInputTrack.cpp", "GetUserMediaRequest.cpp", "GraphDriver.cpp", "GraphRunner.cpp", "ImageToI420.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", "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 # 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. # 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 += [ "/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/libwebrtc", "/third_party/libwebrtc/third_party/abseil-cpp", ] 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") # 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"