Граф коммитов

144 Коммитов

Автор SHA1 Сообщение Дата
Bryce Seager van Dyk 2013fbe962 Bug 1530897 - Detect and avoid a couple of potential overflows when parsing WebMs. r=kinetik
This adds 2 checks to deal with overflow related issues when parsing webms.
- Detect uint64 overflows when calculating buffered ranges. This is unlikely,
  but appears like something that could conceptually happen given the data types
  involved. This isn't strictly needed to fix the bug, but figured I'd guard
  against it while I'm in the code.
- Detect issues from uint64 -> int64 conversion when calculating TimeUnits in
  the WebM parser. This is needed to fix the bug, as while we do some checks
  that start <= end, we were not guarding against this following TimeUnit
  conversion. My understanding is we should never encounter negative TimeUnits
  for the code in question, so the added check bails if any negative values are
  encountered.

Differential Revision: https://phabricator.services.mozilla.com/D105506
2021-02-17 21:09:49 +00:00
Andi-Bogdan Postelnicu ea26376de0 Bug 1671641 - Make `dom/media/webm` buildable outside of `unified-build` environment. r=sg
Depends on D95040

Differential Revision: https://phabricator.services.mozilla.com/D95041
2020-10-29 08:54:14 +00:00
Simon Giesecke 1e02318b49 Bug 1653335 - Replace MakeSpan uses by constructor calls. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D83817
2020-08-07 07:49:47 +00:00
Simon Giesecke cd8b8939b9 Bug 1648010 - Replace uses of NS_LITERAL_STRING/NS_LITERAL_CSTRING macros by _ns literals. r=geckoview-reviewers,jgilbert,agi,hsivonen,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D80860
2020-07-01 08:29:29 +00:00
Emilio Cobos Álvarez 04436b8041 Bug 1599843 - WebMDemuxer::Reset is infallible. r=jya
Depends on D54987

Differential Revision: https://phabricator.services.mozilla.com/D54988

--HG--
extra : moz-landing-system : lando
2019-11-28 00:12:11 +00:00
Bryce Seager van Dyk 566e4b6e4e Bug 1582518 - Replace IntervalSet.Length usages with IsEmpty where appropriate. r=dminor
This replaces the instances where Length was being called on an interval set
to determine if it was empty or not empty. IsEmpty makes the intention in these
cases more immediately obvious, and avoids the need to think about ints as
bools in cases like `if(!mySet.Length())`.

Depends on D46638

Differential Revision: https://phabricator.services.mozilla.com/D46639

--HG--
extra : moz-landing-system : lando
2019-09-20 19:41:53 +00:00
Andreas Pehrson 466372ade8 Bug 1014393 - Use undef-after-def pattern in MediaRecorder and related files. r=bryce
Differential Revision: https://phabricator.services.mozilla.com/D37700

--HG--
extra : moz-landing-system : lando
2019-08-05 10:05:28 +00:00
Andreea Pavel d95d878a50 Backed out 15 changesets (bug 1014393) for causing test_mediarecorder_record_gum_video_timeslice_mixed.html a=backout
Backed out changeset 83a1758bc6fa (bug 1014393)
Backed out changeset be1f1f82f92c (bug 1014393)
Backed out changeset 21ec9e104912 (bug 1014393)
Backed out changeset ea6314a61a77 (bug 1014393)
Backed out changeset e35a1a354bb5 (bug 1014393)
Backed out changeset 5c4b5620be2e (bug 1014393)
Backed out changeset 579d7f15d4f2 (bug 1014393)
Backed out changeset f9a9b2fc3335 (bug 1014393)
Backed out changeset c49241bad727 (bug 1014393)
Backed out changeset fc24872739e4 (bug 1014393)
Backed out changeset fd846ac16731 (bug 1014393)
Backed out changeset 4b11f19aa613 (bug 1014393)
Backed out changeset 4a57b865b461 (bug 1014393)
Backed out changeset 147d5aeaab46 (bug 1014393)
Backed out changeset c58e17df9c99 (bug 1014393)

--HG--
rename : dom/media/encoder/EncodedFrame.h => dom/media/encoder/EncodedFrameContainer.h
2019-08-03 20:23:02 +03:00
Andreea Pavel 5f860a304f Backed out changeset 6954782553c7 (bug 1014393) for build bustages a=backout 2019-08-03 20:09:29 +03:00
Gurzau Raul 3d31a9b7c0 Backed out 15 changesets (bug 1014393) for permafailing at test_mediarecorder_record_gum_video_timeslice_mixed.html a=backout 2019-08-03 19:22:18 +03:00
Andreas Pehrson 217959703e Bug 1014393 - Use undef-after-def pattern in MediaRecorder and related files. r=bryce
Differential Revision: https://phabricator.services.mozilla.com/D37700

--HG--
extra : moz-landing-system : lando
2019-08-01 08:48:39 +00:00
Gurzau Raul bcc3fa9613 Backed out 15 changesets (bug 1014393) for build bustage at TestMuxer.cpp on a CLOSED TREE.
Backed out changeset e6d834f3786e (bug 1014393)
Backed out changeset 2d880ea6e67c (bug 1014393)
Backed out changeset 9a087b7459cc (bug 1014393)
Backed out changeset 0dd76879ff03 (bug 1014393)
Backed out changeset b88188e0d590 (bug 1014393)
Backed out changeset 24f244ea8fff (bug 1014393)
Backed out changeset 0e85d193f8ff (bug 1014393)
Backed out changeset 12f932aeb3e9 (bug 1014393)
Backed out changeset 8bcbc931942b (bug 1014393)
Backed out changeset a16bcc633362 (bug 1014393)
Backed out changeset bf46f2a2e519 (bug 1014393)
Backed out changeset aa508d83a2c3 (bug 1014393)
Backed out changeset 085fb3e97aaa (bug 1014393)
Backed out changeset e872361b9f3b (bug 1014393)
Backed out changeset b4fb228c8624 (bug 1014393)

--HG--
rename : dom/media/encoder/EncodedFrame.h => dom/media/encoder/EncodedFrameContainer.h
2019-07-31 23:28:47 +03:00
Andreas Pehrson 0123e701dd Bug 1014393 - Use undef-after-def pattern in MediaRecorder and related files. r=bryce
Differential Revision: https://phabricator.services.mozilla.com/D37700

--HG--
extra : moz-landing-system : lando
2019-07-31 11:30:26 +00:00
alwu 441473d744 Bug 1563949 - part4 : prevent direct usage of 'AppendElement()' to append sample. r=jya
We should always append sample by using `AppendSample()` to assert whether a sample is valid, so making `mSamples` private can prevent a direct usage of the nsTarry's `AppendElement()`.
Also provide a method to return non-const mSamples which is only used for the move semantics.

Differential Revision: https://phabricator.services.mozilla.com/D38427

--HG--
extra : moz-landing-system : lando
2019-07-19 21:11:21 +00:00
alwu 44cfc7989a Bug 1563949 - part3 : handle invalid sample in demuxer. r=jya
Return demux error when we get a invalid sample. For mp4 demuxer, we use `MOZ_DIAGNOSTIC_ASSERT` instead because we are pretty sure that it won't happen.

Differential Revision: https://phabricator.services.mozilla.com/D38553

--HG--
extra : moz-landing-system : lando
2019-07-19 20:48:15 +00:00
alwu 424b48c982 Bug 1563949 - part2 : add 'AppendSample' to assert that a sample should always be valid r=jya
We don't want to have a sample with invalid time, duration, end time or end timecode, so add a diagnostic assertion to check. And will handle invalid sample for demuxers in next patch.

Differential Revision: https://phabricator.services.mozilla.com/D38426

--HG--
extra : moz-landing-system : lando
2019-07-19 20:16:26 +00:00
Mihai Alexandru Michis e0b0dfa5eb Backed out 15 changesets (bug 1014393) for causing bustages in TestMuxer.cpp and gmock-internal-utils.h CLOSED TREE
Backed out changeset 0ddbdbfa87f6 (bug 1014393)
Backed out changeset 37399c83d3bf (bug 1014393)
Backed out changeset fe652475a785 (bug 1014393)
Backed out changeset 2812ca77d87d (bug 1014393)
Backed out changeset 6755ef7b361c (bug 1014393)
Backed out changeset 72e545bdcce3 (bug 1014393)
Backed out changeset 2f030ee55722 (bug 1014393)
Backed out changeset e9416b502170 (bug 1014393)
Backed out changeset 5a01d6d44634 (bug 1014393)
Backed out changeset 3457a5065dc4 (bug 1014393)
Backed out changeset 2a4999e0475b (bug 1014393)
Backed out changeset 0be3804dc04e (bug 1014393)
Backed out changeset 234994d8f136 (bug 1014393)
Backed out changeset d17f91ff2014 (bug 1014393)
Backed out changeset 25f58baa8159 (bug 1014393)

--HG--
rename : dom/media/encoder/EncodedFrame.h => dom/media/encoder/EncodedFrameContainer.h
2019-07-12 17:18:23 +03:00
Andreas Pehrson 221a8dfeca Bug 1014393 - Use undef-after-def pattern in MediaRecorder and related files. r=bryce
Differential Revision: https://phabricator.services.mozilla.com/D37700

--HG--
extra : moz-landing-system : lando
2019-07-12 13:42:00 +00:00
Bryce Van Dyk 378a61073b Bug 1540580 - WebM demuxer skips empty samples. r=jya
The mp4 demuxer already does this, so have the WebM case follow suit. This
avoids asserts with creating 0 size shmems in the case where the demuxer is
being used with the remote data decoder.

Differential Revision: https://phabricator.services.mozilla.com/D25846

--HG--
extra : moz-landing-system : lando
2019-04-30 15:12:30 +00:00
Csoregi Natalia fa43158851 Backed out 2 changesets (bug 1540580) for crashtest assertion failures on RemoteDecoderManagerParent.cpp. CLOSED TREE
Backed out changeset a9048220ad8b (bug 1540580)
Backed out changeset 5b14f480129c (bug 1540580)
2019-04-05 19:16:46 +03:00
Bryce Van Dyk 785f1e67db Bug 1540580 - WebM demuxer skips empty samples. r=jya
The mp4 demuxer already does this, so have the WebM case follow suit. This
avoids asserts with creating 0 size shmems in the case where the demuxer is
being used with the remote data decoder.

Differential Revision: https://phabricator.services.mozilla.com/D25846

--HG--
extra : moz-landing-system : lando
2019-04-05 12:23:11 +00:00
Jean-Yves Avenard 92251eaa4f Bug 1532858 - Ensure metadata values are sane. r=kinetik
Differential Revision: https://phabricator.services.mozilla.com/D22484

--HG--
extra : moz-landing-system : lando
2019-03-15 02:30:09 +00:00
Jean-Yves Avenard 38ff00ec95 Bug 1530835 - Set frame duration to 0 when out of order frames are seen. r=bryce
WebM specify that timestamp must be monotonically increasing. Unfortunately, this is not always the case.

WebM doesn't have a concept of frame duration, the duration is calculated as being the delta between the next frame's time and the current one. So non-monotonically increasing timestamps would have caused negative duration.

Differential Revision: https://phabricator.services.mozilla.com/D21687

--HG--
extra : moz-landing-system : lando
2019-03-01 18:56:01 +00:00
Bryce Van Dyk 79377d1363 Bug 1504060 - Log instead of asserting that webm samples do not have timestamps > segment druation. r=alwu
We're able to hit this assertion in the wild due to bad muxers. As such, replace
the assert with a log. If a sample has a time stamp > the segment duration, use
that instead of the duration for calculating our next time stamp. Use an
explicit int64_t type in the signature for our next time stamp calculation
as the logging explicitly expects an int64_t (makes it harder to change the
types involved and footgunning by having a wrong formatter in the logs).

Differential Revision: https://phabricator.services.mozilla.com/D21717

--HG--
extra : moz-landing-system : lando
2019-03-01 18:20:00 +00:00
Ehsan Akhgari e5e885ae31 Bug 1521000 - Part 2: Adjust our clang-format rules to include spaces after the hash for nested preprocessor directives r=sylvestre
# ignore-this-changeset

--HG--
extra : amend_source : 7221c8d15a765df71171099468e7c7faa648f37c
extra : histedit_source : a0cce6015636202bff09e35a13f72e03257a7695
2019-01-18 10:16:18 +01:00
Bryce Van Dyk fa9d86fda5 Bug 1487416 - Replace mValid and mMode with mCryptoScheme for track and sample crypto structs. r=jya
Explicitly store the crypto scheme being used on our crypto structs to let us
differentiate between cenc and cbcs data. In doing so remove mMode and replace
mValid with IsEncrypted() for the following reasons:
- Different modes within the existing schemes are not currently utilized by the
  spec: the scheme implies mode. Having a mode and a scheme could lead to confusion
  between the two. We can return mMode if ever needed by the spec --
  possibly if the isProtected flag which we were tracking with mMode, is
  ever changed to be more than a bool in the spec.
- mValid was typically used to check if these structs contained valid crypto
  data or not. With only one scheme this was often shorthand for 'IsEncrypted',
  but with multiple schemes what is considered valid data for one may not be for
  another. Do away with this and just explicitly have an 'IsEncrypted'.

Differential Revision: https://phabricator.services.mozilla.com/D15874

--HG--
extra : moz-landing-system : lando
2019-01-11 15:29:45 +00:00
Cosmin Sabou 15939f75f2 Backed out 6 changesets (bug 1487416) for causing Android build bustages on RemoteDataDecoder.cpp. CLOSED TREE
Backed out changeset 05bcc598e9fb (bug 1487416)
Backed out changeset b99936efbbc9 (bug 1487416)
Backed out changeset ee55b284223e (bug 1487416)
Backed out changeset d25449127f8f (bug 1487416)
Backed out changeset f7c201b7f9bc (bug 1487416)
Backed out changeset 233aedc8b42e (bug 1487416)
2019-01-10 23:37:20 +02:00
Bryce Van Dyk 1a3a965df3 Bug 1487416 - Replace mValid and mMode with mCryptoScheme for track and sample crypto structs. r=jya
Explicitly store the crypto scheme being used on our crypto structs to let us
differentiate between cenc and cbcs data. In doing so remove mMode and replace
mValid with IsEncrypted() for the following reasons:
- Different modes within the existing schemes are not currently utilized by the
  spec of implementation. Having a mode and a scheme could lead to confusion
  between the two. We can return mMode if ever needed by the spec.
- mValid was typically used to check if these structs contained valid crypto
  data or not. With only one scheme this was often shorthand for 'IsEncrypted',
  but with multiple schemes what is considered valid data for one may not be for
  another. Do away with this and just explicitly have an 'IsEncrypted'.

Differential Revision: https://phabricator.services.mozilla.com/D15874

--HG--
extra : moz-landing-system : lando
2019-01-10 18:37:48 +00:00
Jean-Yves Avenard 3d5c3c9538 Bug 1512456 - P4. Replace assert with MOZ_ASSERT. r=alwu
Differential Revision: https://phabricator.services.mozilla.com/D14027

--HG--
extra : moz-landing-system : lando
2018-12-11 10:46:25 +00:00
Jean-Yves Avenard cf0ff88211 Bug 1512456 - P1. Don't use GenericPromise with MediaSink. r=alwu
The VideoSink shares the AudioSink's own EndedPromise to notify its user that it has ended. As such, the MozPromise used must be non-exclusive.
Using the GenericPromise for such purpose only hid that requirement.

We also remove the MediaSink from the media namespace, and clarify the naming of some arguments and class members to accurately describe what they do.

Differential Revision: https://phabricator.services.mozilla.com/D14024

--HG--
extra : moz-landing-system : lando
2018-12-11 10:44:51 +00:00
Sylvestre Ledru 804b8b8883 Bug 1204606 - Reformat of dom/media r=jya
# skip-blame

Differential Revision: https://phabricator.services.mozilla.com/D12251

--HG--
extra : moz-landing-system : lando
2018-11-19 13:25:37 +00:00
Jean-Yves Avenard 6aea43ac23 Bug 1497951 - P6. Remove resolution detection in webm demuxer. r=bryce
This is now done in the MediaChangeMonitor.

Depends on D10912

Differential Revision: https://phabricator.services.mozilla.com/D10913

--HG--
extra : moz-landing-system : lando
2018-11-07 13:49:53 +00:00
Bryce Van Dyk 8d1b27c4a2 Bug 1492915 - Stop WebMDemuxer from inspecting partially encrypted packets for keyframe information. r=jya
Differential Revision: https://phabricator.services.mozilla.com/D6415

--HG--
extra : moz-landing-system : lando
2018-09-21 15:58:13 +00:00
alwu 863b4b7a26 Bug 1476649 - part2 : adjust next-timestamp for the last frame r=jya
When reading samples from plain file resource, if we can't get the duration from sample, that means it's the last sample. Therefore, the next timestamp should be the track's duration.

Differential Revision: https://phabricator.services.mozilla.com/D6217

--HG--
extra : moz-landing-system : lando
2018-09-20 08:27:56 +00:00
alwu 56b18353de Bug 1476649 - part1 : reuse same pattern code. r=jya
As audio track sample and video track sample are both using the same code pattern, we can eliminate
redundant codes.

Differential Revision: https://phabricator.services.mozilla.com/D6216

--HG--
extra : moz-landing-system : lando
2018-09-19 21:05:32 +00:00
Bryce Van Dyk d3c1de1214 Bug 1491117 - Do not add crypto info to unencrypted samples from encrypted WebM tracks. r=jya
WebMs with encrypted tracks may have unencrypted samples in these tracks.
Previously we would populate some of the crypto metadata on these samples. This
data was correct, but it was potentially misleading to include crypto metadata on
clear samples.

This changeset alters the behaviour so that we do not populate any such data for
unencrypted packets. This should not alter existing behaviour, notably the
Widevine CDM version 9 should continue to work. However, this change makes our
samples easier to feed to version 10 of the CDM. Without this change, we would
need to do extra conversion steps to appease the new CDM.

Differential Revision: https://phabricator.services.mozilla.com/D6183

--HG--
extra : moz-landing-system : lando
2018-09-19 17:09:29 +00:00
Emilio Cobos Álvarez fffb25b74f Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj
This was done automatically replacing:

  s/mozilla::Move/std::move/
  s/ Move(/ std::move(/
  s/(Move(/(std::move(/

Removing the 'using mozilla::Move;' lines.

And then with a few manual fixups, see the bug for the split series..

MozReview-Commit-ID: Jxze3adipUh
2018-06-01 10:45:27 +02:00
Nathan Froyd a31fa9e19c Bug 1453437 - return UniquePtr from MediaRawData::CreateWriter; r=gerald
Returning UniquePtr is nicer than returning raw pointers, and has the
nice side effect of forcing us to clean up the uses of nsAutoPtr that
were hanging about.
2018-04-12 15:28:21 -04:00
Dorel Luca f41b03eca9 Backed out changeset 38577c007450 (bug 1424371) for Marionett test failure on testing/marionette/harness/marionette_harness/tests/unit/test_window_maximize.py. CLOSED TREE 2018-02-19 22:15:23 +02:00
Milan Sreckovic 7571df7e7c Bug 1424371: Use BaseRect access methods instead of member variables in dom/ r=qdot
MozReview-Commit-ID: HXWhggOMIEK

--HG--
extra : rebase_source : 9c9eacf80d2b7f78faa82a1549170b98d12cdaa8
2018-02-19 12:56:10 -05:00
Gerald Squelart c5aeab4f69 Bug 1407810 - Use DDMOZ_LOG in media stack - r=jwwang
Mostly-mechanical replacement of MOZ_LOG with DDMOZ_LOG, usually just removing
the class name and `this` pointer (as they are already implicitly recorded).
Some files needed a bit more work when logging was done from helper classes or
static functions.

MozReview-Commit-ID: IeJJmzYqWMQ

--HG--
extra : rebase_source : 94200838dcdaf6c3bda9de30042ce2d307237eef
2017-10-13 16:31:59 +11:00
Gerald Squelart 1b357db99b Bug 1407810 - Use DDLogger in media stack - r=jwwang
Mostly-mechanical additions:
- Log constructions&destructions, usually by just inheriting from
  DecoderDoctorLifeLogger, otherwise with explicit log commands (for internal
  classes for which DecoderDoctorTraits can't be specialized),
- Log links between most objects, e.g.: Media element -> decoder -> state
  machine -> reader -> demuxer -> resource, etc.

And logging some important properties and events (JS events, duration change,
frames being decoded, etc.)

More will be added later on, from just converting MOZ_LOGs, and as needed.

MozReview-Commit-ID: KgNhHSz35t0

--HG--
extra : rebase_source : dd7206e350e32671adc6f3b9e54ebf777251de2c
2017-10-10 17:55:27 +11:00
Gerald Squelart b0442493e5 Bug 1405531 - Remove unused MediaDataDemuxer::HasTrackType - r=jwwang
The only actual code use in MediaSourceDemuxer can trivially be folded into
its caller GetNumberTracks in the same class.

MozReview-Commit-ID: E6zh98zmJwJ

--HG--
extra : rebase_source : 9358dc37523d6cd7c1a4d5ec62a790db6a092063
2017-10-04 11:40:29 +11:00
Jean-Yves Avenard ac1d631264 Bug 1393087 - P3: Retry backward to find keyframe. r=kinetik
When we seek in a webm containing an alpha channel, the first frame of a cluster may not be a keyframe for both channels. So seek backward until we find one.

We limit such operation on video with an alpha channel to prevent potential regression (even though thoses files would technically be invalid)

MozReview-Commit-ID: 14ETazkQ0AG

--HG--
extra : rebase_source : 8e106a382605c23769da5a8da5b88d107833cc6e
2017-09-25 16:47:08 +02:00
Jean-Yves Avenard c7f6c04dad Bug 1393087 - P1. Only consider a video frame as keyframe if both channels are keyframes. r=kinetik
We want both the normal and alpha channels to be keyframe.

MozReview-Commit-ID: 9hHo7v97R3s

--HG--
extra : rebase_source : c531b8947b96760ad03e4dc75e6431706ebaa5a5
2017-09-25 15:59:47 +02:00
Jean-Yves Avenard 9349efba14 Bug 1396515: Fix incorrect && and || operator placements. r=sylvestre
Includes some side 80 columns fix.

MozReview-Commit-ID: IXRoQfM0Hjc

--HG--
extra : rebase_source : 918cf87b2ce82c8de245dcb23cc359289ac5f21f
2017-09-04 11:27:43 +02:00
Jean-Yves Avenard 64a4b87c4c Bug 1394591 - P6. Simplify some internal codec mimetype. r=gerald
The codec mimetype is now shown in the media devtools. May as well make it readable.

MozReview-Commit-ID: 6rccDiTR24m

--HG--
extra : rebase_source : 7b8d1da8f05d0c46d5fd57b5e604ec3aed36a5f2
2017-09-01 23:04:39 +02:00
Sebastian Hengst e9bfcd79f9 Backed out changeset de401d17868d (bug 1394591) 2017-09-04 00:06:51 +02:00
Jean-Yves Avenard 9b2818843f Bug 1394591 - P6. Simplify some internal codec mimetype. r=gerald
The codec mimetype is now shown in the media devtools. May as well make it readable.

MozReview-Commit-ID: 6rccDiTR24m

--HG--
extra : rebase_source : 7b8d1da8f05d0c46d5fd57b5e604ec3aed36a5f2
2017-09-01 23:04:39 +02:00
Chris Pearce ec0ac75c45 Bug 1394648 - Switch from nsInt{Point,Rect,Size} to gfx::Int{Point,Rect,Size} in dom/media. r=jwwang
The nsRect.h and nsSize.h headers typedef nsIntRect to gfx::IntRect etc, so the
rect/size objects we use will be the same, just under a different name.
However the old headers #include a bunch of things we don't use, so we if we
use the gfx objects directly we end up with a smaller include graph.

MozReview-Commit-ID: 7S4OSqBJK9m

--HG--
extra : rebase_source : 7cc48507356ce754e8395af957fa68a28711e00a
2017-08-29 14:00:33 +12:00