From 47478520c9e47b6900acf2e5fb59692fd174316d Mon Sep 17 00:00:00 2001 From: Karl Tomlinson Date: Wed, 28 Jun 2023 01:14:46 +0000 Subject: [PATCH] Bug 1838365 skip intermediate microseconds converting video frame start and end TimeUnits directly to TrackTime r=padenot to avoid unnecessary rounding. Differential Revision: https://phabricator.services.mozilla.com/D181427 --- dom/media/mediasink/DecodedStream.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/dom/media/mediasink/DecodedStream.cpp b/dom/media/mediasink/DecodedStream.cpp index 86254493ee68..2d4f2b4af877 100644 --- a/dom/media/mediasink/DecodedStream.cpp +++ b/dom/media/mediasink/DecodedStream.cpp @@ -826,16 +826,14 @@ void DecodedStreamData::WriteVideoToSegment( VideoSegment* aOutput, const PrincipalHandle& aPrincipalHandle, double aPlaybackRate) { RefPtr image = aImage; - auto end = - mVideoTrack->MicrosecondsToTrackTimeRoundDown(aEnd.ToMicroseconds()); - auto start = - mVideoTrack->MicrosecondsToTrackTimeRoundDown(aStart.ToMicroseconds()); aOutput->AppendFrame(image.forget(), aIntrinsicSize, aPrincipalHandle, false, aTimeStamp); // Extend this so we get accurate durations for all frames. // Because this track is pushed, we need durations so the graph can track // when playout of the track has finished. MOZ_ASSERT(aPlaybackRate > 0); + TrackTime start = aStart.ToTicksAtRate(mVideoTrack->mSampleRate); + TrackTime end = aEnd.ToTicksAtRate(mVideoTrack->mSampleRate); aOutput->ExtendLastFrameBy( static_cast((float)(end - start) / aPlaybackRate)); -- 2.11.4.GIT