In mov and flv muxer, check aac bitstream validity.
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>
Sat, 29 Jan 2011 05:32:09 +0000 (21:32 -0800)
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>
Mon, 18 Apr 2011 21:30:14 +0000 (14:30 -0700)
libavformat/flvenc.c
libavformat/movenc.c

index b1e0485..3e933ce 100644 (file)
@@ -18,6 +18,8 @@
  * License along with FFmpeg; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
+
+#include "libavutil/intreadwrite.h"
 #include "avformat.h"
 #include "flv.h"
 #include "internal.h"
@@ -402,6 +404,10 @@ static int flv_write_packet(AVFormatContext *s, AVPacket *pkt)
         }
         if (!flv->delay && pkt->dts < 0)
             flv->delay = -pkt->dts;
+    } else if (enc->codec_id == CODEC_ID_AAC && pkt->size > 2 &&
+               (AV_RB16(pkt->data) & 0xfff0) == 0xfff0) {
+        av_log(s, AV_LOG_ERROR, "malformated aac bitstream, use -absf aac_adtstoasc\n");
+        return -1;
     }
 
     ts = pkt->dts + flv->delay; // add delay to force positive dts
index 5bc3562..eec61fe 100644 (file)
@@ -1993,6 +1993,10 @@ int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt)
         /* from x264 or from bytestream h264 */
         /* nal reformating needed */
         size = ff_avc_parse_nal_units(pb, pkt->data, pkt->size);
+    } else if (enc->codec_id == CODEC_ID_AAC && pkt->size > 2 &&
+               (AV_RB16(pkt->data) & 0xfff0) == 0xfff0) {
+        av_log(s, AV_LOG_ERROR, "malformated aac bitstream, use -absf aac_adtstoasc\n");
+        return -1;
     } else {
         avio_write(pb, pkt->data, size);
     }