Add telemetry to collect the following:
- Number of times a MediaRecorder is started during a session
- Duration of media recordings
- How often we're timing out init of audio and video track encoders
MozReview-Commit-ID: 9Pc2oKNCH1M
--HG--
extra : rebase_source : 16414a5ffa95413458d36295e5508df4c16e6fa9
The main purpose of this patch is to make the TrackEncoders run in a TaskQueue
to avoid multi-threaded access to members, and to change to track listeners to
allow for recording all kinds of tracks (the description of bug 1296531).
MozReview-Commit-ID: EtLXaDDBPdy
--HG--
extra : rebase_source : 5761bb2c7d5832f69cc80129e5160f173e8168c7
extra : source : 24b2a67ddf5a621a5cf58af5b9e363dac3071775
The AudioTrackEncoder has logic to attempt to init when given an AudioSegment.
This logic has previously been part of NotifyQueuedTrackChanges. This
changeset moves the logic to its own method. This allows for finer testing of
the init attempt behaviour.
MozReview-Commit-ID: Der1iM9J8fr
--HG--
extra : rebase_source : bb47dd483d69349482a6d8882e9768b1a8d09480
Utilize ImageUtils to detect the bitmap format of images passed to the VP8
encoder, rather than duplicating this functionality in the encoder. Resolve an
issue with incorrect identification of unevenly sized I420 frames that was
breaking screen capture based MediaRecorder. clang-format code which has been
touched.
MozReview-Commit-ID: 4IfKSYxGuAX
--HG--
extra : rebase_source : 837caee9668b935ff9e627479b6e905208cbe4cf
As well as the obvious #ifdefs, this allows DOMHwMediaStream to be
removed, and also the "phone-state-changed" observer.
--HG--
extra : rebase_source : 373280183e228bd4b9bd9d866959409f2444c77e
This patch makes the following changes to the macros.
- Removes PROFILER_LABEL_FUNC. It's only suitable for use in functions outside
classes, due to PROFILER_FUNCTION_NAME not getting class names, and it was
mostly misused.
- Removes PROFILER_FUNCTION_NAME. It's no longer used, and __func__ is
universally available now anyway.
- Combines the first two string literal arguments of PROFILER_LABEL and
PROFILER_LABEL_DYNAMIC into a single argument. There was no good reason for
them to be separate, and it forced a '::' in the label, which isn't always
appropriate. Also, the meaning of the "name_space" argument was interpreted
in an interesting variety of ways.
- Adds an "AUTO_" prefix to PROFILER_LABEL and PROFILER_LABEL_DYNAMIC, to make
it clearer they construct RAII objects rather than just being function calls.
(I myself have screwed up the scoping because of this in the past.)
- Fills in the 'js::ProfileEntry::Category::' qualifier within the macro, so
the caller doesn't need to. This makes a *lot* more of the uses fit onto a
single line.
The patch also makes the following changes to the macro uses (beyond those
required by the changes described above).
- Fixes a bunch of labels that had gotten out of sync with the name of the
class and/or function that encloses them.
- Removes a useless PROFILER_LABEL use within a trivial scope in
EventStateManager::DispatchMouseOrPointerEvent(). It clearly wasn't serving
any useful purpose. It also serves as extra evidence that the AUTO_ prefix is
a good idea.
- Tweaks DecodePool::SyncRunIf{Preferred,Possible} so that the labelling is
done within them, instead of at their callsites, because that's a more
standard way of doing things.
--HG--
extra : rebase_source : 318d1bc6fc1425a94aacbf489dd46e4f83211de4
The switch from duration to time stamp based samples has removed the need for
this logic.
MozReview-Commit-ID: 7J6oQf7qn4u
--HG--
extra : rebase_source : 5ab566c03c4af0ab1067e814fdd51fa8879e95f1
1. using media::TimeUnit to save some typing.
2. replace TimeUnit() with TimeUnit::Zero().
3. replace TimeUnit::FromXXX(0) with TimeUnit::Zero().
4. replace TimeUnit::FromMicroseconds(std::numeric_limits<int64_t>::max()) with TimeUnit::FromInfinity().
5. replace some uses of int64_t with TimeUnit.
6. replace t > TimeUnit() with t.IsPositive().
MozReview-Commit-ID: 6hC94PXx86i
--HG--
extra : rebase_source : 1ea3b409e6ec12915f3e1a00359d6ff4152c8917
extra : intermediate-source : e31a12ad0e7a4840119036f261ed17eaaff85734
extra : source : ae07ee48000c4a52da0e4fd502b4d690ec51ce1f
Everything depending on the widget being gonk can go away, as well as
everything depending on MOZ_AUDIO_CHANNEL_MANAGER, which was only
defined on gonk builds under b2g/ (which goes away in bug 1357326).
--HG--
extra : rebase_source : 9f0aeeb7eea8417fa4e06d662d566d67ecaf2a24
This changeset updates the handling of the variables based on
chunk.GetDuration() within the OpusTrackEncoder. This changeset alters places
where overflow could have taken place previously. It also adds asserts with
the dual purpose of defense and documentation for future developers.
MozReview-Commit-ID: 28vmAfE84ik
--HG--
extra : rebase_source : ebbd5f0d55c793324aec6b095dbe5403a7bf7b4c
extra : source : 21705a96856dc54a3330de9a55f19eef31badeec
For very long chunks, the opus encoder could run into issues with processing.
This changeset seeks to address that by using CheckedInt to prevent a potential
int overflow when encountering extremely long durations.
MozReview-Commit-ID: 7uLZAARLf5w
--HG--
extra : rebase_source : 9519ce2a9e171c2e56fa445699770ab84596cdad
extra : source : fdbc277dbcc49c3a6785bfefe4ba7d80e03817d2
This was a mix of Android logging for b2g and normal logging and also noop
logging statement. This makes everything use MOZ_LOG.
MozReview-Commit-ID: BGE2JVcCVdF
mCanceled is one member which is protected only in a couple of places.
I hit a MOZ_CRASH without this in a gtest, but I'm not sure if we haven't seen
it in release by chance or by design.
MozReview-Commit-ID: 61KpjaBDyhB
--HG--
extra : rebase_source : 4ab032ee2963cd7e94d19b8428e6405ffa59332e
extra : source : 06b2f8307ad0c96197e75d2e147e660d8085afc7
This makes VideoTrackEncoder use timestamps when it passes frames to
VP8TrackEncoder. It also rewrites the chunks' durations and bases them on said
timestamps. This should mean that VP8TrackEncoder can continue passing durations
to the encoder as it does today.
MozReview-Commit-ID: GaUsF5PR4ZN
--HG--
extra : rebase_source : 4206afe24fce0d9c0aa7137ea04d8a28f30191d7
This makes VideoTrackEncoder use timestamps when it passes frames to
VP8TrackEncoder. It also rewrites the chunks' durations and bases them on said
timestamps. This should mean that VP8TrackEncoder can continue passing durations
to the encoder as it does today.
MozReview-Commit-ID: GaUsF5PR4ZN
--HG--
extra : rebase_source : 763a71a4327ce0505efc7732c3eda93c48667b01