<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Sep 15, 2019 at 9:17 PM Dorian Green <<a href="mailto:doriangreen97@gmail.com">doriangreen97@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"DejaVu Sans Mono";font-size:9pt">hello, I am trying to become more adept at using the libav libraries and have<br></pre><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"DejaVu Sans Mono";font-size:9pt">practising them. The problem I am having is that swscale at the bottom of my<br></pre><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"DejaVu Sans Mono";font-size:9pt">code listed here always returns bad src image pointers. this below is the main<br></pre><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"DejaVu Sans Mono";font-size:9pt">chuck of my learning test code.<br></pre></div></blockquote><div>I see that you are not checking the return code from avcodec_receive_frame. With some codecs, it is possible that a call to avcodec_send_packet will not actually return a frame. If the return_value is AVERROR(EAGAIN), that is not an error, but it means you will need to send more packets before a frame is ready. You should really only process the frame if return_value is 0.<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"DejaVu Sans Mono";font-size:9pt"></pre><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"DejaVu Sans Mono";font-size:9pt"><br>format_context = avformat_alloc_context()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">if</span>(!format_context){<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"failed to allocate memory for AVFormatContext " </span><span style="color:rgb(95,140,138)"><< </span>filename <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    return </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">;<br></span>}<span style="color:rgb(204,120,50)">else</span>{<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"allocated memory for AVFormatContext " </span><span style="color:rgb(95,140,138)"><< </span>filename <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">" successfully" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span>}<br><br><span style="color:rgb(204,120,50)">if</span>(avformat_open_input(&format_context<span style="color:rgb(204,120,50)">,</span>filename<span style="color:rgb(204,120,50)">,nullptr,nullptr</span>) != <span style="color:rgb(104,151,187)">0</span>){<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">" could not open the file" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    return </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">;<br></span>}<span style="color:rgb(204,120,50)">else</span>{<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"opened file successfully" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span>}<br><br><span style="color:rgb(204,120,50)">if</span>(avformat_find_stream_info(format_context<span style="color:rgb(204,120,50)">, nullptr</span>) < <span style="color:rgb(104,151,187)">0</span>){<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"could not get stream info" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    return </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">;<br></span>}<br><br>av_dump_format(format_context<span style="color:rgb(204,120,50)">,</span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">,</span>filename<span style="color:rgb(204,120,50)">, </span><span style="color:rgb(104,151,187)">0</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span>video_stream_index = av_find_best_stream(<br>        format_context<span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">        </span><span style="color:rgb(152,118,170);font-style:italic">AVMEDIA_TYPE_VIDEO</span><span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">        </span>-<span style="color:rgb(104,151,187)">1</span><span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">        </span>-<span style="color:rgb(104,151,187)">1</span><span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">        </span>&av_video_codec_decoder<span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">        </span><span style="color:rgb(104,151,187)">0<br></span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">if</span>(video_stream_index == <span style="color:rgb(144,139,37)">AVERROR_STREAM_NOT_FOUND </span>|| !av_video_codec_decoder){<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"video stream not found." </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    return </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">;<br></span>}<span style="color:rgb(204,120,50)">else</span>{<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"video stream found successfully." </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span>}<br><br>audio_stream_index = av_find_best_stream(<br>        format_context<span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">        </span><span style="color:rgb(152,118,170);font-style:italic">AVMEDIA_TYPE_AUDIO</span><span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">        </span>-<span style="color:rgb(104,151,187)">1</span><span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">        </span>-<span style="color:rgb(104,151,187)">1</span><span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">        </span>&av_audio_codec_decoder<span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">        </span><span style="color:rgb(104,151,187)">0<br></span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">if</span>(audio_stream_index == <span style="color:rgb(144,139,37)">AVERROR_STREAM_NOT_FOUND </span>|| !av_audio_codec_decoder){<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"audio stream not found." </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    return </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">;<br></span>}<span style="color:rgb(204,120,50)">else</span>{<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"audio stream found successfully." </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span>}<br><br>codec_context = avcodec_alloc_context3(av_video_codec_decoder)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">if</span>(!codec_context){<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"failed to allocate memory for AVCodecContext" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    return </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">;<br></span>}<span style="color:rgb(204,120,50)">else</span>{<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"allocated memory for AVCodecContext" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span>}<br><br><span style="color:rgb(204,120,50)">if</span>(avcodec_parameters_to_context(codec_context<span style="color:rgb(204,120,50)">, </span>format_context-><span style="color:rgb(147,115,165)">streams</span>[video_stream_index]-><span style="color:rgb(147,115,165)">codecpar</span>) < <span style="color:rgb(104,151,187)">0</span>){<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"Failed to set parameters." </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    return </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">;<br></span>}<span style="color:rgb(204,120,50)">else</span>{<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"parameters set successfully." </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span>}<br><br><span style="color:rgb(204,120,50)">if </span>(avcodec_open2(codec_context<span style="color:rgb(204,120,50)">, </span>av_video_codec_decoder<span style="color:rgb(204,120,50)">, nullptr</span>) < <span style="color:rgb(104,151,187)">0</span>) {<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"Could not open codec." </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    return </span>-<span style="color:rgb(104,151,187)">1</span><span style="color:rgb(204,120,50)">;<br></span>}<span style="color:rgb(204,120,50)">else</span>{<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"Codec opened successfully" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span>}<br><br><span style="color:rgb(204,120,50)">if</span>(codec_context-> <span style="color:rgb(147,115,165)">height </span>== <span style="color:rgb(104,151,187)">0 </span>|| codec_context-><span style="color:rgb(147,115,165)">width </span>== <span style="color:rgb(104,151,187)">0</span>){<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"something went wrong. codec_context height or width of 0 detected" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    return </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">;<br></span>}<span style="color:rgb(204,120,50)">else</span>{<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"codec_context appears correct.." </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span>}<br><br>secondary_av_frame = av_frame_alloc()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">if</span>(!secondary_av_frame){<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"failed to allocate memory for secondary_av_frame (AVFrame)." </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    return </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">;<br></span>}<span style="color:rgb(204,120,50)">else</span>{<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"allocated memory for secondary_av_frame (AVFrame)" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span>}<br><br>primary_av_frame = av_frame_alloc()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">if</span>(!primary_av_frame){<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"failed to allocate memory for primary_av_frame (AVFrame)." </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    return </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">;<br></span>}<span style="color:rgb(204,120,50)">else</span>{<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"allocated memory for primary_av_frame (AVFrame)" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span>}<br><br>primary_av_frame-><span style="color:rgb(147,115,165)">format </span>= codec_context-><span style="color:rgb(147,115,165)">pix_fmt</span><span style="color:rgb(204,120,50)">;<br></span>primary_av_frame-><span style="color:rgb(147,115,165)">width </span>= codec_context-><span style="color:rgb(147,115,165)">width</span><span style="color:rgb(204,120,50)">;<br></span>primary_av_frame-><span style="color:rgb(147,115,165)">height </span>= codec_context-><span style="color:rgb(147,115,165)">height</span><span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">int </span>ret = av_frame_get_buffer(primary_av_frame<span style="color:rgb(204,120,50)">, </span><span style="color:rgb(104,151,187)">0</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">if</span>(ret < <span style="color:rgb(104,151,187)">0</span>){<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"failed av_frame_get_buffer" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    return </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">;<br></span>}<span style="color:rgb(204,120,50)">else</span>{<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"av_frame_get_buffer successful" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span>}<br><br>buffer_size = av_image_get_buffer_size(<br>        codec_context-><span style="color:rgb(147,115,165)">pix_fmt</span><span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">        </span>codec_context-><span style="color:rgb(147,115,165)">width</span><span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">        </span>codec_context-><span style="color:rgb(147,115,165)">height</span><span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">        </span><span style="color:rgb(104,151,187)">1</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">if</span>(!buffer_size){<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"failed to allocate buffer_size (size_t)" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    return </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">;<br></span>}<span style="color:rgb(204,120,50)">else</span>{<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"allocated memory for buffer_size (size_t)" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span>}<br><br>sws_context = sws_getContext(codec_context-><span style="color:rgb(147,115,165)">width</span><span style="color:rgb(204,120,50)">, </span>codec_context-><span style="color:rgb(147,115,165)">height</span><span style="color:rgb(204,120,50)">, </span>codec_context-><span style="color:rgb(147,115,165)">pix_fmt</span><span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">                             </span>codec_context-><span style="color:rgb(147,115,165)">width</span><span style="color:rgb(204,120,50)">, </span>codec_context-><span style="color:rgb(147,115,165)">height</span><span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">                             </span><span style="color:rgb(152,118,170);font-style:italic">AV_PIX_FMT_RGB24</span><span style="color:rgb(204,120,50)">, </span><span style="color:rgb(144,139,37)">SWS_BICUBIC</span><span style="color:rgb(204,120,50)">, nullptr, nullptr, nullptr</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">if</span>(sws_context){<br>    <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"allocated sws_context" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span>}<br><br><span style="color:rgb(204,120,50)">while</span>(av_read_frame(format_context<span style="color:rgb(204,120,50)">, </span>primary_packet) >=<span style="color:rgb(104,151,187)">0 </span>) {<br>    glClear(<span style="color:rgb(144,139,37)">GL_COLOR_BUFFER_BIT</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span><span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"video current framecount: " </span><span style="color:rgb(95,140,138)">+ </span><span style="color:rgb(181,182,227)">std</span>::to_string(++framecount) <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">    if </span>(primary_packet-><span style="color:rgb(147,115,165)">stream_index </span>== video_stream_index) {<br><br>        return_value = avcodec_send_packet(codec_context<span style="color:rgb(204,120,50)">, </span>primary_packet)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">        if </span>(return_value != <span style="color:rgb(104,151,187)">0</span>) {<br><br>            <span style="color:rgb(204,120,50)">if </span>(return_value == <span style="color:rgb(144,139,37)">AVERROR_EOF</span>) {<br>                end_of_file = <span style="color:rgb(204,120,50)">true;<br></span><span style="color:rgb(204,120,50)">                </span><span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"end of file: the decoder has been flushed. (this can also mean more than one flush packet.)" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">            </span>} <span style="color:rgb(204,120,50)">else if </span>(return_value == <span style="color:rgb(144,139,37)">AVERROR</span>(EINVAL)) {<br>                <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"codec not opened or requires flush" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">            </span>} <span style="color:rgb(204,120,50)">else if </span>(return_value == <span style="color:rgb(144,139,37)">AVERROR</span>(ENOMEM)) {<br>                <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"failed to add packet to internal queue, or similar" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">            </span>} <span style="color:rgb(204,120,50)">else </span>{<br>                <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"Unexpected Error: " </span><span style="color:rgb(95,140,138)">+ </span><span style="color:rgb(181,182,227)">std</span>::to_string(return_value) <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">            </span>}<br><br>        } <span style="color:rgb(204,120,50)">else </span>{<br>            <span style="color:rgb(181,182,227)">std</span>::cout <span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(106,135,89)">"packet sent successfully" </span><span style="color:rgb(95,140,138)"><< </span><span style="color:rgb(181,182,227)">std</span>::endl<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">            </span>return_value = avcodec_receive_frame(codec_context<span style="color:rgb(204,120,50)">, </span>primary_av_frame)<span style="color:rgb(204,120,50)"></span><span style="color:rgb(204,120,50)"></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)"></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">            </span>sws_scale(sws_context<span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">                      primary_av_frame->data</span><span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">                      </span>primary_av_frame-><span style="color:rgb(147,115,165)">linesize</span><span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">                      </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">                      </span>codec_context-><span style="color:rgb(147,115,165)">height</span><span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">                      </span>primary_display_frame-><span style="color:rgb(147,115,165)">data</span><span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">                      </span>primary_display_frame-><span style="color:rgb(147,115,165)">linesize</span>)<span style="color:rgb(204,120,50)">;<br><br>sws_freeContext(sws_context)<span style="color:rgb(204,120,50)">;</span></span></pre></div>
_______________________________________________<br>
Libav-user mailing list<br>
<a href="mailto:Libav-user@ffmpeg.org" target="_blank">Libav-user@ffmpeg.org</a><br>
<a href="https://ffmpeg.org/mailman/listinfo/libav-user" rel="noreferrer" target="_blank">https://ffmpeg.org/mailman/listinfo/libav-user</a><br>
<br>
To unsubscribe, visit link above, or email<br>
<a href="mailto:libav-user-request@ffmpeg.org" target="_blank">libav-user-request@ffmpeg.org</a> with subject "unsubscribe".</blockquote></div></div>