mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-26 02:17:34 +09:00
Merge remote-tracking branch 'origin/tracking' into custom
This commit is contained in:
commit
44f397bea2
7 changed files with 93 additions and 36 deletions
|
|
@ -1343,7 +1343,6 @@ StructuredCloneHolder::CustomReadTransferHandler(JSContext* aCx,
|
|||
static_cast<OffscreenCanvasCloneData*>(aContent);
|
||||
nsCOMPtr<nsIGlobalObject> parent = do_QueryInterface(mParent);
|
||||
RefPtr<OffscreenCanvas> canvas = OffscreenCanvas::CreateFromCloneData(parent, data);
|
||||
delete data;
|
||||
|
||||
JS::Rooted<JS::Value> value(aCx);
|
||||
if (!GetOrCreateDOMReflector(aCx, canvas, &value)) {
|
||||
|
|
@ -1351,6 +1350,7 @@ StructuredCloneHolder::CustomReadTransferHandler(JSContext* aCx,
|
|||
return false;
|
||||
}
|
||||
|
||||
delete data;
|
||||
aReturnObject.set(&value.toObject());
|
||||
return true;
|
||||
}
|
||||
|
|
@ -1363,7 +1363,6 @@ StructuredCloneHolder::CustomReadTransferHandler(JSContext* aCx,
|
|||
static_cast<ImageBitmapCloneData*>(aContent);
|
||||
nsCOMPtr<nsIGlobalObject> parent = do_QueryInterface(mParent);
|
||||
RefPtr<ImageBitmap> bitmap = ImageBitmap::CreateFromCloneData(parent, data);
|
||||
delete data;
|
||||
|
||||
JS::Rooted<JS::Value> value(aCx);
|
||||
if (!GetOrCreateDOMReflector(aCx, bitmap, &value)) {
|
||||
|
|
@ -1371,6 +1370,7 @@ StructuredCloneHolder::CustomReadTransferHandler(JSContext* aCx,
|
|||
return false;
|
||||
}
|
||||
|
||||
delete data;
|
||||
aReturnObject.set(&value.toObject());
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
#include "nsHyphenationManager.h"
|
||||
#include "nsHyphenator.h"
|
||||
#include "mozilla/gfx/2D.h"
|
||||
#include "mozilla/ScopeExit.h"
|
||||
|
||||
nsLineBreaker::nsLineBreaker()
|
||||
: mCurrentWordLanguage(nullptr),
|
||||
|
|
@ -57,6 +58,14 @@ SetupCapitalization(const char16_t* aWord, uint32_t aLength,
|
|||
nsresult
|
||||
nsLineBreaker::FlushCurrentWord()
|
||||
{
|
||||
auto cleanup = mozilla::MakeScopeExit([&] {
|
||||
mCurrentWord.Clear();
|
||||
mTextItems.Clear();
|
||||
mCurrentWordContainsComplexChar = false;
|
||||
mCurrentWordContainsMixedLang = false;
|
||||
mCurrentWordLanguage = nullptr;
|
||||
});
|
||||
|
||||
uint32_t length = mCurrentWord.Length();
|
||||
AutoTArray<uint8_t,4000> breakState;
|
||||
if (!breakState.AppendElements(length))
|
||||
|
|
@ -137,11 +146,6 @@ nsLineBreaker::FlushCurrentWord()
|
|||
offset += ti->mLength;
|
||||
}
|
||||
|
||||
mCurrentWord.Clear();
|
||||
mTextItems.Clear();
|
||||
mCurrentWordContainsComplexChar = false;
|
||||
mCurrentWordContainsMixedLang = false;
|
||||
mCurrentWordLanguage = nullptr;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,12 +5,10 @@
|
|||
|
||||
#include "ADTSDemuxer.h"
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
#include "nsAutoPtr.h"
|
||||
#include "VideoUtils.h"
|
||||
#include "TimeUnits.h"
|
||||
#include "prenv.h"
|
||||
#include "VideoUtils.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
#include <inttypes.h>
|
||||
|
||||
#ifdef PR_LOGGING
|
||||
extern mozilla::LazyLogModule gMediaDemuxerLog;
|
||||
|
|
@ -160,11 +158,11 @@ public:
|
|||
}
|
||||
|
||||
// Returns whether the valid
|
||||
bool Parse(int64_t aOffset, uint8_t* aStart, uint8_t* aEnd) {
|
||||
bool Parse(int64_t aOffset, const uint8_t* aStart, const uint8_t* aEnd) {
|
||||
MOZ_ASSERT(aStart && aEnd);
|
||||
|
||||
bool found = false;
|
||||
uint8_t* ptr = aStart;
|
||||
const uint8_t* ptr = aStart;
|
||||
// Require at least 7 bytes of data at the end of the buffer for the minimum
|
||||
// ADTS frame header.
|
||||
while (ptr < aEnd - 7 && !found) {
|
||||
|
|
@ -214,7 +212,7 @@ public:
|
|||
// if one was found. After returning, the variable passed to 'aBytesToSkip' holds
|
||||
// the amount of bytes to be skipped (if any) in order to jump across a large
|
||||
// ID3v2 tag spanning multiple buffers.
|
||||
bool Parse(int64_t aOffset, uint8_t* aStart, uint8_t* aEnd) {
|
||||
bool Parse(int64_t aOffset, const uint8_t* aStart, const uint8_t* aEnd) {
|
||||
const bool found = mFrame.Parse(aOffset, aStart, aEnd);
|
||||
|
||||
if (mFrame.Length() && !mFirstFrame.Length()) {
|
||||
|
|
@ -728,7 +726,7 @@ ADTSTrackDemuxer::GetNextFrame(const adts::Frame& aFrame)
|
|||
RefPtr<MediaRawData> frame = new MediaRawData();
|
||||
frame->mOffset = offset;
|
||||
|
||||
nsAutoPtr<MediaRawDataWriter> frameWriter(frame->CreateWriter());
|
||||
UniquePtr<MediaRawDataWriter> frameWriter(frame->CreateWriter());
|
||||
if (!frameWriter->SetSize(length)) {
|
||||
ADTSLOG("GetNext() Exit failed to allocated media buffer");
|
||||
return nullptr;
|
||||
|
|
@ -842,4 +840,30 @@ ADTSTrackDemuxer::AverageFrameLength() const
|
|||
return 0.0;
|
||||
}
|
||||
|
||||
/* static */ bool
|
||||
ADTSDemuxer::ADTSSniffer(const uint8_t* aData, const uint32_t aLength)
|
||||
{
|
||||
if (aLength < 7) {
|
||||
return false;
|
||||
}
|
||||
// Avoid seeking if blob doesn't start with an ADTS marker.
|
||||
if (!adts::FrameHeader::MatchesSync(aData)) {
|
||||
return false;
|
||||
}
|
||||
auto parser = MakeUnique<adts::FrameParser>();
|
||||
|
||||
if (!parser->Parse(0, aData, aData + aLength)) {
|
||||
return false;
|
||||
}
|
||||
const adts::Frame& currentFrame = parser->CurrentFrame();
|
||||
// Check for sync marker after the found frame, since it's
|
||||
// possible to find sync marker in AAC data. If sync marker
|
||||
// exists after the current frame then we've found a frame
|
||||
// header.
|
||||
int64_t nextFrameHeaderOffset = currentFrame.Offset() + currentFrame.Length();
|
||||
return int64_t(aLength) > nextFrameHeaderOffset &&
|
||||
aLength - nextFrameHeaderOffset >= 2 &&
|
||||
adts::FrameHeader::MatchesSync(aData + nextFrameHeaderOffset);
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
|||
|
|
@ -32,6 +32,9 @@ public:
|
|||
TrackInfo::TrackType aType, uint32_t aTrackNumber) override;
|
||||
bool IsSeekable() const override;
|
||||
|
||||
// Return true if a valid ADTS frame header could be found.
|
||||
static bool ADTSSniffer(const uint8_t* aData, const uint32_t aLength);
|
||||
|
||||
private:
|
||||
bool InitInternal();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue