|
|
|
@ -27,11 +27,12 @@ |
|
|
|
|
|
|
|
|
|
#include <stdio.h> |
|
|
|
|
|
|
|
|
|
#include "libavutil/intreadwrite.h" |
|
|
|
|
#include "libavutil/pixdesc.h" |
|
|
|
|
#include "libavutil/imgutils.h" |
|
|
|
|
#include "libavutil/internal.h" |
|
|
|
|
#include "libavutil/intreadwrite.h" |
|
|
|
|
#include "libavutil/opt.h" |
|
|
|
|
#include "libavutil/pixdesc.h" |
|
|
|
|
|
|
|
|
|
#include "avfilter.h" |
|
|
|
|
#include "formats.h" |
|
|
|
|
#include "internal.h" |
|
|
|
@ -111,12 +112,14 @@ static int config_props_output(AVFilterLink *outlink) |
|
|
|
|
outlink->w = inlink->h; |
|
|
|
|
outlink->h = inlink->w; |
|
|
|
|
|
|
|
|
|
if (inlink->sample_aspect_ratio.num){ |
|
|
|
|
outlink->sample_aspect_ratio = av_div_q((AVRational){1,1}, inlink->sample_aspect_ratio); |
|
|
|
|
} else |
|
|
|
|
if (inlink->sample_aspect_ratio.num) |
|
|
|
|
outlink->sample_aspect_ratio = av_div_q((AVRational) { 1, 1 }, |
|
|
|
|
inlink->sample_aspect_ratio); |
|
|
|
|
else |
|
|
|
|
outlink->sample_aspect_ratio = inlink->sample_aspect_ratio; |
|
|
|
|
|
|
|
|
|
av_log(ctx, AV_LOG_VERBOSE, "w:%d h:%d dir:%d -> w:%d h:%d rotation:%s vflip:%d\n", |
|
|
|
|
av_log(ctx, AV_LOG_VERBOSE, |
|
|
|
|
"w:%d h:%d dir:%d -> w:%d h:%d rotation:%s vflip:%d\n", |
|
|
|
|
inlink->w, inlink->h, trans->dir, outlink->w, outlink->h, |
|
|
|
|
trans->dir == 1 || trans->dir == 3 ? "clockwise" : "counterclockwise", |
|
|
|
|
trans->dir == 0 || trans->dir == 3); |
|
|
|
@ -182,7 +185,8 @@ static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr, |
|
|
|
|
case 2: |
|
|
|
|
for (y = start; y < end; y++, dst += dstlinesize) { |
|
|
|
|
for (x = 0; x < outw; x++) |
|
|
|
|
*((uint16_t *)(dst + 2*x)) = *((uint16_t *)(src + x*srclinesize + y*2)); |
|
|
|
|
*((uint16_t *)(dst + 2 * x)) = |
|
|
|
|
*((uint16_t *)(src + x * srclinesize + y * 2)); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case 3: |
|
|
|
@ -196,7 +200,8 @@ static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr, |
|
|
|
|
case 4: |
|
|
|
|
for (y = start; y < end; y++, dst += dstlinesize) { |
|
|
|
|
for (x = 0; x < outw; x++) |
|
|
|
|
*((uint32_t *)(dst + 4*x)) = *((uint32_t *)(src + x*srclinesize + y*4)); |
|
|
|
|
*((uint32_t *)(dst + 4 * x)) = |
|
|
|
|
*((uint32_t *)(src + x * srclinesize + y * 4)); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case 6: |
|
|
|
|