92 "dir values greater than 3 are deprecated, use the passthrough option instead\n");
100 "w:%d h:%d -> w:%d h:%d (passthrough mode)\n",
101 inlink->
w, inlink->
h, inlink->
w, inlink->
h);
112 outlink->
w = inlink->
h;
113 outlink->
h = inlink->
w;
121 inlink->
w, inlink->
h, trans->
dir, outlink->
w, outlink->
h,
122 trans->
dir == 1 || trans->
dir == 3 ?
"clockwise" :
"counterclockwise",
123 trans->
dir == 0 || trans->
dir == 3);
161 for (plane = 0; out->
data[plane]; plane++) {
162 int hsub = plane == 1 || plane == 2 ? trans->
hsub : 0;
163 int vsub = plane == 1 || plane == 2 ? trans->
vsub : 0;
164 int pixstep = trans->
pixsteps[plane];
165 int inh = in->
height >> vsub;
169 int dstlinesize, srclinesize;
172 dst = out->
data[plane];
174 src = in->
data[plane];
178 src += in->
linesize[plane] * (inh-1);
183 dst += out->
linesize[plane] * (outh-1);
187 for (y = 0; y < outh; y++) {
190 for (x = 0; x < outw; x++)
191 dst[x] = src[x*srclinesize + y];
194 for (x = 0; x < outw; x++)
195 *((uint16_t *)(dst + 2*x)) = *((uint16_t *)(src + x*srclinesize + y*2));
198 for (x = 0; x < outw; x++) {
204 for (x = 0; x < outw; x++)
205 *((uint32_t *)(dst + 4*x)) = *((uint32_t *)(src + x*srclinesize + y*4));
208 for (x = 0; x < outw; x++) {
209 int64_t
v =
AV_RB48(src + x*srclinesize + y*6);
214 for (x = 0; x < outw; x++)
215 *((uint64_t *)(dst + 8*x)) = *((uint64_t *)(src + x*srclinesize + y*8));
226 #define OFFSET(x) offsetof(TransContext, x)
227 #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
236 {
"passthrough",
"do not apply transposition if the input matches the specified geometry",
271 .priv_class = &transpose_class,
275 .
inputs = avfilter_vf_transpose_inputs,
276 .
outputs = avfilter_vf_transpose_outputs,