[Libav-user] Problem with swscale, data is partially discarded?

Max Göttner - d.stream max.goettner at dstream.de
Tue Nov 1 14:26:49 CET 2011


The following code excerpt scales inFrame to outFrame.

Let the resolution of inFrame be 1024x768.


Scaling to resolutions with changed outWidth (800, 320, 
) while keeping the
outHeight at 768 delivers a correct outFrame.

However if I change the values of outHeight < 768, the resulting image will
have the correct resolution, but all lines that correspond to the lines in
inFrame with number  (768-outHeight)
768 are black.

In the case of scaling(1024x768 -> 512 x 384) the lower half of the picture
would be black.


Here’s an excerpt from my code


//decode frame

avcodec_decode_video2 (CodecCtx, inFrame , &got_picture_ptr, &pkt);


// scale frame

static struct SwsContext* img_convert_ctx;

avpicture_alloc ((AVPicture*)outFrame, outPixFmt, outWidth, outHeight);

img_convert_ctx = sws_getContext (CodecCtx->width, CodecCtx->height,
CodecCtx->pix_fmt, outWidth, outHeight, outPixFmt, sws_flags, NULL, NULL,

sws_scale(img_convert_ctx, inFrame->data, inFrame->linesize, 0, outHeight,
outFrame->data, outFrame->linesize);


After that outFrame->data seems to be allocated correctly but with the last
part of the array beeing 0.


Is this a known bug, or do I miss something?

Thanks for help.



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20111101/f30db5f5/attachment.html>

More information about the Libav-user mailing list