Bug 1425631 - Reduce global threads count. r?padenot
MozReview-Commit-ID: JWPH6DRg1k7
--- a/dom/media/MediaRecorder.cpp
+++ b/dom/media/MediaRecorder.cpp
@@ -8,16 +8,17 @@
#include "AudioNodeEngine.h"
#include "AudioNodeStream.h"
#include "DOMMediaStream.h"
#include "GeckoProfiler.h"
#include "MediaDecoder.h"
#include "MediaEncoder.h"
#include "MediaStreamGraphImpl.h"
+#include "VideoUtils.h"
#include "mozilla/DOMEventTargetHelper.h"
#include "mozilla/dom/AudioStreamTrack.h"
#include "mozilla/dom/BlobEvent.h"
#include "mozilla/dom/File.h"
#include "mozilla/dom/MediaRecorderErrorEvent.h"
#include "mozilla/dom/MutableBlobStorage.h"
#include "mozilla/dom/VideoStreamTrack.h"
#include "mozilla/media/MediaUtils.h"
@@ -862,25 +863,26 @@ private:
if (!mRunningState.isOk() || mRunningState.unwrap() != RunningState::Idling) {
MOZ_ASSERT_UNREACHABLE("Double-init");
return;
}
// Create a TaskQueue to read encode media data from MediaEncoder.
MOZ_RELEASE_ASSERT(!mEncoderThread);
RefPtr<SharedThreadPool> pool =
- SharedThreadPool::Get(NS_LITERAL_CSTRING("MediaRecorderReadThread"));
+ GetMediaThreadPool(MediaThreadType::WEBRTC_DECODER);
if (!pool) {
LOG(LogLevel::Debug, ("Session.InitEncoder %p Failed to create "
"MediaRecorderReadThread thread pool", this));
DoSessionEndTask(NS_ERROR_FAILURE);
return;
}
- mEncoderThread = MakeAndAddRef<TaskQueue>(pool.forget());
+ mEncoderThread =
+ MakeAndAddRef<TaskQueue>(pool.forget(), "MediaRecorderReadThread");
if (!gMediaRecorderShutdownBlocker) {
// Add a shutdown blocker so mEncoderThread can be shutdown async.
class Blocker : public ShutdownBlocker
{
public:
Blocker()
: ShutdownBlocker(NS_LITERAL_STRING(
--- a/dom/media/ipc/VideoDecoderManagerParent.cpp
+++ b/dom/media/ipc/VideoDecoderManagerParent.cpp
@@ -1,26 +1,26 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=99: */
/* 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 "VideoDecoderManagerParent.h"
#include "VideoDecoderParent.h"
+#include "VideoUtils.h"
#include "base/thread.h"
#include "mozilla/UniquePtr.h"
#include "mozilla/Services.h"
#include "mozilla/Observer.h"
#include "nsIObserverService.h"
#include "nsIObserver.h"
#include "nsIEventTarget.h"
#include "nsThreadUtils.h"
#include "ImageContainer.h"
#include "mozilla/layers/VideoBridgeChild.h"
-#include "mozilla/SharedThreadPool.h"
#include "mozilla/layers/ImageDataSerializer.h"
#include "mozilla/SyncRunnable.h"
#if XP_WIN
#include <objbase.h>
#endif
namespace mozilla {
@@ -205,17 +205,17 @@ VideoDecoderManagerParent::AllocPVideoDe
const float& aFramerate,
const layers::TextureFactoryIdentifier& aIdentifier,
bool* aSuccess,
nsCString* aBlacklistedD3D11Driver,
nsCString* aBlacklistedD3D9Driver,
nsCString* aErrorDescription)
{
RefPtr<TaskQueue> decodeTaskQueue = new TaskQueue(
- SharedThreadPool::Get(NS_LITERAL_CSTRING("VideoDecoderParent"), 4),
+ GetMediaThreadPool(MediaThreadType::PLATFORM_DECODER),
"VideoDecoderParent::mDecodeTaskQueue");
auto* parent = new VideoDecoderParent(
this, aVideoInfo, aFramerate, aIdentifier,
sManagerTaskQueue, decodeTaskQueue, aSuccess, aErrorDescription);
#ifdef XP_WIN
*aBlacklistedD3D11Driver = GetFoundD3D11BlacklistedDLL();
--- a/media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp
+++ b/media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp
@@ -111,18 +111,19 @@ protected:
// thread whenever a frame is converted.
class VideoFrameConverter
{
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(VideoFrameConverter)
VideoFrameConverter()
: mLength(0)
- , mTaskQueue(new AutoTaskQueue(
- SharedThreadPool::Get(NS_LITERAL_CSTRING("VideoFrameConverter"))))
+ , mTaskQueue(
+ new AutoTaskQueue(GetMediaThreadPool(MediaThreadType::WEBRTC_DECODER),
+ "VideoFrameConverter"))
, mLastImage(-1) // -1 is not a guaranteed invalid serial. See bug 1262134.
#ifdef DEBUG
, mThrottleCount(0)
, mThrottleRecord(0)
#endif
, mMutex("VideoFrameConverter")
{
MOZ_COUNT_CTOR(VideoFrameConverter);
@@ -487,18 +488,19 @@ protected:
// use multiple threads and a TaskQueue.
class AudioProxyThread
{
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(AudioProxyThread)
explicit AudioProxyThread(AudioSessionConduit* aConduit)
: mConduit(aConduit)
- , mTaskQueue(new AutoTaskQueue(
- SharedThreadPool::Get(NS_LITERAL_CSTRING("AudioProxy"), 1)))
+ , mTaskQueue(
+ new AutoTaskQueue(GetMediaThreadPool(MediaThreadType::WEBRTC_DECODER),
+ "AudioProxy"))
{
MOZ_ASSERT(mConduit);
MOZ_COUNT_CTOR(AudioProxyThread);
}
void InternalProcessAudioChunk(TrackRate rate,
const AudioChunk& chunk,
bool enabled)
@@ -2165,18 +2167,19 @@ class MediaPipelineReceiveAudio::Pipelin
public:
PipelineListener(dom::MediaStreamTrack* aTrack,
const RefPtr<MediaSessionConduit>& aConduit)
: GenericReceiveListener(aTrack)
, mConduit(aConduit)
, mSource(mTrack->GetInputStream()->AsSourceStream())
, mTrackId(mTrack->GetInputTrackId())
, mRate(mSource ? mSource->GraphRate() : 0)
- , mTaskQueue(new AutoTaskQueue(
- SharedThreadPool::Get(NS_LITERAL_CSTRING("PipelineAudioListener"))))
+ , mTaskQueue(
+ new AutoTaskQueue(GetMediaThreadPool(MediaThreadType::WEBRTC_DECODER),
+ "AudioPipelineListener"))
, mLastLog(0)
{
MOZ_ASSERT(mSource);
}
// Implement MediaStreamListener
void NotifyPull(MediaStreamGraph* aGraph,
StreamTime aDesiredTime) override