Bug 1322070: P2. Add virtual methods to retrieve TrackInfo. r=gerald

MozReview-Commit-ID: AepxIr1qkei

--HG--
extra : rebase_source : 95d1ea67166e03dcef551dc9921effb722c56919
This commit is contained in:
Jean-Yves Avenard 2016-12-05 18:06:11 +11:00
parent 716c21f071
commit 36c61f8abc
3 changed files with 17 additions and 9 deletions

View File

@ -1345,10 +1345,10 @@ FlacState::GetTags()
return mParser.GetTags();
}
const AudioInfo&
FlacState::Info()
const TrackInfo*
FlacState::GetInfo() const
{
return mParser.mInfo;
return &mParser.mInfo;
}
bool

View File

@ -224,6 +224,12 @@ public:
// True when all headers packets have been read.
bool mDoneReadingHeaders;
virtual const TrackInfo* GetInfo() const
{
MOZ_RELEASE_ASSERT(false, "Can't be called directly");
return nullptr;
}
// Validation utility for vorbis-style tag names.
static bool IsValidVorbisTagName(nsCString& aName);
@ -618,7 +624,7 @@ public:
// Return a hash table with tag metadata.
MetadataTags* GetTags() override;
const AudioInfo& Info();
const TrackInfo* GetInfo() const override;
private:
bool ReconstructFlacGranulepos(void);

View File

@ -471,7 +471,7 @@ OggDemuxer::SetupTargetFlac(FlacState* aFlacState, OggHeaders& aHeaders)
mFlacState->Reset();
}
mInfo.mAudio = aFlacState->Info();
mInfo.mAudio = *aFlacState->GetInfo()->GetAsAudioInfo();
mFlacState = aFlacState;
mFlacSerial = aFlacState->mSerial;
}
@ -582,7 +582,7 @@ OggDemuxer::SetupMediaTracksInfo(const nsTArray<uint32_t>& aSerials)
InitTrack(msgInfo, &mInfo.mAudio, mFlacState == flacState);
}
mInfo.mAudio = flacState->Info();
mInfo.mAudio = *flacState->GetInfo()->GetAsAudioInfo();
FillTags(&mInfo.mAudio, flacState->GetTags());
}
}
@ -863,8 +863,10 @@ OggDemuxer::ReadOggChain(const media::TimeUnit& aLastEndTime)
OggHeaders flacHeaders;
if ((newFlacState &&
ReadHeaders(TrackInfo::kAudioTrack, newFlacState, flacHeaders)) &&
(mFlacState->Info().mRate == newFlacState->Info().mRate) &&
(mFlacState->Info().mChannels == newFlacState->Info().mChannels)) {
(mFlacState->GetInfo()->GetAsAudioInfo()->mRate ==
newFlacState->GetInfo()->GetAsAudioInfo()->mRate) &&
(mFlacState->GetInfo()->GetAsAudioInfo()->mChannels ==
newFlacState->GetInfo()->GetAsAudioInfo()->mChannels)) {
SetupTargetFlac(newFlacState, flacHeaders);
LOG(LogLevel::Debug, ("New flac ogg link, serial=%d\n", mFlacSerial));
@ -873,7 +875,7 @@ OggDemuxer::ReadOggChain(const media::TimeUnit& aLastEndTime)
InitTrack(msgInfo, &mInfo.mAudio, true);
}
mInfo.mAudio = newFlacState->Info();
mInfo.mAudio = *newFlacState->GetInfo()->GetAsAudioInfo();
chained = true;
tags = newFlacState->GetTags();
}