mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-26 04:09:50 +00:00
Bug 1462355 - Part 1b. Update Decoder and SurfacePipe plumbing to use updated imgFrame methods. r=tnikkel
This commit is contained in:
parent
5d9ffb0638
commit
6c32a5f985
@ -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.
|
||||
|
@ -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:
|
||||
|
@ -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)) {
|
||||
|
@ -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)) {
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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.
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -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...);
|
||||
|
@ -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...);
|
||||
|
@ -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 });
|
||||
|
@ -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 });
|
||||
}
|
||||
|
||||
|
@ -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 });
|
||||
|
@ -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 });
|
||||
}
|
||||
|
@ -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 });
|
||||
|
@ -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 });
|
||||
}
|
||||
|
@ -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 });
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user