mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 08:15:31 +00:00
Bug 1151378: Part2. Remove libstagefright depencies from Crypto config. r=edwin
This commit is contained in:
parent
f17c6eb49e
commit
1d47a88bf2
@ -81,19 +81,9 @@ FindData(sp<MetaData>& aMetaData, uint32_t aKey, ByteBuffer* aDest)
|
||||
}
|
||||
|
||||
bool
|
||||
CryptoFile::DoUpdate(sp<MetaData>& aMetaData)
|
||||
CryptoFile::DoUpdate(const uint8_t* aData, size_t aLength)
|
||||
{
|
||||
const void* data;
|
||||
size_t size;
|
||||
uint32_t type;
|
||||
|
||||
// There's no point in checking that the type matches anything because it
|
||||
// isn't set consistently in the MPEG4Extractor.
|
||||
if (!aMetaData->findData(kKeyPssh, &type, &data, &size)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ByteReader reader(reinterpret_cast<const uint8_t*>(data), size);
|
||||
ByteReader reader(aData, aLength);
|
||||
while (reader.Remaining()) {
|
||||
PsshInfo psshInfo;
|
||||
if (!reader.ReadArray(psshInfo.uuid, 16)) {
|
||||
@ -113,23 +103,6 @@ CryptoFile::DoUpdate(sp<MetaData>& aMetaData)
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
CryptoTrack::Update(sp<MetaData>& aMetaData)
|
||||
{
|
||||
valid = aMetaData->findInt32(kKeyCryptoMode, &mode) &&
|
||||
aMetaData->findInt32(kKeyCryptoDefaultIVSize, &iv_size) &&
|
||||
FindData(aMetaData, kKeyCryptoKey, &key);
|
||||
}
|
||||
|
||||
void
|
||||
CryptoSample::Update(sp<MetaData>& aMetaData)
|
||||
{
|
||||
CryptoTrack::Update(aMetaData);
|
||||
valid = valid && FindData(aMetaData, kKeyPlainSizes, &plain_sizes) &&
|
||||
FindData(aMetaData, kKeyEncryptedSizes, &encrypted_sizes) &&
|
||||
FindData(aMetaData, kKeyCryptoIV, &iv);
|
||||
}
|
||||
|
||||
void
|
||||
TrackConfig::Update(sp<MetaData>& aMetaData, const char* aMimeType)
|
||||
{
|
||||
@ -137,7 +110,9 @@ TrackConfig::Update(sp<MetaData>& aMetaData, const char* aMimeType)
|
||||
duration = FindInt64(aMetaData, kKeyDuration);
|
||||
media_time = FindInt64(aMetaData, kKeyMediaTime);
|
||||
mTrackId = FindInt32(aMetaData, kKeyTrackID);
|
||||
crypto.Update(aMetaData);
|
||||
crypto.valid = aMetaData->findInt32(kKeyCryptoMode, &crypto.mode) &&
|
||||
aMetaData->findInt32(kKeyCryptoDefaultIVSize, &crypto.iv_size) &&
|
||||
FindData(aMetaData, kKeyCryptoKey, &crypto.key);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -45,30 +45,28 @@ struct PsshInfo
|
||||
class CryptoFile
|
||||
{
|
||||
public:
|
||||
CryptoFile() {}
|
||||
CryptoFile() : valid(false) {}
|
||||
CryptoFile(const CryptoFile& aCryptoFile) : valid(aCryptoFile.valid)
|
||||
{
|
||||
pssh.AppendElements(aCryptoFile.pssh);
|
||||
}
|
||||
|
||||
void Update(stagefright::sp<stagefright::MetaData>& aMetaData)
|
||||
void Update(const uint8_t* aData, size_t aLength)
|
||||
{
|
||||
valid = DoUpdate(aMetaData);
|
||||
valid = DoUpdate(aData, aLength);
|
||||
}
|
||||
|
||||
bool valid;
|
||||
nsTArray<PsshInfo> pssh;
|
||||
|
||||
private:
|
||||
bool DoUpdate(stagefright::sp<stagefright::MetaData>& aMetaData);
|
||||
bool DoUpdate(const uint8_t* aData, size_t aLength);
|
||||
};
|
||||
|
||||
class CryptoTrack
|
||||
{
|
||||
public:
|
||||
CryptoTrack() : valid(false) {}
|
||||
void Update(stagefright::sp<stagefright::MetaData>& aMetaData);
|
||||
|
||||
bool valid;
|
||||
int32_t mode;
|
||||
int32_t iv_size;
|
||||
@ -78,12 +76,9 @@ public:
|
||||
class CryptoSample : public CryptoTrack
|
||||
{
|
||||
public:
|
||||
void Update(stagefright::sp<stagefright::MetaData>& aMetaData);
|
||||
|
||||
nsTArray<uint16_t> plain_sizes;
|
||||
nsTArray<uint32_t> encrypted_sizes;
|
||||
nsTArray<uint8_t> iv;
|
||||
|
||||
nsTArray<nsCString> session_ids;
|
||||
};
|
||||
|
||||
|
@ -82,6 +82,7 @@ protected:
|
||||
~MP4Demuxer();
|
||||
|
||||
private:
|
||||
void UpdateCrypto(const stagefright::MetaData* aMetaData);
|
||||
AudioDecoderConfig mAudioConfig;
|
||||
VideoDecoderConfig mVideoConfig;
|
||||
CryptoFile mCrypto;
|
||||
|
@ -138,7 +138,7 @@ MP4Demuxer::Init()
|
||||
}
|
||||
}
|
||||
sp<MetaData> metaData = e->getMetaData();
|
||||
mCrypto.Update(metaData);
|
||||
UpdateCrypto(metaData.get());
|
||||
|
||||
int64_t movieDuration;
|
||||
if (!mVideoConfig.duration && !mAudioConfig.duration &&
|
||||
@ -151,6 +151,21 @@ MP4Demuxer::Init()
|
||||
return mPrivate->mAudio.get() || mPrivate->mVideo.get();
|
||||
}
|
||||
|
||||
void
|
||||
MP4Demuxer::UpdateCrypto(const MetaData* aMetaData)
|
||||
{
|
||||
const void* data;
|
||||
size_t size;
|
||||
uint32_t type;
|
||||
|
||||
// There's no point in checking that the type matches anything because it
|
||||
// isn't set consistently in the MPEG4Extractor.
|
||||
if (!aMetaData->findData(kKeyPssh, &type, &data, &size)) {
|
||||
return;
|
||||
}
|
||||
mCrypto.Update(reinterpret_cast<const uint8_t*>(data), size);
|
||||
}
|
||||
|
||||
bool
|
||||
MP4Demuxer::HasValidAudio()
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user