[Libav-user] Converting yuvj420p to AV_PIX_FMT_BGRA‏‏

C Lai for_rmcer at hotmail.com
Wed May 11 01:23:13 CEST 2016

Here are the code related to converting yuvj420p to AV_PIX_FMIT_BGRA
               vp->width = srcFrame->width;
                vp->height = srcFrame->height;

                int numBytes = avpicture_get_size(imgPixFormat, vp->width, vp->height);
                vp->bmp = new uint8_t[numBytes*sizeof(uint8_t)];
                avpicture_fill((AVPicture *)vp->frame, vp->bmp, imgPixFormat, vp->width, vp->height);
                videoState->imgConvertContext = sws_getCachedContext(videoState->imgConvertContext,
                    vp->width, vp->height, (AVPixelFormat) srcFrame->format, vp->width, vp->height,
                    imgPixFormat, swsFlags, NULL, NULL, NULL);

                sws_scale(videoState->imgConvertContext, srcFrame->data, srcFrame->linesize,
                          0, vp->height, vp->frame->data, vp->frame->linesize);

The following is the print for the width, height, and lines size for the source frame(yuvj420p) and the target frame(AV_PIX_FMT_BGRA)
source width 432 height 240 linesize 432 216 216 432
target width 432 height 240 linesize 1728 0 0 1728

source width 320 height 240 linesize 320 160 160 320
target width 320 height 240 linesize 1280 0 0 1280

The part that confuses me is the lines size for source frame.  I don't understand why linessize of srcFrame are different between size 432x240 and size 320x240?  Aren't they the same height but why linessize[1] and linesize[2] are different numbers?


More information about the Libav-user mailing list