[Libav-user] Applied pad on the decoded frame

Dolevo Jay cmst at live.com
Tue Oct 15 16:07:20 CEST 2013



> From: bruce at spearmorgan.com
> Date: Mon, 14 Oct 2013 15:47:05 -0700
> To: libav-user at ffmpeg.org
> Subject: Re: [Libav-user] Applied pad on the decoded frame
> 
> On Oct 14, 2013, at 4:46 AM, Dolevo Jay <cmst at live.com> wrote:
> 
> > I have encoder and decoder application in separate projects. I use x264 to encode the incoming frames and use libav to decode them. If the frame has a specific resolution like 1366 x 768, the decode frame contains extra black border at the right side of the frame. I have debugged it and realized that the av_pic.linesize[0] is 50 more than the linesize during the encoding. 
> > Here is the code:
> > 
> >            lengthDec = avcodec_decode_video2(c1, av_pic, &pic, &pkt);
> >     if (pic)
> >        {
> >        avpicture_fill((AVPicture *)rgbFrame, RGBimg, PIX_FMT_RGB32, w, h);
> >        sws_scale(ctx, av_pic->data, av_pic->linesize, 0, h, rgbFrame->data, rgbFrame->linesize);
> >        }
> > 
> > So, in this code, I decode the packet and convert the decoded data into the rgb. 
> > Why does the avcodec_decode_video2 returns a padded linesize?
> > Could anyone tell me how I can eliminate the black border?
> 
> The actual encoded data has padding, added to make encoding and decoding more efficient. The returned frame has the padding still, since it's more efficient again - just decoding into a buffer without having to copy all the lines.
> 
> That's very standard. Expect to see that in almost all codecs and frame sizes.
> 
> You need to use the viewable width, not the linesize when scaling.
> 
> Bruce
> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/libav-user


Thanks for your reply. I have described the problem in detail with some pictures here: http://forum.doom9.org/showthread.php?t=169036
It is really strange that it produces no black part (bar) when I set the width = width+1 when calling sws_getContext. Could it be a bug in swscale since I do no scaling?

Thanks a lot.
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20131015/a7bbcc8a/attachment.html>


More information about the Libav-user mailing list