aboutsummaryrefslogtreecommitdiff
path: root/files/include/libyuv/rotate.h
diff options
context:
space:
mode:
authorHendrik Dahlkamp <hendrik@google.com>2013-01-30 18:13:09 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2013-01-30 18:13:09 -0800
commitb4c1fd246279b207cb4aaa5e8055885f639c4524 (patch)
tree8ff16b765a83ba911233a1d7bfa27cce9cee3b7c /files/include/libyuv/rotate.h
parent59535dc1ff51cb698bf9485dee9e147d5254e586 (diff)
parent33cfdeb7b267ab635413797fffb046b73272f7ec (diff)
downloadlibyuv-b4c1fd246279b207cb4aaa5e8055885f639c4524.tar.gz
am 33cfdeb7: Update libyuv to r397
# Via Adam Hampson * commit '33cfdeb7b267ab635413797fffb046b73272f7ec': Update libyuv to r397
Diffstat (limited to 'files/include/libyuv/rotate.h')
-rw-r--r--files/include/libyuv/rotate.h88
1 files changed, 73 insertions, 15 deletions
diff --git a/files/include/libyuv/rotate.h b/files/include/libyuv/rotate.h
index 65c38de3..e7608a2d 100644
--- a/files/include/libyuv/rotate.h
+++ b/files/include/libyuv/rotate.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011 The LibYuv project authors. All Rights Reserved.
+ * Copyright 2011 The LibYuv Project Authors. All rights reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
@@ -8,45 +8,103 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-#ifndef INCLUDE_LIBYUV_ROTATE_H_
+#ifndef INCLUDE_LIBYUV_ROTATE_H_ // NOLINT
#define INCLUDE_LIBYUV_ROTATE_H_
#include "libyuv/basic_types.h"
+#ifdef __cplusplus
namespace libyuv {
+extern "C" {
+#endif
-// Supported rotation
+// Supported rotation.
enum RotationMode {
- kRotate0 = 0, // No rotation
- kRotate90 = 90, // Rotate 90 degrees clockwise
- kRotate180 = 180, // Rotate 180 degrees
- kRotate270 = 270, // Rotate 270 degrees clockwise
+ kRotate0 = 0, // No rotation.
+ kRotate90 = 90, // Rotate 90 degrees clockwise.
+ kRotate180 = 180, // Rotate 180 degrees.
+ kRotate270 = 270, // Rotate 270 degrees clockwise.
- // Deprecated
+ // Deprecated.
kRotateNone = 0,
kRotateClockwise = 90,
kRotateCounterClockwise = 270,
};
-// Rotate I420 frame
+// Rotate I420 frame.
+LIBYUV_API
int I420Rotate(const uint8* src_y, int src_stride_y,
const uint8* src_u, int src_stride_u,
const uint8* src_v, int src_stride_v,
uint8* dst_y, int dst_stride_y,
uint8* dst_u, int dst_stride_u,
uint8* dst_v, int dst_stride_v,
- int width, int height,
- RotationMode mode);
+ int src_width, int src_height, RotationMode mode);
-// Rotate NV12 input and store in I420
+// Rotate NV12 input and store in I420.
+LIBYUV_API
int NV12ToI420Rotate(const uint8* src_y, int src_stride_y,
const uint8* src_uv, int src_stride_uv,
uint8* dst_y, int dst_stride_y,
uint8* dst_u, int dst_stride_u,
uint8* dst_v, int dst_stride_v,
- int width, int height,
- RotationMode mode);
+ int src_width, int src_height, RotationMode mode);
+// Rotate planes by 90, 180, 270
+LIBYUV_API
+void RotatePlane90(const uint8* src, int src_stride,
+ uint8* dst, int dst_stride,
+ int width, int height);
+
+LIBYUV_API
+void RotatePlane180(const uint8* src, int src_stride,
+ uint8* dst, int dst_stride,
+ int width, int height);
+
+LIBYUV_API
+void RotatePlane270(const uint8* src, int src_stride,
+ uint8* dst, int dst_stride,
+ int width, int height);
+
+LIBYUV_API
+void RotateUV90(const uint8* src, int src_stride,
+ uint8* dst_a, int dst_stride_a,
+ uint8* dst_b, int dst_stride_b,
+ int width, int height);
+
+// Rotations for when U and V are interleaved.
+// These functions take one input pointer and
+// split the data into two buffers while
+// rotating them.
+LIBYUV_API
+void RotateUV180(const uint8* src, int src_stride,
+ uint8* dst_a, int dst_stride_a,
+ uint8* dst_b, int dst_stride_b,
+ int width, int height);
+
+LIBYUV_API
+void RotateUV270(const uint8* src, int src_stride,
+ uint8* dst_a, int dst_stride_a,
+ uint8* dst_b, int dst_stride_b,
+ int width, int height);
+
+// The 90 and 270 functions are based on transposes.
+// Doing a transpose with reversing the read/write
+// order will result in a rotation by +- 90 degrees.
+LIBYUV_API
+void TransposePlane(const uint8* src, int src_stride,
+ uint8* dst, int dst_stride,
+ int width, int height);
+
+LIBYUV_API
+void TransposeUV(const uint8* src, int src_stride,
+ uint8* dst_a, int dst_stride_a,
+ uint8* dst_b, int dst_stride_b,
+ int width, int height);
+
+#ifdef __cplusplus
+} // extern "C"
} // namespace libyuv
+#endif
-#endif // INCLUDE_LIBYUV_ROTATE_H_
+#endif // INCLUDE_LIBYUV_ROTATE_H_ NOLINT