<div dir="ltr"><div><div><div><div><div><div><div>Hello everybody,<br><br></div>First sorry for my english. <br><br></div>I'm having some troubles with my code. I try to make a screencast at a rate of 25 fps. <br></div>The first problem is that I can't reach the framerate I'd like to get (I just have 8 or 9 images per seconds). <br><br></div>The second problem is that my program crash with an exception with sws_scale. <br><br></div>Do you have any idea on how I can improve my code? <br></div><div>Here is what I could do. <br><div><div class="im"><br><br>
<p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">#define</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> __STDC_CONSTANT_MACROS 1</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">extern</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(42,0,255)" lang="EN-US">"C"</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> {</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">#include</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(42,0,255)" lang="EN-US">"avcodec.h"</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">#include</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(42,0,255)" lang="EN-US">"avdevice.h"</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">#include</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(42,0,255)" lang="EN-US">"avformat.h"</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">#include</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(42,0,255)" lang="EN-US">"swscale.h"</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">}</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">static</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">int</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> jpeg_frame_number
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">=</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:blue" lang="EN-US">0</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">void</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
<b>SaveFrame</b>(AVFrame</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">*</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> pFrame</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">int</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> dst_width</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">int</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> dst_height</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">int</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> output_max_size)</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">{</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> AVCodecContext
</span><span style="font-size:10pt;font-family:Consolas;color:purple">*</span><span style="font-size:10pt;font-family:Consolas;color:black">png_encoder_codec_ctx
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> AVCodec
</span><span style="font-size:10pt;font-family:Consolas;color:purple">*</span><span style="font-size:10pt;font-family:Consolas;color:black">png_encoder_codec
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">uint8_t
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">*</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">png_buffer
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">=</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> NULL</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> uint8_t
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">*</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">png_encoder_output_buffer
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">=</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> NULL</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> size_t png_encoder_output_buffer_size
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">=</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:blue" lang="EN-US">0</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">int</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> err
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">=</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:blue" lang="EN-US">0</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> AVPacket pkt</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> av_init_packet(</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">&</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">pkt)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> pkt</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">.</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">data
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">=</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> NULL</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> pkt</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">.</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">size
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">=</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:blue" lang="EN-US">0</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">int</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> gotPacket</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> png_encoder_codec
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">=</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> avcodec_find_encoder_by_name (</span><span style="font-size:10pt;font-family:Consolas;color:rgb(42,0,255)" lang="EN-US">"png"</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">if</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">(png_encoder_codec
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">==</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> NULL)</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">return</span></b><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> png_encoder_output_buffer
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">=</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">static_cast</span></b><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US"><</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">uint8_t
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">*></span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">(av_malloc (output_max_size))</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">if</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> (png_encoder_output_buffer
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">==</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> NULL)</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> {</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> av_free (png_buffer)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">return</span></b><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:black">}</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> png_encoder_codec_ctx
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> avcodec_alloc_context3(png_encoder_codec)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">if</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> (png_encoder_codec_ctx
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">==</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> NULL)</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> {</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> av_free (png_encoder_output_buffer)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> av_free (png_buffer)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">return</span></b><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> }</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> png_encoder_codec_ctx</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">-></span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">width
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">=</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> dst_width</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> png_encoder_codec_ctx</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">-></span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">height
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">=</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> dst_height</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:black">png_encoder_codec_ctx</span><span style="font-size:10pt;font-family:Consolas;color:purple">-></span><span style="font-size:10pt;font-family:Consolas;color:black">pix_fmt
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> PIX_FMT_RGB24</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">if</span></b><span style="font-size:10pt;font-family:Consolas;color:black"> (avcodec_open2(png_encoder_codec_ctx</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
png_encoder_codec</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL)
</span><span style="font-size:10pt;font-family:Consolas;color:purple"><</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:blue">0</span><span style="font-size:10pt;font-family:Consolas;color:black">)</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> {</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> av_free (png_encoder_codec_ctx)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> av_free (png_encoder_output_buffer)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> av_free (png_buffer)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">return</span></b><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> }</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> err
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> avcodec_encode_video2(png_encoder_codec_ctx</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:purple">&</span><span style="font-size:10pt;font-family:Consolas;color:black">pkt</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
pFrame</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:purple">&</span><span style="font-size:10pt;font-family:Consolas;color:black">gotPacket)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">if</span></b><span style="font-size:10pt;font-family:Consolas;color:black">(err
</span><span style="font-size:10pt;font-family:Consolas;color:purple"><</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:blue">0</span><span style="font-size:10pt;font-family:Consolas;color:black">)</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> {</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> avcodec_close (png_encoder_codec_ctx)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> av_free (png_encoder_codec_ctx)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> av_free (png_buffer)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> }</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> FILE
</span><span style="font-size:10pt;font-family:Consolas;color:purple">*</span><span style="font-size:10pt;font-family:Consolas;color:black">pFile</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">char</span></b><span style="font-size:10pt;font-family:Consolas;color:black"> szFilename[</span><span style="font-size:10pt;font-family:Consolas;color:blue">32</span><span style="font-size:10pt;font-family:Consolas;color:black">]</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)">// Open file</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> jpeg_frame_number</span><span style="font-size:10pt;font-family:Consolas;color:purple">++;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> sprintf(szFilename</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(42,0,255)">"D:/Temp/frame%06d.png"</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black"> jpeg_frame_number)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> pFile
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> fopen(szFilename</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(42,0,255)">"wb"</span><span style="font-size:10pt;font-family:Consolas;color:black">)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">if</span></b><span style="font-size:10pt;font-family:Consolas;color:black">(pFile
</span><span style="font-size:10pt;font-family:Consolas;color:purple">==</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL)</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">return</span></b><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)">// Write pixel data</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> fwrite(pkt</span><span style="font-size:10pt;font-family:Consolas;color:purple">.</span><span style="font-size:10pt;font-family:Consolas;color:black">data</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:blue">1</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black"> pkt</span><span style="font-size:10pt;font-family:Consolas;color:purple">.</span><span style="font-size:10pt;font-family:Consolas;color:black">size</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
pFile)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)">// Close file</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> fclose(pFile)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> av_free_packet(</span><span style="font-size:10pt;font-family:Consolas;color:purple">&</span><span style="font-size:10pt;font-family:Consolas;color:black">pkt)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">}</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">int</span></b><span style="font-size:10pt;font-family:Consolas;color:black">
<b>main</b>(</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">int</span></b><span style="font-size:10pt;font-family:Consolas;color:black"> argc</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">char</span></b><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:purple">**</span><span style="font-size:10pt;font-family:Consolas;color:black">argv)</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">{</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> AVInputFormat</span><span style="font-size:10pt;font-family:Consolas;color:purple">*</span><span style="font-size:10pt;font-family:Consolas;color:black">
pInputFormat </span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> AVFormatContext</span><span style="font-size:10pt;font-family:Consolas;color:purple">*</span><span style="font-size:10pt;font-family:Consolas;color:black">
pFomartCtx </span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> AVDictionary</span><span style="font-size:10pt;font-family:Consolas;color:purple">*</span><span style="font-size:10pt;font-family:Consolas;color:black">
pOptions </span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> AVCodecContext</span><span style="font-size:10pt;font-family:Consolas;color:purple">*</span><span style="font-size:10pt;font-family:Consolas;color:black">
pCodecCtx </span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> AVCodec</span><span style="font-size:10pt;font-family:Consolas;color:purple">*</span><span style="font-size:10pt;font-family:Consolas;color:black">
pCodec </span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> AVFrame</span><span style="font-size:10pt;font-family:Consolas;color:purple">*</span><span style="font-size:10pt;font-family:Consolas;color:black">
pFrame </span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> AVFrame</span><span style="font-size:10pt;font-family:Consolas;color:purple">*</span><span style="font-size:10pt;font-family:Consolas;color:black">
pFrameRGB </span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">struct</span></b><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(0,80,50)">SwsContext</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:purple">*</span><span style="font-size:10pt;font-family:Consolas;color:black">img_convert_ctx
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">int</span></b><span style="font-size:10pt;font-family:Consolas;color:black"> i
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:blue">0</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">int</span></b><span style="font-size:10pt;font-family:Consolas;color:black"> videoStream
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:blue">-1</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">int</span></b><span style="font-size:10pt;font-family:Consolas;color:black"> frameFinished
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:blue">0</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">int</span></b><span style="font-size:10pt;font-family:Consolas;color:black"> numBytes
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:blue">0</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> uint8_t
</span><span style="font-size:10pt;font-family:Consolas;color:purple">*</span><span style="font-size:10pt;font-family:Consolas;color:black">buffer
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> AVPacket packet</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> av_init_packet(</span><span style="font-size:10pt;font-family:Consolas;color:purple">&</span><span style="font-size:10pt;font-family:Consolas;color:black">packet)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> packet</span><span style="font-size:10pt;font-family:Consolas;color:purple">.</span><span style="font-size:10pt;font-family:Consolas;color:black">data
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> packet</span><span style="font-size:10pt;font-family:Consolas;color:purple">.</span><span style="font-size:10pt;font-family:Consolas;color:black">size
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:blue">0</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)">// Register all formats and codecs</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> av_register_all()</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> avdevice_register_all()</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)">// av_log_set_level(-1);</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">if</span></b><span style="font-size:10pt;font-family:Consolas;color:black">(</span><span style="font-size:10pt;font-family:Consolas;color:purple">!</span><span style="font-size:10pt;font-family:Consolas;color:black">(pInputFormat
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> av_find_input_format(</span><span style="font-size:10pt;font-family:Consolas;color:rgb(42,0,255)">"gdigrab"</span><span style="font-size:10pt;font-family:Consolas;color:black">)))</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> {</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> fprintf(stderr</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(42,0,255)">"Couldn't get input format. \n"</span><span style="font-size:10pt;font-family:Consolas;color:black">)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">return</span></b><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:blue">-1</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> }</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)">// Set up options</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> av_dict_set(</span><span style="font-size:10pt;font-family:Consolas;color:purple">&</span><span style="font-size:10pt;font-family:Consolas;color:black">pOptions</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(42,0,255)">"video_size"</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(42,0,255)">"1280x970"</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black"> CODEC_FLAG_QSCALE)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)">// Open desktop</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">if</span></b><span style="font-size:10pt;font-family:Consolas;color:black">(avformat_open_input(</span><span style="font-size:10pt;font-family:Consolas;color:purple">&</span><span style="font-size:10pt;font-family:Consolas;color:black">pFomartCtx</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(42,0,255)">"desktop"</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black"> pInputFormat</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:purple">&</span><span style="font-size:10pt;font-family:Consolas;color:black">pOptions)
</span><span style="font-size:10pt;font-family:Consolas;color:purple">!=</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:blue">0</span><span style="font-size:10pt;font-family:Consolas;color:black">)</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> {</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> fprintf(stderr</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(42,0,255)">"Couldn't open desktop input.\n"</span><span style="font-size:10pt;font-family:Consolas;color:black">)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">return</span></b><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:blue">-1</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> }</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)">// Find the decoder for the video stream</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> pCodec
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> avcodec_find_decoder(AV_CODEC_ID_BMP)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">if</span></b><span style="font-size:10pt;font-family:Consolas;color:black">(pCodec
</span><span style="font-size:10pt;font-family:Consolas;color:purple">==</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL)</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> {</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> fprintf(stderr</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(42,0,255)">"Codec not found!\n"</span><span style="font-size:10pt;font-family:Consolas;color:black">)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">return</span></b><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:blue">-1</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> }</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> pCodecCtx
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> avcodec_alloc_context3(pCodec)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">if</span></b><span style="font-size:10pt;font-family:Consolas;color:black">(pCodecCtx
</span><span style="font-size:10pt;font-family:Consolas;color:purple">==</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL)</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> {</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> fprintf(stderr</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(42,0,255)">"Codec context not allocated!\n"</span><span style="font-size:10pt;font-family:Consolas;color:black">)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">return</span></b><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:blue">-1</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> }</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)">// Open codec</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">if</span></b><span style="font-size:10pt;font-family:Consolas;color:black">(avcodec_open2(pCodecCtx</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
pCodec</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL)
</span><span style="font-size:10pt;font-family:Consolas;color:purple"><</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:blue">0</span><span style="font-size:10pt;font-family:Consolas;color:black">)</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> {</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> fprintf(stderr</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(42,0,255)">"Could not open codec\n"</span><span style="font-size:10pt;font-family:Consolas;color:black">)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">return</span></b><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:blue">-1</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> }</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)">// Allocate video frame</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> pFrame
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> avcodec_alloc_frame()</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> pFrameRGB
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> avcodec_alloc_frame()</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">if</span></b><span style="font-size:10pt;font-family:Consolas;color:black">(pFrameRGB
</span><span style="font-size:10pt;font-family:Consolas;color:purple">==</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL
</span><span style="font-size:10pt;font-family:Consolas;color:purple">||</span><span style="font-size:10pt;font-family:Consolas;color:black"> pFrame
</span><span style="font-size:10pt;font-family:Consolas;color:purple">==</span><span style="font-size:10pt;font-family:Consolas;color:black"> NULL)</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">return</span></b><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:blue">-1</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)">// Read frames and save frames to disk</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)">// avio_read();</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)">// avcodec_flush_buffers();</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">while</span></b><span style="font-size:10pt;font-family:Consolas;color:black">((av_read_frame(pFomartCtx</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:purple">&</span><span style="font-size:10pt;font-family:Consolas;color:black">packet)
</span><span style="font-size:10pt;font-family:Consolas;color:purple">>=</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:blue">0</span><span style="font-size:10pt;font-family:Consolas;color:black">))</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> {</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)">// Decode video frame</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> avcodec_decode_video2(pCodecCtx</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
pFrame</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:purple">&</span><span style="font-size:10pt;font-family:Consolas;color:black">frameFinished</span><span style="font-size:10pt;font-family:Consolas;color:purple">,</span><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:purple">&</span><span style="font-size:10pt;font-family:Consolas;color:black">packet)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)">// Did we get a video frame?</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">if</span></b><span style="font-size:10pt;font-family:Consolas;color:black">(frameFinished)</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black"> {</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)">// Convert the image from its native format to RGB</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)">int</span></b><span style="font-size:10pt;font-family:Consolas;color:black"> width
</span><span style="font-size:10pt;font-family:Consolas;color:purple">=</span><span style="font-size:10pt;font-family:Consolas;color:black"> pCodecCtx</span><span style="font-size:10pt;font-family:Consolas;color:purple">-></span><span style="font-size:10pt;font-family:Consolas;color:black">width</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">int</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> height
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">=</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> pCodecCtx</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">-></span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">height</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)" lang="EN-US">// Determine required buffer size and allocate buffer</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> numBytes
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">=</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> avpicture_get_size(AV_PIX_FMT_RGB24</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
width</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> height)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> buffer
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">=</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">static_cast</span></b><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US"><</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">uint8_t
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">*></span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">(av_malloc(numBytes
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">*</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><b><span style="font-size:10pt;font-family:Consolas;color:rgb(127,0,85)" lang="EN-US">sizeof</span></b><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">(uint8_t)))</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)" lang="EN-US">// Assign appropriate parts of buffer to image planes in pFrameRGB</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)" lang="EN-US">// Note that pFrameRGB is an AVFrame, but AVFrame is a superset</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)" lang="EN-US">// of AVPicture</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> avpicture_fill((AVPicture
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">*</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">)pFrameRGB</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
buffer</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> AV_PIX_FMT_RGB24</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
width</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> height)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> img_convert_ctx
</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">=</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> sws_getContext(width</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
height</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> pCodecCtx</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">-></span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">pix_fmt</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
width</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> height</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
AV_PIX_FMT_RGB24</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> SWS_BILINEAR</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
NULL</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> NULL</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
NULL)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> sws_scale(img_convert_ctx</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
pFrame</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">-></span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">data</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
pFrame</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">-></span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">linesize</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:blue" lang="EN-US">0</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> height</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
pFrameRGB</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">-></span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">data</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
pFrameRGB</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">-></span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">linesize)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)" lang="EN-US">// Save the frame to disk</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> SaveFrame(pFrameRGB</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
width</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> height</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">,</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
numBytes)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> }</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)" lang="EN-US">// Free the packet that was allocated by av_read_frame</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> av_free_packet(</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">&</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">packet)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> }</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> sws_freeContext(img_convert_ctx)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> av_free(buffer)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)" lang="EN-US">// Free the RGB image</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> av_free(pFrameRGB)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)" lang="EN-US">// Free the YUV frame</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> av_free(pFrame)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)" lang="EN-US">// Close the codec</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> avcodec_close(pCodecCtx)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:rgb(63,127,95)" lang="EN-US">// Close the video file</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> avformat_close_input(</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">&</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">pFomartCtx)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US"> av_dict_free(</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">&</span><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">pOptions)</span><span style="font-size:10pt;font-family:Consolas;color:purple" lang="EN-US">;</span><span style="font-size:10pt;font-family:Consolas" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10pt;font-family:Consolas;color:black" lang="EN-US">
</span><span style="font-size:10pt;font-family:Consolas;color:black">av_free_packet(</span><span style="font-size:10pt;font-family:Consolas;color:purple">&</span><span style="font-size:10pt;font-family:Consolas;color:black">packet)</span><span style="font-size:10pt;font-family:Consolas;color:purple">;</span><span style="font-size:10pt;font-family:Consolas"></span></p>
<span style="font-size:10pt;font-family:Consolas;color:black">}<br><br><br><br></span></div></div></div><div><br></div>Thank you very much.<br><br></div>Math</div>