]> git.sesse.net Git - nageru/commitdiff
Pass through non-ADTS data (used when transcoding from MP4 instead of MPEG-TS).
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 4 Apr 2021 13:23:32 +0000 (15:23 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 4 Apr 2021 13:23:32 +0000 (15:23 +0200)
nageru/bmusb
nageru/kaeru.cpp

index 327dca2d848e4c4656be1bfb54a2edf2e6587a71..0c0182f453e8bc26e630615ea6d2a2f05e868fde 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 327dca2d848e4c4656be1bfb54a2edf2e6587a71
+Subproject commit 0c0182f453e8bc26e630615ea6d2a2f05e868fde
index 3d2db1c3ba810e3ffab95ef4e785b06c53dc4bbc..b1b08f74465db6e418fd6a8e495800991a072514 100644 (file)
@@ -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<AVPacket, decltype(av_packet_unref) *> in_pkt_cleanup(in_pkt, av_packet_unref);
        int err = av_bsf_send_packet(bsfctx, in_pkt);