зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1362440 - part4 : parsing entire content to decide whether it's init segment. r=jya
The spec [1] defines what's the init segment, and the parser would return error if the format is not correct. [1] https://w3c.github.io/media-source/webm-byte-stream-format.html MozReview-Commit-ID: 3nFHHdn5b89 --HG-- extra : rebase_source : 66fe592958801c4f9e2115f7729df2b9ece55ac3
This commit is contained in:
Родитель
65c50bf89e
Коммит
c683d23150
|
@ -133,28 +133,19 @@ public:
|
|||
MediaResult IsInitSegmentPresent(MediaByteBuffer* aData) override
|
||||
{
|
||||
ContainerParser::IsInitSegmentPresent(aData);
|
||||
// XXX: This is overly primitive, needs to collect data as it's appended
|
||||
// to the SB and handle, rather than assuming everything is present in a
|
||||
// single aData segment.
|
||||
// 0x1a45dfa3 // EBML
|
||||
// ...
|
||||
// DocType == "webm"
|
||||
// ...
|
||||
// 0x18538067 // Segment (must be "unknown" size or contain a value large
|
||||
// enough to include the Segment Information and Tracks
|
||||
// elements that follow)
|
||||
// 0x1549a966 // -> Segment Info
|
||||
// 0x1654ae6b // -> One or more Tracks
|
||||
|
||||
// 0x1a45dfa3 // EBML
|
||||
if (aData->Length() < 4) {
|
||||
return NS_ERROR_NOT_AVAILABLE;
|
||||
}
|
||||
if ((*aData)[0] == 0x1a && (*aData)[1] == 0x45 && (*aData)[2] == 0xdf &&
|
||||
(*aData)[3] == 0xa3) {
|
||||
return NS_OK;
|
||||
|
||||
WebMBufferedParser parser(0);
|
||||
nsTArray<WebMTimeDataOffset> mapping;
|
||||
ReentrantMonitor dummy("dummy");
|
||||
bool result = parser.Append(aData->Elements(), aData->Length(), mapping,
|
||||
dummy);
|
||||
if (!result) {
|
||||
return MediaResult(NS_ERROR_FAILURE, RESULT_DETAIL("Invalid webm content"));
|
||||
}
|
||||
return MediaResult(NS_ERROR_FAILURE, RESULT_DETAIL("Invalid webm content"));
|
||||
return parser.mInitEndOffset > 0 ? NS_OK : NS_ERROR_NOT_AVAILABLE;
|
||||
}
|
||||
|
||||
MediaResult IsMediaSegmentPresent(MediaByteBuffer* aData) override
|
||||
|
|
Загрузка…
Ссылка в новой задаче