swscale: implement >8bit scaling support.

This means that precision is retained when scaling between sample
formats with >8 bits per component (48bit RGB, 16bit grayscale,
9/10/16bit YUV).
pull/2/head
Ronald S. Bultje 14 years ago
parent f68069868b
commit ef1ee362b3
  1. 4
      libswscale/ppc/swscale_altivec.c
  2. 694
      libswscale/swscale.c
  3. 10
      libswscale/swscale_internal.h
  4. 9
      libswscale/utils.c
  5. 73
      libswscale/x86/swscale_template.c
  6. 16
      tests/ref/lavfi/pixdesc
  7. 16
      tests/ref/lavfi/pixfmts_copy
  8. 16
      tests/ref/lavfi/pixfmts_crop
  9. 16
      tests/ref/lavfi/pixfmts_hflip
  10. 16
      tests/ref/lavfi/pixfmts_null
  11. 32
      tests/ref/lavfi/pixfmts_scale
  12. 16
      tests/ref/lavfi/pixfmts_vflip

@ -406,7 +406,9 @@ void ff_sws_init_swScale_altivec(SwsContext *c)
if (!(av_get_cpu_flags() & AV_CPU_FLAG_ALTIVEC))
return;
c->hScale = hScale_altivec_real;
if (c->scalingBpp == 8) {
c->hScale = hScale_altivec_real;
}
if (!is16BPS(dstFormat) && !is9_OR_10BPS(dstFormat) &&
dstFormat != PIX_FMT_NV12 && dstFormat != PIX_FMT_NV21 &&
!c->alpPixBuf) {

File diff suppressed because it is too large Load Diff

@ -205,6 +205,7 @@ typedef struct SwsContext {
enum PixelFormat srcFormat; ///< Source pixel format.
int dstFormatBpp; ///< Number of bits per pixel of the destination pixel format.
int srcFormatBpp; ///< Number of bits per pixel of the source pixel format.
int scalingBpp;
int chrSrcHSubSample; ///< Binary logarithm of horizontal subsampling factor between luma/alpha and chroma planes in source image.
int chrSrcVSubSample; ///< Binary logarithm of vertical subsampling factor between luma/alpha and chroma planes in source image.
int chrDstHSubSample; ///< Binary logarithm of horizontal subsampling factor between luma/alpha and chroma planes in destination image.
@ -446,6 +447,15 @@ typedef struct SwsContext {
void (*lumConvertRange)(int16_t *dst, int width); ///< Color range conversion function for luma plane if needed.
void (*chrConvertRange)(int16_t *dst1, int16_t *dst2, int width); ///< Color range conversion function for chroma planes if needed.
/**
* dst[..] = (src[..] << 8) | src[..];
*/
void (*scale8To16Rv)(uint16_t *dst, const uint8_t *src, int len);
/**
* dst[..] = src[..] >> 4;
*/
void (*scale19To15Fw)(int16_t *dst, const int32_t *src, int len);
int needs_hcscale; ///< Set if there are chroma planes to be converted.
} SwsContext;

@ -877,8 +877,13 @@ int sws_init_context(SwsContext *c, SwsFilter *srcFilter, SwsFilter *dstFilter)
}
}
FF_ALLOC_OR_GOTO(c, c->formatConvBuffer, FFALIGN(srcW, 16) * 2, fail);
if (HAVE_MMX2 && cpu_flags & AV_CPU_FLAG_MMX2) {
// FIXME it's even nicer if bpp isn't 16, but max({src,dst}formatbpp)
c->scalingBpp = FFMAX(av_pix_fmt_descriptors[srcFormat].comp[0].depth_minus1,
av_pix_fmt_descriptors[dstFormat].comp[0].depth_minus1) >= 8 ? 16 : 8;
if (c->scalingBpp == 16)
dst_stride <<= 1;
FF_ALLOC_OR_GOTO(c, c->formatConvBuffer, FFALIGN(srcW, 16) * 2 * c->scalingBpp >> 3, fail);
if (HAVE_MMX2 && cpu_flags & AV_CPU_FLAG_MMX2 && c->scalingBpp == 8) {
c->canMMX2BeUsed= (dstW >=srcW && (dstW&31)==0 && (srcW&15)==0) ? 1 : 0;
if (!c->canMMX2BeUsed && dstW >=srcW && (srcW&15)==0 && (flags&SWS_FAST_BILINEAR)) {
if (flags&SWS_PRINT_INFO)

@ -1625,32 +1625,6 @@ static void RENAME(yuy2ToUV)(uint8_t *dstU, uint8_t *dstV,
assert(src1 == src2);
}
static void RENAME(LEToUV)(uint8_t *dstU, uint8_t *dstV,
const uint8_t *src1, const uint8_t *src2,
int width, uint32_t *unused)
{
__asm__ volatile(
"mov %0, %%"REG_a" \n\t"
"1: \n\t"
"movq (%1, %%"REG_a",2), %%mm0 \n\t"
"movq 8(%1, %%"REG_a",2), %%mm1 \n\t"
"movq (%2, %%"REG_a",2), %%mm2 \n\t"
"movq 8(%2, %%"REG_a",2), %%mm3 \n\t"
"psrlw $8, %%mm0 \n\t"
"psrlw $8, %%mm1 \n\t"
"psrlw $8, %%mm2 \n\t"
"psrlw $8, %%mm3 \n\t"
"packuswb %%mm1, %%mm0 \n\t"
"packuswb %%mm3, %%mm2 \n\t"
"movq %%mm0, (%3, %%"REG_a") \n\t"
"movq %%mm2, (%4, %%"REG_a") \n\t"
"add $8, %%"REG_a" \n\t"
" js 1b \n\t"
: : "g" ((x86_reg)-width), "r" (src1+width*2), "r" (src2+width*2), "r" (dstU+width), "r" (dstV+width)
: "%"REG_a
);
}
/* This is almost identical to the previous, end exists only because
* yuy2ToY/UV)(dst, src+1, ...) would have 100% unaligned accesses. */
static void RENAME(uyvyToY)(uint8_t *dst, const uint8_t *src,
@ -1700,33 +1674,6 @@ static void RENAME(uyvyToUV)(uint8_t *dstU, uint8_t *dstV,
assert(src1 == src2);
}
static void RENAME(BEToUV)(uint8_t *dstU, uint8_t *dstV,
const uint8_t *src1, const uint8_t *src2,
int width, uint32_t *unused)
{
__asm__ volatile(
"movq "MANGLE(bm01010101)", %%mm4 \n\t"
"mov %0, %%"REG_a" \n\t"
"1: \n\t"
"movq (%1, %%"REG_a",2), %%mm0 \n\t"
"movq 8(%1, %%"REG_a",2), %%mm1 \n\t"
"movq (%2, %%"REG_a",2), %%mm2 \n\t"
"movq 8(%2, %%"REG_a",2), %%mm3 \n\t"
"pand %%mm4, %%mm0 \n\t"
"pand %%mm4, %%mm1 \n\t"
"pand %%mm4, %%mm2 \n\t"
"pand %%mm4, %%mm3 \n\t"
"packuswb %%mm1, %%mm0 \n\t"
"packuswb %%mm3, %%mm2 \n\t"
"movq %%mm0, (%3, %%"REG_a") \n\t"
"movq %%mm2, (%4, %%"REG_a") \n\t"
"add $8, %%"REG_a" \n\t"
" js 1b \n\t"
: : "g" ((x86_reg)-width), "r" (src1+width*2), "r" (src2+width*2), "r" (dstU+width), "r" (dstV+width)
: "%"REG_a
);
}
static av_always_inline void RENAME(nvXXtoUV)(uint8_t *dst1, uint8_t *dst2,
const uint8_t *src, int width)
{
@ -2268,6 +2215,7 @@ static av_cold void RENAME(sws_init_swScale)(SwsContext *c)
}
}
if (c->scalingBpp == 8) {
#if !COMPILE_TEMPLATE_MMX2
c->hScale = RENAME(hScale );
#endif /* !COMPILE_TEMPLATE_MMX2 */
@ -2285,6 +2233,7 @@ static av_cold void RENAME(sws_init_swScale)(SwsContext *c)
#if COMPILE_TEMPLATE_MMX2
}
#endif /* COMPILE_TEMPLATE_MMX2 */
}
#if !COMPILE_TEMPLATE_MMX2
switch(srcFormat) {
@ -2292,12 +2241,6 @@ static av_cold void RENAME(sws_init_swScale)(SwsContext *c)
case PIX_FMT_UYVY422 : c->chrToYV12 = RENAME(uyvyToUV); break;
case PIX_FMT_NV12 : c->chrToYV12 = RENAME(nv12ToUV); break;
case PIX_FMT_NV21 : c->chrToYV12 = RENAME(nv21ToUV); break;
case PIX_FMT_YUV420P16BE:
case PIX_FMT_YUV422P16BE:
case PIX_FMT_YUV444P16BE: c->chrToYV12 = RENAME(BEToUV); break;
case PIX_FMT_YUV420P16LE:
case PIX_FMT_YUV422P16LE:
case PIX_FMT_YUV444P16LE: c->chrToYV12 = RENAME(LEToUV); break;
default: break;
}
#endif /* !COMPILE_TEMPLATE_MMX2 */
@ -2312,16 +2255,8 @@ static av_cold void RENAME(sws_init_swScale)(SwsContext *c)
switch (srcFormat) {
#if !COMPILE_TEMPLATE_MMX2
case PIX_FMT_YUYV422 :
case PIX_FMT_YUV420P16BE:
case PIX_FMT_YUV422P16BE:
case PIX_FMT_YUV444P16BE:
case PIX_FMT_Y400A :
case PIX_FMT_GRAY16BE : c->lumToYV12 = RENAME(yuy2ToY); break;
case PIX_FMT_UYVY422 :
case PIX_FMT_YUV420P16LE:
case PIX_FMT_YUV422P16LE:
case PIX_FMT_YUV444P16LE:
case PIX_FMT_GRAY16LE : c->lumToYV12 = RENAME(uyvyToY); break;
case PIX_FMT_Y400A : c->lumToYV12 = RENAME(yuy2ToY); break;
case PIX_FMT_UYVY422 : c->lumToYV12 = RENAME(uyvyToY); break;
#endif /* !COMPILE_TEMPLATE_MMX2 */
case PIX_FMT_BGR24 : c->lumToYV12 = RENAME(bgr24ToY); break;
case PIX_FMT_RGB24 : c->lumToYV12 = RENAME(rgb24ToY); break;

@ -1,8 +1,8 @@
abgr 037bf9df6a765520ad6d490066bf4b89
argb c442a8261c2265a07212ef0f72e35f5a
bgr24 0d0cb38ab3fa0b2ec0865c14f78b217b
bgr48be 4ba0ff7fc9e011ea264610ad1585bb1f
bgr48le d022bfdd6a07d5dcc693799322a386b4
bgr48be 74dedaaacae8fd1ef46e05f78cf29d62
bgr48le 0eb7d30801eac6058814bddd330b3c76
bgr4_byte 50d23cc82d9dcef2fd12adb81fb9b806
bgr555be 49f01b1f1f0c84fd9e776dd34cc3c280
bgr555le 378d6ac4223651a1adcbf94a3d0d807b
@ -18,8 +18,8 @@ monow 9251497f3b0634f1165d12d5a289d943
nv12 e0af357888584d36eec5aa0f673793ef
nv21 9a3297f3b34baa038b1f37cb202b512f
rgb24 b41eba9651e1b5fe386289b506188105
rgb48be 460b6de89b156290a12d3941db8bd731
rgb48le cd93cb34d15996987367dabda3a10128
rgb48be e3bc84c9af376fb6d0f0293cc7b713a6
rgb48le f51c0e71638a822458329abb2f4052c7
rgb4_byte c93ba89b74c504e7f5ae9d9ab1546c73
rgb555be 912a62c5e53bfcbac2a0340e10973cf2
rgb555le a937a0fc764fb57dc1b3af87cba0273c
@ -38,12 +38,12 @@ yuv420p16le 2d59c4f1d0314a5a957a7cfc4b6fabcc
yuv420p9be ce880fa07830e5297c22acf6e20555ce
yuv420p9le 16543fda8f87d94a6cf857d2e8d4461a
yuv422p c9bba4529821d796a6ab09f6a5fd355a
yuv422p16be 5499502e1c29534a158a1fe60e889f60
yuv422p16le e3d61fde6978591596bc36b914386623
yuv422p16be 86ad3447f97969ce095afeef81fa9abf
yuv422p16le a53a9b451f4a81eeae33362c1bbd07f8
yuv440p 5a064afe2b453bb52cdb3f176b1aa1cf
yuv444p 0a98447b78fd476aa39686da6a74fa2e
yuv444p16be ea602a24b8e6969679265078bd8607b6
yuv444p16le 1262a0dc57ee147967fc896d04206313
yuv444p16be 95db370ae765dd3d10b7def14704ae73
yuv444p16le 36b969179b5ad9d312a0d1e1cd6bc402
yuva420p a29884f3f3dfe1e00b961bc17bef3d47
yuvj420p 32eec78ba51857b16ce9b813a49b7189
yuvj422p 0dfa0ed434f73be51428758c69e082cb

@ -1,8 +1,8 @@
abgr 037bf9df6a765520ad6d490066bf4b89
argb c442a8261c2265a07212ef0f72e35f5a
bgr24 0d0cb38ab3fa0b2ec0865c14f78b217b
bgr48be 4ba0ff7fc9e011ea264610ad1585bb1f
bgr48le d022bfdd6a07d5dcc693799322a386b4
bgr48be 74dedaaacae8fd1ef46e05f78cf29d62
bgr48le 0eb7d30801eac6058814bddd330b3c76
bgr4_byte 50d23cc82d9dcef2fd12adb81fb9b806
bgr555be 49f01b1f1f0c84fd9e776dd34cc3c280
bgr555le 378d6ac4223651a1adcbf94a3d0d807b
@ -18,8 +18,8 @@ monow 9251497f3b0634f1165d12d5a289d943
nv12 e0af357888584d36eec5aa0f673793ef
nv21 9a3297f3b34baa038b1f37cb202b512f
rgb24 b41eba9651e1b5fe386289b506188105
rgb48be 460b6de89b156290a12d3941db8bd731
rgb48le cd93cb34d15996987367dabda3a10128
rgb48be e3bc84c9af376fb6d0f0293cc7b713a6
rgb48le f51c0e71638a822458329abb2f4052c7
rgb4_byte c93ba89b74c504e7f5ae9d9ab1546c73
rgb555be 912a62c5e53bfcbac2a0340e10973cf2
rgb555le a937a0fc764fb57dc1b3af87cba0273c
@ -38,12 +38,12 @@ yuv420p16le 2d59c4f1d0314a5a957a7cfc4b6fabcc
yuv420p9be ce880fa07830e5297c22acf6e20555ce
yuv420p9le 16543fda8f87d94a6cf857d2e8d4461a
yuv422p c9bba4529821d796a6ab09f6a5fd355a
yuv422p16be 5499502e1c29534a158a1fe60e889f60
yuv422p16le e3d61fde6978591596bc36b914386623
yuv422p16be 86ad3447f97969ce095afeef81fa9abf
yuv422p16le a53a9b451f4a81eeae33362c1bbd07f8
yuv440p 5a064afe2b453bb52cdb3f176b1aa1cf
yuv444p 0a98447b78fd476aa39686da6a74fa2e
yuv444p16be ea602a24b8e6969679265078bd8607b6
yuv444p16le 1262a0dc57ee147967fc896d04206313
yuv444p16be 95db370ae765dd3d10b7def14704ae73
yuv444p16le 36b969179b5ad9d312a0d1e1cd6bc402
yuva420p a29884f3f3dfe1e00b961bc17bef3d47
yuvj420p 32eec78ba51857b16ce9b813a49b7189
yuvj422p 0dfa0ed434f73be51428758c69e082cb

@ -1,8 +1,8 @@
abgr cd761690872843d1b7ab0c695393c751
argb 2ec6ef18769bcd651c2e8904d5a3ee67
bgr24 3450fd00cf1493d1ded75544d82ba3ec
bgr48be 90cb5d373a1123432d63c6a10c101afa
bgr48le 9371f54ceda9010f1199e86f4930ac3f
bgr48be a9a7d177cef0914d3f1d266f00dff676
bgr48le b475d1b529ed80c728ddbacd22d35281
bgr4_byte 2f6ac3cdd4676ab4e2982bdf0664945b
bgr555be d3a7c273604723adeb7e5f5dd1c4272b
bgr555le d22442fc13b464f9ba455b08df4e981f
@ -14,8 +14,8 @@ gray 8c4850e66562a587a292dc728a65ea4a
gray16be daa5a6b98fb4a280c57c57bff1a2ab5a
gray16le 84f5ea7259073edcb893113b42213c8e
rgb24 3b90ed64b687d3dc186c6ef521dc71a8
rgb48be a808128041a1962deaa8620c7448feba
rgb48le ce92d02cc322608d5be377cb1940677b
rgb48be b8f9fd6aaa24d75275ee2f8b8a7b9e55
rgb48le 3e52e831a040f086c3ae983241172cce
rgb4_byte 6958029f73c6cdfed4f71020d816f027
rgb555be 41a7d1836837bc90f2cae19a9c9df3b3
rgb555le eeb78f8ce6186fba55c941469e60ba67
@ -29,12 +29,12 @@ yuv420p bfea0188ddd4889787c403caae119cc7
yuv420p16be 8365eff38b8c329aeb95fc605fa229bb
yuv420p16le 5e8dd38d973d5854abe1ad4efad20cc1
yuv422p f2f930a91fe00d4252c4720b5ecd8961
yuv422p16be 167e4338811a7d272925a4c6417d60da
yuv422p16le 3359395d5875d581fa1e975013d30114
yuv422p16be 6647fe1c381c148f8207c988c0e22bf0
yuv422p16le e1548c9dc51202db38a9625c8954203f
yuv440p 2472417d980e395ad6843cbb8b633b29
yuv444p 1f151980486848c96bc5585ced99003e
yuv444p16be d69280c2856865d2ea94bd5292aac1c6
yuv444p16le 33f43e030bedf9723be4f63c3e9fc80e
yuv444p16be ac3b159f8c858fcdf475a8c024ee79b6
yuv444p16le 9a6863bfc5faee206065c11dc994bf0c
yuva420p 7536753dfbc7932560fb50c921369a0e
yuvj420p 21f891093006d42d7683b0e1d773a657
yuvj422p 9a43d474c407590ad8f213880586b45e

@ -1,8 +1,8 @@
abgr 49468c6c9ceee5d52b08b1270a909323
argb 50ba9f16c6475530602f2983278b82d0
bgr24 cc53d2011d097972db0d22756c3699e3
bgr48be 11641cf0f4516a9aed98f7872720f801
bgr48le b5440734eed128554dd9f83b34ba582f
bgr48be 90374bc92471f1bd4931d71ef8b73f50
bgr48le 696f628d0dd32121e60a0d61ac47d6e6
bgr4_byte aac987e7d1a6a96477cfc0b48a4285de
bgr555be bc07265898440116772200390d70c092
bgr555le ccee08679bac84a1f960c6c9070c5538
@ -14,8 +14,8 @@ gray 03efcb4ab52a24c0af0e03cfd26c9377
gray16be 9bcbca979601ddc4869f846f08f3d1dd
gray16le c1b8965adcc7f847ee343149ff507073
rgb24 754f1722fc738590cc407ac65749bfe8
rgb48be 10743e1577dc3198dbbc7c0b3b8f429e
rgb48le dd945a44f39119221407bf7a04f1bc49
rgb48be 2397b9d3c296ac15f8a2325a703f81c7
rgb48le 527043c72546d8b4bb1ce2dea4b294c3
rgb4_byte c8a3f995fcf3e0919239ea2c413ddc29
rgb555be 045ce8607d3910586f4d97481dda8632
rgb555le 8778ee0cf58ce9ad1d99a1eca9f95e87
@ -29,12 +29,12 @@ yuv420p 2d5c80f9ba2ddd85b2aeda3564cc7d64
yuv420p16be 758b0c1e2113b15e7afde48da4e4d024
yuv420p16le 480ccd951dcb806bc875d307e02e50a0
yuv422p 6e728f4eb9eae287c224f396d84be6ea
yuv422p16be a05d43cd62b790087bd37083174557de
yuv422p16le 6954abebcbc62d81068d58d0c62bdd5b
yuv422p16be 9dbe0af0eb877987611cf04bfa577202
yuv422p16le 2d8f37231110177cc5e1b61c8cb4b163
yuv440p a99e2b57ed601f39852715c9d675d0d3
yuv444p 947e47f7bb5fdccc659d19b7df2b6fc3
yuv444p16be e5ef45bc3d2f5b0b2542d5151340c382
yuv444p16le 70793e3d66d0c23a0cdedabe9c24c2a7
yuv444p16be debc96a7ec4fec0a412f9d8995bc48a2
yuv444p16le 5b5e1348a631fc2206bb7ff851a52687
yuva420p d83ec0c01498189f179ec574918185f1
yuvj420p df3aaaec3bb157c3bde5f0365af30f4f
yuvj422p d113871528d510a192797af59df9c05c

@ -1,8 +1,8 @@
abgr 037bf9df6a765520ad6d490066bf4b89
argb c442a8261c2265a07212ef0f72e35f5a
bgr24 0d0cb38ab3fa0b2ec0865c14f78b217b
bgr48be 4ba0ff7fc9e011ea264610ad1585bb1f
bgr48le d022bfdd6a07d5dcc693799322a386b4
bgr48be 74dedaaacae8fd1ef46e05f78cf29d62
bgr48le 0eb7d30801eac6058814bddd330b3c76
bgr4_byte 50d23cc82d9dcef2fd12adb81fb9b806
bgr555be 49f01b1f1f0c84fd9e776dd34cc3c280
bgr555le 378d6ac4223651a1adcbf94a3d0d807b
@ -18,8 +18,8 @@ monow 9251497f3b0634f1165d12d5a289d943
nv12 e0af357888584d36eec5aa0f673793ef
nv21 9a3297f3b34baa038b1f37cb202b512f
rgb24 b41eba9651e1b5fe386289b506188105
rgb48be 460b6de89b156290a12d3941db8bd731
rgb48le cd93cb34d15996987367dabda3a10128
rgb48be e3bc84c9af376fb6d0f0293cc7b713a6
rgb48le f51c0e71638a822458329abb2f4052c7
rgb4_byte c93ba89b74c504e7f5ae9d9ab1546c73
rgb555be 912a62c5e53bfcbac2a0340e10973cf2
rgb555le a937a0fc764fb57dc1b3af87cba0273c
@ -38,12 +38,12 @@ yuv420p16le 2d59c4f1d0314a5a957a7cfc4b6fabcc
yuv420p9be ce880fa07830e5297c22acf6e20555ce
yuv420p9le 16543fda8f87d94a6cf857d2e8d4461a
yuv422p c9bba4529821d796a6ab09f6a5fd355a
yuv422p16be 5499502e1c29534a158a1fe60e889f60
yuv422p16le e3d61fde6978591596bc36b914386623
yuv422p16be 86ad3447f97969ce095afeef81fa9abf
yuv422p16le a53a9b451f4a81eeae33362c1bbd07f8
yuv440p 5a064afe2b453bb52cdb3f176b1aa1cf
yuv444p 0a98447b78fd476aa39686da6a74fa2e
yuv444p16be ea602a24b8e6969679265078bd8607b6
yuv444p16le 1262a0dc57ee147967fc896d04206313
yuv444p16be 95db370ae765dd3d10b7def14704ae73
yuv444p16le 36b969179b5ad9d312a0d1e1cd6bc402
yuva420p a29884f3f3dfe1e00b961bc17bef3d47
yuvj420p 32eec78ba51857b16ce9b813a49b7189
yuvj422p 0dfa0ed434f73be51428758c69e082cb

@ -1,8 +1,8 @@
abgr d894cb97f6c80eb21bdbe8a4eea62d86
argb 54346f2b2eef10919e0f247241df3b24
bgr24 570f8d6b51a838aed022ef67535f6bdc
bgr48be fcc0f2dbf45d325f84f816c74cbeeebe
bgr48le 3f9c2b23eed3b8d196d1c14b38ce50f5
bgr48be 07f7a0cc34feb3646434d47c0cec8cee
bgr48le 9abd2c3a66088e6c9078232064eba61e
bgr4_byte ee1d35a7baf8e9016891929a2f565c0b
bgr555be de8901c1358834fddea060fcb3a67beb
bgr555le 36b745067197f9ca8c1731cac51329c9
@ -11,15 +11,15 @@ bgr565le 3a514a298c6161a071ddf9963c06509d
bgr8 7f007fa6c153a16e808a9c51605a4016
bgra a5e7040f9a80cccd65e5acf2ca09ace5
gray d7786a7d9d99ac74230cc045cab5632c
gray16be af39ce3a497f6734b157c8b94544f537
gray16le 7ac1b788bcc472010df7a97e762485e0
gray16be bba98532da29a31599df2feec3b08e3e
gray16le 30267f127d5734c4767f3944f1729a33
monob 88c4c050758e64d120f50c7eff694381
monow d31772ebaa877fc2a78565937f7f9673
nv12 4676d59db43d657dc12841f6bc3ab452
nv21 69c699510ff1fb777b118ebee1002f14
rgb24 514692e28e8ff6860e415ce4fcf6eb8c
rgb48be 1894cd30dabcd3180518e4d5f09f25e7
rgb48le 1354e6e27ce3c1d4d4989ee56030c94b
rgb48be f18841c19fc6d9c817a3095f557b9bc5
rgb48le 819e7b8acd8965ba57ba46198a5cc9bf
rgb4_byte d81ffd3add95842a618eec81024f0b5c
rgb555be 4607309f9f217d51cbb53d13b84b4537
rgb555le a350ef1dc2c9688ed49e7ba018843795
@ -31,19 +31,19 @@ uyvy422 314bd486277111a95d9369b944fa0400
yuv410p 7df8f6d69b56a8dcb6c7ee908e5018b5
yuv411p 1143e7c5cc28fe0922b051b17733bc4c
yuv420p fdad2d8df8985e3d17e73c71f713cb14
yuv420p10be 6d335e75b553da590135cf8bb999610c
yuv420p10le d510ddbabefd03ef39ec943fcb51b709
yuv420p16be 29a0265764530070f5cd3251cc01f66a
yuv420p16le 6f3a265b084a78baec229238d9f7945f
yuv420p9be ec4983b7a949c0472110a7a2c58e278a
yuv420p9le c136dce5913a722eee44ab72cff664b2
yuv420p10be 8b5ad855229840a8fa87786cab83f856
yuv420p10le 5264e87921d47b17411578d9c92672b1
yuv420p16be f6ef3ba90f238b467c7e72ade927083d
yuv420p16le faf6aab3b1c16e8afbe160686dd360e0
yuv420p9be c14bf746d161face61e1f39b491bf7ef
yuv420p9le 59457f9a51768bf1d4342238d50a9be3
yuv422p 918e37701ee7377d16a8a6c119c56a40
yuv422p16be ef3e865fc1d0c68977c735323c50af6e
yuv422p16le 428a9b96214c09cb5a983ce36d6961ff
yuv422p16be 837945d3a771366a5a72a4ed095a4f53
yuv422p16le b8292ae9b52eb7afc3d8b93e8fd895b4
yuv440p 461503fdb9b90451020aa3b25ddf041c
yuv444p 81b2eba962d12e8d64f003ac56f6faf2
yuv444p16be 99a3738c70c8fbdc5a0e4ad4bf50648d
yuv444p16le 385d0cc5240d62da0871915be5d86f0a
yuv444p16be cc7460f76477aa4b4c33442f67c06a89
yuv444p16le 9a5ed60d68c0a4a5155f9d376174cdf7
yuva420p 8673a9131fb47de69788863f93a50eb7
yuvj420p 30427bd6caf5bda93a173dbebe759e09
yuvj422p fc8288f64fd149573f73cf8da05d8e6d

@ -1,8 +1,8 @@
abgr 25e72e9dbd01ab00727c976d577f7be5
argb 19869bf1a5ac0b6af4d8bbe2c104533c
bgr24 89108a4ba00201f79b75b9305c42352d
bgr48be ed82382da09b64a8e04728fcf76e6814
bgr48le 0f1f135608c2ff24d26d03e939fc2112
bgr48be 908b4edb525fd154a95a3744c4ab5420
bgr48le 796c2072d6fa13a091f5c5b175417ed5
bgr4_byte 407fcf564ed764c38e1d748f700ab921
bgr555be f739d2519f7e9d494359bf67a3821537
bgr555le bd7b3ec4d684dfad075d89a606cb8b74
@ -18,8 +18,8 @@ monow ff9869d067ecb94eb9d90c9750c31fea
nv12 046f00f598ce14d9854a3534a5c99114
nv21 01ea369dd2d0d3ed7451dc5c8d61497f
rgb24 eaefabc168d0b14576bab45bc1e56e1e
rgb48be 4e0c384163ebab06a08e74637beb02bc
rgb48le a77bfeefcd96750cf0e1917a2e2bf1e7
rgb48be 8e347deca2902e7dc1ece261322577d8
rgb48le 2034e485f946e4064b5fb9be09865e55
rgb4_byte 8c6ff02df0b06dd2d574836c3741b2a2
rgb555be 40dc33cfb5cf56aac1c5a290ac486c36
rgb555le 4f8eaad29a17e0f8e9d8ab743e76b999
@ -38,12 +38,12 @@ yuv420p16le 0f609e588e5a258644ef85170d70e030
yuv420p9be be40ec975fb2873891643cbbbddbc3b0
yuv420p9le 7e606310d3f5ff12badf911e8f333471
yuv422p d7f5cb44d9b0210d66d6a8762640ab34
yuv422p16be 9bd8f8c961822b586fa4cf992be54acc
yuv422p16le 9c4a1239605c7952b736ac3130163f14
yuv422p16be 8cdfbddf2dd4c44c3efef4ee00170eba
yuv422p16le a2f421f6a1af950544081c1797de01ae
yuv440p 876385e96165acf51271b20e5d85a416
yuv444p 9c3c667d1613b72d15bc6d851c5eb8f7
yuv444p16be 0f4afa4a4aacf4bb6b87641abde71ea9
yuv444p16le 8f31557bc52adfe00ae8b40a9b8c23f8
yuv444p16be b092690d22f0b26360fbf5cfd739be17
yuv444p16le 18768b4ddca92d06f9713fef467276a9
yuva420p c705d1cf061d8c6580ac690b55f92276
yuvj420p 41fd02b204da0ab62452cd14b595e2e4
yuvj422p 7f6ca9bc1812cde02036d7d29a7cce43

Loading…
Cancel
Save