26 for (i = 0; i < 2; ++i) {
29 for (j = 0; j <
n; ++j) {
36 for (i = 0; i < 4; ++i)
53 for (i = 0; i < 2; ++i) {
59 for (j = 0; j <
n; ++j) {
81 int size[4] = { lumLines,
92 for (i = 0; i < 4; ++i) {
93 int n = size[i] * ( ring == 0 ? 1 : 3);
112 for (i = 0; i < 4; ++i) {
123 for (i = 0; i < 4; i+=3) {
134 for (i = 1; i < 3; ++i) {
151 const int start[4] = {lumY,
156 const int end[4] = {lumY +lumH,
163 for (i = 0; i < 4; ++i) {
182 for (j = start[i]; j < lines; j+= 1)
183 s->
plane[i].
line[j] = src[i] + (start[i] + j) * stride[i];
193 for (i = 0; i < 4; ++i) {
196 for (j = 0; j <
size; ++j) {
198 int end = is16bit ? n>>1:
n;
202 for (k = 0; k <
end; ++k)
205 for (k = 0; k <
end; ++k)
206 ((int16_t*)(s->
plane[i].
line[j]))[k] = 1<<14;
222 int dst_stride =
FFALIGN(c->
dstW *
sizeof(int16_t) + 66, 16);
230 num_ydesc = need_lum_conv ? 2 : 1;
231 num_cdesc = need_chr_conv ? 2 : 1;
234 c->
numDesc = num_ydesc + num_cdesc + num_vdesc + (need_gamma ? 2 : 0);
235 c->
descIndex[0] = num_ydesc + (need_gamma ? 1 : 0);
236 c->
descIndex[1] = num_ydesc + num_cdesc + (need_gamma ? 1 : 0);
248 for (i = 1; i < c->
numSlice-2; ++i) {
286 dstIdx =
FFMAX(num_ydesc, num_cdesc);
303 dstIdx =
FFMAX(num_ydesc, num_cdesc);
336 for (i = 0; i < c->
numDesc; ++i)
int ff_init_gamma_convert(SwsFilterDescriptor *desc, SwsSlice *src, uint16_t *table)
initializes gamma conversion descriptor
int16_t ** alpPixBuf
Ring buffer for scaled horizontal alpha plane lines to be fed to the vertical scaler.
int ff_init_desc_fmt_convert(SwsFilterDescriptor *desc, SwsSlice *src, SwsSlice *dst, uint32_t *pal)
initializes lum pixel format conversion descriptor
int chrSrcH
Height of source chroma planes.
int ff_free_filters(SwsContext *c)
int h_chr_sub_sample
horizontal chroma subsampling factor
Struct which holds all necessary data for processing a slice.
static void free_lines(SwsSlice *s)
int srcH
Height of source luma/alpha planes.
int ff_rotate_slice(SwsSlice *s, int lum, int chr)
#define av_assert0(cond)
assert() equivalent, that is always enabled.
int chrDstVSubSample
Binary logarithm of vertical subsampling factor between luma/alpha and chroma planes in destination i...
void(* readChrPlanar)(uint8_t *dstU, uint8_t *dstV, const uint8_t *src[4], int width, int32_t *rgb2yuv)
uint8_t ** line
line buffer
int alpha
Flag for processing alpha channel.
int vChrFilterSize
Vertical filter size for chroma pixels.
static av_cold int end(AVCodecContext *avctx)
int v_chr_sub_sample
vertical chroma subsampling factor
void(* lumToYV12)(uint8_t *dst, const uint8_t *src, const uint8_t *src2, const uint8_t *src3, int width, uint32_t *pal)
Unscaled conversion of luma plane to YV12 for horizontal scaler.
enum AVPixelFormat dstFormat
Destination pixel format.
int ff_init_desc_no_chr(SwsFilterDescriptor *desc, SwsSlice *src, SwsSlice *dst)
int chrSrcHSubSample
Binary logarithm of horizontal subsampling factor between luma/alpha and chroma planes in source imag...
int dstH
Height of destination luma/alpha planes.
int ff_init_desc_cfmt_convert(SwsFilterDescriptor *desc, SwsSlice *src, SwsSlice *dst, uint32_t *pal)
initializes chr pixel format conversion descriptor
int32_t * hChrFilterPos
Array of horizontal filter starting positions for each dst[i] for chroma planes.
int hLumFilterSize
Horizontal filter size for luma/alpha pixels.
static int alloc_lines(SwsSlice *s, int size, int width)
int ff_init_vscale(SwsContext *c, SwsFilterDescriptor *desc, SwsSlice *src, SwsSlice *dst)
initializes vertical scaling descriptors
SwsPlane plane[MAX_SLICE_PLANES]
color planes
static int alloc_slice(SwsSlice *s, enum AVPixelFormat fmt, int lumLines, int chrLines, int h_sub_sample, int v_sub_sample, int ring)
int32_t * hLumFilterPos
Array of horizontal filter starting positions for each dst[i] for luma/alpha planes.
int hChrFilterSize
Horizontal filter size for chroma pixels.
int sliceH
number of lines
int ff_init_desc_hscale(SwsFilterDescriptor *desc, SwsSlice *src, SwsSlice *dst, uint16_t *filter, int *filter_pos, int filter_size, int xInc)
initializes lum horizontal scaling descriptor
static double lum(void *priv, double x, double y, int plane)
int ff_init_desc_chscale(SwsFilterDescriptor *desc, SwsSlice *src, SwsSlice *dst, uint16_t *filter, int *filter_pos, int filter_size, int xInc)
initializes chr horizontal scaling descriptor
int available_lines
max number of lines that can be hold by this plane
void(* readLumPlanar)(uint8_t *dst, const uint8_t *src[4], int width, int32_t *rgb2yuv)
Functions to read planar input, such as planar RGB, and convert internally to Y/UV/A.
struct SwsFilterDescriptor * desc
int dstW
Width of destination luma/alpha planes.
int needs_hcscale
Set if there are chroma planes to be converted.
int should_free_lines
flag to identify if there are dynamic allocated lines
int is_ring
flag to identify if this slice is a ring buffer
int width
Slice line width.
int chrDstH
Height of destination chroma planes.
Struct which defines a slice of an image to be scaled or a output for a scaled slice.
int vLumFilterSize
Vertical filter size for luma/alpha pixels.
static void free_slice(SwsSlice *s)
static av_always_inline int isPlanarYUV(enum AVPixelFormat pix_fmt)
void * instance
Filter instance data.
int ff_init_filters(SwsContext *c)
int16_t * hLumFilter
Array of horizontal filter coefficients for luma/alpha planes.
static void fill_ones(SwsSlice *s, int n, int is16bit)
GLint GLenum GLboolean GLsizei stride
void(* readAlpPlanar)(uint8_t *dst, const uint8_t *src[4], int width, int32_t *rgb2yuv)
enum AVPixelFormat srcFormat
Source pixel format.
enum AVPixelFormat fmt
planes pixel format
int ff_init_slice_from_src(SwsSlice *s, uint8_t *src[4], int stride[4], int srcW, int lumY, int lumH, int chrY, int chrH)
uint8_t ** tmp
Tmp line buffer used by mmx code.
void(* alpToYV12)(uint8_t *dst, const uint8_t *src, const uint8_t *src2, const uint8_t *src3, int width, uint32_t *pal)
Unscaled conversion of alpha plane to YV12 for horizontal scaler.
void(* chrToYV12)(uint8_t *dstU, uint8_t *dstV, const uint8_t *src1, const uint8_t *src2, const uint8_t *src3, int width, uint32_t *pal)
Unscaled conversion of chroma planes to YV12 for horizontal scaler.
int32_t input_rgb2yuv_table[16+40 *4]
static void * av_mallocz_array(size_t nmemb, size_t size)
static av_always_inline int usePal(enum AVPixelFormat pix_fmt)
int16_t * hChrFilter
Array of horizontal filter coefficients for chroma planes.
int sliceY
index of first line
int chrDstHSubSample
Binary logarithm of horizontal subsampling factor between luma/alpha and chroma planes in destination...
int srcW
Width of source luma/alpha planes.
int chrSrcVSubSample
Binary logarithm of vertical subsampling factor between luma/alpha and chroma planes in source image...
AVPixelFormat
Pixel format.
static av_cold void cleanup(FlashSV2Context *s)