32#define NVXXRGB32FUNC(func_name, uv_swap) \
33int func_name(SwsInternal *c, const uint8_t *const src[], \
34 const int srcStride[], int srcSliceY, int srcSliceH, \
35 uint8_t *const dst[], const int dstStride[]) \
39 for (y = 0; y < srcSliceH; y++) { \
40 int yd = y + srcSliceY; \
41 uint32_t *dest = (uint32_t *)(dst[0] + yd * dstStride[0]); \
42 const uint8_t *py = src[0] + y * srcStride[0]; \
43 const uint8_t *puv = src[1] + (y >> 1) * srcStride[1]; \
46 for (i = 0; i < c->opts.dst_w; i++) { \
48 int U = puv[(i >> 1) * 2 + uv_swap]; \
49 int V = puv[(i >> 1) * 2 + (uv_swap ^ 1)]; \
50 uint32_t *r = (void *)c->table_rV[V+YUVRGB_TABLE_HEADROOM]; \
51 uint32_t *g = (void *)(c->table_gU[U+YUVRGB_TABLE_HEADROOM] \
52 + c->table_gV[V+YUVRGB_TABLE_HEADROOM]); \
53 uint32_t *b = (void *)c->table_bU[U+YUVRGB_TABLE_HEADROOM]; \
54 dest[i] = r[Y] + g[Y] + b[Y]; \
69 if ((
c->opts.dst_w & 1) || (
c->opts.dst_h & 1) ||
77 switch (
c->opts.dst_format) {
79 c->convert_unscaled = use_lsx ?
86 c->convert_unscaled = use_lsx ?
93 c->convert_unscaled = use_lsx ?
100 c->convert_unscaled = use_lsx ?
110 c->dst_slice_align = 2;
@ SWS_ACCURATE_RND
Force bit-exact output.
@ SWS_FULL_CHR_H_INT
Perform full chroma upsampling when upscaling to RGB.
static atomic_int cpu_flags
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
void ff_get_unscaled_swscale_loongarch(SwsInternal *c)
#define NVXXRGB32FUNC(func_name, uv_swap)
@ AV_PIX_FMT_NV12
planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (firs...
@ AV_PIX_FMT_NV21
as above, but U and V bytes are swapped
@ AV_PIX_FMT_ARGB
packed ARGB 8:8:8:8, 32bpp, ARGBARGB...
@ AV_PIX_FMT_BGRA
packed BGRA 8:8:8:8, 32bpp, BGRABGRA...
@ AV_PIX_FMT_ABGR
packed ABGR 8:8:8:8, 32bpp, ABGRABGR...
@ AV_PIX_FMT_RGBA
packed RGBA 8:8:8:8, 32bpp, RGBARGBA...
int yuv420_nv21_argb32_lsx(SwsInternal *c, const uint8_t *const src[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t *const dst[], const int dstStride[])
int yuv420_nv12_bgra32_lsx(SwsInternal *c, const uint8_t *const src[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t *const dst[], const int dstStride[])
int yuv420_nv21_abgr32_lsx(SwsInternal *c, const uint8_t *const src[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t *const dst[], const int dstStride[])
int yuv420_nv12_abgr32_lsx(SwsInternal *c, const uint8_t *const src[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t *const dst[], const int dstStride[])
int yuv420_nv21_bgra32_lsx(SwsInternal *c, const uint8_t *const src[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t *const dst[], const int dstStride[])
int yuv420_nv12_rgba32_lsx(SwsInternal *c, const uint8_t *const src[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t *const dst[], const int dstStride[])
int yuv420_nv21_rgba32_lsx(SwsInternal *c, const uint8_t *const src[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t *const dst[], const int dstStride[])
int ff_nv21ToRgb32_c(SwsInternal *c, const uint8_t *const src[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t *const dst[], const int dstStride[])
int yuv420_nv12_argb32_lsx(SwsInternal *c, const uint8_t *const src[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t *const dst[], const int dstStride[])
int ff_nv12ToRgb32_c(SwsInternal *c, const uint8_t *const src[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t *const dst[], const int dstStride[])