summaryrefslogtreecommitdiffstats
path: root/media/base
diff options
context:
space:
mode:
authorsgk@google.com <sgk@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-08 03:56:53 +0000
committersgk@google.com <sgk@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-08 03:56:53 +0000
commit7091ca47e63c66e8f9f9b02508ea4cbc25ab3aff (patch)
tree0a0917e11f12a7e607eac702edd5eef574edc360 /media/base
parent51046488738f8a3fdd7f55fc046a93f89e0294f7 (diff)
downloadchromium_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.cc111
-rw-r--r--media/base/yuv_scale.h48
-rw-r--r--media/base/yuv_scale_unittest.cc6
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);