<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>