зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1440195 Add a random context seed for AudioContext and MediaStream r=baku
MozReview-Commit-ID: sHpVCgd8Fs --HG-- extra : rebase_source : e1bbeab189b7a64c4ce051b74bc19a706b0fa1e8
This commit is contained in:
Родитель
16f0facaae
Коммит
3d9500b9f6
|
@ -572,8 +572,12 @@ DOMMediaStream::CurrentTime()
|
|||
if (!mPlaybackStream) {
|
||||
return 0.0;
|
||||
}
|
||||
// The value of a MediaStream's CurrentTime will always advance forward; it will never
|
||||
// reset (even if one rewinds a video.) Therefore we can use a single Random Seed
|
||||
// initialized at the same time as the object.
|
||||
return nsRFPService::ReduceTimePrecisionAsSecs(mPlaybackStream->
|
||||
StreamTimeToSeconds(mPlaybackStream->GetCurrentTime() - mLogicalStreamStartTime));
|
||||
StreamTimeToSeconds(mPlaybackStream->GetCurrentTime() - mLogicalStreamStartTime),
|
||||
GetRandomTimelineSeed());
|
||||
}
|
||||
|
||||
already_AddRefed<Promise>
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include "nsIPrincipal.h"
|
||||
#include "MediaTrackConstraints.h"
|
||||
#include "mozilla/DOMEventTargetHelper.h"
|
||||
#include "mozilla/RelativeTimeline.h"
|
||||
#include "PrincipalChangeObserver.h"
|
||||
|
||||
// X11 has a #define for CurrentTime. Unbelievable :-(.
|
||||
|
@ -202,7 +203,8 @@ protected:
|
|||
* (pointing to t2 in A')
|
||||
*/
|
||||
class DOMMediaStream : public DOMEventTargetHelper,
|
||||
public dom::PrincipalChangeObserver<dom::MediaStreamTrack>
|
||||
public dom::PrincipalChangeObserver<dom::MediaStreamTrack>,
|
||||
public RelativeTimeline
|
||||
{
|
||||
friend class DOMLocalMediaStream;
|
||||
friend class dom::MediaStreamTrack;
|
||||
|
|
|
@ -650,11 +650,15 @@ AudioContext::DestinationStream() const
|
|||
}
|
||||
|
||||
double
|
||||
AudioContext::CurrentTime() const
|
||||
AudioContext::CurrentTime()
|
||||
{
|
||||
MediaStream* stream = Destination()->Stream();
|
||||
// The value of a MediaStream's CurrentTime will always advance forward; it will never
|
||||
// reset (even if one rewinds a video.) Therefore we can use a single Random Seed
|
||||
// initialized at the same time as the object.
|
||||
return nsRFPService::ReduceTimePrecisionAsSecs(
|
||||
stream->StreamTimeToSeconds(stream->GetCurrentTime()));
|
||||
stream->StreamTimeToSeconds(stream->GetCurrentTime()),
|
||||
GetRandomTimelineSeed());
|
||||
}
|
||||
|
||||
void AudioContext::DisconnectFromOwner()
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include "mozilla/DOMEventTargetHelper.h"
|
||||
#include "mozilla/MemoryReporting.h"
|
||||
#include "mozilla/dom/TypedArray.h"
|
||||
#include "mozilla/RelativeTimeline.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsCycleCollectionParticipant.h"
|
||||
|
@ -117,7 +118,8 @@ private:
|
|||
enum class AudioContextOperation { Suspend, Resume, Close };
|
||||
|
||||
class AudioContext final : public DOMEventTargetHelper,
|
||||
public nsIMemoryReporter
|
||||
public nsIMemoryReporter,
|
||||
public RelativeTimeline
|
||||
{
|
||||
AudioContext(nsPIDOMWindowInner* aParentWindow,
|
||||
bool aIsOffline,
|
||||
|
@ -181,7 +183,7 @@ public:
|
|||
|
||||
bool ShouldSuspendNewStream() const { return mSuspendCalled; }
|
||||
|
||||
double CurrentTime() const;
|
||||
double CurrentTime();
|
||||
|
||||
AudioListener* Listener();
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче