mirror of
https://github.com/nyanmisaka/ffmpeg-rockchip.git
synced 2026-01-23 18:10:56 +01:00
lsws/input: add NV15 and NV20 formats support
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
This commit is contained in:
parent
2eb6cdc7e5
commit
529fe6e12e
4 changed files with 49 additions and 0 deletions
|
|
@ -793,6 +793,39 @@ static void nv21ToUV_c(uint8_t *dstU, uint8_t *dstV,
|
|||
nvXXtoUV_c(dstV, dstU, src1, width);
|
||||
}
|
||||
|
||||
static av_always_inline void nv15_20ToYUV_c(uint16_t *dst, const uint8_t *src,
|
||||
int dst_pos, int src_pos)
|
||||
{
|
||||
int shift = (src_pos << 1) & 7;
|
||||
src_pos = (src_pos * 10) >> 3;
|
||||
AV_WN16(dst + dst_pos,
|
||||
((AV_RL16(src + src_pos) >> shift) |
|
||||
(AV_RL16(src + src_pos + 1) << (8 - shift))) & 0x3FF);
|
||||
}
|
||||
|
||||
static void nv15_20ToY_c(uint8_t *_dst, const uint8_t *_src, const uint8_t *unused1,
|
||||
const uint8_t *unused2, int width, uint32_t *unused, void *opq)
|
||||
{
|
||||
int i;
|
||||
const uint8_t *src = (const uint8_t *)_src;
|
||||
uint16_t *dst = (uint16_t *)_dst;
|
||||
for (i = 0; i < width; i++)
|
||||
nv15_20ToYUV_c(dst, src, i, i);
|
||||
}
|
||||
|
||||
static void nv15_20ToUV_c(uint8_t *_dstU, uint8_t *_dstV,
|
||||
const uint8_t *unused0, const uint8_t *_src1, const uint8_t *_src2,
|
||||
int width, uint32_t *unused, void *opq)
|
||||
{
|
||||
int i;
|
||||
const uint8_t *src1 = (const uint8_t *)_src1;
|
||||
uint16_t *dstU = (uint16_t *)_dstU, *dstV = (uint16_t *)_dstV;
|
||||
for (i = 0; i < width; i++) {
|
||||
nv15_20ToYUV_c(dstU, src1, i, 2 * i);
|
||||
nv15_20ToYUV_c(dstV, src1, i, 2 * i + 1);
|
||||
}
|
||||
}
|
||||
|
||||
#define p01x_uv_wrapper(bits, shift) \
|
||||
static void p0 ## bits ## LEToUV_c(uint8_t *dstU, uint8_t *dstV, \
|
||||
const uint8_t *unused0, \
|
||||
|
|
@ -1444,6 +1477,10 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c)
|
|||
case AV_PIX_FMT_XV36LE:
|
||||
c->chrToYV12 = read_xv36le_UV_c;
|
||||
break;
|
||||
case AV_PIX_FMT_NV15:
|
||||
case AV_PIX_FMT_NV20:
|
||||
c->chrToYV12 = nv15_20ToUV_c;
|
||||
break;
|
||||
case AV_PIX_FMT_P010LE:
|
||||
case AV_PIX_FMT_P210LE:
|
||||
case AV_PIX_FMT_P410LE:
|
||||
|
|
@ -1944,6 +1981,10 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c)
|
|||
case AV_PIX_FMT_BGRA64LE:
|
||||
c->lumToYV12 = bgr64LEToY_c;
|
||||
break;
|
||||
case AV_PIX_FMT_NV15:
|
||||
case AV_PIX_FMT_NV20:
|
||||
c->lumToYV12 = nv15_20ToY_c;
|
||||
break;
|
||||
case AV_PIX_FMT_P010LE:
|
||||
case AV_PIX_FMT_P210LE:
|
||||
case AV_PIX_FMT_P410LE:
|
||||
|
|
|
|||
|
|
@ -230,6 +230,8 @@ static const FormatEntry format_entries[] = {
|
|||
[AV_PIX_FMT_XYZ12BE] = { 1, 1, 1 },
|
||||
[AV_PIX_FMT_XYZ12LE] = { 1, 1, 1 },
|
||||
[AV_PIX_FMT_AYUV64LE] = { 1, 1},
|
||||
[AV_PIX_FMT_NV15] = { 1, 0 },
|
||||
[AV_PIX_FMT_NV20] = { 1, 0 },
|
||||
[AV_PIX_FMT_P010LE] = { 1, 1 },
|
||||
[AV_PIX_FMT_P010BE] = { 1, 1 },
|
||||
[AV_PIX_FMT_P012LE] = { 1, 1 },
|
||||
|
|
|
|||
|
|
@ -268,3 +268,4 @@ p412be planes: 2, linesizes: 128 256 0 0, plane_sizes: 6144 12288
|
|||
p412le planes: 2, linesizes: 128 256 0 0, plane_sizes: 6144 12288 0 0, plane_offsets: 6144 0 0, total_size: 18432
|
||||
gbrap14be planes: 4, linesizes: 128 128 128 128, plane_sizes: 6144 6144 6144 6144, plane_offsets: 6144 6144 6144, total_size: 24576
|
||||
gbrap14le planes: 4, linesizes: 128 128 128 128, plane_sizes: 6144 6144 6144 6144, plane_offsets: 6144 6144 6144, total_size: 24576
|
||||
nv15 planes: 2, linesizes: 80 80 0 0, plane_sizes: 3840 1920 0 0, plane_offsets: 3840 0 0, total_size: 5760
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@ isNBPS:
|
|||
gray14le
|
||||
gray9be
|
||||
gray9le
|
||||
nv15
|
||||
nv20be
|
||||
nv20le
|
||||
p010be
|
||||
|
|
@ -221,6 +222,7 @@ isYUV:
|
|||
ayuv64be
|
||||
ayuv64le
|
||||
nv12
|
||||
nv15
|
||||
nv16
|
||||
nv20be
|
||||
nv20le
|
||||
|
|
@ -337,6 +339,7 @@ isYUV:
|
|||
|
||||
isPlanarYUV:
|
||||
nv12
|
||||
nv15
|
||||
nv16
|
||||
nv20be
|
||||
nv20le
|
||||
|
|
@ -434,6 +437,7 @@ isPlanarYUV:
|
|||
|
||||
isSemiPlanarYUV:
|
||||
nv12
|
||||
nv15
|
||||
nv16
|
||||
nv20be
|
||||
nv20le
|
||||
|
|
@ -868,6 +872,7 @@ Planar:
|
|||
gbrpf32be
|
||||
gbrpf32le
|
||||
nv12
|
||||
nv15
|
||||
nv16
|
||||
nv20be
|
||||
nv20le
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue