You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
latmenc: fix muxing of byte-aligned DSE.
This will only work for DSEs that are first in a packet, but that is enough to fix handling of the reference files in fate-suite/aac (though most of them still have other issues). Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
This commit is contained in:
@@ -166,8 +166,21 @@ static int latm_write_packet(AVFormatContext *s, AVPacket *pkt)
|
|||||||
|
|
||||||
/* The LATM payload is written unaligned */
|
/* 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() */
|
/* PayloadMux() */
|
||||||
for (i = 0; i < pkt->size; i++)
|
for (; i < pkt->size; i++)
|
||||||
put_bits(&bs, 8, pkt->data[i]);
|
put_bits(&bs, 8, pkt->data[i]);
|
||||||
|
|
||||||
avpriv_align_put_bits(&bs);
|
avpriv_align_put_bits(&bs);
|
||||||
|
@@ -139,6 +139,10 @@ if [ -n "$do_mp3" ] ; then
|
|||||||
do_lavf_fate mp3 "mp3-conformance/he_32khz.bit" "-acodec copy"
|
do_lavf_fate mp3 "mp3-conformance/he_32khz.bit" "-acodec copy"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -n "$do_latm" ] ; then
|
||||||
|
do_lavf_fate latm "aac/al04_44.mp4" "-acodec copy"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -n "$do_ogg_vp3" ] ; then
|
if [ -n "$do_ogg_vp3" ] ; then
|
||||||
# -idct simple causes different results on different systems
|
# -idct simple causes different results on different systems
|
||||||
DEC_OPTS="$DEC_OPTS -idct auto"
|
DEC_OPTS="$DEC_OPTS -idct auto"
|
||||||
|
3
tests/ref/lavf-fate/latm
Normal file
3
tests/ref/lavf-fate/latm
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
9c8d1afdb2d336976102f175ba577471 *./tests/data/lavf-fate/lavf.latm
|
||||||
|
71926 ./tests/data/lavf-fate/lavf.latm
|
||||||
|
./tests/data/lavf-fate/lavf.latm CRC=0xd846c4b3
|
Reference in New Issue
Block a user