123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- /*
- * 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
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
- #ifndef INCLUDE_LIBYUV_ROTATE_H_
- #define INCLUDE_LIBYUV_ROTATE_H_
- #include "libyuv/basic_types.h"
- #ifdef __cplusplus
- namespace libyuv {
- extern "C" {
- #endif
- // Supported rotation.
- typedef enum RotationMode {
- kRotate0 = 0, // No rotation.
- kRotate90 = 90, // Rotate 90 degrees clockwise.
- kRotate180 = 180, // Rotate 180 degrees.
- kRotate270 = 270, // Rotate 270 degrees clockwise.
- // Deprecated.
- kRotateNone = 0,
- kRotateClockwise = 90,
- kRotateCounterClockwise = 270,
- } RotationModeEnum;
- // 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 src_width,
- int src_height,
- enum RotationMode mode);
- // 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 src_width,
- int src_height,
- enum RotationMode mode);
- // Rotate a plane by 0, 90, 180, or 270.
- LIBYUV_API
- int RotatePlane(const uint8* src,
- int src_stride,
- uint8* dst,
- int dst_stride,
- int src_width,
- int src_height,
- enum RotationMode mode);
- // Rotate planes by 90, 180, 270. Deprecated.
- 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. Deprecated.
- 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.
- // Deprecated.
- 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_
|