Hi,

If your raw file is in yuv 420 format, you can simply read from the file as if 
you are reading from a text file and push it into the encoder. The important 
thing here is going to be how many bytes to read but you can calculate it by 
looking at the resolution information. If your raw file contains RGB frames, 
you need to convert them first to yuv420 before pushing into encoder. If you 
need further help, you may send a private email.

Date: Wed, 16 Oct 2013 16:28:29 +0200
From: [email protected]
To: [email protected]
Subject: Re: [Libav-user] Applied pad on the decoded frame

Hi Dolevo Jay,
i have a avi and mp4 file. The avcodec_encode_video2 function takes input raw 
video data from frame, so i demux my file and i obtain a raw video file; now i 
want encode it, so how i can open the raw file, read the raw frames and encode 
them into h264??

Thanks for your help!! 
Regards

2013/10/15 Dolevo Jay <[email protected]>






> From: [email protected]
> Date: Mon, 14 Oct 2013 15:47:05 -0700
> To: [email protected]

> Subject: Re: [Libav-user] Applied pad on the decoded frame
> 
> On Oct 14, 2013, at 4:46 AM, Dolevo Jay <[email protected]> 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
> [email protected]
> 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.
                                          


_______________________________________________

Libav-user mailing list

[email protected]

http://ffmpeg.org/mailman/listinfo/libav-user




-- 
Francesco Damato


_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user                                   
  
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to