mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-10-31 12:36:41 +08:00 
			
		
		
		
	swscale/input: add support for Y212LE
This commit is contained in:
		| @@ -559,23 +559,32 @@ static void yvy2ToUV_c(uint8_t *dstU, uint8_t *dstV, const uint8_t *unused0, con | |||||||
|     av_assert1(src1 == src2); |     av_assert1(src1 == src2); | ||||||
| } | } | ||||||
|  |  | ||||||
| static void y210le_UV_c(uint8_t *dstU, uint8_t *dstV, const uint8_t *unused0, const uint8_t *src, | #define y21xle_wrapper(bits, shift) \ | ||||||
|                         const uint8_t *unused1, int width, uint32_t *unused2, void *opq) |     static void y2 ## bits ## le_UV_c(uint8_t *dstU, uint8_t *dstV,      \ | ||||||
| { |                                       const uint8_t *unused0,            \ | ||||||
|     int i; |                                       const uint8_t *src,                \ | ||||||
|     for (i = 0; i < width; i++) { |                                       const uint8_t *unused1, int width, \ | ||||||
|         AV_WN16(dstU + i * 2, AV_RL16(src + i * 8 + 2) >> 6); |                                       uint32_t *unused2, void *opq)      \ | ||||||
|         AV_WN16(dstV + i * 2, AV_RL16(src + i * 8 + 6) >> 6); |     {                                                                    \ | ||||||
|  |         int i;                                                           \ | ||||||
|  |         for (i = 0; i < width; i++) {                                    \ | ||||||
|  |             AV_WN16(dstU + i * 2, AV_RL16(src + i * 8 + 2) >> shift);    \ | ||||||
|  |             AV_WN16(dstV + i * 2, AV_RL16(src + i * 8 + 6) >> shift);    \ | ||||||
|  |         }                                                                \ | ||||||
|  |     }                                                                    \ | ||||||
|  |                                                                          \ | ||||||
|  |     static void y2 ## bits ## le_Y_c(uint8_t *dst, const uint8_t *src,   \ | ||||||
|  |                                      const uint8_t *unused0,             \ | ||||||
|  |                                      const uint8_t *unused1, int width,  \ | ||||||
|  |                                      uint32_t *unused2, void *opq)       \ | ||||||
|  |     {                                                                    \ | ||||||
|  |         int i;                                                           \ | ||||||
|  |         for (i = 0; i < width; i++)                                      \ | ||||||
|  |             AV_WN16(dst + i * 2, AV_RL16(src + i * 4) >> shift);         \ | ||||||
|     } |     } | ||||||
| } |  | ||||||
|  |  | ||||||
| static void y210le_Y_c(uint8_t *dst, const uint8_t *src, const uint8_t *unused0, | y21xle_wrapper(10, 6); | ||||||
|                        const uint8_t *unused1, int width, uint32_t *unused2, void *opq) | y21xle_wrapper(12, 4); | ||||||
| { |  | ||||||
|     int i; |  | ||||||
|     for (i = 0; i < width; i++) |  | ||||||
|         AV_WN16(dst + i * 2, AV_RL16(src + i * 4) >> 6); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| static void bswap16Y_c(uint8_t *_dst, const uint8_t *_src, const uint8_t *unused1, const uint8_t *unused2, int width, | static void bswap16Y_c(uint8_t *_dst, const uint8_t *_src, const uint8_t *unused1, const uint8_t *unused2, int width, | ||||||
|                        uint32_t *unused, void *opq) |                        uint32_t *unused, void *opq) | ||||||
| @@ -1447,6 +1456,9 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c) | |||||||
|     case AV_PIX_FMT_Y210LE: |     case AV_PIX_FMT_Y210LE: | ||||||
|         c->chrToYV12 = y210le_UV_c; |         c->chrToYV12 = y210le_UV_c; | ||||||
|         break; |         break; | ||||||
|  |     case AV_PIX_FMT_Y212LE: | ||||||
|  |         c->chrToYV12 = y212le_UV_c; | ||||||
|  |         break; | ||||||
|     } |     } | ||||||
|     if (c->chrSrcHSubSample) { |     if (c->chrSrcHSubSample) { | ||||||
|         switch (srcFormat) { |         switch (srcFormat) { | ||||||
| @@ -1932,6 +1944,9 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c) | |||||||
|     case AV_PIX_FMT_Y210LE: |     case AV_PIX_FMT_Y210LE: | ||||||
|         c->lumToYV12 = y210le_Y_c; |         c->lumToYV12 = y210le_Y_c; | ||||||
|         break; |         break; | ||||||
|  |     case AV_PIX_FMT_Y212LE: | ||||||
|  |         c->lumToYV12 = y212le_Y_c; | ||||||
|  |         break; | ||||||
|     case AV_PIX_FMT_X2RGB10LE: |     case AV_PIX_FMT_X2RGB10LE: | ||||||
|         c->lumToYV12 = rgb30leToY_c; |         c->lumToYV12 = rgb30leToY_c; | ||||||
|         break; |         break; | ||||||
|   | |||||||
| @@ -249,6 +249,7 @@ static const FormatEntry format_entries[] = { | |||||||
|     [AV_PIX_FMT_NV24]        = { 1, 1 }, |     [AV_PIX_FMT_NV24]        = { 1, 1 }, | ||||||
|     [AV_PIX_FMT_NV42]        = { 1, 1 }, |     [AV_PIX_FMT_NV42]        = { 1, 1 }, | ||||||
|     [AV_PIX_FMT_Y210LE]      = { 1, 0 }, |     [AV_PIX_FMT_Y210LE]      = { 1, 0 }, | ||||||
|  |     [AV_PIX_FMT_Y212LE]      = { 1, 0 }, | ||||||
|     [AV_PIX_FMT_X2RGB10LE]   = { 1, 1 }, |     [AV_PIX_FMT_X2RGB10LE]   = { 1, 1 }, | ||||||
|     [AV_PIX_FMT_X2BGR10LE]   = { 1, 1 }, |     [AV_PIX_FMT_X2BGR10LE]   = { 1, 1 }, | ||||||
|     [AV_PIX_FMT_P210BE]      = { 1, 1 }, |     [AV_PIX_FMT_P210BE]      = { 1, 1 }, | ||||||
|   | |||||||
| @@ -29,7 +29,7 @@ | |||||||
| #include "version_major.h" | #include "version_major.h" | ||||||
|  |  | ||||||
| #define LIBSWSCALE_VERSION_MINOR   8 | #define LIBSWSCALE_VERSION_MINOR   8 | ||||||
| #define LIBSWSCALE_VERSION_MICRO 107 | #define LIBSWSCALE_VERSION_MICRO 108 | ||||||
|  |  | ||||||
| #define LIBSWSCALE_VERSION_INT  AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \ | #define LIBSWSCALE_VERSION_INT  AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \ | ||||||
|                                                LIBSWSCALE_VERSION_MINOR, \ |                                                LIBSWSCALE_VERSION_MINOR, \ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Philip Langdale
					Philip Langdale