diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-12 05:35:37 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-12 05:35:37 +0000 |
commit | a90a5cba08fdf6c0ceb95101c275108a152a3aed (patch) | |
tree | 532507288f3defd7f4dcf1af49698bcb76034855 /dom/media/webcodecs/EncoderTemplate.h | |
parent | Adding debian version 126.0.1-1. (diff) | |
download | firefox-a90a5cba08fdf6c0ceb95101c275108a152a3aed.tar.xz firefox-a90a5cba08fdf6c0ceb95101c275108a152a3aed.zip |
Merging upstream version 127.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/media/webcodecs/EncoderTemplate.h')
-rw-r--r-- | dom/media/webcodecs/EncoderTemplate.h | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/dom/media/webcodecs/EncoderTemplate.h b/dom/media/webcodecs/EncoderTemplate.h index bc65edca46..ecadf68681 100644 --- a/dom/media/webcodecs/EncoderTemplate.h +++ b/dom/media/webcodecs/EncoderTemplate.h @@ -11,14 +11,15 @@ #include "EncoderAgent.h" #include "MediaData.h" +#include "SimpleMap.h" #include "WebCodecsUtils.h" #include "mozilla/DOMEventTargetHelper.h" #include "mozilla/MozPromise.h" #include "mozilla/RefPtr.h" #include "mozilla/Result.h" #include "mozilla/UniquePtr.h" -#include "mozilla/dom/VideoEncoderBinding.h" #include "mozilla/dom/AudioEncoderBinding.h" +#include "mozilla/dom/VideoEncoderBinding.h" #include "mozilla/dom/WorkerRef.h" #include "mozilla/media/MediaUtils.h" #include "nsStringFwd.h" @@ -116,12 +117,10 @@ class EncoderTemplate : public DOMEventTargetHelper { : public ControlMessage, public MessageRequestHolder<EncoderAgent::EncodePromise> { public: - FlushMessage(WebCodecsId aConfigureId, Promise* aPromise); + explicit FlushMessage(WebCodecsId aConfigureId); virtual void Cancel() override { Disconnect(); } virtual bool IsProcessing() override { return Exists(); }; virtual RefPtr<FlushMessage> AsFlushMessage() override { return this; } - already_AddRefed<Promise> TakePromise() { return mPromise.forget(); } - void RejectPromiseIfAny(const nsresult& aReason); nsCString ToString() const override { nsCString rv; @@ -129,9 +128,6 @@ class EncoderTemplate : public DOMEventTargetHelper { this->mMessageId); return rv; } - - private: - RefPtr<Promise> mPromise; }; protected: @@ -207,7 +203,7 @@ class EncoderTemplate : public DOMEventTargetHelper { const nsresult& aResult); void ProcessControlMessageQueue(); - void CancelPendingControlMessages(const nsresult& aResult); + void CancelPendingControlMessagesAndFlushPromises(const nsresult& aResult); template <typename Func> void QueueATask(const char* aName, Func&& aSteps); @@ -236,6 +232,11 @@ class EncoderTemplate : public DOMEventTargetHelper { std::queue<RefPtr<ControlMessage>> mControlMessageQueue; RefPtr<ControlMessage> mProcessingMessage; + // When a flush request is initiated, a promise is created and stored in + // mPendingFlushPromises until it is settled in the task delivering the flush + // result or Reset() is called before the promise is settled. + SimpleMap<int64_t, RefPtr<Promise>> mPendingFlushPromises; + uint32_t mEncodeQueueSize; bool mDequeueEventScheduled; |