mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-09-10 11:54:40 +00:00
59 lines
1.9 KiB
Diff
59 lines
1.9 KiB
Diff
diff --git a/gfx/ycbcr/yuv_convert.cpp b/gfx/ycbcr/yuv_convert.cpp
|
|
--- a/gfx/ycbcr/yuv_convert.cpp
|
|
+++ b/gfx/ycbcr/yuv_convert.cpp
|
|
@@ -26,16 +26,32 @@ namespace mozilla {
|
|
|
|
namespace gfx {
|
|
|
|
// 16.16 fixed point arithmetic
|
|
const int kFractionBits = 16;
|
|
const int kFractionMax = 1 << kFractionBits;
|
|
const int kFractionMask = ((1 << kFractionBits) - 1);
|
|
|
|
+YUVType TypeFromSize(int ywidth,
|
|
+ int yheight,
|
|
+ int cbcrwidth,
|
|
+ int cbcrheight)
|
|
+{
|
|
+ if (ywidth == cbcrwidth && yheight == cbcrheight) {
|
|
+ return YV24;
|
|
+ }
|
|
+ else if (ywidth / 2 == cbcrwidth && yheight == cbcrheight) {
|
|
+ return YV16;
|
|
+ }
|
|
+ else {
|
|
+ return YV12;
|
|
+ }
|
|
+}
|
|
+
|
|
// Convert a frame of YUV to 32 bit ARGB.
|
|
void ConvertYCbCrToRGB32(const uint8* y_buf,
|
|
const uint8* u_buf,
|
|
const uint8* v_buf,
|
|
uint8* rgb_buf,
|
|
int pic_x,
|
|
int pic_y,
|
|
int pic_width,
|
|
diff --git a/gfx/ycbcr/yuv_convert.h b/gfx/ycbcr/yuv_convert.h
|
|
--- a/gfx/ycbcr/yuv_convert.h
|
|
+++ b/gfx/ycbcr/yuv_convert.h
|
|
@@ -36,16 +36,18 @@ enum Rotate {
|
|
// Filter affects how scaling looks.
|
|
enum ScaleFilter {
|
|
FILTER_NONE = 0, // No filter (point sampled).
|
|
FILTER_BILINEAR_H = 1, // Bilinear horizontal filter.
|
|
FILTER_BILINEAR_V = 2, // Bilinear vertical filter.
|
|
FILTER_BILINEAR = 3 // Bilinear filter.
|
|
};
|
|
|
|
+YUVType TypeFromSize(int ywidth, int yheight, int cbcrwidth, int cbcrheight);
|
|
+
|
|
// Convert a frame of YUV to 32 bit ARGB.
|
|
// Pass in YV16/YV12 depending on source format
|
|
void ConvertYCbCrToRGB32(const uint8* yplane,
|
|
const uint8* uplane,
|
|
const uint8* vplane,
|
|
uint8* rgbframe,
|
|
int pic_x,
|
|
int pic_y,
|