mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2025-12-06 16:56:55 +08:00
Add I422Copy and I444Copy
BUG=none TEST=I422ToI422 and I444ToI444 Review URL: https://webrtc-codereview.appspot.com/1103009 git-svn-id: http://libyuv.googlecode.com/svn/trunk@570 16f28f9a-4ce2-e073-06de-1de4eb20be90
This commit is contained in:
parent
b444bae883
commit
a00da62e52
@ -1,6 +1,6 @@
|
|||||||
Name: libyuv
|
Name: libyuv
|
||||||
URL: http://code.google.com/p/libyuv/
|
URL: http://code.google.com/p/libyuv/
|
||||||
Version: 569
|
Version: 570
|
||||||
License: BSD
|
License: BSD
|
||||||
License File: LICENSE
|
License File: LICENSE
|
||||||
|
|
||||||
|
|||||||
@ -22,6 +22,13 @@ namespace libyuv {
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Copy a plane of data.
|
||||||
|
LIBYUV_API
|
||||||
|
void CopyPlane(const uint8* src_y, int src_stride_y,
|
||||||
|
uint8* dst_y, int dst_stride_y,
|
||||||
|
int width, int height);
|
||||||
|
|
||||||
|
// Set a plane of data to a 32 bit value.
|
||||||
LIBYUV_API
|
LIBYUV_API
|
||||||
void SetPlane(uint8* dst_y, int dst_stride_y,
|
void SetPlane(uint8* dst_y, int dst_stride_y,
|
||||||
int width, int height,
|
int width, int height,
|
||||||
@ -33,11 +40,28 @@ int I400ToI400(const uint8* src_y, int src_stride_y,
|
|||||||
uint8* dst_y, int dst_stride_y,
|
uint8* dst_y, int dst_stride_y,
|
||||||
int width, int height);
|
int width, int height);
|
||||||
|
|
||||||
// Copy a plane of data (I420 to I400).
|
|
||||||
|
// Copy I422 to I422.
|
||||||
|
#define I422ToI422 I422Copy
|
||||||
LIBYUV_API
|
LIBYUV_API
|
||||||
void CopyPlane(const uint8* src_y, int src_stride_y,
|
int I422Copy(const uint8* src_y, int src_stride_y,
|
||||||
uint8* dst_y, int dst_stride_y,
|
const uint8* src_u, int src_stride_u,
|
||||||
int width, int height);
|
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);
|
||||||
|
|
||||||
|
// Copy I444 to I444.
|
||||||
|
#define I444ToI444 I444Copy
|
||||||
|
LIBYUV_API
|
||||||
|
int I444Copy(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);
|
||||||
|
|
||||||
// Convert YUY2 to I422.
|
// Convert YUY2 to I422.
|
||||||
LIBYUV_API
|
LIBYUV_API
|
||||||
|
|||||||
@ -11,6 +11,6 @@
|
|||||||
#ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT
|
#ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT
|
||||||
#define INCLUDE_LIBYUV_VERSION_H_
|
#define INCLUDE_LIBYUV_VERSION_H_
|
||||||
|
|
||||||
#define LIBYUV_VERSION 569
|
#define LIBYUV_VERSION 570
|
||||||
|
|
||||||
#endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT
|
#endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT
|
||||||
|
|||||||
@ -71,6 +71,69 @@ void CopyPlane(const uint8* src_y, int src_stride_y,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Copy I422.
|
||||||
|
LIBYUV_API
|
||||||
|
int I422Copy(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) {
|
||||||
|
if (!src_y || !src_u || !src_v ||
|
||||||
|
!dst_y || !dst_u || !dst_v ||
|
||||||
|
width <= 0 || height == 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
// Negative height means invert the image.
|
||||||
|
if (height < 0) {
|
||||||
|
height = -height;
|
||||||
|
src_y = src_y + (height - 1) * src_stride_y;
|
||||||
|
src_u = src_u + (height - 1) * src_stride_u;
|
||||||
|
src_v = src_v + (height - 1) * src_stride_v;
|
||||||
|
src_stride_y = -src_stride_y;
|
||||||
|
src_stride_u = -src_stride_u;
|
||||||
|
src_stride_v = -src_stride_v;
|
||||||
|
}
|
||||||
|
|
||||||
|
int halfwidth = (width + 1) >> 1;
|
||||||
|
CopyPlane(src_y, src_stride_y, dst_y, dst_stride_y, width, height);
|
||||||
|
CopyPlane(src_u, src_stride_u, dst_u, dst_stride_u, halfwidth, height);
|
||||||
|
CopyPlane(src_v, src_stride_v, dst_v, dst_stride_v, halfwidth, height);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy I444.
|
||||||
|
LIBYUV_API
|
||||||
|
int I444Copy(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) {
|
||||||
|
if (!src_y || !src_u || !src_v ||
|
||||||
|
!dst_y || !dst_u || !dst_v ||
|
||||||
|
width <= 0 || height == 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
// Negative height means invert the image.
|
||||||
|
if (height < 0) {
|
||||||
|
height = -height;
|
||||||
|
src_y = src_y + (height - 1) * src_stride_y;
|
||||||
|
src_u = src_u + (height - 1) * src_stride_u;
|
||||||
|
src_v = src_v + (height - 1) * src_stride_v;
|
||||||
|
src_stride_y = -src_stride_y;
|
||||||
|
src_stride_u = -src_stride_u;
|
||||||
|
src_stride_v = -src_stride_v;
|
||||||
|
}
|
||||||
|
|
||||||
|
CopyPlane(src_y, src_stride_y, dst_y, dst_stride_y, width, height);
|
||||||
|
CopyPlane(src_u, src_stride_u, dst_u, dst_stride_u, width, height);
|
||||||
|
CopyPlane(src_v, src_stride_v, dst_v, dst_stride_v, width, height);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// Copy I400.
|
// Copy I400.
|
||||||
LIBYUV_API
|
LIBYUV_API
|
||||||
int I400ToI400(const uint8* src_y, int src_stride_y,
|
int I400ToI400(const uint8* src_y, int src_stride_y,
|
||||||
|
|||||||
@ -142,7 +142,8 @@ TESTPLANARTOP(I420, 2, 2, I422, 2, 1)
|
|||||||
TESTPLANARTOP(I420, 2, 2, I444, 1, 1)
|
TESTPLANARTOP(I420, 2, 2, I444, 1, 1)
|
||||||
TESTPLANARTOP(I420, 2, 2, I411, 4, 1)
|
TESTPLANARTOP(I420, 2, 2, I411, 4, 1)
|
||||||
TESTPLANARTOP(I420, 2, 2, I420Mirror, 2, 2)
|
TESTPLANARTOP(I420, 2, 2, I420Mirror, 2, 2)
|
||||||
|
TESTPLANARTOP(I422, 2, 1, I422, 2, 1)
|
||||||
|
TESTPLANARTOP(I444, 1, 1, I444, 1, 1)
|
||||||
|
|
||||||
#define TESTPLANARTOBPI(SRC_FMT_PLANAR, SRC_SUBSAMP_X, SRC_SUBSAMP_Y, \
|
#define TESTPLANARTOBPI(SRC_FMT_PLANAR, SRC_SUBSAMP_X, SRC_SUBSAMP_Y, \
|
||||||
FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, W1280, N, NEG, OFF) \
|
FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, W1280, N, NEG, OFF) \
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user