From: Steinar H. Gunderson Date: Sun, 4 Apr 2021 13:23:32 +0000 (+0200) Subject: Pass through non-ADTS data (used when transcoding from MP4 instead of MPEG-TS). X-Git-Tag: 2.0.2~9 X-Git-Url: https://git.sesse.net/?p=nageru;a=commitdiff_plain;h=cf1c846ba0680f8341faa764a20c132ffc0169af Pass through non-ADTS data (used when transcoding from MP4 instead of MPEG-TS). --- diff --git a/nageru/bmusb b/nageru/bmusb index 327dca2..0c0182f 160000 --- a/nageru/bmusb +++ b/nageru/bmusb @@ -1 +1 @@ -Subproject commit 327dca2d848e4c4656be1bfb54a2edf2e6587a71 +Subproject commit 0c0182f453e8bc26e630615ea6d2a2f05e868fde diff --git a/nageru/kaeru.cpp b/nageru/kaeru.cpp index 3d2db1c..b1b08f7 100644 --- a/nageru/kaeru.cpp +++ b/nageru/kaeru.cpp @@ -145,6 +145,12 @@ void raw_packet_callback(Mux *mux, int stream_index, const AVPacket *pkt, AVRati void filter_packet_callback(Mux *mux, int stream_index, AVBSFContext *bsfctx, const AVPacket *pkt, AVRational timebase) { + if (pkt->size <= 2 || pkt->data[0] != 0xff || (pkt->data[1] & 0xf0) != 0xf0) { + // Not ADTS data, so just pass it through. + mux->add_packet(*pkt, pkt->pts, pkt->dts == AV_NOPTS_VALUE ? pkt->pts : pkt->dts, timebase, stream_index); + return; + } + AVPacket *in_pkt = av_packet_clone(pkt); unique_ptr in_pkt_cleanup(in_pkt, av_packet_unref); int err = av_bsf_send_packet(bsfctx, in_pkt);