Bug 1462355 - Part 1b. Update Decoder and SurfacePipe plumbing to use updated imgFrame methods. r=tnikkel

This commit is contained in:
Andrew Osmond 2018-05-29 08:36:12 -04:00
parent 5d9ffb0638
commit 6c32a5f985
15 changed files with 83 additions and 92 deletions

View File

@ -283,14 +283,14 @@ Decoder::Telemetry() const
}
nsresult
Decoder::AllocateFrame(uint32_t aFrameNum,
const gfx::IntSize& aOutputSize,
Decoder::AllocateFrame(const gfx::IntSize& aOutputSize,
const gfx::IntRect& aFrameRect,
gfx::SurfaceFormat aFormat,
uint8_t aPaletteDepth)
uint8_t aPaletteDepth,
const Maybe<AnimationParams>& aAnimParams)
{
mCurrentFrame = AllocateFrameInternal(aFrameNum, aOutputSize, aFrameRect,
aFormat, aPaletteDepth,
mCurrentFrame = AllocateFrameInternal(aOutputSize, aFrameRect, aFormat,
aPaletteDepth, aAnimParams,
mCurrentFrame.get());
if (mCurrentFrame) {
@ -302,7 +302,7 @@ Decoder::AllocateFrame(uint32_t aFrameNum,
// We should now be on |aFrameNum|. (Note that we're comparing the frame
// number, which is zero-based, with the frame count, which is one-based.)
MOZ_ASSERT(aFrameNum + 1 == mFrameCount);
MOZ_ASSERT_IF(aAnimParams, aAnimParams->mFrameNum + 1 == mFrameCount);
// If we're past the first frame, PostIsAnimated() should've been called.
MOZ_ASSERT_IF(mFrameCount > 1, HasAnimation());
@ -316,18 +316,19 @@ Decoder::AllocateFrame(uint32_t aFrameNum,
}
RawAccessFrameRef
Decoder::AllocateFrameInternal(uint32_t aFrameNum,
const gfx::IntSize& aOutputSize,
Decoder::AllocateFrameInternal(const gfx::IntSize& aOutputSize,
const gfx::IntRect& aFrameRect,
SurfaceFormat aFormat,
uint8_t aPaletteDepth,
const Maybe<AnimationParams>& aAnimParams,
imgFrame* aPreviousFrame)
{
if (HasError()) {
return RawAccessFrameRef();
}
if (aFrameNum != mFrameCount) {
uint32_t frameNum = aAnimParams ? aAnimParams->mFrameNum : 0;
if (frameNum != mFrameCount) {
MOZ_ASSERT_UNREACHABLE("Allocating frames out of order");
return RawAccessFrameRef();
}
@ -342,7 +343,7 @@ Decoder::AllocateFrameInternal(uint32_t aFrameNum,
bool nonPremult = bool(mSurfaceFlags & SurfaceFlags::NO_PREMULTIPLY_ALPHA);
if (NS_FAILED(frame->InitForDecoder(aOutputSize, aFrameRect, aFormat,
aPaletteDepth, nonPremult,
aFrameNum > 0))) {
aAnimParams))) {
NS_WARNING("imgFrame::Init should succeed");
return RawAccessFrameRef();
}
@ -353,22 +354,22 @@ Decoder::AllocateFrameInternal(uint32_t aFrameNum,
return RawAccessFrameRef();
}
if (aFrameNum == 1) {
if (frameNum == 1) {
MOZ_ASSERT(aPreviousFrame, "Must provide a previous frame when animated");
aPreviousFrame->SetRawAccessOnly();
// If we dispose of the first frame by clearing it, then the first frame's
// refresh area is all of itself.
// RESTORE_PREVIOUS is invalid (assumed to be DISPOSE_CLEAR).
AnimationData previousFrameData = aPreviousFrame->GetAnimationData();
if (previousFrameData.mDisposalMethod == DisposalMethod::CLEAR ||
previousFrameData.mDisposalMethod == DisposalMethod::CLEAR_ALL ||
previousFrameData.mDisposalMethod == DisposalMethod::RESTORE_PREVIOUS) {
mFirstFrameRefreshArea = previousFrameData.mRect;
DisposalMethod prevDisposal = aPreviousFrame->GetDisposalMethod();
if (prevDisposal == DisposalMethod::CLEAR ||
prevDisposal == DisposalMethod::CLEAR_ALL ||
prevDisposal == DisposalMethod::RESTORE_PREVIOUS) {
mFirstFrameRefreshArea = aPreviousFrame->GetRect();
}
}
if (aFrameNum > 0) {
if (frameNum > 0) {
ref->SetRawAccessOnly();
// Some GIFs are huge but only have a small area that they animate. We only
@ -453,13 +454,7 @@ Decoder::PostIsAnimated(FrameTimeout aFirstFrameTimeout)
}
void
Decoder::PostFrameStop(Opacity aFrameOpacity
/* = Opacity::SOME_TRANSPARENCY */,
DisposalMethod aDisposalMethod
/* = DisposalMethod::KEEP */,
FrameTimeout aTimeout /* = FrameTimeout::Forever() */,
BlendMethod aBlendMethod /* = BlendMethod::OVER */,
const Maybe<nsIntRect>& aBlendRect /* = Nothing() */)
Decoder::PostFrameStop(Opacity aFrameOpacity)
{
// We should be mid-frame
MOZ_ASSERT(!IsMetadataDecode(), "Stopping frame during metadata decode");
@ -470,12 +465,11 @@ Decoder::PostFrameStop(Opacity aFrameOpacity
mInFrame = false;
mFinishedNewFrame = true;
mCurrentFrame->Finish(aFrameOpacity, aDisposalMethod, aTimeout,
aBlendMethod, aBlendRect, mFinalizeFrames);
mCurrentFrame->Finish(aFrameOpacity, mFinalizeFrames);
mProgress |= FLAG_FRAME_COMPLETE;
mLoopLength += aTimeout;
mLoopLength += mCurrentFrame->GetTimeout();
// If we're not sending partial invalidations, then we send an invalidation
// here when the first frame is complete.

View File

@ -11,6 +11,7 @@
#include "mozilla/Maybe.h"
#include "mozilla/NotNull.h"
#include "mozilla/RefPtr.h"
#include "AnimationParams.h"
#include "DecoderFlags.h"
#include "Downscaler.h"
#include "ImageMetadata.h"
@ -27,6 +28,8 @@ namespace Telemetry {
namespace image {
class imgFrame;
struct DecoderFinalStatus final
{
DecoderFinalStatus(bool aWasMetadataDecode,
@ -477,11 +480,7 @@ protected:
// Specify whether this frame is opaque as an optimization.
// For animated images, specify the disposal, blend method and timeout for
// this frame.
void PostFrameStop(Opacity aFrameOpacity = Opacity::SOME_TRANSPARENCY,
DisposalMethod aDisposalMethod = DisposalMethod::KEEP,
FrameTimeout aTimeout = FrameTimeout::Forever(),
BlendMethod aBlendMethod = BlendMethod::OVER,
const Maybe<nsIntRect>& aBlendRect = Nothing());
void PostFrameStop(Opacity aFrameOpacity = Opacity::SOME_TRANSPARENCY);
/**
* Called by the decoders when they have a region to invalidate. We may not
@ -510,16 +509,13 @@ protected:
/**
* Allocates a new frame, making it our current frame if successful.
*
* The @aFrameNum parameter only exists as a sanity check; it's illegal to
* create a new frame anywhere but immediately after the existing frames.
*
* If a non-paletted frame is desired, pass 0 for aPaletteDepth.
*/
nsresult AllocateFrame(uint32_t aFrameNum,
const gfx::IntSize& aOutputSize,
nsresult AllocateFrame(const gfx::IntSize& aOutputSize,
const gfx::IntRect& aFrameRect,
gfx::SurfaceFormat aFormat,
uint8_t aPaletteDepth = 0);
uint8_t aPaletteDepth = 0,
const Maybe<AnimationParams>& aAnimParams = Nothing());
private:
/// Report that an error was encountered while decoding.
@ -543,11 +539,11 @@ private:
return mInFrame ? mFrameCount - 1 : mFrameCount;
}
RawAccessFrameRef AllocateFrameInternal(uint32_t aFrameNum,
const gfx::IntSize& aOutputSize,
RawAccessFrameRef AllocateFrameInternal(const gfx::IntSize& aOutputSize,
const gfx::IntRect& aFrameRect,
gfx::SurfaceFormat aFormat,
uint8_t aPaletteDepth,
const Maybe<AnimationParams>& aAnimParams,
imgFrame* aPreviousFrame);
protected:

View File

@ -70,7 +70,7 @@ public:
Maybe<SurfaceInvalidRect> TakeInvalidRect() override { return Nothing(); }
template <typename... Rest>
nsresult Configure(const DownscalingConfig& aConfig, Rest... aRest)
nsresult Configure(const DownscalingConfig& aConfig, const Rest&... aRest)
{
return NS_ERROR_FAILURE;
}
@ -106,7 +106,7 @@ public:
}
template <typename... Rest>
nsresult Configure(const DownscalingConfig& aConfig, Rest... aRest)
nsresult Configure(const DownscalingConfig& aConfig, const Rest&... aRest)
{
nsresult rv = mNext.Configure(aRest...);
if (NS_FAILED(rv)) {

View File

@ -70,7 +70,7 @@ public:
{ }
template <typename... Rest>
nsresult Configure(const DeinterlacingConfig<PixelType>& aConfig, Rest... aRest)
nsresult Configure(const DeinterlacingConfig<PixelType>& aConfig, const Rest&... aRest)
{
nsresult rv = mNext.Configure(aRest...);
if (NS_FAILED(rv)) {
@ -360,7 +360,7 @@ public:
{ }
template <typename... Rest>
nsresult Configure(const RemoveFrameRectConfig& aConfig, Rest... aRest)
nsresult Configure(const RemoveFrameRectConfig& aConfig, const Rest&... aRest)
{
nsresult rv = mNext.Configure(aRest...);
if (NS_FAILED(rv)) {
@ -590,7 +590,7 @@ public:
{ }
template <typename... Rest>
nsresult Configure(const ADAM7InterpolatingConfig& aConfig, Rest... aRest)
nsresult Configure(const ADAM7InterpolatingConfig& aConfig, const Rest&... aRest)
{
nsresult rv = mNext.Configure(aRest...);
if (NS_FAILED(rv)) {

View File

@ -75,10 +75,11 @@ SurfaceSink::Configure(const SurfaceConfig& aConfig)
// XXX(seth): Once every Decoder subclass uses SurfacePipe, we probably want
// to allocate the frame directly here and get rid of Decoder::AllocateFrame
// altogether.
nsresult rv = aConfig.mDecoder->AllocateFrame(aConfig.mFrameNum,
surfaceSize,
nsresult rv = aConfig.mDecoder->AllocateFrame(surfaceSize,
frameRect,
aConfig.mFormat);
aConfig.mFormat,
/* aPaletteDepth */ 0,
aConfig.mAnimParams);
if (NS_FAILED(rv)) {
return rv;
}
@ -127,11 +128,11 @@ PalettedSurfaceSink::Configure(const PalettedSurfaceConfig& aConfig)
// XXX(seth): Once every Decoder subclass uses SurfacePipe, we probably want
// to allocate the frame directly here and get rid of Decoder::AllocateFrame
// altogether.
nsresult rv = aConfig.mDecoder->AllocateFrame(aConfig.mFrameNum,
aConfig.mOutputSize,
nsresult rv = aConfig.mDecoder->AllocateFrame(aConfig.mOutputSize,
aConfig.mFrameRect,
aConfig.mFormat,
aConfig.mPaletteDepth);
aConfig.mPaletteDepth,
aConfig.mAnimParams);
if (NS_FAILED(rv)) {
return rv;
}

View File

@ -35,6 +35,8 @@
#include "mozilla/Variant.h"
#include "mozilla/gfx/2D.h"
#include "AnimationParams.h"
namespace mozilla {
namespace image {
@ -775,10 +777,10 @@ struct SurfaceConfig
{
using Filter = SurfaceSink;
Decoder* mDecoder; /// Which Decoder to use to allocate the surface.
uint32_t mFrameNum; /// Which frame of animation this surface is for.
gfx::IntSize mOutputSize; /// The size of the surface.
gfx::SurfaceFormat mFormat; /// The surface format (BGRA or BGRX).
bool mFlipVertically; /// If true, write the rows from bottom to top.
Maybe<AnimationParams> mAnimParams; /// Given for animated images.
};
/**
@ -803,12 +805,12 @@ struct PalettedSurfaceConfig
{
using Filter = PalettedSurfaceSink;
Decoder* mDecoder; /// Which Decoder to use to allocate the surface.
uint32_t mFrameNum; /// Which frame of animation this surface is for.
gfx::IntSize mOutputSize; /// The logical size of the surface.
gfx::IntRect mFrameRect; /// The surface subrect which contains data.
gfx::SurfaceFormat mFormat; /// The surface format (BGRA or BGRX).
uint8_t mPaletteDepth; /// The palette depth of this surface.
bool mFlipVertically; /// If true, write the rows from bottom to top.
Maybe<AnimationParams> mAnimParams; /// Given for animated images.
};
/**

View File

@ -70,8 +70,6 @@ public:
*
* @param aDecoder The decoder whose current frame the SurfacePipe will write
* to.
* @param aFrameNum Which frame the SurfacePipe will write to. This will be 0
* for non-animated images.
* @param aInputSize The original size of the image.
* @param aOutputSize The size the SurfacePipe should output. Must be the same
* as @aInputSize or smaller. If smaller, the image will be
@ -79,6 +77,7 @@ public:
* @param aFrameRect The portion of the image that actually contains data.
* @param aFormat The surface format of the image; generally B8G8R8A8 or
* B8G8R8X8.
* @param aAnimParams Extra parameters used by animated images.
* @param aFlags Flags enabling or disabling various functionality for the
* SurfacePipe; see the SurfacePipeFlags documentation for more
* information.
@ -89,11 +88,11 @@ public:
*/
static Maybe<SurfacePipe>
CreateSurfacePipe(Decoder* aDecoder,
uint32_t aFrameNum,
const nsIntSize& aInputSize,
const nsIntSize& aOutputSize,
const nsIntRect& aFrameRect,
gfx::SurfaceFormat aFormat,
const Maybe<AnimationParams>& aAnimParams,
SurfacePipeFlags aFlags)
{
const bool deinterlace = bool(aFlags & SurfacePipeFlags::DEINTERLACE);
@ -125,8 +124,8 @@ public:
ADAM7InterpolatingConfig interpolatingConfig;
RemoveFrameRectConfig removeFrameRectConfig { aFrameRect };
DownscalingConfig downscalingConfig { aInputSize, aFormat };
SurfaceConfig surfaceConfig { aDecoder, aFrameNum, aOutputSize,
aFormat, flipVertically };
SurfaceConfig surfaceConfig { aDecoder, aOutputSize, aFormat,
flipVertically, aAnimParams };
Maybe<SurfacePipe> pipe;
@ -181,13 +180,12 @@ public:
*
* @param aDecoder The decoder whose current frame the SurfacePipe will write
* to.
* @param aFrameNum Which frame the SurfacePipe will write to. This will be 0
* for non-animated images.
* @param aInputSize The original size of the image.
* @param aFrameRect The portion of the image that actually contains data.
* @param aFormat The surface format of the image; generally B8G8R8A8 or
* B8G8R8X8.
* @param aPaletteDepth The palette depth of the image.
* @param aAnimParams Extra parameters used by animated images.
* @param aFlags Flags enabling or disabling various functionality for the
* SurfacePipe; see the SurfacePipeFlags documentation for more
* information.
@ -198,11 +196,11 @@ public:
*/
static Maybe<SurfacePipe>
CreatePalettedSurfacePipe(Decoder* aDecoder,
uint32_t aFrameNum,
const nsIntSize& aInputSize,
const nsIntRect& aFrameRect,
gfx::SurfaceFormat aFormat,
uint8_t aPaletteDepth,
const Maybe<AnimationParams>& aAnimParams,
SurfacePipeFlags aFlags)
{
const bool deinterlace = bool(aFlags & SurfacePipeFlags::DEINTERLACE);
@ -211,9 +209,9 @@ public:
// Construct configurations for the SurfaceFilters.
DeinterlacingConfig<uint8_t> deinterlacingConfig { progressiveDisplay };
PalettedSurfaceConfig palettedSurfaceConfig { aDecoder, aFrameNum, aInputSize,
aFrameRect, aFormat, aPaletteDepth,
flipVertically };
PalettedSurfaceConfig palettedSurfaceConfig { aDecoder, aInputSize, aFrameRect,
aFormat, aPaletteDepth,
flipVertically, aAnimParams };
Maybe<SurfacePipe> pipe;
@ -229,7 +227,7 @@ public:
private:
template <typename... Configs>
static Maybe<SurfacePipe>
MakePipe(Configs... aConfigs)
MakePipe(const Configs&... aConfigs)
{
auto pipe = MakeUnique<typename detail::FilterPipeline<Configs...>::Type>();
nsresult rv = pipe->Configure(aConfigs...);

View File

@ -241,7 +241,7 @@ already_AddRefed<Decoder> CreateTrivialDecoder();
* @param aConfigs The configuration for the pipeline.
*/
template <typename Func, typename... Configs>
void WithFilterPipeline(Decoder* aDecoder, Func aFunc, Configs... aConfigs)
void WithFilterPipeline(Decoder* aDecoder, Func aFunc, const Configs&... aConfigs)
{
auto pipe = MakeUnique<typename detail::FilterPipeline<Configs...>::Type>();
nsresult rv = pipe->Configure(aConfigs...);
@ -264,7 +264,7 @@ void WithFilterPipeline(Decoder* aDecoder, Func aFunc, Configs... aConfigs)
* @param aConfigs The configuration for the pipeline.
*/
template <typename... Configs>
void AssertConfiguringPipelineFails(Decoder* aDecoder, Configs... aConfigs)
void AssertConfiguringPipelineFails(Decoder* aDecoder, const Configs&... aConfigs)
{
auto pipe = MakeUnique<typename detail::FilterPipeline<Configs...>::Type>();
nsresult rv = pipe->Configure(aConfigs...);

View File

@ -33,7 +33,7 @@ WithADAM7InterpolatingFilter(const IntSize& aSize, Func aFunc)
WithFilterPipeline(decoder, Forward<Func>(aFunc),
ADAM7InterpolatingConfig { },
SurfaceConfig { decoder, 0, aSize,
SurfaceConfig { decoder, aSize,
SurfaceFormat::B8G8R8A8, false });
}
@ -45,7 +45,7 @@ AssertConfiguringADAM7InterpolatingFilterFails(const IntSize& aSize)
AssertConfiguringPipelineFails(decoder,
ADAM7InterpolatingConfig { },
SurfaceConfig { decoder, 0, aSize,
SurfaceConfig { decoder, aSize,
SurfaceFormat::B8G8R8A8, false });
}
@ -664,7 +664,7 @@ TEST(ImageADAM7InterpolatingFilter, ConfiguringPalettedADAM7InterpolatingFilterF
// should fail.
AssertConfiguringPipelineFails(decoder,
ADAM7InterpolatingConfig { },
PalettedSurfaceConfig { decoder, 0, IntSize(100, 100),
PalettedSurfaceConfig { decoder, IntSize(100, 100),
IntRect(0, 0, 50, 50),
SurfaceFormat::B8G8R8A8, 8,
false });

View File

@ -28,7 +28,7 @@ WithDeinterlacingFilter(const IntSize& aSize,
WithFilterPipeline(decoder, Forward<Func>(aFunc),
DeinterlacingConfig<uint32_t> { aProgressiveDisplay },
SurfaceConfig { decoder, 0, aSize,
SurfaceConfig { decoder, aSize,
SurfaceFormat::B8G8R8A8, false });
}
@ -41,7 +41,7 @@ WithPalettedDeinterlacingFilter(const IntSize& aSize,
WithFilterPipeline(decoder, Forward<Func>(aFunc),
DeinterlacingConfig<uint8_t> { /* mProgressiveDisplay = */ true },
PalettedSurfaceConfig { decoder, 0, aSize,
PalettedSurfaceConfig { decoder, aSize,
IntRect(0, 0, 100, 100),
SurfaceFormat::B8G8R8A8, 8,
false });
@ -55,7 +55,7 @@ AssertConfiguringDeinterlacingFilterFails(const IntSize& aSize)
AssertConfiguringPipelineFails(decoder,
DeinterlacingConfig<uint32_t> { /* mProgressiveDisplay = */ true},
SurfaceConfig { decoder, 0, aSize,
SurfaceConfig { decoder, aSize,
SurfaceFormat::B8G8R8A8, false });
}

View File

@ -29,7 +29,7 @@ WithDownscalingFilter(const IntSize& aInputSize,
WithFilterPipeline(decoder, Forward<Func>(aFunc),
DownscalingConfig { aInputSize,
SurfaceFormat::B8G8R8A8 },
SurfaceConfig { decoder, 0, aOutputSize,
SurfaceConfig { decoder, aOutputSize,
SurfaceFormat::B8G8R8A8, false });
}
@ -43,7 +43,7 @@ AssertConfiguringDownscalingFilterFails(const IntSize& aInputSize,
AssertConfiguringPipelineFails(decoder,
DownscalingConfig { aInputSize,
SurfaceFormat::B8G8R8A8 },
SurfaceConfig { decoder, 0, aOutputSize,
SurfaceConfig { decoder, aOutputSize,
SurfaceFormat::B8G8R8A8, false });
}
@ -224,7 +224,7 @@ TEST(ImageDownscalingFilter, ConfiguringPalettedDownscaleFails)
AssertConfiguringPipelineFails(decoder,
DownscalingConfig { IntSize(100, 100),
SurfaceFormat::B8G8R8A8 },
PalettedSurfaceConfig { decoder, 0, IntSize(20, 20),
PalettedSurfaceConfig { decoder, IntSize(20, 20),
IntRect(0, 0, 20, 20),
SurfaceFormat::B8G8R8A8, 8,
false });

View File

@ -52,6 +52,6 @@ TEST(ImageDownscalingFilter, NoSkia)
AssertConfiguringPipelineFails(decoder,
DownscalingConfig { IntSize(100, 100),
SurfaceFormat::B8G8R8A8 },
SurfaceConfig { decoder, 0, IntSize(50, 50),
SurfaceConfig { decoder, IntSize(50, 50),
SurfaceFormat::B8G8R8A8, false });
}

View File

@ -28,7 +28,7 @@ WithRemoveFrameRectFilter(const IntSize& aSize,
WithFilterPipeline(decoder, Forward<Func>(aFunc),
RemoveFrameRectConfig { aFrameRect },
SurfaceConfig { decoder, 0, aSize,
SurfaceConfig { decoder, aSize,
SurfaceFormat::B8G8R8A8, false });
}
@ -41,7 +41,7 @@ AssertConfiguringRemoveFrameRectFilterFails(const IntSize& aSize,
AssertConfiguringPipelineFails(decoder,
RemoveFrameRectConfig { aFrameRect },
SurfaceConfig { decoder, 0, aSize,
SurfaceConfig { decoder, aSize,
SurfaceFormat::B8G8R8A8, false });
}
@ -320,7 +320,7 @@ TEST(ImageRemoveFrameRectFilter, ConfiguringPalettedRemoveFrameRectFails)
// should fail.
AssertConfiguringPipelineFails(decoder,
RemoveFrameRectConfig { IntRect(0, 0, 50, 50) },
PalettedSurfaceConfig { decoder, 0, IntSize(100, 100),
PalettedSurfaceConfig { decoder, IntSize(100, 100),
IntRect(0, 0, 50, 50),
SurfaceFormat::B8G8R8A8, 8,
false });

View File

@ -149,7 +149,7 @@ TEST_F(ImageSurfacePipeIntegration, SurfacePipe)
auto sink = MakeUnique<SurfaceSink>();
nsresult rv =
sink->Configure(SurfaceConfig { decoder, 0, IntSize(100, 100),
sink->Configure(SurfaceConfig { decoder, IntSize(100, 100),
SurfaceFormat::B8G8R8A8, false });
ASSERT_TRUE(NS_SUCCEEDED(rv));
@ -243,7 +243,7 @@ TEST_F(ImageSurfacePipeIntegration, PalettedSurfacePipe)
auto sink = MakeUnique<PalettedSurfaceSink>();
nsresult rv =
sink->Configure(PalettedSurfaceConfig { decoder, 0, IntSize(100, 100),
sink->Configure(PalettedSurfaceConfig { decoder, IntSize(100, 100),
IntRect(0, 0, 100, 100),
SurfaceFormat::B8G8R8A8,
8, false });
@ -345,7 +345,7 @@ TEST_F(ImageSurfacePipeIntegration, DeinterlaceDownscaleWritePixels)
DeinterlacingConfig<uint32_t> { /* mProgressiveDisplay = */ true },
DownscalingConfig { IntSize(100, 100),
SurfaceFormat::B8G8R8A8 },
SurfaceConfig { decoder, 0, IntSize(25, 25),
SurfaceConfig { decoder, IntSize(25, 25),
SurfaceFormat::B8G8R8A8, false });
}
@ -401,7 +401,7 @@ TEST_F(ImageSurfacePipeIntegration, RemoveFrameRectBottomRightDownscaleWritePixe
RemoveFrameRectConfig { IntRect(50, 50, 100, 100) },
DownscalingConfig { IntSize(100, 100),
SurfaceFormat::B8G8R8A8 },
SurfaceConfig { decoder, 0, IntSize(20, 20),
SurfaceConfig { decoder, IntSize(20, 20),
SurfaceFormat::B8G8R8A8, false });
}
@ -435,7 +435,7 @@ TEST_F(ImageSurfacePipeIntegration, RemoveFrameRectTopLeftDownscaleWritePixels)
RemoveFrameRectConfig { IntRect(-50, -50, 100, 100) },
DownscalingConfig { IntSize(100, 100),
SurfaceFormat::B8G8R8A8 },
SurfaceConfig { decoder, 0, IntSize(20, 20),
SurfaceConfig { decoder, IntSize(20, 20),
SurfaceFormat::B8G8R8A8, false });
}
@ -459,7 +459,7 @@ TEST_F(ImageSurfacePipeIntegration, DeinterlaceRemoveFrameRectWritePixels)
WithFilterPipeline(decoder, test,
DeinterlacingConfig<uint32_t> { /* mProgressiveDisplay = */ true },
RemoveFrameRectConfig { IntRect(50, 50, 100, 100) },
SurfaceConfig { decoder, 0, IntSize(100, 100),
SurfaceConfig { decoder, IntSize(100, 100),
SurfaceFormat::B8G8R8A8, false });
}
@ -482,7 +482,7 @@ TEST_F(ImageSurfacePipeIntegration, DeinterlaceRemoveFrameRectDownscaleWritePixe
RemoveFrameRectConfig { IntRect(50, 50, 100, 100) },
DownscalingConfig { IntSize(100, 100),
SurfaceFormat::B8G8R8A8 },
SurfaceConfig { decoder, 0, IntSize(20, 20),
SurfaceConfig { decoder, IntSize(20, 20),
SurfaceFormat::B8G8R8A8, false });
}
@ -497,7 +497,7 @@ TEST_F(ImageSurfacePipeIntegration, ConfiguringPalettedRemoveFrameRectDownscaleF
RemoveFrameRectConfig { IntRect(0, 0, 50, 50) },
DownscalingConfig { IntSize(100, 100),
SurfaceFormat::B8G8R8A8 },
PalettedSurfaceConfig { decoder, 0, IntSize(100, 100),
PalettedSurfaceConfig { decoder, IntSize(100, 100),
IntRect(0, 0, 50, 50),
SurfaceFormat::B8G8R8A8, 8,
false });
@ -514,7 +514,7 @@ TEST_F(ImageSurfacePipeIntegration, ConfiguringPalettedDeinterlaceDownscaleFails
DeinterlacingConfig<uint8_t> { /* mProgressiveDisplay = */ true},
DownscalingConfig { IntSize(100, 100),
SurfaceFormat::B8G8R8A8 },
PalettedSurfaceConfig { decoder, 0, IntSize(100, 100),
PalettedSurfaceConfig { decoder, IntSize(100, 100),
IntRect(0, 0, 20, 20),
SurfaceFormat::B8G8R8A8, 8,
false });
@ -535,6 +535,6 @@ TEST_F(ImageSurfacePipeIntegration, ConfiguringHugeDeinterlacingBufferFails)
DeinterlacingConfig<uint32_t> { /* mProgressiveDisplay = */ true},
DownscalingConfig { IntSize(60000, 60000),
SurfaceFormat::B8G8R8A8 },
SurfaceConfig { decoder, 0, IntSize(600, 600),
SurfaceConfig { decoder, IntSize(600, 600),
SurfaceFormat::B8G8R8A8, false });
}

View File

@ -32,7 +32,7 @@ WithSurfaceSink(Func aFunc)
const bool flipVertically = Orientation == Orient::FLIP_VERTICALLY;
WithFilterPipeline(decoder, Forward<Func>(aFunc),
SurfaceConfig { decoder, 0, IntSize(100, 100),
SurfaceConfig { decoder, IntSize(100, 100),
SurfaceFormat::B8G8R8A8, flipVertically });
}
@ -43,7 +43,7 @@ WithPalettedSurfaceSink(const IntRect& aFrameRect, Func aFunc)
ASSERT_TRUE(decoder != nullptr);
WithFilterPipeline(decoder, Forward<Func>(aFunc),
PalettedSurfaceConfig { decoder, 0, IntSize(100, 100),
PalettedSurfaceConfig { decoder, IntSize(100, 100),
aFrameRect, SurfaceFormat::B8G8R8A8,
8, false });
}