mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-27 23:02:20 +00:00
9ff6a3947e
This makes WR properly handle mPicSize when RenderBufferTextureHost is used. The main change is that we need to take care to pass in display().Size() from the descriptor, and then further use that to carefully limit the size of the CbCr texture, as it doesn't necessarily maintain an appropriate half-sized scale with respect to the Y texture if it is padded. Given that mPicSize should now actually work, we should no longer need any of the previous mCroppedSize mechanisms that were added to work around this, and so they are removed in this patch. Differential Revision: https://phabricator.services.mozilla.com/D139267
53 lines
1.9 KiB
C++
53 lines
1.9 KiB
C++
/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef Y_CB_CR_UTILS_H_
|
|
#define Y_CB_CR_UTILS_H_
|
|
|
|
#include "mozilla/gfx/Types.h"
|
|
#include "ImageContainer.h"
|
|
|
|
namespace mozilla {
|
|
namespace gfx {
|
|
|
|
IntSize GetCroppedCbCrSize(const IntSize& aYSize, const IntSize& aCbCrSize,
|
|
const IntSize& aDisplaySize);
|
|
|
|
void
|
|
GetYCbCrToRGBDestFormatAndSize(const layers::PlanarYCbCrData& aData,
|
|
SurfaceFormat& aSuggestedFormat,
|
|
IntSize& aSuggestedSize);
|
|
|
|
void
|
|
ConvertYCbCrToRGB(const layers::PlanarYCbCrData& aData,
|
|
const SurfaceFormat& aDestFormat,
|
|
const IntSize& aDestSize,
|
|
unsigned char* aDestBuffer,
|
|
int32_t aStride);
|
|
|
|
using PremultFunc = int (*)(const uint8_t* src_argb, int src_stride_argb,
|
|
uint8_t* dst_argb, int dst_stride_argb, int width,
|
|
int height);
|
|
|
|
void ConvertYCbCrAToARGB(const layers::PlanarYCbCrData& aYCbCr,
|
|
const layers::PlanarAlphaData& aAlpha,
|
|
const SurfaceFormat& aDestFormat,
|
|
const IntSize& aDestSize,
|
|
unsigned char* aDestBuffer,
|
|
int32_t aStride, PremultFunc premultiplyAlphaOp);
|
|
|
|
void
|
|
ConvertI420AlphaToARGB(const uint8_t* aSrcY,
|
|
const uint8_t* aSrcU,
|
|
const uint8_t* aSrcV,
|
|
const uint8_t* aSrcA,
|
|
int aSrcStrideYA, int aSrcStrideUV,
|
|
uint8_t* aDstARGB, int aDstStrideARGB,
|
|
int aWidth, int aHeight);
|
|
} // namespace gfx
|
|
} // namespace mozilla
|
|
|
|
#endif /* Y_CB_CR_UTILS_H_ */
|