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
