mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2025-12-06 16:56:55 +08:00
Expose scale plane function
BUG=none TEST=none Review URL: https://webrtc-codereview.appspot.com/459009 git-svn-id: http://libyuv.googlecode.com/svn/trunk@224 16f28f9a-4ce2-e073-06de-1de4eb20be90
This commit is contained in:
parent
4f59bcc102
commit
74b50f1b89
@ -1,6 +1,6 @@
|
||||
Name: libyuv
|
||||
URL: http://code.google.com/p/libyuv/
|
||||
Version: 223
|
||||
Version: 224
|
||||
License: BSD
|
||||
License File: LICENSE
|
||||
|
||||
|
||||
@ -25,6 +25,13 @@ enum FilterMode {
|
||||
kFilterBox = 2 // Highest quality
|
||||
};
|
||||
|
||||
// Scale a YUV plane.
|
||||
void ScalePlane(const uint8* src, int src_stride,
|
||||
int src_width, int src_height,
|
||||
uint8* dst, int dst_stride,
|
||||
int dst_width, int dst_height,
|
||||
FilterMode filtering);
|
||||
|
||||
// Scales a YUV 4:2:0 image from the src width and height to the
|
||||
// dst width and height.
|
||||
// If filtering is kFilterNone, a simple nearest-neighbor algorithm is
|
||||
|
||||
@ -3631,11 +3631,16 @@ static void ScalePlaneDown(int src_width, int src_height,
|
||||
}
|
||||
}
|
||||
|
||||
static void ScalePlane(const uint8* src, int src_stride,
|
||||
int src_width, int src_height,
|
||||
uint8* dst, int dst_stride,
|
||||
int dst_width, int dst_height,
|
||||
FilterMode filtering, bool use_ref) {
|
||||
// Scale a plane.
|
||||
//
|
||||
// This function in turn calls a scaling function
|
||||
// suitable for handling the desired resolutions.
|
||||
|
||||
void ScalePlane(const uint8* src, int src_stride,
|
||||
int src_width, int src_height,
|
||||
uint8* dst, int dst_stride,
|
||||
int dst_width, int dst_height,
|
||||
FilterMode filtering) {
|
||||
#ifdef CPU_X86
|
||||
// environment variable overrides for testing.
|
||||
char *filter_override = getenv("LIBYUV_FILTER");
|
||||
@ -3650,7 +3655,7 @@ static void ScalePlane(const uint8* src, int src_stride,
|
||||
CopyPlane(src, src_stride, dst, dst_stride, dst_width, dst_height);
|
||||
} else if (dst_width <= src_width && dst_height <= src_height) {
|
||||
// Scale down.
|
||||
if (use_ref) {
|
||||
if (use_reference_impl_) {
|
||||
// For testing, allow the optimized versions to be disabled.
|
||||
ScalePlaneDown(src_width, src_height, dst_width, dst_height,
|
||||
src_stride, dst_stride, src, dst, filtering);
|
||||
@ -3689,13 +3694,9 @@ static void ScalePlane(const uint8* src, int src_stride,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Scale a plane.
|
||||
*
|
||||
* This function in turn calls a scaling function
|
||||
* suitable for handling the desired resolutions.
|
||||
*
|
||||
*/
|
||||
// Scale an I420 image.
|
||||
//
|
||||
// This function in turn calls a scaling function for each plane.
|
||||
|
||||
int I420Scale(const uint8* src_y, int src_stride_y,
|
||||
const uint8* src_u, int src_stride_u,
|
||||
@ -3728,13 +3729,13 @@ int I420Scale(const uint8* src_y, int src_stride_y,
|
||||
|
||||
ScalePlane(src_y, src_stride_y, src_width, src_height,
|
||||
dst_y, dst_stride_y, dst_width, dst_height,
|
||||
filtering, use_reference_impl_);
|
||||
filtering);
|
||||
ScalePlane(src_u, src_stride_u, src_halfwidth, src_halfheight,
|
||||
dst_u, dst_stride_u, dst_halfwidth, dst_halfheight,
|
||||
filtering, use_reference_impl_);
|
||||
filtering);
|
||||
ScalePlane(src_v, src_stride_v, src_halfwidth, src_halfheight,
|
||||
dst_v, dst_stride_v, dst_halfwidth, dst_halfheight,
|
||||
filtering, use_reference_impl_);
|
||||
filtering);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -3769,13 +3770,13 @@ int Scale(const uint8* src_y, const uint8* src_u, const uint8* src_v,
|
||||
|
||||
ScalePlane(src_y, src_stride_y, src_width, src_height,
|
||||
dst_y, dst_stride_y, dst_width, dst_height,
|
||||
filtering, use_reference_impl_);
|
||||
filtering);
|
||||
ScalePlane(src_u, src_stride_u, src_halfwidth, src_halfheight,
|
||||
dst_u, dst_stride_u, dst_halfwidth, dst_halfheight,
|
||||
filtering, use_reference_impl_);
|
||||
filtering);
|
||||
ScalePlane(src_v, src_stride_v, src_halfwidth, src_halfheight,
|
||||
dst_v, dst_stride_v, dst_halfwidth, dst_halfheight,
|
||||
filtering, use_reference_impl_);
|
||||
filtering);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user