[Libav-user] Picture conversion help
env01
Hoang.Nguyen at envisioninc.com
Wed Aug 24 23:01:49 CEST 2011
Hi,
I have is a series of streamed PNG images that I must convert over to YUV so
that I can later make an mp4 movie out of. The original PNG images are fine
as I can view them with an image viewer. My converted YUV images however
are all garbage. I have spent days googling and pouring over forums but
could not figure out what I am missing. Could someone please help?
av_register_all();
int width = 2560;
int height = 34;
int totalStrips = 374;
static struct SwsContext *swsCtx = NULL;
for(int i=0; i<=totalStrips; ++i) {
VideoFrame &frame = vid->Next();
// load the image into an avpicture
AVPicture inPic;
PixelFormat inPixFormat = PIX_FMT_BGR24;
int res = avpicture_alloc(&inPic, inPixFormat, width, height);
if(res < 0) {
cout << "ERROR: Unable to alloc picture" << endl;
exit(1);
}
res = avpicture_fill(&inPic,
(uint8_t*) frame.GetImageData(),
inPixFormat,
width,
height);
if(res < 0) {
cout << "ERROR: Unable to fill picture" << endl;
exit(1);
}
// convert the image
AVPicture outPic;
PixelFormat outPixFormat = PIX_FMT_YUV420P;
res = avpicture_alloc(&outPic, outPixFormat, width, height);
if(res < 0) {
cout << "ERROR: Unable to alloc picture" << endl;
}
if(swsCtx == NULL) {
swsCtx = sws_getContext(width, height, inPixFormat,
width, height, outPixFormat,
SWS_BICUBIC, NULL, NULL, NULL);
}
res = sws_scale(swsCtx, inPic.data, inPic.linesize,
0, height, outPic.data, outPic.linesize);
if(res <= 0) {
cout << "ERROR: sws_scale() failed at index " << i << endl;
exit(1);
}
if(i < 5) {
// save a couple of images for debugging
// prposes to see if works or not
unsigned char buffer[500000];
res = avpicture_layout(&outPic, outPixFormat, width, height,
buffer, 500000);
char filename [100];
sprintf(filename, "ConvertedImage%d.yuv", i);
ofstream outfile(filename, ios::out | ios::binary);
outfile.write( (const char*)buffer, res);
outfile.flush();
outfile.close();
}
avpicture_free(&outPic);
}
--
View this message in context: http://libav-users.943685.n4.nabble.com/Picture-conversion-help-tp3766636p3766636.html
Sent from the libav-users mailing list archive at Nabble.com.
More information about the Libav-user
mailing list