The FFmpeg / SDL tutorial on FFmpeg's website on page 8 talks about how to use sws_scale. sws_scale can convert practically anything to anywhere at any resolution. MPEG-4 is most likely planar YUV, but in the context of implementing it, it does not really matter.<div>
<br></div><div>To get a what's called a SwsContext, you call this:</div><div>swscontext = NULL;</div><div>swscontext = sws_getContext(sourceWidth, sourceHeight, codecContext->pix_fmt, destWidth, destHeight, PIX_FMT_RGB24, SWS_BICUBIC, NULL, NULL, 0);</div>
<div><br></div><div>Then you call sws_scale with your context. As you can see above, its not required that you know exactly what the pixel format is of your video because the codec context has the correct information for you. PIX_FMT_RGB24 is just one of many enum values that you can choose from (A common alternative is using PIX_FMT_RGBA if you want to add an alpha channel). To access your newly converted data, just use the allocated buffer you used for the conversion frame, because whatever changes are made to the frame are also made to the buffer. Make sure you read the tutorial first, though.</div>
<div><br></div><div><br></div><div><br></div><div><div class="gmail_quote">On Wed, Apr 6, 2011 at 7:26 PM, Amir Rouhi-Rmit <span dir="ltr"><<a href="mailto:amir.rouhi@rmit.edu.au">amir.rouhi@rmit.edu.au</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hi Grzegorz<br>Thanks for introducing the useful links, it takes a little time to see weather it useful for my purpose (extracting frames) or not.<br>
regarding using sws_scale, i just wanted to know does it convert the MPEG-4 format to raw formats: YUV or RGB? it seems this tools work for converting YUV to RGB<br>
Regards<br><font color="#888888">Amir</font><div><div></div><div class="h5"><br><br><div class="gmail_quote">On Thu, Apr 7, 2011 at 11:00 AM, Grzegorz Szpetkowski <span dir="ltr"><<a href="mailto:gszpetkowski@gmail.com" target="_blank">gszpetkowski@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I am not FFmpeg API expert, but you can find working example<br>
(avcodec_sample.0.5.0.c) at<br>
<a href="http://web.me.com/dhoerl/Home/Tech_Blog/Entries/2009/1/22_Revised_avcodec_sample.c.html" target="_blank">http://web.me.com/dhoerl/Home/Tech_Blog/Entries/2009/1/22_Revised_avcodec_sample.c.html</a><br>
<br>
There are also two guides that I know:<br>
<a href="http://www.inb.uni-luebeck.de/%7Eboehme/using_libavcodec.html" target="_blank">http://www.inb.uni-luebeck.de/~boehme/using_libavcodec.html</a> (very outdated)<br>
<a href="http://dranger.com/ffmpeg/tutorial01.html" target="_blank">http://dranger.com/ffmpeg/tutorial01.html</a> (little outdated)<br>
<br>
To convert AVFrame from YUV to RGB you need to use sws_scale.<br>
<br>
Regards<br>
Grzegorz Sz.<br>
<br>
2011/4/7 Amir Rouhi-Rmit <<a href="mailto:amir.rouhi@rmit.edu.au" target="_blank">amir.rouhi@rmit.edu.au</a>>:<br>
<div><div></div><div>> Hi<br>
><br>
> I would be pleased if somebody guide me how can I extract frames in I-Frame<br>
> format from a MPEG-4 AVC (H.264) video stream. The I-Frame can be:<br>
><br>
> A- Any selected frame which can be extracted in form of a 1 frame video<br>
> file. In this case the only frame of video should be in I-Frame.<br>
><br>
> B- Extracting real I-Frames that exist in a video stream in form of  1 frame<br>
> video files.<br>
><br>
><br>
><br>
> I found a method myself for type A, which is based on converting video to<br>
> RAW format by YUVTOOLS software(If somebody help me that how can I convert<br>
> the video to YUV or RGB by ffmpeg or any free software I would be pleased) ,<br>
> and then I select any frame by its number and extract it as a 1 frame video<br>
> which is in I-Frame format by JM software. As you have noticed , this method<br>
> is very costy and take a long time. I hope by help of you I find a method in<br>
> ffmpeg filters to do that.<br>
><br>
> Regards<br>
><br>
> Amir<br>
><br>
</div></div>> _______________________________________________<br>
> Libav-user mailing list<br>
> <a href="mailto:Libav-user@ffmpeg.org" target="_blank">Libav-user@ffmpeg.org</a><br>
> <a href="http://ffmpeg.org/mailman/listinfo/libav-user" target="_blank">http://ffmpeg.org/mailman/listinfo/libav-user</a><br>
><br>
><br>
_______________________________________________<br>
Libav-user mailing list<br>
<a href="mailto:Libav-user@ffmpeg.org" target="_blank">Libav-user@ffmpeg.org</a><br>
<a href="http://ffmpeg.org/mailman/listinfo/libav-user" target="_blank">http://ffmpeg.org/mailman/listinfo/libav-user</a><br>
</blockquote></div><br>
</div></div><br>_______________________________________________<br>
Libav-user mailing list<br>
<a href="mailto:Libav-user@ffmpeg.org">Libav-user@ffmpeg.org</a><br>
<a href="http://ffmpeg.org/mailman/listinfo/libav-user" target="_blank">http://ffmpeg.org/mailman/listinfo/libav-user</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Spencer Graffe<br>- A Guy<br>
</div>