diff options
Diffstat (limited to 'libavformat/latmenc.c')
-rw-r--r-- | libavformat/latmenc.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/libavformat/latmenc.c b/libavformat/latmenc.c index 3ee277d701..c296a1b116 100644 --- a/libavformat/latmenc.c +++ b/libavformat/latmenc.c @@ -166,8 +166,21 @@ static int latm_write_packet(AVFormatContext *s, AVPacket *pkt) /* The LATM payload is written unaligned */ + i = 0; + if (pkt->size && (pkt->data[0] & 0xe1) == 0x81) { + // Convert byte-aligned DSE to non-aligned. + // Due to the input format encoding we know that + // it is naturally byte-aligned in the input stream, + // so there are no padding bits to account for. + // To avoid having to add padding bits and rearrange + // the whole stream we just remove the byte-align flag. + // This allows us to remux our FATE AAC samples into latm + // files that are still playable with minimal effort. + put_bits(&bs, 8, pkt->data[0] & 0xfe); + i++; + } /* PayloadMux() */ - for (i = 0; i < pkt->size; i++) + for (; i < pkt->size; i++) put_bits(&bs, 8, pkt->data[i]); avpriv_align_put_bits(&bs); |