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;
122 "w:%d h:%d dir:%d -> w:%d h:%d rotation:%s vflip:%d\n",
123 inlink->
w, inlink->
h, trans->
dir, outlink->
w, outlink->
h,
124 trans->
dir == 1 || trans->
dir == 3 ?
"clockwise" :
"counterclockwise",
125 trans->
dir == 0 || trans->
dir == 3);
151 for (plane = 0; out->
data[plane]; plane++) {
152 int hsub = plane == 1 || plane == 2 ? trans->
hsub : 0;
153 int vsub = plane == 1 || plane == 2 ? trans->
vsub : 0;
154 int pixstep = trans->
pixsteps[plane];
155 int inh = in->
height >> vsub;
158 int start = (outh * jobnr ) / nb_jobs;
159 int end = (outh * (jobnr+1)) / nb_jobs;
161 int dstlinesize, srclinesize;
165 dst = out->
data[plane] + start * dstlinesize;
166 src = in->
data[plane];
169 if (trans->
dir & 1) {
170 src += in->
linesize[plane] * (inh - 1);
174 if (trans->
dir & 2) {
175 dst = out->
data[plane] + dstlinesize * (outh - start - 1);
181 for (y = start; y <
end; y++, dst += dstlinesize)
182 for (x = 0; x < outw; x++)
183 dst[x] = src[x * srclinesize + y];
186 for (y = start; y <
end; y++, dst += dstlinesize) {
187 for (x = 0; x < outw; x++)
188 *((uint16_t *)(dst + 2 * x)) =
189 *((uint16_t *)(src + x * srclinesize + y * 2));
193 for (y = start; y <
end; y++, dst += dstlinesize) {
194 for (x = 0; x < outw; x++) {
201 for (y = start; y <
end; y++, dst += dstlinesize) {
202 for (x = 0; x < outw; x++)
203 *((uint32_t *)(dst + 4 * x)) =
204 *((uint32_t *)(src + x * srclinesize + y * 4));
208 for (y = start; y <
end; y++, dst += dstlinesize) {
209 for (x = 0; x < outw; x++) {
210 int64_t
v =
AV_RB48(src + x * srclinesize + y*6);
216 for (y = start; y <
end; y++, dst += dstlinesize) {
217 for (x = 0; x < outw; x++)
218 *((uint64_t *)(dst + 8*x)) = *((uint64_t *)(src + x * srclinesize + y*8));
258 #define OFFSET(x) offsetof(TransContext, x)
259 #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
268 {
"passthrough",
"do not apply transposition if the input matches the specified geometry",
302 .priv_class = &transpose_class,
304 .
inputs = avfilter_vf_transpose_inputs,
305 .
outputs = avfilter_vf_transpose_outputs,