Commit graph

96 commits

Author SHA1 Message Date
Fabrice Desré
c50cb528fc Bug 1761040 - Prefix thread safety macros with MOZ_ r=geckoview-reviewers,media-playback-reviewers,alwu,jesup,m_kato
Differential Revision: https://phabricator.services.mozilla.com/D152575
2022-08-03 16:39:41 +00:00
Andreea Pavel
3ccd75af8d Backed out changeset b9d2965591b9 (bug 1761040) for landing with wrong author CLOSED TREE DONTBUILD 2022-08-03 18:55:00 +03:00
Andreea Pavel
fdb7cb2ecd Bug 1761040 - Prefix thread safety macros with MOZ_ r=geckoview-reviewers,media-playback-reviewers,alwu,jesup,m_kato
Differential Revision: https://phabricator.services.mozilla.com/D152575
2022-08-03 15:27:43 +00:00
Andreea Pavel
89d63c91e6 Backed out changeset a907159a482f (bug 1761040) for causing build bustages on a CLOSED TREE 2022-08-02 04:59:08 +03:00
Fabrice Desré
0f4ac7ad97 Bug 1761040 - Prefix thread safety macros with MOZ_ r=geckoview-reviewers,media-playback-reviewers,alwu,jesup,m_kato
Differential Revision: https://phabricator.services.mozilla.com/D152575
2022-08-02 00:49:41 +00:00
az
534707da03 Bug 1766307 - Enable PDMFactory::Supports/SupportsMimeType to process+return HW/SW decode info r=media-playback-reviewers,alwu
Differential Revision: https://phabricator.services.mozilla.com/D147385
2022-07-22 23:08:08 +00:00
Cristian Tuns
296431b106 Backed out 8 changesets (bug 1754239, bug 1766307, bug 1766308, bug 1766310) for causing build bustages on Logging.h CLOSED TREE
Backed out changeset 50918938a839 (bug 1766307)
Backed out changeset 19800bb8974e (bug 1766307)
Backed out changeset 40ec82794497 (bug 1766310)
Backed out changeset 4f860e20098c (bug 1754239)
Backed out changeset f54eac410bfd (bug 1754239)
Backed out changeset c8cc5e0c89dd (bug 1766307)
Backed out changeset d7aab4098f12 (bug 1766308)
Backed out changeset a7ffa6f44fe8 (bug 1766307)
2022-07-19 21:20:07 -04:00
az
5d97400d50 Bug 1766307 - Enable PDMFactory::Supports/SupportsMimeType to process+return HW/SW decode info r=media-playback-reviewers,alwu
Differential Revision: https://phabricator.services.mozilla.com/D147385
2022-07-19 23:27:38 +00:00
Norisz Fay
82c8f892b0 Backed out 8 changesets (bug 1754239, bug 1766308, bug 1766307, bug 1766310) for causing build bustages on UtilityAudioDecoderParent.cpp CLOSED TREE
Backed out changeset e383703e28cf (bug 1766307)
Backed out changeset 5fb04c68ae7a (bug 1766307)
Backed out changeset ee76505a46ff (bug 1766310)
Backed out changeset d76eae67ae79 (bug 1754239)
Backed out changeset fed974dcf641 (bug 1754239)
Backed out changeset 67c5fbd546a1 (bug 1766307)
Backed out changeset da49735366d2 (bug 1766308)
Backed out changeset 81ccd31d0f07 (bug 1766307)
2022-07-14 04:03:19 +03:00
az
9eeb816180 Bug 1766307 - Enable PDMFactory::Supports/SupportsMimeType to process+return HW/SW decode info r=media-playback-reviewers,alwu
Differential Revision: https://phabricator.services.mozilla.com/D147385
2022-07-14 00:32:37 +00:00
alwu
9f4133b91f Bug 1758789 - part18 : disable the media engine feature on MinGW. r=media-playback-reviewers,firefox-build-system-reviewers,jolin,ahochheiden
On MinGW, it lacks of the headers for RunTimeClass and we have trouble to make it work. This patch adds a new config for Media Engine in order not to build related files on MinGW environment.

In addition, MinGW build version of Firefox is only used for Tor browser and it's ok to disable this feature for them for now. If they want to port this feature in the future as well, then we can see if we can fix the build problems at that time.

Differential Revision: https://phabricator.services.mozilla.com/D150660
2022-06-30 22:34:22 +00:00
smolnar
50d8d18c90 Backed out 18 changesets (bug 1758789) for causing win AArch64 build bustages. CLOSED TREE
Backed out changeset e3f1d216b7b0 (bug 1758789)
Backed out changeset 737731f1056d (bug 1758789)
Backed out changeset 76a2ae95718a (bug 1758789)
Backed out changeset c134ab07a603 (bug 1758789)
Backed out changeset 84f574f95348 (bug 1758789)
Backed out changeset 7dae17111210 (bug 1758789)
Backed out changeset cdec8c010960 (bug 1758789)
Backed out changeset a1976aeac84e (bug 1758789)
Backed out changeset 6aac8720ffa5 (bug 1758789)
Backed out changeset 48b798f102e5 (bug 1758789)
Backed out changeset 310e551d433b (bug 1758789)
Backed out changeset b3d6df1153c1 (bug 1758789)
Backed out changeset 61775207f73b (bug 1758789)
Backed out changeset f0c28aea2f4b (bug 1758789)
Backed out changeset 0a65ff00244a (bug 1758789)
Backed out changeset 0b747e748709 (bug 1758789)
Backed out changeset cdf4acea8c87 (bug 1758789)
Backed out changeset 0c4009da7d1e (bug 1758789)
2022-06-30 23:54:23 +03:00
alwu
1368dec887 Bug 1758789 - part18 : disable the media engine feature on MinGW. r=media-playback-reviewers,firefox-build-system-reviewers,jolin,ahochheiden
On MinGW, it lacks of the headers for RunTimeClass and we have trouble to make it work. This patch adds a new config for Media Engine in order not to build related files on MinGW environment.

In addition, MinGW build version of Firefox is only used for Tor browser and it's ok to disable this feature for them for now. If they want to port this feature in the future as well, then we can see if we can fix the build problems at that time.

Differential Revision: https://phabricator.services.mozilla.com/D150660
2022-06-30 18:14:50 +00:00
Alexandre Lissy
43ff7d79dd Bug 1770558 - Ensure proper handling of returned promise r=alwu
Differential Revision: https://phabricator.services.mozilla.com/D147158
2022-05-26 01:03:50 +00:00
Alexandre Lissy
edeb9a2237 Bug 1770086 - Cleanup static on shutdown r=alwu
Depends on D146567

Differential Revision: https://phabricator.services.mozilla.com/D146848
2022-05-19 23:50:59 +00:00
alwu
ba773486a6 Bug 1756260 - part5 : pass the engine Id via IPC. r=jolin
We need to padd the media engine Id to the remote process in order to create correct remote decoders.

Differential Revision: https://phabricator.services.mozilla.com/D143807
2022-05-11 17:46:13 +00:00
alwu
8f62b3b6f3 Bug 1756260 - part3 : implement a mechanism to communicate with the MediaEngine in the remote process. r=jolin
This patch implements a new IPDL which is used for communicating with the remote media engine. It will be used between the content process and the RDD process.

For each media engine pair, they would share an unique ID, which is used to indentify different engine pairs (if any) and for querying a specific engine via Id, which is implemented in the next patch.

Depends on D140014

Differential Revision: https://phabricator.services.mozilla.com/D139204
2022-05-11 17:46:13 +00:00
Cristian Tuns
df3db4d641 Backed out 10 changesets (bug 1756260) for causing build bustages on ExternalEngineStateMachine.obj CLOSED TREE
Backed out changeset d2339ec8194e (bug 1756260)
Backed out changeset 391201cf338b (bug 1756260)
Backed out changeset 1a9aa3f175d0 (bug 1756260)
Backed out changeset d624c80ba67f (bug 1756260)
Backed out changeset 46e8a8457044 (bug 1756260)
Backed out changeset 93245b0e2118 (bug 1756260)
Backed out changeset b69ee552b64e (bug 1756260)
Backed out changeset 9fc71b8478d5 (bug 1756260)
Backed out changeset 34b10d427f0f (bug 1756260)
Backed out changeset ed9640359f3a (bug 1756260)
2022-05-10 23:32:51 -04:00
alwu
f1a2bf741a Bug 1756260 - part5 : pass the engine Id via IPC. r=jolin
We need to padd the media engine Id to the remote process in order to create correct remote decoders.

Differential Revision: https://phabricator.services.mozilla.com/D143807
2022-05-11 02:57:19 +00:00
alwu
76281d27f2 Bug 1756260 - part3 : implement a mechanism to communicate with the MediaEngine in the remote process. r=jolin
This patch implements a new IPDL which is used for communicating with the remote media engine. It will be used between the content process and the RDD process.

For each media engine pair, they would share an unique ID, which is used to indentify different engine pairs (if any) and for querying a specific engine via Id, which is implemented in the next patch.

Depends on D140014

Differential Revision: https://phabricator.services.mozilla.com/D139204
2022-05-11 02:57:18 +00:00
Alexandre Lissy
c9368d48f0 Bug 1762067 - Distinguish crash in RDD vs Utility r=alwu
Differential Revision: https://phabricator.services.mozilla.com/D145345
2022-05-05 18:02:13 +00:00
Alexandre Lissy
57f891080f Bug 1755316 - Perform audio decoding on PUtilityAudioDecoder r=alwu,nika,jld,bobowen,haik
Differential Revision: https://phabricator.services.mozilla.com/D139593
2022-04-07 10:04:51 +00:00
stransky
4e0c599657 Bug 1670817 Throw NS_ERROR_DOM_MEDIA_REMOTE_DECODER_CRASHED_ERR error when RDD/GPU decoder crashes r=alwu
Differential Revision: https://phabricator.services.mozilla.com/D138269
2022-02-17 10:32:00 +00:00
Matt Woodrow
93058a0f5c Bug 1694248 - Don't assert if PBackground has been shut down when we try to create an RDD thread. r=bryce
This can fail if PBackground has been shut down, while the message was queued between threads.
It happens sometimes during xpcshell tests, and disabling OMTP makes it more common (but is unrelated, just changes timings).

The actual LaunchRDDProcessIfNeeded code also gracefully handles this failure mode, so not asserting shouldn't be a problem.

Depends on D106053

Differential Revision: https://phabricator.services.mozilla.com/D106824
2021-03-01 23:11:52 +00:00
Jean-Yves Avenard
dfb40277e0 Bug 1681043 - P3. Retrieve decoding capabilities in GPU or RDD process and pass it to content. r=alwu,bryce
Upon starting the RDD and GPU process; we check their decoding capabilities and send it to the parent process. It will then broadcast this information to all content children so that RemodeDecoderModule::Supports can return if a codec is supported or not.

Differential Revision: https://phabricator.services.mozilla.com/D100306
2021-01-06 09:05:31 +00:00
Mihai Alexandru Michis
f8a41209af Backed out 6 changesets (bug 1681043) for causing multiple failures.
CLOSED TREE

Backed out changeset ea075101dc94 (bug 1681043)
Backed out changeset 64d8abe2104d (bug 1681043)
Backed out changeset 5ecb208a85d3 (bug 1681043)
Backed out changeset 9319fdd0389c (bug 1681043)
Backed out changeset 25a015e84cc4 (bug 1681043)
Backed out changeset e8fac91d4012 (bug 1681043)
2021-01-04 07:43:08 +02:00
Jean-Yves Avenard
ff614fdaa3 Bug 1681043 - P3. Retrieve decoding capabilities in GPU or RDD process and pass it to content. r=alwu,bryce
Upon starting the RDD and GPU process; we check their decoding capabilities and send it to the parent process. It will then broadcast this information to all content children so that RemodeDecoderModule::Supports can return if a codec is supported or not.

Differential Revision: https://phabricator.services.mozilla.com/D100306
2021-01-03 23:21:54 +00:00
Bryce Seager van Dyk
0f3a7c7723 Bug 1680310 - Gracefully handle functions running after we Shutdown in RemoteDecoderManagerChild. r=jya
RemoteDecoderManagerChild has a number of functions that may be called
asynchronously. Many such functions assert that they can get the manager thread
and that they are on that thread. However, if we've already shutdown, the thread
they fetch will be null. Since we can enter shutdown while async executions of
these functions are pending, we may fail our asserts.

To avoid this, we instead check if the manager thread is null in these
functions, if so, we assume we're in shutdown and bail. If the thread is not
null, we continue as before and assert we are running on the thread as expected.

Differential Revision: https://phabricator.services.mozilla.com/D99824
2020-12-21 15:03:01 +00:00
Simon Giesecke
ae75be244a Bug 1677466 - Split Endpoint.h and ProtocolMessageUtils.h from ProtocolUtils.h. r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D93568

Depends on D93567
2020-11-23 16:06:42 +00:00
Simon Giesecke
971b645fe3 Bug 1660470 - Add missing include directives/forward declarations. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D87865
2020-11-23 16:21:38 +00:00
Matt Woodrow
560f6df526 Bug 1664831. r=sotaro
Differential Revision: https://phabricator.services.mozilla.com/D94549
2020-11-16 22:41:08 +00:00
Jean-Yves Avenard
44ad5e249a Bug 1672072 - P9. Make EnsureRDDProcessAndCreateBridge an async API. r=mattwoodrow,bryce,mjf,padenot,ipc-reviewers,mccr8
We can now chaincreation of the decoder to the launch of the RDD process as needed and setting up the PRemoteDecoderManager

Differential Revision: https://phabricator.services.mozilla.com/D96365
2020-11-13 04:21:16 +00:00
Jean-Yves Avenard
6d2df84e41 Bug 1672072 - P8. Create decoder asynchronously. r=mattwoodrow,bryce,padenot,mjf,ipc-reviewers,mccr8
PDMFactory::CreateDecoder is changed to return a MozPromise that will contain the MediaDataDecoder once created.

This will allow to later make RemoteDecoderManager fully asynchronous and no longer require an IPC sync call to start the RDD process.

We also modify the WebrtcMediaDataDecoderCodec to never create a decoder on the main thread, which could cause deadlocks under some circumstances.

Differential Revision: https://phabricator.services.mozilla.com/D96364
2020-11-13 07:46:44 +00:00
Jean-Yves Avenard
d05265e239 Bug 1672072 - P6. Don't attempt to create a video decoder if we don't have a KnowsCompositor set. r=mattwoodrow,bryce,mjf,padenot
Differential Revision: https://phabricator.services.mozilla.com/D96362
2020-11-13 04:21:15 +00:00
Jean-Yves Avenard
98c87940d6 Bug 1672072 - P3. Remove IRemoteDecoderChild.h class. r=mattwoodrow,padenot,mjf,bryce
There's no longer have a GpuDecoderModule and RemoteGpuDecoder.

So we no longer need the IRemoteDecoderChild abstraction layer.

Differential Revision: https://phabricator.services.mozilla.com/D96359
2020-11-13 04:21:14 +00:00
Bogdan Tara
266d9ad46c Backed out 13 changesets (bug 1672072) for short.mp4.firstframe.html failures CLOSED TREE
Backed out changeset f093b7969e8b (bug 1672072)
Backed out changeset 28db8276ec2b (bug 1672072)
Backed out changeset ff8fe1b856b3 (bug 1672072)
Backed out changeset 091b9449c786 (bug 1672072)
Backed out changeset 89d9a12c0737 (bug 1672072)
Backed out changeset 9cb71fd4b43b (bug 1672072)
Backed out changeset 09adad7416e1 (bug 1672072)
Backed out changeset 9905650335ef (bug 1672072)
Backed out changeset 6f1d99e9c3a1 (bug 1672072)
Backed out changeset b59655b7a595 (bug 1672072)
Backed out changeset 1ef9d6d10508 (bug 1672072)
Backed out changeset fbf0b5117655 (bug 1672072)
Backed out changeset 65cd3b9de5c6 (bug 1672072)
2020-11-13 06:13:22 +02:00
Jean-Yves Avenard
8ffdd4eaef Bug 1672072 - P9. Make EnsureRDDProcessAndCreateBridge an async API. r=mattwoodrow,bryce,mjf,padenot,ipc-reviewers,mccr8
We can now chaincreation of the decoder to the launch of the RDD process as needed and setting up the PRemoteDecoderManager

Differential Revision: https://phabricator.services.mozilla.com/D96365
2020-11-12 22:53:49 +00:00
Jean-Yves Avenard
7a6315ba80 Bug 1672072 - P8. Create decoder asynchronously. r=mattwoodrow,bryce,padenot,mjf,ipc-reviewers,mccr8
PDMFactory::CreateDecoder is changed to return a MozPromise that will contain the MediaDataDecoder once created.

This will allow to later make RemoteDecoderManager fully asynchronous and no longer require an IPC sync call to start the RDD process.

We also modify the WebrtcMediaDataDecoderCodec to never create a decoder on the main thread, which could cause deadlocks under some circumstances.

Differential Revision: https://phabricator.services.mozilla.com/D96364
2020-11-12 22:53:31 +00:00
Jean-Yves Avenard
9cc5491a92 Bug 1672072 - P6. Don't attempt to create a video decoder if we don't have a KnowsCompositor set. r=mattwoodrow,bryce,mjf,padenot
Differential Revision: https://phabricator.services.mozilla.com/D96362
2020-11-12 22:52:23 +00:00
Jean-Yves Avenard
520136022c Bug 1672072 - P3. Remove IRemoteDecoderChild.h class. r=mattwoodrow,padenot,mjf,bryce
There's no longer have a GpuDecoderModule and RemoteGpuDecoder.

So we no longer need the IRemoteDecoderChild abstraction layer.

Differential Revision: https://phabricator.services.mozilla.com/D96359
2020-11-12 22:51:47 +00:00
Jean-Yves Avenard
c938c7416c Bug 1674043 - P6. Remove sync PDecoderMananger::Supports API. r=mattwoodrow,bryce,mjf,ipc-reviewers,nika
In bug 1595994 we attempted to streamline the ability to determine which decoder was available regardless of the process they would be running in. This was subsequently done via the PDMFactory.

As there are several JS API that can query which codec are supported, it requires a synchronous mechanism.
This allowed to make a determination during the PlatformDecoderModule::Supports call, depending on which process it was going to be called frome.

Having a synchronous IPC call to the RemoteDecoderManagerParent has too many caveats to be workable.
So what we do instead is first determine at launch if the required external framework are available and pass this information to each content process.

When checking if a decoder is available, we make a best guess at determining if the PDM would support such codec, without actually loading such framework when running in the content process.

Supports can no longer make a decision based on the process currently running and as such PDM::CreateAudio/VideoDecoder using an optional system framework now need to further check the validity of the CreateDecoderParam argument.

Differential Revision: https://phabricator.services.mozilla.com/D95245
2020-11-04 02:22:33 +00:00
Jean-Yves Avenard
6307ec0451 Bug 1595994 - P26. Simplify and rename RecvLaunchRDDProcess. r=mattwoodrow,nika,ipc-reviewers
And we remove unnecessary checks, BackgroundParent only run in the parent process and if e10s is on. Also RecvLauchRDDProcess will only ever be called if the rdd pref is on already.

By streamlining the call we also reduce the number of sync dispatch to 1.

Depends on D93317

Differential Revision: https://phabricator.services.mozilla.com/D93476
2020-10-20 23:32:57 +00:00
Jean-Yves Avenard
d06384295b Bug 1595994 - P25. Have launch rdd be signalled over the PBackground channel. r=mattwoodrow,nika,ipc-reviewers
This remove the need for a sync dispatch to the main thread, that lead to deadlocks.

Depends on D93316

Differential Revision: https://phabricator.services.mozilla.com/D93317
2020-10-20 23:32:54 +00:00
Jean-Yves Avenard
1be0cb8c2c Bug 1595994 - P24. Always initialize Remote Decoder Manager thread early. r=mattwoodrow
Some cleanup on how we create the RemoteDecoderChild object, simplifying and clarifying.

Depends on D92362

Differential Revision: https://phabricator.services.mozilla.com/D93316
2020-10-20 23:31:11 +00:00
Jean-Yves Avenard
38bf12582e Bug 1595994 - P1A. Don't assume the RDD process launch always succeeded. r=mattwoodrow
Depends on D91696

Differential Revision: https://phabricator.services.mozilla.com/D91698
2020-10-20 23:29:09 +00:00
Dan Glastonbury
77bf32c70e Bug 1595994 - P9: Allow LaunchRDDProcess() to be called from MainThread without hanging. r=mattwoodrow
Depends on D54880

Differential Revision: https://phabricator.services.mozilla.com/D54882
2020-10-20 23:26:33 +00:00
Dan Glastonbury
c3920c64e7 Bug 1595994 - P8: Use RemoteDecoderModule to communicate with GPU and RDD. r=mattwoodrow
Depends on D54879

Differential Revision: https://phabricator.services.mozilla.com/D54880
2020-10-20 23:26:30 +00:00
Dan Glastonbury
a70a2c09f1 Bug 1595994 - P7: Add Supports messages to PRemoteDecoderManager. r=kamidphish,nika,ipc-reviewers
Add a synchronous Supports message to the IPDL PRemoteDecoderManager protocol so
decoder modules can query for playback support in the actual process that will
attempt to do the decoding.

Depends on D54878

Differential Revision: https://phabricator.services.mozilla.com/D54879
2020-10-20 23:26:27 +00:00
Dan Glastonbury
29f6310810 Bug 1595994 - P2: Make RemoteDecoderManagerChild responsible for creation of remote decoders. r=kamidphish,mattwoodrow
Fly-by fix potential races when accessing the manager's thread.

Depends on D52796

Differential Revision: https://phabricator.services.mozilla.com/D52797
2020-10-20 23:23:58 +00:00
Dan Glastonbury
5cc27aec49 Bug 1595994 - P1: Move LaunchRDDProcessIfNeeded to RemoteDecoderManagerChild. r=kamidphish
It uses data and threads from the RemoteDecoderManagerChild not
RemoteDecoderModule.

Differential Revision: https://phabricator.services.mozilla.com/D52796
2020-10-20 23:23:40 +00:00