зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset ddc1ce464361 (bug 1374774)
This commit is contained in:
Родитель
18f07bbb9d
Коммит
9d3e7b7424
|
@ -727,11 +727,46 @@ H264::vui_parameters(BitReader& aBr, SPSData& aDest)
|
|||
H264::DecodeSPSFromExtraData(const mozilla::MediaByteBuffer* aExtraData,
|
||||
SPSData& aDest)
|
||||
{
|
||||
SPSNALIterator it(aExtraData);
|
||||
if (!it) {
|
||||
if (!HasSPS(aExtraData)) {
|
||||
return false;
|
||||
}
|
||||
return (*it).GetSPSData(aDest);
|
||||
ByteReader reader(aExtraData);
|
||||
|
||||
if (!reader.Read(5)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
uint8_t numSps = reader.ReadU8() & 0x1f;
|
||||
if (!numSps) {
|
||||
// No SPS.
|
||||
return false;
|
||||
}
|
||||
|
||||
if (numSps > 1) {
|
||||
NS_WARNING("Multiple SPS, only decoding the first one");
|
||||
}
|
||||
|
||||
uint16_t length = reader.ReadU16();
|
||||
if (length == 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((reader.PeekU8() & 0x1f) != H264_NAL_SPS) {
|
||||
// Not a SPS NAL type.
|
||||
return false;
|
||||
}
|
||||
const uint8_t* ptr = reader.Read(length);
|
||||
if (!ptr) {
|
||||
return false;
|
||||
}
|
||||
|
||||
RefPtr<mozilla::MediaByteBuffer> sps = DecodeNALUnit(ptr, length);
|
||||
|
||||
if (!sps) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return DecodeSPS(sps, aDest);
|
||||
}
|
||||
|
||||
/* static */ bool
|
||||
|
|
Загрузка…
Ссылка в новой задаче