Bug 1345756: [MSE] P4. Pre-roll AAC by 2112 audio frames. r?gerald
MozReview-Commit-ID: K09DyZMzbY7
--- 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();
}