Mercurial > libavcodec.hg
comparison imgconvert.c @ 1064:b32afefe7d33 libavcodec
* UINTX -> uintx_t INTX -> intx_t
| author | kabi |
|---|---|
| date | Tue, 11 Feb 2003 16:35:48 +0000 |
| parents | bb5de8a59da8 |
| children | 4bc02fcf4d8c |
comparison
equal
deleted
inserted
replaced
| 1063:fdeac9642346 | 1064:b32afefe7d33 |
|---|---|
| 27 #include "i386/mmx.h" | 27 #include "i386/mmx.h" |
| 28 #endif | 28 #endif |
| 29 | 29 |
| 30 typedef struct PixFmtInfo { | 30 typedef struct PixFmtInfo { |
| 31 const char *name; | 31 const char *name; |
| 32 UINT8 nb_components; /* number of components in AVPicture array */ | 32 uint8_t nb_components; /* number of components in AVPicture array */ |
| 33 UINT8 is_yuv : 1; /* true if YUV instead of RGB color space */ | 33 uint8_t is_yuv : 1; /* true if YUV instead of RGB color space */ |
| 34 UINT8 is_packed : 1; /* true if multiple components in same word */ | 34 uint8_t is_packed : 1; /* true if multiple components in same word */ |
| 35 UINT8 is_paletted : 1; /* true if paletted */ | 35 uint8_t is_paletted : 1; /* true if paletted */ |
| 36 UINT8 is_alpha : 1; /* true if alpha can be specified */ | 36 uint8_t is_alpha : 1; /* true if alpha can be specified */ |
| 37 UINT8 is_gray : 1; /* true if gray or monochrome format */ | 37 uint8_t is_gray : 1; /* true if gray or monochrome format */ |
| 38 UINT8 x_chroma_shift; /* X chroma subsampling factor is 2 ^ shift */ | 38 uint8_t x_chroma_shift; /* X chroma subsampling factor is 2 ^ shift */ |
| 39 UINT8 y_chroma_shift; /* Y chroma subsampling factor is 2 ^ shift */ | 39 uint8_t y_chroma_shift; /* Y chroma subsampling factor is 2 ^ shift */ |
| 40 } PixFmtInfo; | 40 } PixFmtInfo; |
| 41 | 41 |
| 42 /* this table gives more information about formats */ | 42 /* this table gives more information about formats */ |
| 43 static PixFmtInfo pix_fmt_info[PIX_FMT_NB] = { | 43 static PixFmtInfo pix_fmt_info[PIX_FMT_NB] = { |
| 44 /* YUV formats */ | 44 /* YUV formats */ |
| 134 else | 134 else |
| 135 return pix_fmt_info[pix_fmt].name; | 135 return pix_fmt_info[pix_fmt].name; |
| 136 } | 136 } |
| 137 | 137 |
| 138 /* Picture field are filled with 'ptr' addresses. Also return size */ | 138 /* Picture field are filled with 'ptr' addresses. Also return size */ |
| 139 int avpicture_fill(AVPicture *picture, UINT8 *ptr, | 139 int avpicture_fill(AVPicture *picture, uint8_t *ptr, |
| 140 int pix_fmt, int width, int height) | 140 int pix_fmt, int width, int height) |
| 141 { | 141 { |
| 142 int size, w2, h2, size2; | 142 int size, w2, h2, size2; |
| 143 PixFmtInfo *pinfo; | 143 PixFmtInfo *pinfo; |
| 144 | 144 |
| 221 /* XXX: totally non optimized */ | 221 /* XXX: totally non optimized */ |
| 222 | 222 |
| 223 static void yuv422_to_yuv420p(AVPicture *dst, AVPicture *src, | 223 static void yuv422_to_yuv420p(AVPicture *dst, AVPicture *src, |
| 224 int width, int height) | 224 int width, int height) |
| 225 { | 225 { |
| 226 UINT8 *lum, *cb, *cr; | 226 uint8_t *lum, *cb, *cr; |
| 227 int x, y; | 227 int x, y; |
| 228 const UINT8 *p; | 228 const uint8_t *p; |
| 229 | 229 |
| 230 lum = dst->data[0]; | 230 lum = dst->data[0]; |
| 231 cb = dst->data[1]; | 231 cb = dst->data[1]; |
| 232 cr = dst->data[2]; | 232 cr = dst->data[2]; |
| 233 p = src->data[0]; | 233 p = src->data[0]; |
| 256 #define ONE_HALF (1 << (SCALEBITS - 1)) | 256 #define ONE_HALF (1 << (SCALEBITS - 1)) |
| 257 #define FIX(x) ((int) ((x) * (1L<<SCALEBITS) + 0.5)) | 257 #define FIX(x) ((int) ((x) * (1L<<SCALEBITS) + 0.5)) |
| 258 | 258 |
| 259 /* XXX: use generic filter ? */ | 259 /* XXX: use generic filter ? */ |
| 260 /* 1x2 -> 1x1 */ | 260 /* 1x2 -> 1x1 */ |
| 261 static void shrink2(UINT8 *dst, int dst_wrap, | 261 static void shrink2(uint8_t *dst, int dst_wrap, |
| 262 UINT8 *src, int src_wrap, | 262 uint8_t *src, int src_wrap, |
| 263 int width, int height) | 263 int width, int height) |
| 264 { | 264 { |
| 265 int w; | 265 int w; |
| 266 UINT8 *s1, *s2, *d; | 266 uint8_t *s1, *s2, *d; |
| 267 | 267 |
| 268 for(;height > 0; height--) { | 268 for(;height > 0; height--) { |
| 269 s1 = src; | 269 s1 = src; |
| 270 s2 = s1 + src_wrap; | 270 s2 = s1 + src_wrap; |
| 271 d = dst; | 271 d = dst; |
| 288 dst += dst_wrap; | 288 dst += dst_wrap; |
| 289 } | 289 } |
| 290 } | 290 } |
| 291 | 291 |
| 292 /* 2x2 -> 1x1 */ | 292 /* 2x2 -> 1x1 */ |
| 293 static void shrink22(UINT8 *dst, int dst_wrap, | 293 static void shrink22(uint8_t *dst, int dst_wrap, |
| 294 UINT8 *src, int src_wrap, | 294 uint8_t *src, int src_wrap, |
| 295 int width, int height) | 295 int width, int height) |
| 296 { | 296 { |
| 297 int w; | 297 int w; |
| 298 UINT8 *s1, *s2, *d; | 298 uint8_t *s1, *s2, *d; |
| 299 | 299 |
| 300 for(;height > 0; height--) { | 300 for(;height > 0; height--) { |
| 301 s1 = src; | 301 s1 = src; |
| 302 s2 = s1 + src_wrap; | 302 s2 = s1 + src_wrap; |
| 303 d = dst; | 303 d = dst; |
| 320 dst += dst_wrap; | 320 dst += dst_wrap; |
| 321 } | 321 } |
| 322 } | 322 } |
| 323 | 323 |
| 324 /* 1x1 -> 2x2 */ | 324 /* 1x1 -> 2x2 */ |
| 325 static void grow22(UINT8 *dst, int dst_wrap, | 325 static void grow22(uint8_t *dst, int dst_wrap, |
| 326 UINT8 *src, int src_wrap, | 326 uint8_t *src, int src_wrap, |
| 327 int width, int height) | 327 int width, int height) |
| 328 { | 328 { |
| 329 int w; | 329 int w; |
| 330 UINT8 *s1, *d; | 330 uint8_t *s1, *d; |
| 331 | 331 |
| 332 for(;height > 0; height--) { | 332 for(;height > 0; height--) { |
| 333 s1 = src; | 333 s1 = src; |
| 334 d = dst; | 334 d = dst; |
| 335 for(w = width;w >= 4; w-=4) { | 335 for(w = width;w >= 4; w-=4) { |
| 348 dst += dst_wrap; | 348 dst += dst_wrap; |
| 349 } | 349 } |
| 350 } | 350 } |
| 351 | 351 |
| 352 /* 1x2 -> 2x1 */ | 352 /* 1x2 -> 2x1 */ |
| 353 static void conv411(UINT8 *dst, int dst_wrap, | 353 static void conv411(uint8_t *dst, int dst_wrap, |
| 354 UINT8 *src, int src_wrap, | 354 uint8_t *src, int src_wrap, |
| 355 int width, int height) | 355 int width, int height) |
| 356 { | 356 { |
| 357 int w, c; | 357 int w, c; |
| 358 UINT8 *s1, *s2, *d; | 358 uint8_t *s1, *s2, *d; |
| 359 | 359 |
| 360 for(;height > 0; height--) { | 360 for(;height > 0; height--) { |
| 361 s1 = src; | 361 s1 = src; |
| 362 s2 = src + src_wrap; | 362 s2 = src + src_wrap; |
| 363 d = dst; | 363 d = dst; |
| 372 src += src_wrap * 2; | 372 src += src_wrap * 2; |
| 373 dst += dst_wrap; | 373 dst += dst_wrap; |
| 374 } | 374 } |
| 375 } | 375 } |
| 376 | 376 |
| 377 static void img_copy(UINT8 *dst, int dst_wrap, | 377 static void img_copy(uint8_t *dst, int dst_wrap, |
| 378 UINT8 *src, int src_wrap, | 378 uint8_t *src, int src_wrap, |
| 379 int width, int height) | 379 int width, int height) |
| 380 { | 380 { |
| 381 for(;height > 0; height--) { | 381 for(;height > 0; height--) { |
| 382 memcpy(dst, src, width); | 382 memcpy(dst, src, width); |
| 383 dst += dst_wrap; | 383 dst += dst_wrap; |
| 405 #define RGB_FUNCTIONS(rgb_name) \ | 405 #define RGB_FUNCTIONS(rgb_name) \ |
| 406 \ | 406 \ |
| 407 static void yuv420p_to_ ## rgb_name (AVPicture *dst, AVPicture *src, \ | 407 static void yuv420p_to_ ## rgb_name (AVPicture *dst, AVPicture *src, \ |
| 408 int width, int height) \ | 408 int width, int height) \ |
| 409 { \ | 409 { \ |
| 410 UINT8 *y1_ptr, *y2_ptr, *cb_ptr, *cr_ptr, *d, *d1, *d2; \ | 410 uint8_t *y1_ptr, *y2_ptr, *cb_ptr, *cr_ptr, *d, *d1, *d2; \ |
| 411 int w, y, cb, cr, r_add, g_add, b_add, width2; \ | 411 int w, y, cb, cr, r_add, g_add, b_add, width2; \ |
| 412 UINT8 *cm = cropTbl + MAX_NEG_CROP; \ | 412 uint8_t *cm = cropTbl + MAX_NEG_CROP; \ |
| 413 unsigned int r, g, b; \ | 413 unsigned int r, g, b; \ |
| 414 \ | 414 \ |
| 415 d = dst->data[0]; \ | 415 d = dst->data[0]; \ |
| 416 y1_ptr = src->data[0]; \ | 416 y1_ptr = src->data[0]; \ |
| 417 cb_ptr = src->data[1]; \ | 417 cb_ptr = src->data[1]; \ |
| 519 \ | 519 \ |
| 520 /* XXX: no chroma interpolating is done */ \ | 520 /* XXX: no chroma interpolating is done */ \ |
| 521 static void yuv422p_to_ ## rgb_name (AVPicture *dst, AVPicture *src, \ | 521 static void yuv422p_to_ ## rgb_name (AVPicture *dst, AVPicture *src, \ |
| 522 int width, int height) \ | 522 int width, int height) \ |
| 523 { \ | 523 { \ |
| 524 UINT8 *y1_ptr, *cb_ptr, *cr_ptr, *d, *d1; \ | 524 uint8_t *y1_ptr, *cb_ptr, *cr_ptr, *d, *d1; \ |
| 525 int w, y, cb, cr, r_add, g_add, b_add, width2; \ | 525 int w, y, cb, cr, r_add, g_add, b_add, width2; \ |
| 526 UINT8 *cm = cropTbl + MAX_NEG_CROP; \ | 526 uint8_t *cm = cropTbl + MAX_NEG_CROP; \ |
| 527 unsigned int r, g, b; \ | 527 unsigned int r, g, b; \ |
| 528 \ | 528 \ |
| 529 d = dst->data[0]; \ | 529 d = dst->data[0]; \ |
| 530 y1_ptr = src->data[0]; \ | 530 y1_ptr = src->data[0]; \ |
| 531 cb_ptr = src->data[1]; \ | 531 cb_ptr = src->data[1]; \ |
| 580 static void rgb_name ## _to_yuv420p(AVPicture *dst, AVPicture *src, \ | 580 static void rgb_name ## _to_yuv420p(AVPicture *dst, AVPicture *src, \ |
| 581 int width, int height) \ | 581 int width, int height) \ |
| 582 { \ | 582 { \ |
| 583 int wrap, wrap3, x, y; \ | 583 int wrap, wrap3, x, y; \ |
| 584 int r, g, b, r1, g1, b1; \ | 584 int r, g, b, r1, g1, b1; \ |
| 585 UINT8 *lum, *cb, *cr; \ | 585 uint8_t *lum, *cb, *cr; \ |
| 586 const UINT8 *p; \ | 586 const uint8_t *p; \ |
| 587 \ | 587 \ |
| 588 lum = dst->data[0]; \ | 588 lum = dst->data[0]; \ |
| 589 cb = dst->data[1]; \ | 589 cb = dst->data[1]; \ |
| 590 cr = dst->data[2]; \ | 590 cr = dst->data[2]; \ |
| 591 \ | 591 \ |
| 737 | 737 |
| 738 /* rgb555 handling */ | 738 /* rgb555 handling */ |
| 739 | 739 |
| 740 #define RGB_IN(r, g, b, s)\ | 740 #define RGB_IN(r, g, b, s)\ |
| 741 {\ | 741 {\ |
| 742 unsigned int v = ((const UINT16 *)(s))[0];\ | 742 unsigned int v = ((const uint16_t *)(s))[0];\ |
| 743 r = bitcopy_n(v >> (10 - 3), 3);\ | 743 r = bitcopy_n(v >> (10 - 3), 3);\ |
| 744 g = bitcopy_n(v >> (5 - 3), 3);\ | 744 g = bitcopy_n(v >> (5 - 3), 3);\ |
| 745 b = bitcopy_n(v << 3, 3);\ | 745 b = bitcopy_n(v << 3, 3);\ |
| 746 } | 746 } |
| 747 | 747 |
| 748 #define RGB_OUT(d, r, g, b)\ | 748 #define RGB_OUT(d, r, g, b)\ |
| 749 {\ | 749 {\ |
| 750 ((UINT16 *)(d))[0] = ((r >> 3) << 10) | ((g >> 3) << 5) | (b >> 3) | 0x8000;\ | 750 ((uint16_t *)(d))[0] = ((r >> 3) << 10) | ((g >> 3) << 5) | (b >> 3) | 0x8000;\ |
| 751 } | 751 } |
| 752 | 752 |
| 753 #define BPP 2 | 753 #define BPP 2 |
| 754 | 754 |
| 755 RGB_FUNCTIONS(rgb555) | 755 RGB_FUNCTIONS(rgb555) |
| 760 | 760 |
| 761 /* rgb565 handling */ | 761 /* rgb565 handling */ |
| 762 | 762 |
| 763 #define RGB_IN(r, g, b, s)\ | 763 #define RGB_IN(r, g, b, s)\ |
| 764 {\ | 764 {\ |
| 765 unsigned int v = ((const UINT16 *)(s))[0];\ | 765 unsigned int v = ((const uint16_t *)(s))[0];\ |
| 766 r = bitcopy_n(v >> (11 - 3), 3);\ | 766 r = bitcopy_n(v >> (11 - 3), 3);\ |
| 767 g = bitcopy_n(v >> (5 - 2), 2);\ | 767 g = bitcopy_n(v >> (5 - 2), 2);\ |
| 768 b = bitcopy_n(v << 3, 3);\ | 768 b = bitcopy_n(v << 3, 3);\ |
| 769 } | 769 } |
| 770 | 770 |
| 771 #define RGB_OUT(d, r, g, b)\ | 771 #define RGB_OUT(d, r, g, b)\ |
| 772 {\ | 772 {\ |
| 773 ((UINT16 *)(d))[0] = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3);\ | 773 ((uint16_t *)(d))[0] = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3);\ |
| 774 } | 774 } |
| 775 | 775 |
| 776 #define BPP 2 | 776 #define BPP 2 |
| 777 | 777 |
| 778 RGB_FUNCTIONS(rgb565) | 778 RGB_FUNCTIONS(rgb565) |
| 831 | 831 |
| 832 /* rgba32 handling */ | 832 /* rgba32 handling */ |
| 833 | 833 |
| 834 #define RGB_IN(r, g, b, s)\ | 834 #define RGB_IN(r, g, b, s)\ |
| 835 {\ | 835 {\ |
| 836 unsigned int v = ((const UINT32 *)(s))[0];\ | 836 unsigned int v = ((const uint32_t *)(s))[0];\ |
| 837 r = (v >> 16) & 0xff;\ | 837 r = (v >> 16) & 0xff;\ |
| 838 g = (v >> 8) & 0xff;\ | 838 g = (v >> 8) & 0xff;\ |
| 839 b = v & 0xff;\ | 839 b = v & 0xff;\ |
| 840 } | 840 } |
| 841 | 841 |
| 842 #define RGB_OUT(d, r, g, b)\ | 842 #define RGB_OUT(d, r, g, b)\ |
| 843 {\ | 843 {\ |
| 844 ((UINT32 *)(d))[0] = (0xff << 24) | (r << 16) | (g << 8) | b;\ | 844 ((uint32_t *)(d))[0] = (0xff << 24) | (r << 16) | (g << 8) | b;\ |
| 845 } | 845 } |
| 846 | 846 |
| 847 #define BPP 4 | 847 #define BPP 4 |
| 848 | 848 |
| 849 RGB_FUNCTIONS(rgba32) | 849 RGB_FUNCTIONS(rgba32) |
| 969 | 969 |
| 970 static void gray_to_mono(AVPicture *dst, AVPicture *src, | 970 static void gray_to_mono(AVPicture *dst, AVPicture *src, |
| 971 int width, int height, int xor_mask) | 971 int width, int height, int xor_mask) |
| 972 { | 972 { |
| 973 int n; | 973 int n; |
| 974 const UINT8 *s; | 974 const uint8_t *s; |
| 975 UINT8 *d; | 975 uint8_t *d; |
| 976 int j, b, v, n1, src_wrap, dst_wrap, y; | 976 int j, b, v, n1, src_wrap, dst_wrap, y; |
| 977 | 977 |
| 978 s = src->data[0]; | 978 s = src->data[0]; |
| 979 src_wrap = src->linesize[0] - width; | 979 src_wrap = src->linesize[0] - width; |
| 980 | 980 |
| 1023 { | 1023 { |
| 1024 gray_to_mono(dst, src, width, height, 0x00); | 1024 gray_to_mono(dst, src, width, height, 0x00); |
| 1025 } | 1025 } |
| 1026 | 1026 |
| 1027 /* this is maybe slow, but allows for extensions */ | 1027 /* this is maybe slow, but allows for extensions */ |
| 1028 static inline unsigned char gif_clut_index(UINT8 r, UINT8 g, UINT8 b) | 1028 static inline unsigned char gif_clut_index(uint8_t r, uint8_t g, uint8_t b) |
| 1029 { | 1029 { |
| 1030 return ((((r)/47)%6)*6*6+(((g)/47)%6)*6+(((b)/47)%6)); | 1030 return ((((r)/47)%6)*6*6+(((g)/47)%6)*6+(((b)/47)%6)); |
| 1031 } | 1031 } |
| 1032 | 1032 |
| 1033 /* XXX: put jpeg quantize code instead */ | 1033 /* XXX: put jpeg quantize code instead */ |
| 1328 } | 1328 } |
| 1329 | 1329 |
| 1330 /* YUV to YUV */ | 1330 /* YUV to YUV */ |
| 1331 if (dst_pix->is_yuv && src_pix->is_yuv) { | 1331 if (dst_pix->is_yuv && src_pix->is_yuv) { |
| 1332 int x_shift, y_shift, w, h; | 1332 int x_shift, y_shift, w, h; |
| 1333 void (*resize_func)(UINT8 *dst, int dst_wrap, | 1333 void (*resize_func)(uint8_t *dst, int dst_wrap, |
| 1334 UINT8 *src, int src_wrap, | 1334 uint8_t *src, int src_wrap, |
| 1335 int width, int height); | 1335 int width, int height); |
| 1336 | 1336 |
| 1337 /* compute chroma size of the smallest dimensions */ | 1337 /* compute chroma size of the smallest dimensions */ |
| 1338 w = dst_width; | 1338 w = dst_width; |
| 1339 h = dst_height; | 1339 h = dst_height; |
| 1445 packuswb_r2r(mm7,mm1);\ | 1445 packuswb_r2r(mm7,mm1);\ |
| 1446 movd_r2m(mm1,dst[0]); | 1446 movd_r2m(mm1,dst[0]); |
| 1447 #endif | 1447 #endif |
| 1448 | 1448 |
| 1449 /* filter parameters: [-1 4 2 4 -1] // 8 */ | 1449 /* filter parameters: [-1 4 2 4 -1] // 8 */ |
| 1450 static void deinterlace_line(UINT8 *dst, UINT8 *lum_m4, UINT8 *lum_m3, UINT8 *lum_m2, UINT8 *lum_m1, UINT8 *lum, | 1450 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, |
| 1451 int size) | 1451 int size) |
| 1452 { | 1452 { |
| 1453 #ifndef HAVE_MMX | 1453 #ifndef HAVE_MMX |
| 1454 UINT8 *cm = cropTbl + MAX_NEG_CROP; | 1454 uint8_t *cm = cropTbl + MAX_NEG_CROP; |
| 1455 int sum; | 1455 int sum; |
| 1456 | 1456 |
| 1457 for(;size > 0;size--) { | 1457 for(;size > 0;size--) { |
| 1458 sum = -lum_m4[0]; | 1458 sum = -lum_m4[0]; |
| 1459 sum += lum_m3[0] << 2; | 1459 sum += lum_m3[0] << 2; |
| 1488 lum+=4; | 1488 lum+=4; |
| 1489 dst+=4; | 1489 dst+=4; |
| 1490 } | 1490 } |
| 1491 #endif | 1491 #endif |
| 1492 } | 1492 } |
| 1493 static void deinterlace_line_inplace(UINT8 *lum_m4, UINT8 *lum_m3, UINT8 *lum_m2, UINT8 *lum_m1, UINT8 *lum, | 1493 static void deinterlace_line_inplace(uint8_t *lum_m4, uint8_t *lum_m3, uint8_t *lum_m2, uint8_t *lum_m1, uint8_t *lum, |
| 1494 int size) | 1494 int size) |
| 1495 { | 1495 { |
| 1496 #ifndef HAVE_MMX | 1496 #ifndef HAVE_MMX |
| 1497 UINT8 *cm = cropTbl + MAX_NEG_CROP; | 1497 uint8_t *cm = cropTbl + MAX_NEG_CROP; |
| 1498 int sum; | 1498 int sum; |
| 1499 | 1499 |
| 1500 for(;size > 0;size--) { | 1500 for(;size > 0;size--) { |
| 1501 sum = -lum_m4[0]; | 1501 sum = -lum_m4[0]; |
| 1502 sum += lum_m3[0] << 2; | 1502 sum += lum_m3[0] << 2; |
| 1534 } | 1534 } |
| 1535 | 1535 |
| 1536 /* deinterlacing : 2 temporal taps, 3 spatial taps linear filter. The | 1536 /* deinterlacing : 2 temporal taps, 3 spatial taps linear filter. The |
| 1537 top field is copied as is, but the bottom field is deinterlaced | 1537 top field is copied as is, but the bottom field is deinterlaced |
| 1538 against the top field. */ | 1538 against the top field. */ |
| 1539 static void deinterlace_bottom_field(UINT8 *dst, int dst_wrap, | 1539 static void deinterlace_bottom_field(uint8_t *dst, int dst_wrap, |
| 1540 UINT8 *src1, int src_wrap, | 1540 uint8_t *src1, int src_wrap, |
| 1541 int width, int height) | 1541 int width, int height) |
| 1542 { | 1542 { |
| 1543 UINT8 *src_m2, *src_m1, *src_0, *src_p1, *src_p2; | 1543 uint8_t *src_m2, *src_m1, *src_0, *src_p1, *src_p2; |
| 1544 int y; | 1544 int y; |
| 1545 | 1545 |
| 1546 src_m2 = src1; | 1546 src_m2 = src1; |
| 1547 src_m1 = src1; | 1547 src_m1 = src1; |
| 1548 src_0=&src_m1[src_wrap]; | 1548 src_0=&src_m1[src_wrap]; |
| 1563 dst += dst_wrap; | 1563 dst += dst_wrap; |
| 1564 /* do last line */ | 1564 /* do last line */ |
| 1565 deinterlace_line(dst,src_m2,src_m1,src_0,src_0,src_0,width); | 1565 deinterlace_line(dst,src_m2,src_m1,src_0,src_0,src_0,width); |
| 1566 } | 1566 } |
| 1567 | 1567 |
| 1568 static void deinterlace_bottom_field_inplace(UINT8 *src1, int src_wrap, | 1568 static void deinterlace_bottom_field_inplace(uint8_t *src1, int src_wrap, |
| 1569 int width, int height) | 1569 int width, int height) |
| 1570 { | 1570 { |
| 1571 UINT8 *src_m1, *src_0, *src_p1, *src_p2; | 1571 uint8_t *src_m1, *src_0, *src_p1, *src_p2; |
| 1572 int y; | 1572 int y; |
| 1573 UINT8 *buf; | 1573 uint8_t *buf; |
| 1574 buf = (UINT8*)av_malloc(width); | 1574 buf = (uint8_t*)av_malloc(width); |
| 1575 | 1575 |
| 1576 src_m1 = src1; | 1576 src_m1 = src1; |
| 1577 memcpy(buf,src_m1,width); | 1577 memcpy(buf,src_m1,width); |
| 1578 src_0=&src_m1[src_wrap]; | 1578 src_0=&src_m1[src_wrap]; |
| 1579 src_p1=&src_0[src_wrap]; | 1579 src_p1=&src_0[src_wrap]; |
