<div></div><div>Hi everyone, I’m trying to capture live stream from usb camera with raspberry pi 2.</div><div>I installed ffmpeg and I’m using this code to get live stream from camera.</div><div>I have some problems:</div><div>- the framerate decreases because every ~22 frames there is a big delay (~950ms), it’s how if the buffer become full and then it’s emptied, or another possibility is that every ~22 frames the camera adjusts some parameters for contrast, brightness, ecc…</div><div>- from details camera I could capture the frames with 30fps with 640x480 resolution, but, without to consider the delay, the difference in ms between frames is 44ms, then ~23fps, why?</div><div><br></div><div>The usb camera is: ELP-USB30W02M-L36, I use 640x480 resolution with format YUY2.</div><div>Thanks a lot for yours helps.</div><div><br></div><div>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------</div><div><p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(57, 51, 255);"><span style="color: #931a68">#include</span><span style="color: #000000"> </span><libavdevice/avdevice.h></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(57, 51, 255);"><span style="color: #931a68">#include</span><span style="color: #000000"> </span><libswscale/swscale.h></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(57, 51, 255);"><span style="color: #931a68">#include</span><span style="color: #000000"> </span><libavutil/pixfmt.h></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(57, 51, 255);"><span style="color: #931a68">#include</span><span style="color: #000000"> </span><libavutil/imgutils.h></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(57, 51, 255);"><span style="color: #931a68">#include</span><span style="color: #000000"> </span><sys/time.h></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(147, 26, 104);">typedef<span style="color: #000000"> </span>struct<span style="color: #000000"> </span><span style="color: #006141">Timestamp</span><span style="color: #000000"> {</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(3, 38, 204);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre"> </span></span><span style="color: #931a68">int</span><span style="color: #000000"> </span>seconds<span style="color: #000000">;</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(3, 38, 204);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre"> </span></span><span style="color: #931a68">int</span><span style="color: #000000"> </span>useconds<span style="color: #000000">;</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(0, 97, 65);"><span style="color: #000000">} </span>Timestamp<span style="color: #000000">;</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span style="color: #931a68">#define</span> ONE_SECOND_IN_USEC 1000000</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span style="color: #931a68">int</span> difference_timestamp(<span style="color: #006141">Timestamp</span> timestamp1, <span style="color: #006141">Timestamp</span> timestamp2) {</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68">int</span> difference = 0; <span style="color: #4e9072">//in </span><span style="text-decoration: underline ; color: #4e9072">usec</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68">if</span> (timestamp1.<span style="color: #0326cc">seconds</span> > timestamp2.<span style="color: #0326cc">seconds</span>) {</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span>difference = (timestamp1.<span style="color: #0326cc">seconds</span> - timestamp2.<span style="color: #0326cc">seconds</span>)</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                              </span>* ONE_SECOND_IN_USEC;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span><span style="color: #931a68">if</span> (timestamp1.<span style="color: #0326cc">useconds</span> > timestamp2.<span style="color: #0326cc">useconds</span>) {</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                      </span>difference += timestamp1.<span style="color: #0326cc">useconds</span> - timestamp2.<span style="color: #0326cc">useconds</span>;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span>} <span style="color: #931a68">else</span> {</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                      </span>difference += timestamp2.<span style="color: #0326cc">useconds</span> - timestamp1.<span style="color: #0326cc">useconds</span>;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                      </span>difference -= ONE_SECOND_IN_USEC;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span>}</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span>} <span style="color: #931a68">else</span> {</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span>difference = (timestamp2.<span style="color: #0326cc">seconds</span> - timestamp1.<span style="color: #0326cc">seconds</span>)</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                              </span>* ONE_SECOND_IN_USEC;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span><span style="color: #931a68">if</span> (timestamp1.<span style="color: #0326cc">useconds</span> > timestamp2.<span style="color: #0326cc">useconds</span>) {</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                      </span>difference += timestamp1.<span style="color: #0326cc">useconds</span> - timestamp2.<span style="color: #0326cc">useconds</span>;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                      </span>difference -= ONE_SECOND_IN_USEC;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span>} <span style="color: #931a68">else</span> {</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                      </span>difference += timestamp2.<span style="color: #0326cc">useconds</span> - timestamp1.<span style="color: #0326cc">useconds</span>;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span>}</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span>}</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68">return</span> difference;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;">}</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span style="color: #931a68">void</span> get_current_time(<span style="color: #006141">Timestamp</span>* timestamp) {</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(0, 97, 65);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">  </span></span><span style="color: #931a68">struct</span><span style="color: #000000"> </span>timeval<span style="color: #000000"> tv;</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #793d93">gettimeofday</span>(&tv, NULL);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span>timestamp-><span style="color: #0326cc">seconds</span> = (<span style="color: #931a68">int</span>) (tv.<span style="color: #0326cc">tv_sec</span>);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span>timestamp-><span style="color: #0326cc">useconds</span> = (<span style="color: #931a68">int</span>) (tv.<span style="color: #0326cc">tv_usec</span>);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;">}</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span style="color: #931a68">int</span> main(<span style="color: #931a68">int</span> argc, <span style="color: #931a68">char</span> *argv[]) {</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(121, 61, 147);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">       </span></span>avdevice_register_all<span style="color: #000000">();</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(121, 61, 147);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">       </span></span>avcodec_register_all<span style="color: #000000">();</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68">const</span> <span style="color: #931a68">char</span> *filenameSrc = <span style="color: #3933ff">"/</span><span style="text-decoration: underline ; color: #3933ff">dev</span><span style="color: #3933ff">/video0"</span>;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(0, 97, 65);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">  </span></span>AVCodecContext<span style="color: #000000"> *pCodecCtx;</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(121, 61, 147);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">       </span></span><span style="color: #006141">AVFormatContext</span><span style="color: #000000"> *pFormatCtx = </span>avformat_alloc_context<span style="color: #000000">();</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #006141">AVCodec</span> * pCodec;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(121, 61, 147);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">       </span></span><span style="color: #006141">AVInputFormat</span><span style="color: #000000"> *iformat = </span>av_find_input_format<span style="color: #000000">(</span><span style="color: #3933ff">"</span><span style="text-decoration: underline ; color: #3933ff">dshow</span><span style="color: #3933ff">"</span><span style="color: #000000">);</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #006141">AVFrame</span> *pFrame, *pFrameRGB;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #006141">AVCodecParameters</span> *pCodecPrm = NULL;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68">if</span> (<span style="color: #793d93">avformat_open_input</span>(&pFormatCtx, filenameSrc, iformat, NULL) != 0)</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span><span style="color: #931a68">return</span> -12;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68">if</span> (<span style="color: #793d93">avformat_find_stream_info</span>(pFormatCtx, NULL) < 0)</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span><span style="color: #931a68">return</span> -13;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #793d93">av_dump_format</span>(pFormatCtx, 0, filenameSrc, 0);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68">int</span> videoStream = 1;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68">int</span> i;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68">for</span> (i = 0; i < pFormatCtx-><span style="color: #0326cc">nb_streams</span>; i++) {</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(3, 38, 204);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">         </span></span><span style="color: #931a68">if</span><span style="color: #000000"> (pFormatCtx-></span>streams<span style="color: #000000">[i]-></span>codecpar<span style="color: #000000">-></span>codec_type</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(3, 38, 204);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                         </span>== </span>AVMEDIA_TYPE_VIDEO<span style="color: #000000">) {</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                      </span>videoStream = i;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(147, 26, 104);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                       </span></span>break<span style="color: #000000">;</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span>}</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span>}</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(78, 144, 114);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">       </span></span>// Get a pointer to the <span style="text-decoration: underline">codec</span> context for the video stream</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span>pCodecPrm = pFormatCtx-><span style="color: #0326cc">streams</span>[videoStream]-><span style="color: #0326cc">codecpar</span>;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68">if</span> (videoStream == -1)</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span><span style="color: #931a68">return</span> -14;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(78, 144, 114);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">       </span></span>// Find the decoder for the video stream</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span>pCodec = <span style="color: #793d93">avcodec_find_decoder</span>(pCodecPrm-><span style="color: #0326cc">codec_id</span>);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68">if</span> (pCodec == NULL)</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(78, 144, 114);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">               </span></span><span style="color: #931a68">return</span><span style="color: #000000"> -15; </span>//<span style="text-decoration: underline">codec</span> not found</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span>pCodecCtx = <span style="color: #793d93">avcodec_alloc_context3</span>(pCodec);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span>pCodecCtx-><span style="color: #0326cc">bit_rate</span> = pCodecPrm-><span style="color: #0326cc">bit_rate</span>;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span>pCodecCtx-><span style="color: #0326cc">width</span> = pCodecPrm-><span style="color: #0326cc">width</span>;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span>pCodecCtx-><span style="color: #0326cc">height</span> = pCodecPrm-><span style="color: #0326cc">height</span>;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(3, 38, 204);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre"> </span>pCodecCtx-></span>pix_fmt<span style="color: #000000"> = </span>AV_PIX_FMT_YUYV422<span style="color: #000000">;</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #006141">AVDictionary</span> *codec_options = NULL;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68">if</span> (<span style="color: #793d93">avcodec_open2</span>(pCodecCtx, pCodec, &codec_options) < 0)</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span><span style="color: #931a68">return</span> -16;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(121, 61, 147);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">       </span>pFrame = </span>av_frame_alloc<span style="color: #000000">();</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span>pFrameRGB = <span style="color: #793d93">av_frame_alloc</span>();</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68">enum</span> AVPixelFormat pFormat = <span style="color: #0326cc">AV_PIX_FMT_BGR24</span>;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68">int</span> numBytes = <span style="color: #793d93">av_image_get_buffer_size</span>(pFormat, pCodecPrm-><span style="color: #0326cc">width</span>,</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                      </span>pCodecPrm-><span style="color: #0326cc">height</span>, 1);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #006141">uint8_t</span> *buffer = NULL;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span>buffer = (<span style="color: #006141">uint8_t</span> *) <span style="color: #793d93">av_malloc</span>(numBytes * <span style="color: #931a68">sizeof</span>(<span style="color: #006141">uint8_t</span>));</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #793d93">av_image_fill_arrays</span>(pFrameRGB-><span style="color: #0326cc">data</span>, pFrameRGB-><span style="color: #0326cc">linesize</span>, buffer, pFormat,</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                      </span>pCodecPrm-><span style="color: #0326cc">width</span>, pCodecPrm-><span style="color: #0326cc">height</span>, 1);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68">int</span> res = 0, diff;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #006141">AVPacket</span> packet;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #006141">Timestamp</span> timestamp_prec, timestamp_curr;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span>get_current_time(&timestamp_prec);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #793d93">sleep</span>(10);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68">while</span> (res >= 0) {</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span>res = <span style="color: #793d93">av_read_frame</span>(pFormatCtx, &packet);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span>get_current_time(&timestamp_curr);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span>diff = difference_timestamp(timestamp_prec, timestamp_curr) / 1000; <span style="color: #4e9072">//</span><span style="text-decoration: underline ; color: #4e9072">diff</span><span style="color: #4e9072"> in </span><span style="text-decoration: underline ; color: #4e9072">ms</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(57, 51, 255);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span><span style="color: #793d93">printf</span><span style="color: #000000">(</span>"T_prec:%d.%d\tT_curr:%d.%d\<span style="text-decoration: underline">ndiff</span>:%d\n"<span style="color: #000000">, timestamp_prec.</span><span style="color: #0326cc">seconds</span><span style="color: #000000">,</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                              </span>timestamp_prec.<span style="color: #0326cc">useconds</span>, timestamp_curr.<span style="color: #0326cc">seconds</span>,</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                              </span>timestamp_curr.<span style="color: #0326cc">useconds</span>, diff);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span><span style="color: #793d93">fflush</span>(stdout);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span><span style="color: #931a68">if</span> (packet.<span style="color: #0326cc">stream_index</span> == videoStream) {</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                      </span><span style="color: #793d93">avcodec_send_packet</span>(pCodecCtx, &packet);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                      </span><span style="color: #793d93">avcodec_receive_frame</span>(pCodecCtx, pFrame);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                      </span><span style="color: #931a68">struct</span> <span style="color: #006141">SwsContext</span> * img_convert_ctx;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                      </span>img_convert_ctx = <span style="color: #793d93">sws_getCachedContext</span>(NULL, pCodecCtx-><span style="color: #0326cc">width</span>,</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                                      </span>pCodecCtx-><span style="color: #0326cc">height</span>, pCodecCtx-><span style="color: #0326cc">pix_fmt</span>, pCodecCtx-><span style="color: #0326cc">width</span>,</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                                      </span>pCodecCtx-><span style="color: #0326cc">height</span>, <span style="color: #0326cc">AV_PIX_FMT_BGR24</span>, SWS_BICUBIC, NULL,</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                                      </span>NULL, NULL);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                      </span><span style="color: #793d93">sws_scale</span>(img_convert_ctx, (<span style="color: #006141">uint8_t</span> <span style="color: #931a68">const</span> * <span style="color: #931a68">const</span> *) pFrame-><span style="color: #0326cc">data</span>,</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                                      </span>pFrame-><span style="color: #0326cc">linesize</span>, 0, pCodecCtx-><span style="color: #0326cc">height</span>, pFrameRGB-><span style="color: #0326cc">data</span>,</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                                      </span>pFrameRGB-><span style="color: #0326cc">linesize</span>);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(121, 61, 147);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                       </span></span>av_packet_unref<span style="color: #000000">(&packet);</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">                      </span><span style="color: #793d93">sws_freeContext</span>(img_convert_ctx);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span>}</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">              </span>timestamp_prec = timestamp_curr;</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span>}</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(121, 61, 147);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">       </span></span>av_packet_unref<span style="color: #000000">(&packet);</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #793d93">avcodec_close</span>(pCodecCtx);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #793d93">av_free</span>(pFrame);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #793d93">av_free</span>(pFrameRGB);</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(121, 61, 147);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">       </span></span>avformat_close_input<span style="color: #000000">(&pFormatCtx);</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; min-height: 15px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(147, 26, 104);"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">       </span></span>return<span style="color: #000000"> 0;</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Monaco;">}</p></div><div><br></div>