diff options
author | sgk@google.com <sgk@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-08 03:56:53 +0000 |
---|---|---|
committer | sgk@google.com <sgk@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-08 03:56:53 +0000 |
commit | 7091ca47e63c66e8f9f9b02508ea4cbc25ab3aff (patch) | |
tree | 0a0917e11f12a7e607eac702edd5eef574edc360 /media/base | |
parent | 51046488738f8a3fdd7f55fc046a93f89e0294f7 (diff) | |
download | chromium_src-7091ca47e63c66e8f9f9b02508ea4cbc25ab3aff.zip chromium_src-7091ca47e63c66e8f9f9b02508ea4cbc25ab3aff.tar.gz chromium_src-7091ca47e63c66e8f9f9b02508ea4cbc25ab3aff.tar.bz2 |
Revert r15615, build errors on linux and mac.
Review URL: http://codereview.chromium.org/113135
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15616 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/base')
-rw-r--r-- | media/base/yuv_scale.cc | 111 | ||||
-rw-r--r-- | media/base/yuv_scale.h | 48 | ||||
-rw-r--r-- | media/base/yuv_scale_unittest.cc | 6 |
3 files changed, 38 insertions, 127 deletions
diff --git a/media/base/yuv_scale.cc b/media/base/yuv_scale.cc index be99cac..7f39861 100644 --- a/media/base/yuv_scale.cc +++ b/media/base/yuv_scale.cc @@ -20,74 +20,37 @@ static void ScaleYV12ToRGB32Row(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* rgb_buf, - int width, - int scaled_width); + size_t width, + size_t scaled_width); static void HalfYV12ToRGB32Row(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* rgb_buf, - int width); - -extern "C" void ConvertYV12ToRGB32Row(const uint8* y_buf, - const uint8* u_buf, - const uint8* v_buf, - uint8* rgb_buf, - size_t width); + size_t width); // Scale a frame of YV12 (aka YUV420) to 32 bit ARGB. void ScaleYV12ToRGB32(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* rgb_buf, - int width, - int height, - int scaled_width, - int scaled_height, + size_t width, + size_t height, + size_t scaled_width, + size_t scaled_height, int y_pitch, int uv_pitch, - int rgb_pitch, - Rotate view_rotate) { - // Rotations that start at right side of image - if ((view_rotate == ROTATE_180) || - (view_rotate == ROTATE_270) || - (view_rotate == MIRROR_ROTATE_0) || - (view_rotate == MIRROR_ROTATE_90)) { - y_buf += width - 1; - u_buf += width / 2 - 1; - v_buf += width / 2 - 1; - width = -width; - } - // Rotations that start at bottom of image - if ((view_rotate == ROTATE_90) || - (view_rotate == ROTATE_180) || - (view_rotate == MIRROR_ROTATE_90) || - (view_rotate == MIRROR_ROTATE_180)) { - y_buf += (height - 1) * y_pitch; - u_buf += (height / 2 - 1) * uv_pitch; - v_buf += (height / 2 - 1) * uv_pitch; - height = -height; - } - // Only these rotations are implemented. - DCHECK((view_rotate == ROTATE_0) || - (view_rotate == ROTATE_180) || - (view_rotate == MIRROR_ROTATE_0) || - (view_rotate == MIRROR_ROTATE_180)); - + int rgb_pitch) { #ifdef _OPENMP #pragma omp parallel for #endif - for (int y = 0; y < scaled_height; ++y) { + for (int y = 0; y < static_cast<int>(scaled_height); ++y) { uint8* dest_pixel = rgb_buf + y * rgb_pitch; int scaled_y = (y * height / scaled_height); - const uint8* y_ptr = y_buf + scaled_y * y_pitch; const uint8* u_ptr = u_buf + scaled_y / 2 * uv_pitch; const uint8* v_ptr = v_buf + scaled_y / 2 * uv_pitch; - if (scaled_width == width) { - ConvertYV12ToRGB32Row(y_ptr, u_ptr, v_ptr, - dest_pixel, scaled_width); - } else if (scaled_width == (width / 2)) { + if (scaled_width == (width / 2)) { HalfYV12ToRGB32Row(y_ptr, u_ptr, v_ptr, dest_pixel, scaled_width); } else { @@ -102,43 +65,17 @@ void ScaleYV16ToRGB32(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* rgb_buf, - int width, - int height, - int scaled_width, - int scaled_height, + size_t width, + size_t height, + size_t scaled_width, + size_t scaled_height, int y_pitch, int uv_pitch, - int rgb_pitch, - Rotate view_rotate) { - // Rotations that start at right side of image - if ((view_rotate == ROTATE_180) || - (view_rotate == ROTATE_270) || - (view_rotate == MIRROR_ROTATE_0) || - (view_rotate == MIRROR_ROTATE_90)) { - y_buf += width - 1; - u_buf += width / 2 - 1; - v_buf += width / 2 - 1; - width = -width; - } - // Rotations that start at bottom of image - if ((view_rotate == ROTATE_90) || - (view_rotate == ROTATE_180) || - (view_rotate == MIRROR_ROTATE_90) || - (view_rotate == MIRROR_ROTATE_180)) { - y_buf += (height - 1) * y_pitch; - u_buf += (height - 1) * uv_pitch; - v_buf += (height - 1) * uv_pitch; - height = -height; - } - // Only these rotations are implemented. - DCHECK((view_rotate == ROTATE_0) || - (view_rotate == ROTATE_180) || - (view_rotate == MIRROR_ROTATE_0) || - (view_rotate == MIRROR_ROTATE_180)); + int rgb_pitch) { #ifdef _OPENMP #pragma omp parallel for #endif - for (int y = 0; y < scaled_height; ++y) { + for (int y = 0; y < static_cast<int>(scaled_height); ++y) { uint8* dest_pixel = rgb_buf + y * rgb_pitch; int scaled_y = (y * height / scaled_height); const uint8* y_ptr = y_buf + scaled_y * y_pitch; @@ -234,9 +171,9 @@ static uint8 g_rgb_clip_table[kClipOverflow // Therefore source range is -128 to 384. // Output clips to unsigned 0 to 255. static inline uint32 clip(int32 value) { -// DCHECK(((value >> 8) + kClipOverflow) >= 0); -// DCHECK(((value >> 8) + kClipOverflow) < -// (kClipOverflow + kClipTableSize + kClipOverflow)); + DCHECK(((value >> 8) + kClipOverflow) >= 0); + DCHECK(((value >> 8) + kClipOverflow) < + (kClipOverflow + kClipTableSize + kClipOverflow)); return static_cast<uint32>(g_rgb_clip_table[((value) >> 8) + kClipOverflow]); } @@ -249,11 +186,11 @@ static void ScaleYV12ToRGB32Row(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* rgb_buf, - int width, - int scaled_width) { + size_t width, + size_t scaled_width) { int scaled_dx = width * 16 / scaled_width; int scaled_x = 0; - for (int32 x = 0; x < scaled_width; ++x) { + for (int32 x = 0; x < static_cast<int32>(scaled_width); ++x) { uint8 u = u_buf[scaled_x >> 5]; uint8 v = v_buf[scaled_x >> 5]; int32 d = static_cast<int32>(u) - 128; @@ -296,8 +233,8 @@ static void HalfYV12ToRGB32Row(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* rgb_buf, - int width) { - for (int32 x = 0; x < width; ++x) { + size_t width) { + for (int32 x = 0; x < static_cast<int32>(width); ++x) { uint8 u = u_buf[x]; uint8 v = v_buf[x]; int32 d = static_cast<int32>(u) - 128; diff --git a/media/base/yuv_scale.h b/media/base/yuv_scale.h index a029664..f354942 100644 --- a/media/base/yuv_scale.h +++ b/media/base/yuv_scale.h @@ -9,57 +9,33 @@ namespace media { -// Mirror means flip the image horizontally, as in looking in a mirror. -// Rotate happens after mirroring. - -enum Rotate { - ROTATE_0, // Rotation off. - ROTATE_90, // Rotate clockwise. - ROTATE_180, // Rotate upside down. - ROTATE_270, // Rotate counter clockwise. - MIRROR_ROTATE_0, // Mirror horizontally. - MIRROR_ROTATE_90, // Mirror then Rotate clockwise. - MIRROR_ROTATE_180, // Mirror vertically. - MIRROR_ROTATE_270, // Transpose. -}; - -// Diagram showing origin and direction of source sampling. -// ->0 4<- -// 7 3 -// -// 6 5 -// ->1 2<- - - // Scale a frame of YV12 (aka YUV420) to 32 bit ARGB. void ScaleYV12ToRGB32(const uint8* yplane, const uint8* uplane, const uint8* vplane, uint8* rgbframe, - int frame_width, - int frame_height, - int scaled_width, - int scaled_height, + size_t frame_width, + size_t frame_height, + size_t scaled_width, + size_t scaled_height, int ystride, int uvstride, - int rgbstride, - Rotate view_rotate); + int rgbstride); // Scale a frame of YV16 (aka YUV422) to 32 bit ARGB. void ScaleYV16ToRGB32(const uint8* yplane, const uint8* uplane, const uint8* vplane, uint8* rgbframe, - int frame_width, - int frame_height, - int scaled_width, - int scaled_height, + size_t frame_width, + size_t frame_height, + size_t scaled_width, + size_t scaled_height, int ystride, int uvstride, - int rgbstride, - Rotate view_rotate); - -} // namespace media + int rgbstride); #endif // MEDIA_BASE_YUV_SCALE_H_ +} // namespace media + diff --git a/media/base/yuv_scale_unittest.cc b/media/base/yuv_scale_unittest.cc index c81c74f..f5e2f0d 100644 --- a/media/base/yuv_scale_unittest.cc +++ b/media/base/yuv_scale_unittest.cc @@ -68,8 +68,7 @@ TEST(YuvScaleTest, Basic) { kScaledWidth, kScaledHeight, // Dimensions kWidth, // YStride kWidth / 2, // UvStride - kScaledWidth * kBpp, // RgbStride - media::ROTATE_0); + kScaledWidth * kBpp); // RgbStride unsigned int rgb_hash = hash(rgb_scaled_bytes, size_of_rgb_scaled); @@ -107,8 +106,7 @@ TEST(YV16ScaleTest, Basic) { kScaledWidth, kScaledHeight, // Dimensions kWidth, // YStride kWidth / 2, // UvStride - kScaledWidth * kBpp, // RgbStride - media::ROTATE_0); + kScaledWidth * kBpp); // RgbStride unsigned int rgb_hash = hash(rgb_scaled_bytes, size_of_rgb_scaled); |