Lines Matching refs:desc
40 static int lum_planar_vscale(SwsContext *c, SwsFilterDescriptor *desc, int sliceY, int sliceH)
42 VScalerContext *inst = desc->instance;
43 int dstW = desc->dst->width;
46 int sp = first - desc->src->plane[0].sliceY;
47 int dp = sliceY - desc->dst->plane[0].sliceY;
48 uint8_t **src = desc->src->plane[0].line + sp;
49 uint8_t **dst = desc->dst->plane[0].line + dp;
57 if (desc->alpha) {
58 int sp = first - desc->src->plane[3].sliceY;
59 int dp = sliceY - desc->dst->plane[3].sliceY;
60 uint8_t **src = desc->src->plane[3].line + sp;
61 uint8_t **dst = desc->dst->plane[3].line + dp;
73 static int chr_planar_vscale(SwsContext *c, SwsFilterDescriptor *desc, int sliceY, int sliceH)
75 const int chrSkipMask = (1 << desc->dst->v_chr_sub_sample) - 1;
79 VScalerContext *inst = desc->instance;
80 int dstW = AV_CEIL_RSHIFT(desc->dst->width, desc->dst->h_chr_sub_sample);
81 int chrSliceY = sliceY >> desc->dst->v_chr_sub_sample;
84 int sp1 = first - desc->src->plane[1].sliceY;
85 int sp2 = first - desc->src->plane[2].sliceY;
86 int dp1 = chrSliceY - desc->dst->plane[1].sliceY;
87 int dp2 = chrSliceY - desc->dst->plane[2].sliceY;
88 uint8_t **src1 = desc->src->plane[1].line + sp1;
89 uint8_t **src2 = desc->src->plane[2].line + sp2;
90 uint8_t **dst1 = desc->dst->plane[1].line + dp1;
91 uint8_t **dst2 = desc->dst->plane[2].line + dp2;
108 static int packed_vscale(SwsContext *c, SwsFilterDescriptor *desc, int sliceY, int sliceH)
110 VScalerContext *inst = desc->instance;
111 int dstW = desc->dst->width;
112 int chrSliceY = sliceY >> desc->dst->v_chr_sub_sample;
122 int sp0 = firstLum - desc->src->plane[0].sliceY;
123 int sp1 = firstChr - desc->src->plane[1].sliceY;
124 int sp2 = firstChr - desc->src->plane[2].sliceY;
125 int sp3 = firstLum - desc->src->plane[3].sliceY;
126 int dp = sliceY - desc->dst->plane[0].sliceY;
127 uint8_t **src0 = desc->src->plane[0].line + sp0;
128 uint8_t **src1 = desc->src->plane[1].line + sp1;
129 uint8_t **src2 = desc->src->plane[2].line + sp2;
130 uint8_t **src3 = desc->alpha ? desc->src->plane[3].line + sp3 : NULL;
131 uint8_t **dst = desc->dst->plane[0].line + dp;
136 (const int16_t*)(desc->alpha ? *src3 : NULL), *dst, dstW, 0, sliceY);
142 (const int16_t*)(desc->alpha ? *src3 : NULL), *dst, dstW, chrAlpha, sliceY);
172 static int any_vscale(SwsContext *c, SwsFilterDescriptor *desc, int sliceY, int sliceH)
174 VScalerContext *inst = desc->instance;
175 int dstW = desc->dst->width;
176 int chrSliceY = sliceY >> desc->dst->v_chr_sub_sample;
186 int sp0 = firstLum - desc->src->plane[0].sliceY;
187 int sp1 = firstChr - desc->src->plane[1].sliceY;
188 int sp2 = firstChr - desc->src->plane[2].sliceY;
189 int sp3 = firstLum - desc->src->plane[3].sliceY;
190 int dp0 = sliceY - desc->dst->plane[0].sliceY;
191 int dp1 = chrSliceY - desc->dst->plane[1].sliceY;
192 int dp2 = chrSliceY - desc->dst->plane[2].sliceY;
193 int dp3 = sliceY - desc->dst->plane[3].sliceY;
195 uint8_t **src0 = desc->src->plane[0].line + sp0;
196 uint8_t **src1 = desc->src->plane[1].line + sp1;
197 uint8_t **src2 = desc->src->plane[2].line + sp2;
198 uint8_t **src3 = desc->alpha ? desc->src->plane[3].line + sp3 : NULL;
199 uint8_t *dst[4] = { desc->dst->plane[0].line[dp0],
200 desc->dst->plane[1].line[dp1],
201 desc->dst->plane[2].line[dp2],
202 desc->alpha ? desc->dst->plane[3].line[dp3] : NULL };
213 int ff_init_vscale(SwsContext *c, SwsFilterDescriptor *desc, SwsSlice *src, SwsSlice *dst)
224 desc[0].process = lum_planar_vscale;
225 desc[0].instance = lumCtx;
226 desc[0].src = src;
227 desc[0].dst = dst;
228 desc[0].alpha = c->needAlpha;
234 desc[1].process = chr_planar_vscale;
235 desc[1].instance = chrCtx;
236 desc[1].src = src;
237 desc[1].dst = dst;
245 desc[0].process = c->yuv2packedX ? packed_vscale : any_vscale;
246 desc[0].instance = lumCtx;
247 desc[0].src = src;
248 desc[0].dst = dst;
249 desc[0].alpha = c->needAlpha;
272 chrCtx = c->desc[idx].instance;
285 lumCtx = c->desc[idx].instance;
297 lumCtx = c->desc[idx].instance;