[FFmpeg-devel] [PATCH] Transpose filter
Michael Niedermayer
michaelni
Sun Oct 17 11:07:45 CEST 2010
On Thu, Oct 14, 2010 at 01:29:22PM +0200, Stefano Sabatini wrote:
[...]
> +static void end_frame(AVFilterLink *inlink)
> +{
> + TransContext *trans = inlink->dst->priv;
> + AVFilterBufferRef *inpic = inlink->cur_buf;
> + AVFilterBufferRef *outpic = inlink->dst->outputs[0]->out_buf;
> + AVFilterLink *outlink = inlink->dst->outputs[0];
> + int plane;
> +
> + for (plane = 0; plane < trans->nb_planes; plane++) {
> + int hsub = plane == 1 || plane == 2 ? trans->hsub : 0;
> + int vsub = plane == 1 || plane == 2 ? trans->vsub : 0;
> + int pixstep = trans->pixsteps[plane];
> + int inh = inpic->video->h>>vsub;
> + int outw = outpic->video->w>>hsub;
> + int outh = outpic->video->h>>vsub;
> + uint8_t *out, *in;
> + int outlinesize, inlinesize;
> + int x, y;
> +
> + out = outpic->data[plane]; outlinesize = outpic->linesize[plane];
> + in = inpic ->data[plane]; inlinesize = inpic ->linesize[plane];
> +
> + if (trans->dir&1) {
> + in += inpic->linesize[plane] * (inh-1);
> + inlinesize *= -1;
> + }
> +
> + if (trans->dir&2) {
> + out += outpic->linesize[plane] * (outh-1);
> + outlinesize *= -1;
> + }
> +
> + for (y = 0; y < outh; y++) {
> + for (x = 0; x < outw; x++) {
> + int32_t v;
> +
> + switch (pixstep) {
> + case 1:
> + *(out + x) = *(in + x*inlinesize + y);
> + break;
> + case 2:
> + *((uint16_t *)(out + 2*x)) = *((uint16_t *)(in + x*inlinesize + y*2));
> + break;
> + case 3:
> + v = AV_RB24(in + x*inlinesize + y*3);
> + AV_WB24(out + 3*x, v);
> + break;
> + case 4:
> + *((uint32_t *)(out + 4*x)) = *((uint32_t *)(in + x*inlinesize + y*4));
> + break;
> + }
please put the for loop inside the switch
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Opposition brings concord. Out of discord comes the fairest harmony.
-- Heraclitus
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20101017/8193c82d/attachment.pgp>
More information about the ffmpeg-devel
mailing list