mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-23 21:01:08 +00:00
Bug 1224200. Allow downscaler to get (and ignore) new input lines after it has finished producing all output lines. r=milan
This commit is contained in:
parent
6b9b8a3ac3
commit
e5e2a31836
@ -199,33 +199,34 @@ Downscaler::CommitRow()
|
|||||||
{
|
{
|
||||||
MOZ_ASSERT(mOutputBuffer, "Should have a current frame");
|
MOZ_ASSERT(mOutputBuffer, "Should have a current frame");
|
||||||
MOZ_ASSERT(mCurrentInLine < mOriginalSize.height, "Past end of input");
|
MOZ_ASSERT(mCurrentInLine < mOriginalSize.height, "Past end of input");
|
||||||
MOZ_ASSERT(mCurrentOutLine < mTargetSize.height, "Past end of output");
|
|
||||||
|
|
||||||
int32_t filterOffset = 0;
|
|
||||||
int32_t filterLength = 0;
|
|
||||||
GetFilterOffsetAndLength(mYFilter, mCurrentOutLine,
|
|
||||||
&filterOffset, &filterLength);
|
|
||||||
|
|
||||||
int32_t inLineToRead = filterOffset + mLinesInBuffer;
|
|
||||||
MOZ_ASSERT(mCurrentInLine <= inLineToRead, "Reading past end of input");
|
|
||||||
if (mCurrentInLine == inLineToRead) {
|
|
||||||
skia::ConvolveHorizontally(mRowBuffer.get(), *mXFilter,
|
|
||||||
mWindow[mLinesInBuffer++], mHasAlpha,
|
|
||||||
supports_sse2());
|
|
||||||
}
|
|
||||||
|
|
||||||
MOZ_ASSERT(mCurrentOutLine < mTargetSize.height,
|
|
||||||
"Writing past end of output");
|
|
||||||
|
|
||||||
while (mLinesInBuffer == filterLength) {
|
|
||||||
DownscaleInputLine();
|
|
||||||
|
|
||||||
if (mCurrentOutLine == mTargetSize.height) {
|
|
||||||
break; // We're done.
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (mCurrentOutLine < mTargetSize.height) {
|
||||||
|
int32_t filterOffset = 0;
|
||||||
|
int32_t filterLength = 0;
|
||||||
GetFilterOffsetAndLength(mYFilter, mCurrentOutLine,
|
GetFilterOffsetAndLength(mYFilter, mCurrentOutLine,
|
||||||
&filterOffset, &filterLength);
|
&filterOffset, &filterLength);
|
||||||
|
|
||||||
|
int32_t inLineToRead = filterOffset + mLinesInBuffer;
|
||||||
|
MOZ_ASSERT(mCurrentInLine <= inLineToRead, "Reading past end of input");
|
||||||
|
if (mCurrentInLine == inLineToRead) {
|
||||||
|
skia::ConvolveHorizontally(mRowBuffer.get(), *mXFilter,
|
||||||
|
mWindow[mLinesInBuffer++], mHasAlpha,
|
||||||
|
supports_sse2());
|
||||||
|
}
|
||||||
|
|
||||||
|
MOZ_ASSERT(mCurrentOutLine < mTargetSize.height,
|
||||||
|
"Writing past end of output");
|
||||||
|
|
||||||
|
while (mLinesInBuffer == filterLength) {
|
||||||
|
DownscaleInputLine();
|
||||||
|
|
||||||
|
if (mCurrentOutLine == mTargetSize.height) {
|
||||||
|
break; // We're done.
|
||||||
|
}
|
||||||
|
|
||||||
|
GetFilterOffsetAndLength(mYFilter, mCurrentOutLine,
|
||||||
|
&filterOffset, &filterLength);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mCurrentInLine += 1;
|
mCurrentInLine += 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user