Closed Bug 1831451 Opened 3 years ago Closed 3 years ago

Implement basic VideoDecoder on Linux

Categories

(Core :: Audio/Video: Web Codecs, task, P1)

task

Tracking

()

RESOLVED FIXED
116 Branch
Tracking Status
firefox116 --- fixed

People

(Reporter: chunmin, Assigned: chunmin)

References

(Blocks 1 open bug)

Details

Attachments

(28 external files, 6 obsolete files)

This bug is a sub-task for bug 1749045. The task is to implement the basic VideoDecoder operations. The goal is to create an VideoDecoder that can pass the following wpts

On Linux platforms

Depends on D155894

Depends on D155892

Depends on D171518

Attachment #9331698 - Attachment description: Bug 1831451 - Add a blank EncodedVideoChunk interface → WIP: Bug 1831451 - Add a blank EncodedVideoChunk interface
Attachment #9331700 - Attachment description: Bug 1831451 - Add a blank VideoDecoder interface → WIP: Bug 1831451 - Add a blank VideoDecoder interface
Attachment #9331699 - Attachment description: Bug 1831451 - Implement EncodedVideoChunk → WIP: Bug 1831451 - Implement EncodedVideoChunk
Attachment #9331701 - Attachment description: Bug 1831451 - Add NS_WARN_IF to unlikely condition → WIP: Bug 1831451 - Add NS_WARN_IF to unlikely condition
Attachment #9331702 - Attachment description: Bug 1831451 - Implement VideoDecoder::IsConfigSupported → WIP: Bug 1831451 - Implement VideoDecoder::IsConfigSupported
Attachment #9331703 - Attachment description: Bug 1831451 - Implement VideoDecoder::Constructor → WIP: Bug 1831451 - Implement VideoDecoder::Constructor
Attachment #9331704 - Attachment description: Bug 1831451 - Implement VideoDecoder::Reset → WIP: Bug 1831451 - Implement VideoDecoder::Reset
Attachment #9331705 - Attachment description: Bug 1831451 - Implement VideoDecoder::Close → WIP: Bug 1831451 - Implement VideoDecoder::Close
Attachment #9331706 - Attachment description: Bug 1831451 - Add a VideoColorSpace-to-ColorRange function → WIP: Bug 1831451 - Add a VideoColorSpace-to-ColorRange function
Attachment #9331707 - Attachment description: Bug 1831451 - Implement VideoDecoder::Configure → WIP: Bug 1831451 - Implement VideoDecoder::Configure
Attachment #9331708 - Attachment description: Bug 1831451 - Implement VideoDecoder::Decode → WIP: Bug 1831451 - Implement VideoDecoder::Decode
Attachment #9331709 - Attachment description: Bug 1831451 - Fire a dequeue event when data is being decoded → WIP: Bug 1831451 - Fire a dequeue event when data is being decoded
Attachment #9331710 - Attachment description: Bug 1831451 - Implement VideoDecoder::Flush → WIP: Bug 1831451 - Implement VideoDecoder::Flush
Attachment #9331711 - Attachment description: Bug 1831451 - Guess color space from VideoData → WIP: Bug 1831451 - Guess color space from VideoData
Attachment #9331712 - Attachment description: Bug 1831451 - Guess pixel format from VideoData → WIP: Bug 1831451 - Guess pixel format from VideoData
Attachment #9331713 - Attachment description: Bug 1831451 - Allow constructing VideoFrame without pixel format → WIP: Bug 1831451 - Allow constructing VideoFrame without pixel format
Attachment #9331714 - Attachment description: Bug 1831451 - Enable wpts → WIP: Bug 1831451 - Enable wpts
Depends on: 1833207

Depends on D171518

Attachment #9331714 - Attachment description: WIP: Bug 1831451 - Enable wpts → WIP: Bug 1831451 - Enable WPTs
Attached file Bug 1831451 - Revise dequeue event wpt (obsolete) —
let lastDequeueSize = Infinity;
decoder.ondequeue = () => {
  assert_greater_than(lastDequeueSize, 0, "Dequeue event after queue empty");
  assert_greater_than(lastDequeueSize, decoder.decodeQueueSize,
                      "Dequeue event without decreased queue size");
  lastDequeueSize = decoder.decodeQueueSize;
};

The above checkes doesn't really work since the VideoDecoder's
codec-work-queue runs in parallel with the VideoDecoder interface. The
dequeue events can arrive after the last dequeue size has been 0 if the
work queue decodes multiple samples while VideoDecoder is processing
just one dequeue event. Besides, decodeQueueSize can change between
the two decoder.decodeQueueSize calls since it can be mutated on both
VideoDecoder's owner thread and the codec-work-queue thread. As a
result, these two decodeQueueSize can be different, and the
lastDequeueSize is not guaranteed to be decreased one at a time per
event, even if the internal decodeQueueSize is decreased one at a time
(on codec-work-queue thread). The value can be decreased more than one
at a time.

The following example demonstrates one case when those checks can fail.

Suppose VideoDecoder D runs on thread T (main or worker) and
codec-work-queue runs on thread Q. In the test, by the time
VideoDecoder is configured successfully and decode request are sent,
the codec-work-queue is ready to decode the pending samples. Below
illustrates why the wpt checks in the begining don't work

Q) The underlying codec is configured, ready to decode sample #1.
Schedule a dequeue event. The current queue size is 9.
T) Get a dequeue event #1. Now D.decodeQueueSize is 9.
Q) Decode sample #1 succeeded, ready to decode sample #2. Schedule a
dequeue event. The current queue size is 8.
T) D.decode() for sample #1 succeeded. Get VideoFrame #1.
T) Get a dequeue event #2. Now D.decodeQueueSize is 8.
Q) Decode sample #2 succeeded, ready to decode sample #3. Schedule a
dequeue event. The current queue size is 7.
T) D.decode() for sample #2 succeeded. Get VideoFrame #2.
Q) Decode sample #3 succeeded, ready to decode sample #4. Schedule a
dequeue event. The current queue size is 6.
Q) Decode sample #4 succeeded, ready to decode sample #5. Schedule a
dequeue event. The current queue size is 5.
T) Get a dequeue event #3. Now D.decodeQueueSize is 5.
T) D.decode() for sample #3 succeeded. Get VideoFrame #3.
T) Get a dequeue event #4. Now D.decodeQueueSize is 5.
=> "Dequeue event without decreased queue size" fails here
Q) Decode sample #5 succeeded, ready to decode sample #6. Schedule a
dequeue event. The current queue size is 4.
Q) Decode sample #6 succeeded, ready to decode sample #7. Schedule a
dequeue event. The current queue size is 3.
Q) Decode sample #7 succeeded, ready to decode sample #8. Schedule a
dequeue event. The current queue size is 2.
T) D.decode() for sample #4 succeeded. Get VideoFrame #4.
T) Get a dequeue event #5. Now D.decodeQueueSize is 2.
T) D.decode() for sample #5 succeeded. Get VideoFrame #5.
T) Get a dequeue event #6. Now D.decodeQueueSize is 2.
=> "Dequeue event without decreased queue size" fails again here
Q) Decode sample #8 succeeded, ready to decode sample #9. Schedule a
dequeue event. The current queue size is 1.
T) D.decode() for sample #6 succeeded. Get VideoFrame #6.
Q) Decode sample #9 succeeded, ready to decode sample #10. Schedule a
dequeue event. The current queue size is 0.
T) Get a dequeue event #7. Now D.decodeQueueSize is 0.
T) D.decode() for sample #7 succeeded. Get VideoFrame #7.
T) Get a dequeue event #8. D.decodeQueueSize is still 0.
=> "Dequeue event after queue empty" fails here
=> "Dequeue event without decreased queue size" fails here as well

In brief, what VideoDecoder can guarantee are the order of dequeue
event, decode() result, and the flush() result:

  1. For sample #N, its dequeue event arrives before it's decode()
    callback
  2. The results/callbacks of decode() and flush() are arrived in FIFO
    order

There is no guarantee that decodeQueueSize read on the VideoDecoder's
owner thread only decrease one per dequeue event. If the
codec-work-queue decodes sample #1, #2, ... , #K while the dequeue event
for sample #1 is being dispatched to or handled on the VideoDecoder's
owner thread, the last-dequeueQueueSize can drop more than one compared
to it's previous value, and for the same reason, the dequeue event can
arrive even if the last-dequeueQueueSize has been set to 0.

Depends on D177212

The WPT assumes the error callback invoked via the decode() failure will
arrive before flush()'s promise, but it's not guaranteed. The example
below demonstrates why this assumption isn't held.

Suppose VideoDecoder D runs on thread T (main or worker) and
codec-work-queue runs on thread Q. In the test, by the time
VideoDecoder is configured successfully and decode request are sent,
the codec-work-queue is ready to decode the pending samples. Below
illustrates that error callback can arrive after flush()'s promise.

Q) The underlying codec is configured, ready to decode sample #1.
Q) Decode sample #1 succeeded, ready to decode sample #2.
T) D.decode() for sample #1 succeeded. Get VideoFrame #1.
Q) Decode sample #1 failed, ready to flush the decoder.
T) D.decode() for sample #2 failed. Close D via close() with an
EncodingError. The close queues a task to invoke the error
callback.
Q) Flush has been done.
T) D.flush() has done (but D has been closed) and its promise get
rejected
=> error callback hasn't arrive yet!
T) The error callback scheduled by close above is called

Depends on D179514

Attachment #9336685 - Attachment description: WIP: Bug 1831451 - Revise decode-empty-frame wpt → WIP: Bug 1831451 - Revise decode-empty/corrupt-frame wpt

BitReader::ReadBits will call a NS_ASSERTION when the request is
unreasonable. However, in WebCodecs' VedioDecoder wpt, one test will
intentionally decode a corrupted sample and it makes the av1 decoder to
reach that assertion and cause a wpt failure. Since that assertion
doesn't really do any meaningful work, downgrade it to NS_WARNING
to make wpt work seems fine.

Depends on D179515

Depends on D171518

Attachment #9331698 - Attachment description: WIP: Bug 1831451 - Add a blank EncodedVideoChunk interface → Bug 1831451 - Add a blank EncodedVideoChunk interface
Attachment #9331700 - Attachment description: WIP: Bug 1831451 - Add a blank VideoDecoder interface → Bug 1831451 - Add a blank VideoDecoder interface
Attachment #9331699 - Attachment description: WIP: Bug 1831451 - Implement EncodedVideoChunk → Bug 1831451 - Implement EncodedVideoChunk
Attachment #9331701 - Attachment description: WIP: Bug 1831451 - Add NS_WARN_IF to unlikely condition → Bug 1831451 - Add NS_WARN_IF to unlikely condition
Attachment #9331702 - Attachment description: WIP: Bug 1831451 - Implement VideoDecoder::IsConfigSupported → Bug 1831451 - Implement VideoDecoder::IsConfigSupported
Attachment #9331703 - Attachment description: WIP: Bug 1831451 - Implement VideoDecoder::Constructor → Bug 1831451 - Implement VideoDecoder::Constructor
Attachment #9331704 - Attachment description: WIP: Bug 1831451 - Implement VideoDecoder::Reset → Bug 1831451 - Implement VideoDecoder::Reset
Attachment #9331705 - Attachment description: WIP: Bug 1831451 - Implement VideoDecoder::Close → Bug 1831451 - Implement VideoDecoder::Close
Attachment #9331706 - Attachment description: WIP: Bug 1831451 - Add a VideoColorSpace-to-ColorRange function → Bug 1831451 - Add a VideoColorSpace-to-ColorRange function
Attachment #9331707 - Attachment description: WIP: Bug 1831451 - Implement VideoDecoder::Configure → Bug 1831451 - Implement VideoDecoder::Configure
Attachment #9331708 - Attachment description: WIP: Bug 1831451 - Implement VideoDecoder::Decode → Bug 1831451 - Implement VideoDecoder::Decode
Attachment #9331709 - Attachment description: WIP: Bug 1831451 - Fire a dequeue event when data is being decoded → Bug 1831451 - Fire a dequeue event when data is being decoded
Attachment #9331710 - Attachment description: WIP: Bug 1831451 - Implement VideoDecoder::Flush → Bug 1831451 - Implement VideoDecoder::Flush
Attachment #9331711 - Attachment description: WIP: Bug 1831451 - Guess color space from VideoData → Bug 1831451 - Guess color space from VideoData
Attachment #9331712 - Attachment description: WIP: Bug 1831451 - Guess pixel format from VideoData → Bug 1831451 - Guess pixel format from VideoData
Attachment #9331713 - Attachment description: WIP: Bug 1831451 - Allow constructing VideoFrame without pixel format → Bug 1831451 - Allow constructing VideoFrame without pixel format
Attachment #9336892 - Attachment description: WIP: Bug 1831451 - Match display ratio to aspect ratio → Bug 1831451 - Match display ratio to aspect ratio
Attachment #9336238 - Attachment description: WIP: Bug 1831451 - Unblock DecodeProcessor whenever possible → Bug 1831451 - Unblock DecodeProcessor whenever possible
Attachment #9331714 - Attachment description: WIP: Bug 1831451 - Enable WPTs → Bug 1831451 - Enable WPTs
Attachment #9336684 - Attachment description: WIP: Bug 1831451 - Revise dequeue event wpt → Bug 1831451 - Revise dequeue event wpt
Attachment #9336685 - Attachment description: WIP: Bug 1831451 - Revise decode-empty/corrupt-frame wpt → Bug 1831451 - Revise decode-empty/corrupt-frame wpt
Attachment #9336828 - Attachment description: WIP: Bug 1831451 - Downgrade BitReader::ReadBits's assertion to warning → Bug 1831451 - Downgrade BitReader::ReadBits's assertion to warning

If decoding results in an error, queue a task to run the Close
VideoDecoder algorithm with EncodingError and return

By the spec, in step 4-2 when running a control message for decode, the
flush queued after decode should be rejected with a EncodingError, via
Close algorithm, instead of AbortError.

Depends on D179583

Attachment #9336238 - Attachment is obsolete: true
Attachment #9336684 - Attachment is obsolete: true
Attachment #9336685 - Attachment is obsolete: true
Attachment #9336685 - Attachment is obsolete: false
Attachment #9336685 - Attachment description: Bug 1831451 - Revise decode-empty/corrupt-frame wpt → Bug 1831451 - Schedule to report error in Close()

This patch addes work-arounds to using MOZ_CAN_RUN_SCRIPT function in
nsIEventTarget::Dispatch and runnables. The MOZ_CAN_RUN_SCRIPT functions
should be executed onlt within another MOZ_CAN_RUN_SCRIPT function.
However, Dispatch functions have no MOZ_CAN_RUN_SCRIPT marks so this
patch addes work-arounds to avoid those kind of warnings.

Depends on D179515

Attachment #9339145 - Attachment description: Bug 1831451 - Run MOZ_CAN_RUN_SCRIPT function in runnables → Bug 1831451 - Avoid MOZ_CAN_RUN_SCRIPT warnings in runnables
Depends on: EncodedVideoChunk

Comment on attachment 9331698 [details]
Bug 1831451 - Add a blank EncodedVideoChunk interface

Revision D155892 was moved to bug 1838958. Setting attachment 9331698 [details] to obsolete.

Attachment #9331698 - Attachment is obsolete: true

Comment on attachment 9331699 [details]
Bug 1831451 - Implement EncodedVideoChunk

Revision D158238 was moved to bug 1838958. Setting attachment 9331699 [details] to obsolete.

Attachment #9331699 - Attachment is obsolete: true

Comment on attachment 9331701 [details]
Bug 1831451 - Add NS_WARN_IF to unlikely condition

Revision D158815 was moved to bug 1838958. Setting attachment 9331701 [details] to obsolete.

Attachment #9331701 - Attachment is obsolete: true

Depends on D180982

Depends on: 1839525
Depends on: 1839542

DecoderAgent is a class operating MediaDataDecoder. It combines multiple
MediaDataDecoder APIs into one to serve WebCodecs' needs.

Depends on D181818

Depends on D161356

Depends on D171809

Attachment #9340589 - Attachment description: Bug 1831451 - Implement Decode in DecoderAgent → Bug 1831451 - Add Decode() into DecoderAgent
Attachment #9340590 - Attachment description: Bug 1831451 - Implement Flush in DecoderAgent → Bug 1831451 - Add FlushOut() into DecoderAgent
Depends on: 1839993
Attachment #9331714 - Attachment description: Bug 1831451 - Enable WPTs → Bug 1831451 - Enable VideoDecoder WPTs

H264-annexb doesn't work on non-linux for now. This will be sovled in
Bug 1840192 later.

Depends on D179515

Attachment #9339145 - Attachment is obsolete: true

This patch replaces the using ControlMessage = Variant<...> by a
class ControlMessage, which wraps the common interfaces and variables
of the classes within the above Variant into a class.

Depends on D179515

Attachment #9340805 - Attachment description: Bug 1831451 - Disable H264 on non-Linux platforms → Bug 1831451 - Enable VideoDecoder on Linux only
Summary: Implement basic VideoDecoder → Implement basic VideoDecoder on Linux

To batter tracking the ControlMessage logs, ConfigureMessage should
generate a unique Id for itself and its following DecodeMessages and
FlushMessages. Besides, that unique id can be assigned to DecoderAgent
as well. As a result, it's easier to know what ConfigureMessage and
DecoderAgent the DecodeMessage/FlushMessage belongs.

This patch moves the id generation from DecoderAgent to ConfigureMessage
so the id can be used for both of DecoderAgent and ConfigureMessage.

Depends on D182124

Attachment #9340590 - Attachment description: Bug 1831451 - Add FlushOut() into DecoderAgent → Bug 1831451 - Add DrainAndFlush() into DecoderAgent
Attachment #9341426 - Attachment description: Bug 1831451 - Generate a unique Id for both ConfigureMessage and DecoderAgent → Bug 1831451 - Generate an unique Id for both ConfigureMessage and DecoderAgent
Attachment #9341426 - Attachment description: Bug 1831451 - Generate an unique Id for both ConfigureMessage and DecoderAgent → Bug 1831451 - Generate a unique Id for both ConfigureMessage and DecoderAgent
See Also: → 1840966
See Also: → 1840965
Pushed by cchang@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/eb17a0f3efdf Add a blank VideoDecoder interface r=webidl,padenot,edgar,smaug,saschanaz https://hg.mozilla.org/integration/autoland/rev/8f3c10480da7 Implement VideoDecoder::IsConfigSupported r=padenot https://hg.mozilla.org/integration/autoland/rev/4e7051264cb3 Implement VideoDecoder::Constructor r=padenot https://hg.mozilla.org/integration/autoland/rev/f615134b7349 Implement VideoDecoder::Reset r=padenot https://hg.mozilla.org/integration/autoland/rev/94ad056419ea Implement VideoDecoder::Close r=padenot https://hg.mozilla.org/integration/autoland/rev/8a3af1118791 Add a VideoColorSpace-to-ColorRange function r=padenot https://hg.mozilla.org/integration/autoland/rev/05ae55dd0cec Move VideoColorSpace-to-gfx-values functions to utils r=padenot https://hg.mozilla.org/integration/autoland/rev/0fca9e6c2ef6 Introduce DecoderAgent r=alwu https://hg.mozilla.org/integration/autoland/rev/68fae9bd7d92 Implement VideoDecoder::Configure r=padenot https://hg.mozilla.org/integration/autoland/rev/06f1008127bb Add Decode() into DecoderAgent r=padenot https://hg.mozilla.org/integration/autoland/rev/c8fdb24dd953 Implement VideoDecoder::Decode r=padenot https://hg.mozilla.org/integration/autoland/rev/00bf4fed8bcb Fire a dequeue event when data is being decoded r=padenot https://hg.mozilla.org/integration/autoland/rev/89cf8d2548a8 Add DrainAndFlush() into DecoderAgent r=padenot https://hg.mozilla.org/integration/autoland/rev/61be9a6b9cd4 Implement VideoDecoder::Flush r=padenot https://hg.mozilla.org/integration/autoland/rev/d7f55df2c2e4 Guess color space from VideoData r=aosmond https://hg.mozilla.org/integration/autoland/rev/1cf50ce36a73 Guess pixel format from VideoData r=aosmond https://hg.mozilla.org/integration/autoland/rev/f19cfef38d63 Allow constructing VideoFrame without pixel format r=padenot https://hg.mozilla.org/integration/autoland/rev/342a32c598fe Match display ratio to aspect ratio r=aosmond https://hg.mozilla.org/integration/autoland/rev/e2272bf547e1 Enable VideoDecoder WPTs r=padenot https://hg.mozilla.org/integration/autoland/rev/81c7ebd2aeb3 Downgrade BitReader::ReadBits's assertion to warning r=padenot https://hg.mozilla.org/integration/autoland/rev/f1b3b6d3186b Reject flush with EncodingError if decode fails r=padenot https://hg.mozilla.org/integration/autoland/rev/ecb08baa7f0e Schedule to report error in Close() r=padenot https://hg.mozilla.org/integration/autoland/rev/6892b88cb4ee Create a class for ControlMessage r=alwu https://hg.mozilla.org/integration/autoland/rev/cd30b650aeed Generate a unique Id for both ConfigureMessage and DecoderAgent r=alwu https://hg.mozilla.org/integration/autoland/rev/200c174fc2d1 Enable VideoDecoder on Linux only r=padenot https://hg.mozilla.org/integration/autoland/rev/91c2c0f7e9ab Enable VideoDecoder in idlharness wpt pages r=webidl,saschanaz https://hg.mozilla.org/integration/autoland/rev/4fb457340ffe Expose VideoDecoder in test_(worker_)interfaces.html r=webidl,saschanaz,padenot
Created web-platform-tests PR https://github.com/web-platform-tests/wpt/pull/40805 for changes under testing/web-platform/tests
Upstream PR was closed without merging

I've added additional fixes on top of D182476 and make it pass the hazard test:
https://treeherder.mozilla.org/jobs?repo=try&revision=3186420fde92bb56c5c288855de3e84f425c365b&selectedTaskRun=IBj231ftTZK5_tL-Xvk-rQ.0

I am going to merge my fixes into D182476 so we can land it.

Flags: needinfo?(cchang)
Pushed by cchang@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/77b0f5226ed8 Add a blank VideoDecoder interface r=webidl,padenot,edgar,smaug,saschanaz https://hg.mozilla.org/integration/autoland/rev/02cb31bfdc0f Implement VideoDecoder::IsConfigSupported r=padenot https://hg.mozilla.org/integration/autoland/rev/23bc44bf238c Implement VideoDecoder::Constructor r=padenot https://hg.mozilla.org/integration/autoland/rev/58a0e543998b Implement VideoDecoder::Reset r=padenot https://hg.mozilla.org/integration/autoland/rev/e06fd5d60970 Implement VideoDecoder::Close r=padenot https://hg.mozilla.org/integration/autoland/rev/981e50f618d0 Add a VideoColorSpace-to-ColorRange function r=padenot https://hg.mozilla.org/integration/autoland/rev/d62002584cf3 Move VideoColorSpace-to-gfx-values functions to utils r=padenot https://hg.mozilla.org/integration/autoland/rev/13f8ed81dca8 Introduce DecoderAgent r=alwu https://hg.mozilla.org/integration/autoland/rev/aea093a94985 Implement VideoDecoder::Configure r=padenot https://hg.mozilla.org/integration/autoland/rev/43451f9834e7 Add Decode() into DecoderAgent r=padenot https://hg.mozilla.org/integration/autoland/rev/226dda36eb9e Implement VideoDecoder::Decode r=padenot https://hg.mozilla.org/integration/autoland/rev/a86ecdaa1716 Fire a dequeue event when data is being decoded r=padenot https://hg.mozilla.org/integration/autoland/rev/57df271c6d6c Add DrainAndFlush() into DecoderAgent r=padenot https://hg.mozilla.org/integration/autoland/rev/290fcbe92f0a Implement VideoDecoder::Flush r=padenot https://hg.mozilla.org/integration/autoland/rev/0899b9a2539e Guess color space from VideoData r=aosmond https://hg.mozilla.org/integration/autoland/rev/b49ae6bc356a Guess pixel format from VideoData r=aosmond https://hg.mozilla.org/integration/autoland/rev/1ec020b42625 Allow constructing VideoFrame without pixel format r=padenot https://hg.mozilla.org/integration/autoland/rev/bdfa5574beda Match display ratio to aspect ratio r=aosmond https://hg.mozilla.org/integration/autoland/rev/20228a5c6504 Enable VideoDecoder WPTs r=padenot https://hg.mozilla.org/integration/autoland/rev/ad5a8d4e40e6 Downgrade BitReader::ReadBits's assertion to warning r=padenot https://hg.mozilla.org/integration/autoland/rev/30eaff96a933 Reject flush with EncodingError if decode fails r=padenot https://hg.mozilla.org/integration/autoland/rev/049d2679df84 Schedule to report error in Close() r=padenot https://hg.mozilla.org/integration/autoland/rev/b3c2b04d4a36 Create a class for ControlMessage r=alwu https://hg.mozilla.org/integration/autoland/rev/8fe486442687 Generate a unique Id for both ConfigureMessage and DecoderAgent r=alwu https://hg.mozilla.org/integration/autoland/rev/ff0876ea84c9 Enable VideoDecoder on Linux only r=padenot https://hg.mozilla.org/integration/autoland/rev/0ac162e771bb Enable VideoDecoder in idlharness wpt pages r=webidl,saschanaz https://hg.mozilla.org/integration/autoland/rev/7dd351fce5ad Expose VideoDecoder in test_(worker_)interfaces.html r=webidl,saschanaz,padenot https://hg.mozilla.org/integration/autoland/rev/6c61c412fe0b Don't use DOM objects internally in Web Codecs implementation. r=chunmin

Just found a unused-variable in the D182476. Here is the simple fix: https://phabricator.services.mozilla.com/D182533

It will be done with other issues in bug 1841193

https://hg.mozilla.org/mozilla-central/rev/77b0f5226ed8
https://hg.mozilla.org/mozilla-central/rev/02cb31bfdc0f
https://hg.mozilla.org/mozilla-central/rev/23bc44bf238c
https://hg.mozilla.org/mozilla-central/rev/58a0e543998b
https://hg.mozilla.org/mozilla-central/rev/e06fd5d60970
https://hg.mozilla.org/mozilla-central/rev/981e50f618d0
https://hg.mozilla.org/mozilla-central/rev/d62002584cf3
https://hg.mozilla.org/mozilla-central/rev/13f8ed81dca8
https://hg.mozilla.org/mozilla-central/rev/aea093a94985
https://hg.mozilla.org/mozilla-central/rev/43451f9834e7
https://hg.mozilla.org/mozilla-central/rev/226dda36eb9e
https://hg.mozilla.org/mozilla-central/rev/a86ecdaa1716
https://hg.mozilla.org/mozilla-central/rev/57df271c6d6c
https://hg.mozilla.org/mozilla-central/rev/290fcbe92f0a
https://hg.mozilla.org/mozilla-central/rev/0899b9a2539e
https://hg.mozilla.org/mozilla-central/rev/b49ae6bc356a
https://hg.mozilla.org/mozilla-central/rev/1ec020b42625
https://hg.mozilla.org/mozilla-central/rev/bdfa5574beda
https://hg.mozilla.org/mozilla-central/rev/20228a5c6504
https://hg.mozilla.org/mozilla-central/rev/ad5a8d4e40e6
https://hg.mozilla.org/mozilla-central/rev/30eaff96a933
https://hg.mozilla.org/mozilla-central/rev/049d2679df84
https://hg.mozilla.org/mozilla-central/rev/b3c2b04d4a36
https://hg.mozilla.org/mozilla-central/rev/8fe486442687
https://hg.mozilla.org/mozilla-central/rev/ff0876ea84c9
https://hg.mozilla.org/mozilla-central/rev/0ac162e771bb
https://hg.mozilla.org/mozilla-central/rev/7dd351fce5ad
https://hg.mozilla.org/mozilla-central/rev/6c61c412fe0b

Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 116 Branch
Component: Audio/Video → Audio/Video: Web Codecs
Upstream PR merged by moz-wptsync-bot
Regressions: 1849271
Regressions: 1903543
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: