Bug 1345756: [MSE] P4. Pre-roll AAC by 2112 audio frames. r?gerald draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Thu, 09 Mar 2017 10:57:02 +0100
changeset 496774 12f3640ac1dbaa276784383e02f9fad2cc50490b
parent 496773 b4f52f481c49f32664c4aabe1f7ad28b5c44a5e4
child 496886 3d9f179d1213323ea6c5d4583de6d3be8b8f91a8
push id48688
push userbmo:jyavenard@mozilla.com
push dateFri, 10 Mar 2017 17:25:09 +0000
reviewersgerald
bugs1345756
milestone55.0a1
Bug 1345756: [MSE] P4. Pre-roll AAC by 2112 audio frames. r?gerald MozReview-Commit-ID: K09DyZMzbY7
dom/media/mediasource/MediaSourceDemuxer.cpp
--- a/dom/media/mediasource/MediaSourceDemuxer.cpp
+++ b/dom/media/mediasource/MediaSourceDemuxer.cpp
@@ -297,18 +297,25 @@ MediaSourceTrackDemuxer::MediaSourceTrac
                                                  TrackInfo::TrackType aType,
                                                  TrackBuffersManager* aManager)
   : mParent(aParent)
   , mManager(aManager)
   , mType(aType)
   , mMonitor("MediaSourceTrackDemuxer")
   , mReset(true)
   , mPreRoll(TimeUnit::FromMicroseconds(
-      OpusDataDecoder::IsOpus(mParent->GetTrackInfo(mType)->mMimeType) ? 80000
-                                                                       : 0))
+      OpusDataDecoder::IsOpus(mParent->GetTrackInfo(mType)->mMimeType)
+      ? 80000
+      : mParent->GetTrackInfo(mType)->mMimeType.EqualsLiteral("audio/mp4a-latm")
+        // AAC encoder delay is by default 2112 audio frames.
+        // See https://developer.apple.com/library/content/documentation/QuickTime/QTFF/QTFFAppenG/QTFFAppenG.html
+        // So we always seek 2112 frames
+        ? (2112 * 1000000ULL
+           / mParent->GetTrackInfo(mType)->GetAsAudioInfo()->mRate)
+        : 0))
 {
 }
 
 UniquePtr<TrackInfo>
 MediaSourceTrackDemuxer::GetInfo() const
 {
   return mParent->GetTrackInfo(mType)->Clone();
 }