<div dir="ltr"><div dir="ltr">Nicolas George (2021-07-07)<table cellpadding="0" class="gmail-cf gmail-gJ" style="border-collapse:collapse;margin-top:0px;width:auto;font-family:Roboto,RobotoDraft,Helvetica,Arial,sans-serif;font-size:14px;letter-spacing:0.2px;display:block"><tbody style="display:block"></tbody></table>> Some codecs have two modes: one with global extradata used in formats<br>> optimized for storage, one without used in formats optimized for<br>> streaming. You are probably getting the latter and trying to use where</div><div dir="ltr">> the former is needed.</div><div dir="ltr">> <br>> You probably need to insert one of the mp4toannexb bitstream filters.</div><div dir="ltr"><br></div><div dir="ltr">That was an awesome idea, 'coz it both sounds reasonable and correlates with what I've dug up in the ffmpeg sources so far.</div><div dir="ltr">Nevertheless, same error -- <a href="https://gist.github.com/MasterAler/d8639ed7bce6c9b4f3bc9be6dfc7e98d">https://gist.github.com/MasterAler/d8639ed7bce6c9b4f3bc9be6dfc7e98d</a></div><div dir="ltr"><br></div><div dir="ltr">The most important part is the following:</div><div dir="ltr"><br>```cpp<br>if (codec_id == AV_CODEC_ID_H264 || codec_id == AV_CODEC_ID_HEVC) {<br>    const char *filtername = codec_id == AV_CODEC_ID_H264 ? "h264_mp4toannexb" : "hevc_mp4toannexb";<br><br>    const auto *bsf = av_bsf_get_by_name(filtername);<br>    if (!bsf) {<br>        std::cerr << "failed to find bit stream filter" << std::endl;<br>        return;<br>    }<br><br>    AVBSFContext *bsf_ctx_raw = nullptr;<br>    err = av_bsf_alloc(bsf, &bsf_ctx_raw);<br>    if (err < 0) {<br>        std::cerr << "failed to allocate bit stream filter context" << std::endl;<br>        return;<br>    }<br><br>    bsf_ctx = std::unique_ptr<AVBSFContext, void (*)(AVBSFContext *)>{bsf_ctx_raw, [](AVBSFContext *p) { av_bsf_free(&p); }};<br>}<br>```</div><div dir="ltr"><br></div><div>Then I try something as straightforward as av_bsf_send_packet + av_bsf_receive_packet, from my experience that's a working approach.<br>Still "Invalid data found when processing input" =(( Any ideas, please? ((</div><div dir="ltr"><br><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr">________</div><div dir="ltr"><br></div><div>Regards, Alex<br></div></div></div></div></div></div></div>