summaryrefslogtreecommitdiff
path: root/src/libffmpeg/libavcodec/imgconvert.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libffmpeg/libavcodec/imgconvert.c')
-rw-r--r--src/libffmpeg/libavcodec/imgconvert.c1102
1 files changed, 409 insertions, 693 deletions
diff --git a/src/libffmpeg/libavcodec/imgconvert.c b/src/libffmpeg/libavcodec/imgconvert.c
index cace55a94..cfb21a477 100644
--- a/src/libffmpeg/libavcodec/imgconvert.c
+++ b/src/libffmpeg/libavcodec/imgconvert.c
@@ -1,4 +1,3 @@
-
/*
* Misc image convertion routines
* Copyright (c) 2001, 2002, 2003 Fabrice Bellard.
@@ -17,6 +16,13 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+
+/**
+ * @file imgconvert.c
+ * Misc image convertion routines.
+ */
+
+
#include "avcodec.h"
#include "dsputil.h"
@@ -30,59 +36,90 @@
typedef struct PixFmtInfo {
const char *name;
- UINT8 nb_components; /* number of components in AVPicture array */
- UINT8 is_yuv : 1; /* true if YUV instead of RGB color space */
- UINT8 is_packed : 1; /* true if multiple components in same word */
- UINT8 is_paletted : 1; /* true if paletted */
- UINT8 is_alpha : 1; /* true if alpha can be specified */
- UINT8 is_gray : 1; /* true if gray or monochrome format */
- UINT8 x_chroma_shift; /* X chroma subsampling factor is 2 ^ shift */
- UINT8 y_chroma_shift; /* Y chroma subsampling factor is 2 ^ shift */
+ uint8_t nb_components; /* number of components in AVPicture array */
+ uint8_t is_yuv : 1; /* true if YUV instead of RGB color space */
+ uint8_t is_packed : 1; /* true if multiple components in same word */
+ uint8_t is_paletted : 1; /* true if paletted */
+ uint8_t is_alpha : 1; /* true if alpha can be specified */
+ uint8_t is_gray : 1; /* true if gray or monochrome format */
+ uint8_t x_chroma_shift; /* X chroma subsampling factor is 2 ^ shift */
+ uint8_t y_chroma_shift; /* Y chroma subsampling factor is 2 ^ shift */
} PixFmtInfo;
/* this table gives more information about formats */
static PixFmtInfo pix_fmt_info[PIX_FMT_NB] = {
- { /*PIX_FMT_YUV420P*/
- "yuv420p", 3, 1, 0, 0, 0, 0, 1, 1,
+ /* YUV formats */
+ [PIX_FMT_YUV420P] = {
+ .name = "yuv420p",
+ .nb_components = 3, .is_yuv = 1,
+ .x_chroma_shift = 1, .y_chroma_shift = 1,
},
- { /*PIX_FMT_YUV422*/
- "yuv422", 1, 1, 1, 0, 0, 0, 1, 0,
+ [PIX_FMT_YUV422P] = {
+ .name = "yuv422p",
+ .nb_components = 3, .is_yuv = 1,
+ .x_chroma_shift = 1, .y_chroma_shift = 0,
},
- { /*PIX_FMT_RGB24*/
- "rgb24", 1, 0, 1, 0, 0, 0, 0, 0,
+ [PIX_FMT_YUV444P] = {
+ .name = "yuv444p",
+ .nb_components = 3, .is_yuv = 1,
+ .x_chroma_shift = 0, .y_chroma_shift = 0,
},
- { /*PIX_FMT_BGR24*/
- "bgr24", 1, 0, 1, 0, 0, 0, 0, 0,
+ [PIX_FMT_YUV422] = {
+ .name = "yuv422",
+ .nb_components = 1, .is_yuv = 1, .is_packed = 1,
+ .x_chroma_shift = 1, .y_chroma_shift = 0,
},
- { /*PIX_FMT_YUV422P*/
- "yuv422p", 3, 1, 0, 0, 0, 0, 1, 0,
+ [PIX_FMT_YUV410P] = {
+ .name = "yuv410p",
+ .nb_components = 3, .is_yuv = 1,
+ .x_chroma_shift = 2, .y_chroma_shift = 2,
},
- { /*PIX_FMT_YUV444P*/
- "yuv444p", 3, 1, 0, 0, 0, 0, 0, 0,
+ [PIX_FMT_YUV411P] = {
+ .name = "yuv411p",
+ .nb_components = 3, .is_yuv = 1,
+ .x_chroma_shift = 2, .y_chroma_shift = 0,
},
- { /*PIX_FMT_RGBA32*/
- "rgba32", 1, 0, 1, 0, 1, 0, 0, 0,
+
+ /* RGB formats */
+ [PIX_FMT_RGB24] = {
+ .name = "rgb24",
+ .nb_components = 1, .is_packed = 1,
},
- { /*PIX_FMT_YUV410P*/
- "yuv410p", 3, 1, 0, 0, 0, 0, 2, 2,
+ [PIX_FMT_BGR24] = {
+ .name = "bgr24",
+ .nb_components = 1, .is_packed = 1,
},
- { /*PIX_FMT_YUV411P*/
- "yuv411p", 3, 1, 0, 0, 0, 0, 2, 0,
+ [PIX_FMT_RGBA32] = {
+ .name = "rgba32",
+ .nb_components = 1, .is_packed = 1, .is_alpha = 1,
},
- { /*PIX_FMT_RGB565*/
- "rgb565", 1, 0, 1, 0, 0, 0, 0, 0,
+ [PIX_FMT_RGB565] = {
+ .name = "rgb565",
+ .nb_components = 1, .is_packed = 1,
},
- { /*PIX_FMT_RGB555*/
- "rgb555", 1, 0, 1, 0, 1, 0, 0, 0,
+ [PIX_FMT_RGB555] = {
+ .name = "rgb555",
+ .nb_components = 1, .is_packed = 1, .is_alpha = 1,
},
- { /*PIX_FMT_GRAY8*/
- "gray", 1, 0, 0, 0, 0, 1, 0, 0,
+
+ /* gray / mono formats */
+ [PIX_FMT_GRAY8] = {
+ .name = "gray",
+ .nb_components = 1, .is_gray = 1,
},
- { /*PIX_FMT_MONOWHITE*/
- "monow", 1, 0, 1, 0, 0, 1, 0, 0,
+ [PIX_FMT_MONOWHITE] = {
+ .name = "monow",
+ .nb_components = 1, .is_packed = 1, .is_gray = 1,
},
- { /*PIX_FMT_MONOBLACK*/
- "monob", 1, 0, 1, 0, 0, 1, 0, 0,
+ [PIX_FMT_MONOBLACK] = {
+ .name = "monob",
+ .nb_components = 1, .is_packed = 1, .is_gray = 1,
+ },
+
+ /* paletted formats */
+ [PIX_FMT_PAL8] = {
+ .name = "pal8",
+ .nb_components = 1, .is_packed = 1, .is_paletted = 1,
},
};
@@ -106,21 +143,30 @@ const char *avcodec_get_pix_fmt_name(int pix_fmt)
}
/* Picture field are filled with 'ptr' addresses. Also return size */
-int avpicture_fill(AVPicture *picture, UINT8 *ptr,
+int avpicture_fill(AVPicture *picture, uint8_t *ptr,
int pix_fmt, int width, int height)
{
- int size;
-
+ int size, w2, h2, size2;
+ PixFmtInfo *pinfo;
+
+ pinfo = &pix_fmt_info[pix_fmt];
size = width * height;
switch(pix_fmt) {
case PIX_FMT_YUV420P:
+ case PIX_FMT_YUV422P:
+ case PIX_FMT_YUV444P:
+ case PIX_FMT_YUV410P:
+ case PIX_FMT_YUV411P:
+ w2 = (width + (1 << pinfo->x_chroma_shift) - 1) >> pinfo->x_chroma_shift;
+ h2 = (height + (1 << pinfo->y_chroma_shift) - 1) >> pinfo->y_chroma_shift;
+ size2 = w2 * h2;
picture->data[0] = ptr;
picture->data[1] = picture->data[0] + size;
- picture->data[2] = picture->data[1] + size / 4;
+ picture->data[2] = picture->data[1] + size2;
picture->linesize[0] = width;
- picture->linesize[1] = width / 2;
- picture->linesize[2] = width / 2;
- return (size * 3) / 2;
+ picture->linesize[1] = w2;
+ picture->linesize[2] = w2;
+ return size + 2 * size2;
case PIX_FMT_RGB24:
case PIX_FMT_BGR24:
picture->data[0] = ptr;
@@ -128,44 +174,12 @@ int avpicture_fill(AVPicture *picture, UINT8 *ptr,
picture->data[2] = NULL;
picture->linesize[0] = width * 3;
return size * 3;
- case PIX_FMT_YUV422P:
- picture->data[0] = ptr;
- picture->data[1] = picture->data[0] + size;
- picture->data[2] = picture->data[1] + size / 2;
- picture->linesize[0] = width;
- picture->linesize[1] = width / 2;
- picture->linesize[2] = width / 2;
- return (size * 2);
- case PIX_FMT_YUV444P:
- picture->data[0] = ptr;
- picture->data[1] = picture->data[0] + size;
- picture->data[2] = picture->data[1] + size;
- picture->linesize[0] = width;
- picture->linesize[1] = width;
- picture->linesize[2] = width;
- return size * 3;
case PIX_FMT_RGBA32:
picture->data[0] = ptr;
picture->data[1] = NULL;
picture->data[2] = NULL;
picture->linesize[0] = width * 4;
return size * 4;
- case PIX_FMT_YUV410P:
- picture->data[0] = ptr;
- picture->data[1] = picture->data[0] + size;
- picture->data[2] = picture->data[1] + size / 16;
- picture->linesize[0] = width;
- picture->linesize[1] = width / 4;
- picture->linesize[2] = width / 4;
- return size + (size / 8);
- case PIX_FMT_YUV411P:
- picture->data[0] = ptr;
- picture->data[1] = picture->data[0] + size;
- picture->data[2] = picture->data[1] + size / 4;
- picture->linesize[0] = width;
- picture->linesize[1] = width / 4;
- picture->linesize[2] = width / 4;
- return size + (size / 2);
case PIX_FMT_RGB555:
case PIX_FMT_RGB565:
case PIX_FMT_YUV422:
@@ -187,10 +201,19 @@ int avpicture_fill(AVPicture *picture, UINT8 *ptr,
picture->data[2] = NULL;
picture->linesize[0] = (width + 7) >> 3;
return picture->linesize[0] * height;
+ case PIX_FMT_PAL8:
+ size2 = (size + 3) & ~3;
+ picture->data[0] = ptr;
+ picture->data[1] = ptr + size2; /* palette is stored here as 256 32 bit words */
+ picture->data[2] = NULL;
+ picture->linesize[0] = width;
+ picture->linesize[1] = 4;
+ return size2 + 256 * 4;
default:
picture->data[0] = NULL;
picture->data[1] = NULL;
picture->data[2] = NULL;
+ picture->data[3] = NULL;
return -1;
}
}
@@ -207,9 +230,9 @@ int avpicture_get_size(int pix_fmt, int width, int height)
static void yuv422_to_yuv420p(AVPicture *dst, AVPicture *src,
int width, int height)
{
- UINT8 *lum, *cb, *cr;
+ uint8_t *lum, *cb, *cr;
int x, y;
- const UINT8 *p;
+ const uint8_t *p;
lum = dst->data[0];
cb = dst->data[1];
@@ -242,12 +265,12 @@ static void yuv422_to_yuv420p(AVPicture *dst, AVPicture *src,
/* XXX: use generic filter ? */
/* 1x2 -> 1x1 */
-static void shrink2(UINT8 *dst, int dst_wrap,
- UINT8 *src, int src_wrap,
+static void shrink2(uint8_t *dst, int dst_wrap,
+ uint8_t *src, int src_wrap,
int width, int height)
{
int w;
- UINT8 *s1, *s2, *d;
+ uint8_t *s1, *s2, *d;
for(;height > 0; height--) {
s1 = src;
@@ -274,12 +297,12 @@ static void shrink2(UINT8 *dst, int dst_wrap,
}
/* 2x2 -> 1x1 */
-static void shrink22(UINT8 *dst, int dst_wrap,
- UINT8 *src, int src_wrap,
+static void shrink22(uint8_t *dst, int dst_wrap,
+ uint8_t *src, int src_wrap,
int width, int height)
{
int w;
- UINT8 *s1, *s2, *d;
+ uint8_t *s1, *s2, *d;
for(;height > 0; height--) {
s1 = src;
@@ -306,12 +329,12 @@ static void shrink22(UINT8 *dst, int dst_wrap,
}
/* 1x1 -> 2x2 */
-static void grow22(UINT8 *dst, int dst_wrap,
- UINT8 *src, int src_wrap,
+static void grow22(uint8_t *dst, int dst_wrap,
+ uint8_t *src, int src_wrap,
int width, int height)
{
int w;
- UINT8 *s1, *d;
+ uint8_t *s1, *d;
for(;height > 0; height--) {
s1 = src;
@@ -334,12 +357,12 @@ static void grow22(UINT8 *dst, int dst_wrap,
}
/* 1x2 -> 2x1 */
-static void conv411(UINT8 *dst, int dst_wrap,
- UINT8 *src, int src_wrap,
+static void conv411(uint8_t *dst, int dst_wrap,
+ uint8_t *src, int src_wrap,
int width, int height)
{
int w, c;
- UINT8 *s1, *s2, *d;
+ uint8_t *s1, *s2, *d;
for(;height > 0; height--) {
s1 = src;
@@ -358,8 +381,8 @@ static void conv411(UINT8 *dst, int dst_wrap,
}
}
-static void img_copy(UINT8 *dst, int dst_wrap,
- UINT8 *src, int src_wrap,
+static void img_copy(uint8_t *dst, int dst_wrap,
+ uint8_t *src, int src_wrap,
int width, int height)
{
for(;height > 0; height--) {
@@ -391,21 +414,21 @@ static void img_copy(UINT8 *dst, int dst_wrap,
static void yuv420p_to_ ## rgb_name (AVPicture *dst, AVPicture *src, \
int width, int height) \
{ \
- UINT8 *y1_ptr, *y2_ptr, *cb_ptr, *cr_ptr, *d, *d1, *d2; \
+ uint8_t *y1_ptr, *y2_ptr, *cb_ptr, *cr_ptr, *d, *d1, *d2; \
int w, y, cb, cr, r_add, g_add, b_add, width2; \
- UINT8 *cm = cropTbl + MAX_NEG_CROP; \
+ uint8_t *cm = cropTbl + MAX_NEG_CROP; \
unsigned int r, g, b; \
\
d = dst->data[0]; \
y1_ptr = src->data[0]; \
cb_ptr = src->data[1]; \
cr_ptr = src->data[2]; \
- width2 = width >> 1; \
- for(;height > 0; height -= 2) { \
+ width2 = (width + 1) >> 1; \
+ for(;height >= 2; height -= 2) { \
d1 = d; \
d2 = d + dst->linesize[0]; \
y2_ptr = y1_ptr + src->linesize[0]; \
- for(w = width2; w > 0; w --) { \
+ for(w = width; w >= 2; w -= 2) { \
cb = cb_ptr[0] - 128; \
cr = cr_ptr[0] - 128; \
r_add = C_RV * cr + (1 << (SCALE_BITS - 1)); \
@@ -433,30 +456,91 @@ static void yuv420p_to_ ## rgb_name (AVPicture *dst, AVPicture *src, \
cb_ptr++; \
cr_ptr++; \
} \
+ /* handle odd width */ \
+ if (w) { \
+ cb = cb_ptr[0] - 128; \
+ cr = cr_ptr[0] - 128; \
+ r_add = C_RV * cr + (1 << (SCALE_BITS - 1)); \
+ g_add = - C_GU * cb - C_GV * cr + (1 << (SCALE_BITS - 1)); \
+ b_add = C_BU * cb + (1 << (SCALE_BITS - 1)); \
+ \
+ YUV_TO_RGB2(r, g, b, y1_ptr[0]); \
+ RGB_OUT(d1, r, g, b); \
+ \
+ YUV_TO_RGB2(r, g, b, y2_ptr[0]); \
+ RGB_OUT(d2, r, g, b); \
+ d1 += BPP; \
+ d2 += BPP; \
+ y1_ptr++; \
+ y2_ptr++; \
+ cb_ptr++; \
+ cr_ptr++; \
+ } \
d += 2 * dst->linesize[0]; \
y1_ptr += 2 * src->linesize[0] - width; \
cb_ptr += src->linesize[1] - width2; \
cr_ptr += src->linesize[2] - width2; \
} \
+ /* handle odd height */ \
+ if (height) { \
+ d1 = d; \
+ for(w = width; w >= 2; w -= 2) { \
+ cb = cb_ptr[0] - 128; \
+ cr = cr_ptr[0] - 128; \
+ r_add = C_RV * cr + (1 << (SCALE_BITS - 1)); \
+ g_add = - C_GU * cb - C_GV * cr + (1 << (SCALE_BITS - 1)); \
+ b_add = C_BU * cb + (1 << (SCALE_BITS - 1)); \
+ \
+ /* output 2 pixels */ \
+ YUV_TO_RGB2(r, g, b, y1_ptr[0]); \
+ RGB_OUT(d1, r, g, b); \
+ \
+ YUV_TO_RGB2(r, g, b, y1_ptr[1]); \
+ RGB_OUT(d1 + BPP, r, g, b); \
+ \
+ d1 += 2 * BPP; \
+ \
+ y1_ptr += 2; \
+ cb_ptr++; \
+ cr_ptr++; \
+ } \
+ /* handle width */ \
+ if (w) { \
+ cb = cb_ptr[0] - 128; \
+ cr = cr_ptr[0] - 128; \
+ r_add = C_RV * cr + (1 << (SCALE_BITS - 1)); \
+ g_add = - C_GU * cb - C_GV * cr + (1 << (SCALE_BITS - 1)); \
+ b_add = C_BU * cb + (1 << (SCALE_BITS - 1)); \
+ \
+ /* output 2 pixels */ \
+ YUV_TO_RGB2(r, g, b, y1_ptr[0]); \
+ RGB_OUT(d1, r, g, b); \
+ d1 += BPP; \
+ \
+ y1_ptr++; \
+ cb_ptr++; \
+ cr_ptr++; \
+ } \
+ } \
} \
\
/* XXX: no chroma interpolating is done */ \
static void yuv422p_to_ ## rgb_name (AVPicture *dst, AVPicture *src, \
int width, int height) \
{ \
- UINT8 *y1_ptr, *cb_ptr, *cr_ptr, *d, *d1; \
+ uint8_t *y1_ptr, *cb_ptr, *cr_ptr, *d, *d1; \
int w, y, cb, cr, r_add, g_add, b_add, width2; \
- UINT8 *cm = cropTbl + MAX_NEG_CROP; \
+ uint8_t *cm = cropTbl + MAX_NEG_CROP; \
unsigned int r, g, b; \
\
d = dst->data[0]; \
y1_ptr = src->data[0]; \
cb_ptr = src->data[1]; \
cr_ptr = src->data[2]; \
- width2 = width >> 1; \
+ width2 = (width + 1) >> 1; \
for(;height > 0; height --) { \
d1 = d; \
- for(w = width2; w > 0; w --) { \
+ for(w = width; w >= 2; w -= 2) { \
cb = cb_ptr[0] - 128; \
cr = cr_ptr[0] - 128; \
r_add = C_RV * cr + (1 << (SCALE_BITS - 1)); \
@@ -465,17 +549,34 @@ static void yuv422p_to_ ## rgb_name (AVPicture *dst, AVPicture *src, \
\
/* output 2 pixels */ \
YUV_TO_RGB2(r, g, b, y1_ptr[0]); \
- RGB_OUT(d, r, g, b); \
+ RGB_OUT(d1, r, g, b); \
\
YUV_TO_RGB2(r, g, b, y1_ptr[1]); \
- RGB_OUT(d + BPP, r, g, b); \
+ RGB_OUT(d1 + BPP, r, g, b); \
\
- d += 2 * BPP; \
+ d1 += 2 * BPP; \
\
y1_ptr += 2; \
cb_ptr++; \
cr_ptr++; \
} \
+ /* handle width */ \
+ if (w) { \
+ cb = cb_ptr[0] - 128; \
+ cr = cr_ptr[0] - 128; \
+ r_add = C_RV * cr + (1 << (SCALE_BITS - 1)); \
+ g_add = - C_GU * cb - C_GV * cr + (1 << (SCALE_BITS - 1)); \
+ b_add = C_BU * cb + (1 << (SCALE_BITS - 1)); \
+ \
+ /* output 2 pixels */ \
+ YUV_TO_RGB2(r, g, b, y1_ptr[0]); \
+ RGB_OUT(d1, r, g, b); \
+ d1 += BPP; \
+ \
+ y1_ptr++; \
+ cb_ptr++; \
+ cr_ptr++; \
+ } \
d += dst->linesize[0]; \
y1_ptr += src->linesize[0] - width; \
cb_ptr += src->linesize[1] - width2; \
@@ -488,15 +589,15 @@ static void rgb_name ## _to_yuv420p(AVPicture *dst, AVPicture *src, \
{ \
int wrap, wrap3, x, y; \
int r, g, b, r1, g1, b1; \
- UINT8 *lum, *cb, *cr; \
- const UINT8 *p; \
+ uint8_t *lum, *cb, *cr; \
+ const uint8_t *p; \
\
lum = dst->data[0]; \
cb = dst->data[1]; \
cr = dst->data[2]; \
\
- wrap = width; \
- wrap3 = width * BPP; \
+ wrap = dst->linesize[0]; \
+ wrap3 = src->linesize[0]; \
p = src->data[0]; \
for(y=0;y<height;y+=2) { \
for(x=0;x<width;x+=2) { \
@@ -541,8 +642,10 @@ static void rgb_name ## _to_yuv420p(AVPicture *dst, AVPicture *src, \
p += -wrap3 + 2 * BPP; \
lum += -wrap + 2; \
} \
- p += wrap3; \
- lum += wrap; \
+ p += wrap3 + (wrap3 - width * BPP); \
+ lum += wrap + (wrap - width); \
+ cb += dst->linesize[1] - width / 2; \
+ cr += dst->linesize[2] - width / 2; \
} \
} \
\
@@ -597,6 +700,38 @@ static void gray_to_ ## rgb_name(AVPicture *dst, AVPicture *src, \
p += src_wrap; \
q += dst_wrap; \
} \
+} \
+ \
+static void pal8_to_ ## rgb_name(AVPicture *dst, AVPicture *src, \
+ int width, int height) \
+{ \
+ const unsigned char *p; \
+ unsigned char *q; \
+ int r, g, b, dst_wrap, src_wrap; \
+ int x, y; \
+ uint32_t v;\
+ const uint32_t *palette;\
+\
+ p = src->data[0]; \
+ src_wrap = src->linesize[0] - width; \
+ palette = (uint32_t *)src->data[1];\
+ \
+ q = dst->data[0]; \
+ dst_wrap = dst->linesize[0] - BPP * width; \
+ \
+ for(y=0;y<height;y++) { \
+ for(x=0;x<width;x++) { \
+ v = palette[p[0]];\
+ r = (v >> 16) & 0xff;\
+ g = (v >> 8) & 0xff;\
+ b = (v) & 0xff;\
+ RGB_OUT(q, r, g, b); \
+ q += BPP; \
+ p ++; \
+ } \
+ p += src_wrap; \
+ q += dst_wrap; \
+ } \
}
/* copy bit n to bits 0 ... n - 1 */
@@ -611,7 +746,7 @@ static inline unsigned int bitcopy_n(unsigned int a, int n)
#define RGB_IN(r, g, b, s)\
{\
- unsigned int v = ((UINT16 *)(s))[0];\
+ unsigned int v = ((const uint16_t *)(s))[0];\
r = bitcopy_n(v >> (10 - 3), 3);\
g = bitcopy_n(v >> (5 - 3), 3);\
b = bitcopy_n(v << 3, 3);\
@@ -619,7 +754,7 @@ static inline unsigned int bitcopy_n(unsigned int a, int n)
#define RGB_OUT(d, r, g, b)\
{\
- ((UINT16 *)(d))[0] = ((r >> 3) << 10) | ((g >> 3) << 5) | (b >> 3) | 0x8000;\
+ ((uint16_t *)(d))[0] = ((r >> 3) << 10) | ((g >> 3) << 5) | (b >> 3) | 0x8000;\
}
#define BPP 2
@@ -634,7 +769,7 @@ RGB_FUNCTIONS(rgb555)
#define RGB_IN(r, g, b, s)\
{\
- unsigned int v = ((UINT16 *)(s))[0];\
+ unsigned int v = ((const uint16_t *)(s))[0];\
r = bitcopy_n(v >> (11 - 3), 3);\
g = bitcopy_n(v >> (5 - 2), 2);\
b = bitcopy_n(v << 3, 3);\
@@ -642,7 +777,7 @@ RGB_FUNCTIONS(rgb555)
#define RGB_OUT(d, r, g, b)\
{\
- ((UINT16 *)(d))[0] = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3);\
+ ((uint16_t *)(d))[0] = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3);\
}
#define BPP 2
@@ -705,7 +840,7 @@ RGB_FUNCTIONS(rgb24)
#define RGB_IN(r, g, b, s)\
{\
- unsigned int v = ((UINT32 *)(s))[0];\
+ unsigned int v = ((const uint32_t *)(s))[0];\
r = (v >> 16) & 0xff;\
g = (v >> 8) & 0xff;\
b = v & 0xff;\
@@ -713,7 +848,7 @@ RGB_FUNCTIONS(rgb24)
#define RGB_OUT(d, r, g, b)\
{\
- ((UINT32 *)(d))[0] = (0xff << 24) | (r << 16) | (g << 8) | b;\
+ ((uint32_t *)(d))[0] = (0xff << 24) | (r << 16) | (g << 8) | b;\
}
#define BPP 4
@@ -843,8 +978,8 @@ static void gray_to_mono(AVPicture *dst, AVPicture *src,
int width, int height, int xor_mask)
{
int n;
- const UINT8 *s;
- UINT8 *d;
+ const uint8_t *s;
+ uint8_t *d;
int j, b, v, n1, src_wrap, dst_wrap, y;
s = src->data[0];
@@ -896,6 +1031,58 @@ static void gray_to_monoblack(AVPicture *dst, AVPicture *src,
gray_to_mono(dst, src, width, height, 0x00);
}
+/* this is maybe slow, but allows for extensions */
+static inline unsigned char gif_clut_index(uint8_t r, uint8_t g, uint8_t b)
+{
+ return ((((r)/47)%6)*6*6+(((g)/47)%6)*6+(((b)/47)%6));
+}
+
+/* XXX: put jpeg quantize code instead */
+static void rgb24_to_pal8(AVPicture *dst, AVPicture *src,
+ int width, int height)
+{
+ const unsigned char *p;
+ unsigned char *q;
+ int r, g, b, dst_wrap, src_wrap;
+ int x, y, i;
+ static const uint8_t pal_value[6] = { 0x00, 0x33, 0x66, 0x99, 0xcc, 0xff };
+ uint32_t *pal;
+
+ p = src->data[0];
+ src_wrap = src->linesize[0] - 3 * width;
+
+ q = dst->data[0];
+ dst_wrap = dst->linesize[0] - width;
+
+ for(y=0;y<height;y++) {
+ for(x=0;x<width;x++) {
+ r = p[0];
+ g = p[1];
+ b = p[2];
+
+ q[0] = gif_clut_index(r, g, b);
+ q++;
+ p += 3;
+ }
+ p += src_wrap;
+ q += dst_wrap;
+ }
+
+ /* build palette */
+ pal = (uint32_t *)dst->data[1];
+ i = 0;
+ for(r = 0; r < 6; r++) {
+ for(g = 0; g < 6; g++) {
+ for(b = 0; b < 6; b++) {
+ pal[i++] = (0xff << 24) | (pal_value[r] << 16) |
+ (pal_value[g] << 8) | pal_value[b];
+ }
+ }
+ }
+ while (i < 256)
+ pal[i++] = 0;
+}
+
typedef struct ConvertEntry {
void (*convert)(AVPicture *dst, AVPicture *src, int width, int height);
} ConvertEntry;
@@ -905,614 +1092,143 @@ typedef struct ConvertEntry {
- all non YUV modes must convert at least to and from PIX_FMT_RGB24
*/
static ConvertEntry convert_table[PIX_FMT_NB][PIX_FMT_NB] = {
- { /*PIX_FMT_YUV420P*/
- { /*PIX_FMT_YUV420P*/
- NULL
- },
- { /*PIX_FMT_YUV422*/
- NULL
- },
- { /*PIX_FMT_RGB24*/
- yuv420p_to_rgb24
- },
- { /*PIX_FMT_BGR24*/
- yuv420p_to_bgr24
- },
- { /*PIX_FMT_YUV422P*/
- NULL
- },
- { /*PIX_FMT_YUV444P*/
- NULL
+ [PIX_FMT_YUV420P] = {
+ [PIX_FMT_RGB555] = {
+ .convert = yuv420p_to_rgb555
},
- { /*PIX_FMT_RGBA32]*/
- yuv420p_to_rgba32
+ [PIX_FMT_RGB565] = {
+ .convert = yuv420p_to_rgb565
},
- { /*PIX_FMT_YUV410P*/
- NULL
+ [PIX_FMT_BGR24] = {
+ .convert = yuv420p_to_bgr24
},
- { /*PIX_FMT_YUV411P*/
- NULL
+ [PIX_FMT_RGB24] = {
+ .convert = yuv420p_to_rgb24
},
- { /*PIX_FMT_RGB565*/
- yuv420p_to_rgb565
- },
- { /*PIX_FMT_RGB555*/
- yuv420p_to_rgb555
- },
- { /*PIX_FMT_GRAY8*/
- NULL
- },
- { /*PIX_FMT_MONOWHITE*/
- NULL
- },
- { /*PIX_FMT_MONOBLACK*/
- NULL
+ [PIX_FMT_RGBA32] = {
+ .convert = yuv420p_to_rgba32
},
},
- { /*PIX_FMT_YUV422*/
- { /*PIX_FMT_YUV420P*/
- yuv422_to_yuv420p
- },
- { /*PIX_FMT_YUV422*/
- NULL
- },
- { /*PIX_FMT_RGB24*/
- NULL
- },
- { /*PIX_FMT_BGR24*/
- NULL
- },
- { /*PIX_FMT_YUV422P*/
- NULL
- },
- { /*PIX_FMT_YUV444P*/
- NULL
- },
- { /*PIX_FMT_RGBA32*/
- NULL
+ [PIX_FMT_YUV422P] = {
+ [PIX_FMT_RGB555] = {
+ .convert = yuv422p_to_rgb555
},
- { /*PIX_FMT_YUV410P*/
- NULL
+ [PIX_FMT_RGB565] = {
+ .convert = yuv422p_to_rgb565
},
- { /*PIX_FMT_YUV411P*/
- NULL
+ [PIX_FMT_BGR24] = {
+ .convert = yuv422p_to_bgr24
},
- { /*PIX_FMT_RGB565*/
- NULL
+ [PIX_FMT_RGB24] = {
+ .convert = yuv422p_to_rgb24
},
- { /*PIX_FMT_RGB555*/
- NULL
- },
- { /*PIX_FMT_GRAY8*/
- NULL
- },
- { /*PIX_FMT_MONOWHITE*/
- NULL
- },
- { /*PIX_FMT_MONOBLACK*/
- NULL
+ [PIX_FMT_RGBA32] = {
+ .convert = yuv422p_to_rgba32
},
},
- { /*PIX_FMT_RGB24*/
- { /*PIX_FMT_YUV420P*/
- rgb24_to_yuv420p
- },
- { /*PIX_FMT_YUV422*/
- NULL
- },
- { /*PIX_FMT_RGB24*/
- NULL
- },
- { /*PIX_FMT_BGR24*/
- NULL
- },
- { /*PIX_FMT_YUV422P*/
- NULL
- },
- { /*PIX_FMT_YUV444P*/
- NULL
- },
- { /*PIX_FMT_RGBA32*/
- NULL
- },
- { /*PIX_FMT_YUV410P*/
- NULL
- },
- { /*PIX_FMT_YUV411P*/
- NULL
- },
- { /*PIX_FMT_RGB565*/
- rgb24_to_rgb565
- },
- { /*PIX_FMT_RGB555*/
- rgb24_to_rgb555
- },
- { /*PIX_FMT_GRAY8*/
- rgb24_to_gray
- },
- { /*PIX_FMT_MONOWHITE*/
- NULL
- },
- { /*PIX_FMT_MONOBLACK*/
- NULL
+ [PIX_FMT_YUV422] = {
+ [PIX_FMT_YUV420P] = {
+ .convert = yuv422_to_yuv420p,
},
},
- { /*PIX_FMT_BGR24*/
- { /*PIX_FMT_YUV420P*/
- bgr24_to_yuv420p
- },
- { /*PIX_FMT_YUV422*/
- NULL
- },
- { /*PIX_FMT_RGB24*/
- NULL
- },
- { /*PIX_FMT_BGR24*/
- NULL
- },
- { /*PIX_FMT_YUV422P*/
- NULL
- },
- { /*PIX_FMT_YUV444P*/
- NULL
- },
- { /*PIX_FMT_RGBA32*/
- NULL
- },
- { /*PIX_FMT_YUV410P*/
- NULL
- },
- { /*PIX_FMT_YUV411P*/
- NULL
- },
- { /*PIX_FMT_RGB565*/
- NULL
- },
- { /*PIX_FMT_RGB555*/
- NULL
- },
- { /*PIX_FMT_GRAY8*/
- bgr24_to_gray
- },
- { /*PIX_FMT_MONOWHITE*/
- NULL
- },
- { /*PIX_FMT_MONOBLACK*/
- NULL
- },
- },
- { /*PIX_FMT_YUV422P*/
- { /*PIX_FMT_YUV420P*/
- NULL
- },
- { /*PIX_FMT_YUV422*/
- NULL
- },
- { /*PIX_FMT_BGR24*/
- yuv422p_to_bgr24
- },
- { /*PIX_FMT_RGB24*/
- yuv422p_to_rgb24
- },
- { /*PIX_FMT_RGBA32*/
- yuv422p_to_rgba32
- },
- { /*PIX_FMT_YUV410P*/
- NULL
- },
- { /*PIX_FMT_YUV411P*/
- NULL
- },
- { /*PIX_FMT_RGB555*/
- yuv422p_to_rgb555
- },
- { /*PIX_FMT_RGB565*/
- yuv422p_to_rgb565
- },
- { /*PIX_FMT_GRAY8*/
- NULL
- },
- { /*PIX_FMT_MONOWHITE*/
- NULL
- },
- { /*PIX_FMT_MONOBLACK*/
- NULL
- },
- },
- { /*PIX_FMT_YUV444P*/
- { /*PIX_FMT_YUV420P*/
- NULL
- },
- { /*PIX_FMT_YUV422*/
- NULL
- },
- { /*PIX_FMT_RGB24*/
- NULL
- },
- { /*PIX_FMT_BGR24*/
- NULL
- },
- { /*PIX_FMT_YUV422P*/
- NULL
- },
- { /*PIX_FMT_YUV444P*/
- NULL
- },
- { /*PIX_FMT_RGBA32*/
- NULL
- },
- { /*PIX_FMT_YUV410P*/
- NULL
- },
- { /*PIX_FMT_YUV411P*/
- NULL
- },
- { /*PIX_FMT_RGB565*/
- NULL
+
+ [PIX_FMT_RGB24] = {
+ [PIX_FMT_YUV420P] = {
+ .convert = rgb24_to_yuv420p
},
- { /*PIX_FMT_RGB555*/
- NULL
+ [PIX_FMT_RGB565] = {
+ .convert = rgb24_to_rgb565
},
- { /*PIX_FMT_GRAY8*/
- NULL
+ [PIX_FMT_RGB555] = {
+ .convert = rgb24_to_rgb555
},
- { /*PIX_FMT_MONOWHITE*/
- NULL
+ [PIX_FMT_GRAY8] = {
+ .convert = rgb24_to_gray
},
- { /*PIX_FMT_MONOBLACK*/
- NULL
+ [PIX_FMT_PAL8] = {
+ .convert = rgb24_to_pal8
},
},
- { /*PIX_FMT_RGBA32*/
- { /*PIX_FMT_YUV420P*/
- rgba32_to_yuv420p
- },
- { /*PIX_FMT_YUV422*/
- NULL
- },
- { /*PIX_FMT_RGB24*/
- NULL
- },
- { /*PIX_FMT_BGR24*/
- NULL
- },
- { /*PIX_FMT_YUV422P*/
- NULL
+ [PIX_FMT_RGBA32] = {
+ [PIX_FMT_YUV420P] = {
+ .convert = rgba32_to_yuv420p
},
- { /*PIX_FMT_YUV444P*/
- NULL
- },
- { /*PIX_FMT_RGBA32*/
- NULL
- },
- { /*PIX_FMT_YUV410P*/
- NULL
- },
- { /*PIX_FMT_YUV411P*/
- NULL
- },
- { /*PIX_FMT_RGB565*/
- NULL
- },
- { /*PIX_FMT_RGB555*/
- NULL
- },
- { /*PIX_FMT_GRAY8*/
- rgba32_to_gray
- },
- { /*PIX_FMT_MONOWHITE*/
- NULL
- },
- { /*PIX_FMT_MONOBLACK*/
- NULL
+ [PIX_FMT_GRAY8] = {
+ .convert = rgba32_to_gray
},
},
- { /*PIX_FMT_YUV410P*/
- { /*PIX_FMT_YUV420P*/
- NULL
- },
- { /*PIX_FMT_YUV422*/
- NULL
+ [PIX_FMT_BGR24] = {
+ [PIX_FMT_YUV420P] = {
+ .convert = bgr24_to_yuv420p
},
- { /*PIX_FMT_RGB24*/
- NULL
- },
- { /*PIX_FMT_BGR24*/
- NULL
- },
- { /*PIX_FMT_YUV422P*/
- NULL
- },
- { /*PIX_FMT_YUV444P*/
- NULL
- },
- { /*PIX_FMT_RGBA32*/
- NULL
- },
- { /*PIX_FMT_YUV410P*/
- NULL
- },
- { /*PIX_FMT_YUV411P*/
- NULL
- },
- { /*PIX_FMT_RGB565*/
- NULL
- },
- { /*PIX_FMT_RGB555*/
- NULL
- },
- { /*PIX_FMT_GRAY8*/
- NULL
- },
- { /*PIX_FMT_MONOWHITE*/
- NULL
- },
- { /*PIX_FMT_MONOBLACK*/
- NULL
+ [PIX_FMT_GRAY8] = {
+ .convert = bgr24_to_gray
},
},
- { /*PIX_FMT_YUV411P*/
- { /*PIX_FMT_YUV420P*/
- NULL
- },
- { /*PIX_FMT_YUV422*/
- NULL
- },
- { /*PIX_FMT_RGB24*/
- NULL
- },
- { /*PIX_FMT_BGR24*/
- NULL
- },
- { /*PIX_FMT_YUV422P*/
- NULL
- },
- { /*PIX_FMT_YUV444P*/
- NULL
- },
- { /*PIX_FMT_RGBA32*/
- NULL
- },
- { /*PIX_FMT_YUV410P*/
- NULL
- },
- { /*PIX_FMT_YUV411P*/
- NULL
- },
- { /*PIX_FMT_RGB565*/
- NULL
+ [PIX_FMT_RGB555] = {
+ [PIX_FMT_YUV420P] = {
+ .convert = rgb555_to_yuv420p
},
- { /*PIX_FMT_RGB555*/
- NULL
- },
- { /*PIX_FMT_GRAY8*/
- NULL
- },
- { /*PIX_FMT_MONOWHITE*/
- NULL
- },
- { /*PIX_FMT_MONOBLACK*/
- NULL
+ [PIX_FMT_GRAY8] = {
+ .convert = rgb555_to_gray
},
},
- { /*PIX_FMT_RGB565*/
- { /*PIX_FMT_YUV420P*/
- rgb565_to_yuv420p
- },
- { /*PIX_FMT_YUV422*/
- NULL
- },
- { /*PIX_FMT_RGB24*/
- NULL
- },
- { /*PIX_FMT_BGR24*/
- NULL
- },
- { /*PIX_FMT_YUV422P*/
- NULL
- },
- { /*PIX_FMT_YUV444P*/
- NULL
- },
- { /*PIX_FMT_RGBA32*/
- NULL
- },
- { /*PIX_FMT_YUV410P*/
- NULL
+ [PIX_FMT_RGB565] = {
+ [PIX_FMT_YUV420P] = {
+ .convert = rgb565_to_yuv420p
},
- { /*PIX_FMT_YUV411P*/
- NULL
- },
- { /*PIX_FMT_RGB565*/
- NULL
- },
- { /*PIX_FMT_RGB555*/
- NULL
- },
- { /*PIX_FMT_GRAY8*/
- rgb565_to_gray
- },
- { /*PIX_FMT_MONOWHITE*/
- NULL
- },
- { /*PIX_FMT_MONOBLACK*/
- NULL
+ [PIX_FMT_GRAY8] = {
+ .convert = rgb565_to_gray
},
},
- { /*PIX_FMT_RGB555*/
- { /*PIX_FMT_YUV420P*/
- rgb555_to_yuv420p
- },
- { /*PIX_FMT_YUV422*/
- NULL
- },
- { /*PIX_FMT_RGB24*/
- NULL
- },
- { /*PIX_FMT_BGR24*/
- NULL
- },
- { /*PIX_FMT_YUV422P*/
- NULL
+ [PIX_FMT_GRAY8] = {
+ [PIX_FMT_RGB555] = {
+ .convert = gray_to_rgb555
},
- { /*PIX_FMT_YUV444P*/
- NULL
+ [PIX_FMT_RGB565] = {
+ .convert = gray_to_rgb565
},
- { /*PIX_FMT_RGBA32*/
- NULL
+ [PIX_FMT_RGB24] = {
+ .convert = gray_to_rgb24
},
- { /*PIX_FMT_YUV410P*/
- NULL
+ [PIX_FMT_BGR24] = {
+ .convert = gray_to_bgr24
},
- { /*PIX_FMT_YUV411P*/
- NULL
+ [PIX_FMT_RGBA32] = {
+ .convert = gray_to_rgba32
},
- { /*PIX_FMT_RGB565*/
- NULL
+ [PIX_FMT_MONOWHITE] = {
+ .convert = gray_to_monowhite
},
- { /*PIX_FMT_RGB555*/
- NULL
- },
- { /*PIX_FMT_GRAY8*/
- rgb555_to_gray
- },
- { /*PIX_FMT_MONOWHITE*/
- NULL
- },
- { /*PIX_FMT_MONOBLACK*/
- NULL
+ [PIX_FMT_MONOBLACK] = {
+ .convert = gray_to_monoblack
},
},
- { /*PIX_FMT_GRAY8*/
- { /*PIX_FMT_YUV420P*/
- NULL
- },
- { /*PIX_FMT_YUV422*/
- NULL
- },
- { /*PIX_FMT_RGB24*/
- gray_to_rgb24
- },
- { /*PIX_FMT_BGR24*/
- gray_to_bgr24
- },
- { /*PIX_FMT_YUV422P*/
- NULL
- },
- { /*PIX_FMT_YUV444P*/
- NULL
- },
- { /*PIX_FMT_RGBA32*/
- gray_to_rgba32
- },
- { /*PIX_FMT_YUV410P*/
- NULL
- },
- { /*PIX_FMT_YUV411P*/
- NULL
- },
- { /*PIX_FMT_RGB565*/
- gray_to_rgb565
- },
- { /*PIX_FMT_RGB555*/
- gray_to_rgb555
- },
- { /*PIX_FMT_GRAY8*/
- NULL
- },
- { /*PIX_FMT_MONOWHITE*/
- gray_to_monowhite
- },
- { /*PIX_FMT_MONOBLACK*/
- gray_to_monoblack
+ [PIX_FMT_MONOWHITE] = {
+ [PIX_FMT_GRAY8] = {
+ .convert = monowhite_to_gray
},
},
- { /*PIX_FMT_MONOWHITE*/
- { /*PIX_FMT_YUV420P*/
- NULL
- },
- { /*PIX_FMT_YUV422*/
- NULL
- },
- { /*PIX_FMT_RGB24*/
- NULL
- },
- { /*PIX_FMT_BGR24*/
- NULL
- },
- { /*PIX_FMT_YUV422P*/
- NULL
- },
- { /*PIX_FMT_YUV444P*/
- NULL
- },
- { /*PIX_FMT_RGBA32*/
- NULL
- },
- { /*PIX_FMT_YUV410P*/
- NULL
- },
- { /*PIX_FMT_YUV411P*/
- NULL
- },
- { /*PIX_FMT_RGB565*/
- NULL
- },
- { /*PIX_FMT_RGB555*/
- NULL
- },
- { /*PIX_FMT_GRAY8*/
- monowhite_to_gray
- },
- { /*PIX_FMT_MONOWHITE*/
- NULL
- },
- { /*PIX_FMT_MONOBLACK*/
- NULL
+ [PIX_FMT_MONOBLACK] = {
+ [PIX_FMT_GRAY8] = {
+ .convert = monoblack_to_gray
},
},
- { /*PIX_FMT_MONOBLACK*/
- { /*PIX_FMT_YUV420P*/
- NULL
- },
- { /*PIX_FMT_YUV422*/
- NULL
- },
- { /*PIX_FMT_RGB24*/
- NULL
- },
- { /*PIX_FMT_BGR24*/
- NULL
- },
- { /*PIX_FMT_YUV422P*/
- NULL
- },
- { /*PIX_FMT_YUV444P*/
- NULL
- },
- { /*PIX_FMT_RGBA32*/
- NULL
- },
- { /*PIX_FMT_YUV410P*/
- NULL
- },
- { /*PIX_FMT_YUV411P*/
- NULL
- },
- { /*PIX_FMT_RGB565*/
- NULL
+ [PIX_FMT_PAL8] = {
+ [PIX_FMT_RGB555] = {
+ .convert = pal8_to_rgb555
},
- { /*PIX_FMT_RGB555*/
- NULL
+ [PIX_FMT_RGB565] = {
+ .convert = pal8_to_rgb565
},
- { /*PIX_FMT_GRAY8*/
- monoblack_to_gray
+ [PIX_FMT_BGR24] = {
+ .convert = pal8_to_bgr24
},
- { /*PIX_FMT_MONOWHITE*/
- NULL
+ [PIX_FMT_RGB24] = {
+ .convert = pal8_to_rgb24
},
- { /*PIX_FMT_MONOBLACK*/
- NULL
+ [PIX_FMT_RGBA32] = {
+ .convert = pal8_to_rgba32
},
},
};
@@ -1520,7 +1236,7 @@ static ConvertEntry convert_table[PIX_FMT_NB][PIX_FMT_NB] = {
static int avpicture_alloc(AVPicture *picture,
int pix_fmt, int width, int height)
{
- int size;
+ unsigned int size;
void *ptr;
size = avpicture_get_size(pix_fmt, width, height);
@@ -1621,8 +1337,8 @@ int img_convert(AVPicture *dst, int dst_pix_fmt,
/* YUV to YUV */
if (dst_pix->is_yuv && src_pix->is_yuv) {
int x_shift, y_shift, w, h;
- void (*resize_func)(UINT8 *dst, int dst_wrap,
- UINT8 *src, int src_wrap,
+ void (*resize_func)(uint8_t *dst, int dst_wrap,
+ uint8_t *src, int src_wrap,
int width, int height);
/* compute chroma size of the smallest dimensions */
@@ -1661,7 +1377,7 @@ int img_convert(AVPicture *dst, int dst_pix_fmt,
for(i = 1;i <= 2; i++)
resize_func(dst->data[i], dst->linesize[i],
src->data[i], src->linesize[i],
- w, h);
+ dst_width>>dst_pix->x_chroma_shift, dst_height>>dst_pix->y_chroma_shift);
return 0;
}
@@ -1738,11 +1454,11 @@ int img_convert(AVPicture *dst, int dst_pix_fmt,
#endif
/* filter parameters: [-1 4 2 4 -1] // 8 */
-static void deinterlace_line(UINT8 *dst, UINT8 *lum_m4, UINT8 *lum_m3, UINT8 *lum_m2, UINT8 *lum_m1, UINT8 *lum,
+static void deinterlace_line(uint8_t *dst, uint8_t *lum_m4, uint8_t *lum_m3, uint8_t *lum_m2, uint8_t *lum_m1, uint8_t *lum,
int size)
{
#ifndef HAVE_MMX
- UINT8 *cm = cropTbl + MAX_NEG_CROP;
+ uint8_t *cm = cropTbl + MAX_NEG_CROP;
int sum;
for(;size > 0;size--) {
@@ -1781,11 +1497,11 @@ static void deinterlace_line(UINT8 *dst, UINT8 *lum_m4, UINT8 *lum_m3, UINT8 *lu
}
#endif
}
-static void deinterlace_line_inplace(UINT8 *lum_m4, UINT8 *lum_m3, UINT8 *lum_m2, UINT8 *lum_m1, UINT8 *lum,
+static void deinterlace_line_inplace(uint8_t *lum_m4, uint8_t *lum_m3, uint8_t *lum_m2, uint8_t *lum_m1, uint8_t *lum,
int size)
{
#ifndef HAVE_MMX
- UINT8 *cm = cropTbl + MAX_NEG_CROP;
+ uint8_t *cm = cropTbl + MAX_NEG_CROP;
int sum;
for(;size > 0;size--) {
@@ -1827,11 +1543,11 @@ static void deinterlace_line_inplace(UINT8 *lum_m4, UINT8 *lum_m3, UINT8 *lum_m2
/* deinterlacing : 2 temporal taps, 3 spatial taps linear filter. The
top field is copied as is, but the bottom field is deinterlaced
against the top field. */
-static void deinterlace_bottom_field(UINT8 *dst, int dst_wrap,
- UINT8 *src1, int src_wrap,
+static void deinterlace_bottom_field(uint8_t *dst, int dst_wrap,
+ uint8_t *src1, int src_wrap,
int width, int height)
{
- UINT8 *src_m2, *src_m1, *src_0, *src_p1, *src_p2;
+ uint8_t *src_m2, *src_m1, *src_0, *src_p1, *src_p2;
int y;
src_m2 = src1;
@@ -1856,13 +1572,13 @@ static void deinterlace_bottom_field(UINT8 *dst, int dst_wrap,
deinterlace_line(dst,src_m2,src_m1,src_0,src_0,src_0,width);
}
-static void deinterlace_bottom_field_inplace(UINT8 *src1, int src_wrap,
+static void deinterlace_bottom_field_inplace(uint8_t *src1, int src_wrap,
int width, int height)
{
- UINT8 *src_m1, *src_0, *src_p1, *src_p2;
+ uint8_t *src_m1, *src_0, *src_p1, *src_p2;
int y;
- UINT8 *buf;
- buf = (UINT8*)av_malloc(width);
+ uint8_t *buf;
+ buf = (uint8_t*)av_malloc(width);
src_m1 = src1;
memcpy(buf,src_m1,width);