[FFmpeg-devel] [PATCH 10/10] lavf/movenc: handle AC3 and EAC3 data extraction in check_bitstream
Rodger Combs
rodger.combs at gmail.com
Wed Mar 14 08:24:45 EET 2018
This allows us to write AC3 and EAC3 data to the header even in non-seekable
output, like with segment.c (which I add tests for).
---
libavformat/movenc.c | 64 +++++++++++++++++-------
tests/fate/avformat.mak | 60 +++++++++++++++++++++-
tests/ref/fate/segment-ac3-to-mp4-header-000 | 38 ++++++++++++++
tests/ref/fate/segment-ac3-to-mp4-header-001 | 30 +++++++++++
tests/ref/fate/segment-ac3-to-mp4-header-all | 62 +++++++++++++++++++++++
tests/ref/fate/segment-ac3-to-mp4-header-md5sum | 1 +
tests/ref/fate/segment-eac3-to-mp4-header-000 | 38 ++++++++++++++
tests/ref/fate/segment-eac3-to-mp4-header-001 | 21 ++++++++
tests/ref/fate/segment-eac3-to-mp4-header-all | 53 ++++++++++++++++++++
tests/ref/fate/segment-eac3-to-mp4-header-md5sum | 1 +
10 files changed, 348 insertions(+), 20 deletions(-)
create mode 100644 tests/ref/fate/segment-ac3-to-mp4-header-000
create mode 100644 tests/ref/fate/segment-ac3-to-mp4-header-001
create mode 100644 tests/ref/fate/segment-ac3-to-mp4-header-all
create mode 100644 tests/ref/fate/segment-ac3-to-mp4-header-md5sum
create mode 100644 tests/ref/fate/segment-eac3-to-mp4-header-000
create mode 100644 tests/ref/fate/segment-eac3-to-mp4-header-001
create mode 100644 tests/ref/fate/segment-eac3-to-mp4-header-all
create mode 100644 tests/ref/fate/segment-eac3-to-mp4-header-md5sum
diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index b5ef09c4c7..1f15d244ed 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -368,11 +368,11 @@ struct eac3_info {
};
#if CONFIG_AC3_PARSER
-static int handle_eac3(MOVMuxContext *mov, AVPacket *pkt, MOVTrack *track)
+static int parse_eac3(MOVMuxContext *mov, const AVPacket *pkt, MOVTrack *track, int *num_blocks)
{
AC3HeaderInfo *hdr = NULL;
struct eac3_info *info;
- int num_blocks, ret;
+ int ret = 1;
if (!track->eac3_priv && !(track->eac3_priv = av_mallocz(sizeof(*info))))
return AVERROR(ENOMEM);
@@ -389,7 +389,8 @@ static int handle_eac3(MOVMuxContext *mov, AVPacket *pkt, MOVTrack *track)
}
info->data_rate = FFMAX(info->data_rate, hdr->bit_rate / 1000);
- num_blocks = hdr->num_blocks;
+ if (num_blocks)
+ *num_blocks = hdr->num_blocks;
if (!info->ec3_done) {
/* AC-3 substream must be the first one */
@@ -415,7 +416,7 @@ static int handle_eac3(MOVMuxContext *mov, AVPacket *pkt, MOVTrack *track)
} else if (hdr->substreamid < info->num_ind_sub ||
hdr->substreamid == 0 && info->substream[0].bsid) {
info->ec3_done = 1;
- goto concatenate;
+ goto end;
}
}
@@ -465,44 +466,53 @@ static int handle_eac3(MOVMuxContext *mov, AVPacket *pkt, MOVTrack *track)
}
}
-concatenate:
+end:
+ av_free(hdr);
+
+ return ret;
+}
+
+static int handle_eac3(MOVMuxContext *mov, AVPacket *pkt, MOVTrack *track)
+{
+ int num_blocks;
+ struct eac3_info *info;
+ int ret = parse_eac3(mov, pkt, track, &num_blocks);
+ if (ret <= 0)
+ return ret;
+
+ info = track->eac3_priv;
+
if (!info->num_blocks && num_blocks == 6) {
- ret = pkt->size;
- goto end;
+ return pkt->size;
}
else if (info->num_blocks + num_blocks > 6) {
- ret = AVERROR_INVALIDDATA;
- goto end;
+ return AVERROR_INVALIDDATA;
}
if (!info->num_blocks) {
ret = av_packet_ref(&info->pkt, pkt);
if (!ret)
info->num_blocks = num_blocks;
- goto end;
+ return ret;
} else {
if ((ret = av_grow_packet(&info->pkt, pkt->size)) < 0)
- goto end;
+ return ret;
memcpy(info->pkt.data + info->pkt.size - pkt->size, pkt->data, pkt->size);
info->num_blocks += num_blocks;
info->pkt.duration += pkt->duration;
if ((ret = av_copy_packet_side_data(&info->pkt, pkt)) < 0)
- goto end;
+ return ret;
if (info->num_blocks != 6)
- goto end;
+ return ret;
av_packet_unref(pkt);
ret = av_packet_ref(pkt, &info->pkt);
if (ret < 0)
- goto end;
+ return ret;
av_packet_unref(&info->pkt);
info->num_blocks = 0;
}
- ret = pkt->size;
-
-end:
- av_free(hdr);
- return ret;
+ return pkt->size;
}
#endif
@@ -6572,12 +6582,28 @@ static int mov_check_bitstream(struct AVFormatContext *s, const AVPacket *pkt)
{
int ret = 1;
AVStream *st = s->streams[pkt->stream_index];
+ MOVMuxContext *mov = s->priv_data;
+ MOVTrack *trk = &mov->tracks[pkt->stream_index];
if (st->codecpar->codec_id == AV_CODEC_ID_AAC) {
if (pkt->size > 2 && (AV_RB16(pkt->data) & 0xfff0) == 0xfff0)
ret = ff_stream_add_bitstream_filter(st, "aac_adtstoasc", NULL);
} else if (st->codecpar->codec_id == AV_CODEC_ID_VP9) {
ret = ff_stream_add_bitstream_filter(st, "vp9_superframe", NULL);
+ } else if ((st->codecpar->codec_id == AV_CODEC_ID_DNXHD ||
+ st->codecpar->codec_id == AV_CODEC_ID_AC3) && !trk->vos_len) {
+ /* copy frame to create needed atoms */
+ trk->vos_len = pkt->size;
+ trk->vos_data = av_malloc(pkt->size);
+ if (!trk->vos_data)
+ return AVERROR(ENOMEM);
+ memcpy(trk->vos_data, pkt->data, pkt->size);
+#if CONFIG_AC3_PARSER
+ } else if (st->codecpar->codec_id == AV_CODEC_ID_EAC3) {
+ ret = parse_eac3(mov, pkt, trk, NULL);
+ if (ret < 0)
+ ret = 0;
+#endif
}
return ret;
diff --git a/tests/fate/avformat.mak b/tests/fate/avformat.mak
index 35a75c68c0..a76fc5c368 100644
--- a/tests/fate/avformat.mak
+++ b/tests/fate/avformat.mak
@@ -111,6 +111,30 @@ tests/data/adts-to-mkv-header-%.mkv: tests/data/adts-to-mkv-header.mkv ;
FATE_SEGMENT_PARTS += 000 001 002
+tests/data/ac3-to-mp4-header.mp4: TAG = GEN
+tests/data/ac3-to-mp4-header.mp4: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+ $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< \
+ -i $(TARGET_SAMPLES)/ac3/monsters_inc_5.1_448_small.ac3 \
+ -f segment -segment_time 1 -map 0 -flags +bitexact -codec copy \
+ -segment_header_filename $(TARGET_PATH)/tests/data/ac3-to-mp4-header.mp4 \
+ -segment_format_options movflags=frag_custom+dash+delay_moov \
+ -y $(TARGET_PATH)/tests/data/ac3-to-mp4-header-%03d.mp4 -nostdin 2>/dev/null
+
+tests/data/ac3-to-mp4-header-%.mp4: tests/data/ac3-to-mp4-header.mp4 ;
+
+FATE_AC3_SEGMENT_PARTS += 000 001
+
+tests/data/eac3-to-mp4-header.mp4: TAG = GEN
+tests/data/eac3-to-mp4-header.mp4: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+ $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< \
+ -i $(TARGET_SAMPLES)/eac3/csi_miami_5.1_256_spx_small.eac3 \
+ -f segment -segment_time 1 -map 0 -flags +bitexact -codec copy \
+ -segment_header_filename $(TARGET_PATH)/tests/data/eac3-to-mp4-header.mp4 \
+ -segment_format_options movflags=frag_custom+dash+delay_moov \
+ -y $(TARGET_PATH)/tests/data/eac3-to-mp4-header-%03d.mp4 -nostdin 2>/dev/null
+
+tests/data/eac3-to-mp4-header-%.mp4: tests/data/eac3-to-mp4-header.mp4 ;
+
tests/data/adts-to-mkv-cated-all.mkv: TAG = GEN
tests/data/adts-to-mkv-cated-all.mkv: tests/data/adts-to-mkv-header.mkv $(FATE_SEGMENT_PARTS:%=tests/data/adts-to-mkv-header-%.mkv) | tests/data
$(M)cat $^ >$@
@@ -119,6 +143,22 @@ tests/data/adts-to-mkv-cated-%.mkv: TAG = GEN
tests/data/adts-to-mkv-cated-%.mkv: tests/data/adts-to-mkv-header.mkv tests/data/adts-to-mkv-header-%.mkv | tests/data
$(M)cat $^ >$@
+tests/data/ac3-to-mp4-cated-all.mp4: TAG = GEN
+tests/data/ac3-to-mp4-cated-all.mp4: tests/data/ac3-to-mp4-header.mp4 $(FATE_AC3_SEGMENT_PARTS:%=tests/data/ac3-to-mp4-header-%.mp4) | tests/data
+ $(M)cat $^ >$@
+
+tests/data/ac3-to-mp4-cated-%.mp4: TAG = GEN
+tests/data/ac3-to-mp4-cated-%.mp4: tests/data/ac3-to-mp4-header.mp4 tests/data/ac3-to-mp4-header-%.mp4 | tests/data
+ $(M)cat $^ >$@
+
+tests/data/eac3-to-mp4-cated-all.mp4: TAG = GEN
+tests/data/eac3-to-mp4-cated-all.mp4: tests/data/eac3-to-mp4-header.mp4 $(FATE_AC3_SEGMENT_PARTS:%=tests/data/eac3-to-mp4-header-%.mp4) | tests/data
+ $(M)cat $^ >$@
+
+tests/data/eac3-to-mp4-cated-%.mp4: TAG = GEN
+tests/data/eac3-to-mp4-cated-%.mp4: tests/data/eac3-to-mp4-header.mp4 tests/data/eac3-to-mp4-header-%.mp4 | tests/data
+ $(M)cat $^ >$@
+
FATE_SEGMENT += fate-segment-mp4-to-ts
fate-segment-mp4-to-ts: tests/data/mp4-to-ts.m3u8
fate-segment-mp4-to-ts: CMD = framecrc -flags +bitexact -i $(TARGET_PATH)/tests/data/mp4-to-ts.m3u8 -c copy
@@ -135,7 +175,25 @@ FATE_SEGMENT_ALLPARTS += all
FATE_SEGMENT_SPLIT += $(FATE_SEGMENT_ALLPARTS:%=fate-segment-adts-to-mkv-header-%)
$(foreach N,$(FATE_SEGMENT_ALLPARTS),$(eval $(N:%=fate-segment-adts-to-mkv-header-%): tests/data/adts-to-mkv-cated-$(N).mkv))
fate-segment-adts-to-mkv-header-%: CMD = framecrc -flags +bitexact -i $(TARGET_PATH)/tests/data/$(@:fate-segment-adts-to-mkv-header-%=adts-to-mkv-cated-%).mkv -c copy
-FATE_SEGMENT-$(call ALLYES, AAC_DEMUXER AAC_ADTSTOASC_BSF MATROSKA_MUXER MATROSKA_DEMUXER SEGMENT_MUXER HLS_DEMUXER) += $(FATE_SEGMENT_SPLIT)
+FATE_SEGMENT-$(call ALLYES, AAC_DEMUXER AAC_ADTSTOASC_BSF MATROSKA_MUXER MATROSKA_DEMUXER SEGMENT_MUXER) += $(FATE_SEGMENT_SPLIT)
+
+FATE_SEGMENT_AC3_ALLPARTS = $(FATE_AC3_SEGMENT_PARTS)
+FATE_SEGMENT_AC3_ALLPARTS += all
+FATE_SEGMENT_AC3_SPLIT += $(FATE_SEGMENT_AC3_ALLPARTS:%=fate-segment-ac3-to-mp4-header-%)
+$(foreach N,$(FATE_SEGMENT_ALLPARTS),$(eval $(N:%=fate-segment-ac3-to-mp4-header-%): tests/data/ac3-to-mp4-cated-$(N).mp4))
+fate-segment-ac3-to-mp4-header-%: CMD = framecrc -flags +bitexact -i $(TARGET_PATH)/tests/data/$(@:fate-segment-ac3-to-mp4-header-%=ac3-to-mp4-cated-%).mp4 -c copy
+fate-segment-ac3-to-mp4-header-md5sum: tests/data/ac3-to-mp4-header.mp4
+fate-segment-ac3-to-mp4-header-md5sum: CMD = do_md5sum tests/data/ac3-to-mp4-header.mp4
+FATE_SEGMENT_AC3_SPLIT += fate-segment-ac3-to-mp4-header-md5sum
+FATE_SEGMENT-$(call ALLYES, AC3_DEMUXER MP4_MUXER MOV_DEMUXER SEGMENT_MUXER) += $(FATE_SEGMENT_AC3_SPLIT)
+
+FATE_SEGMENT_EAC3_SPLIT += $(FATE_SEGMENT_AC3_ALLPARTS:%=fate-segment-eac3-to-mp4-header-%)
+$(foreach N,$(FATE_SEGMENT_ALLPARTS),$(eval $(N:%=fate-segment-eac3-to-mp4-header-%): tests/data/eac3-to-mp4-cated-$(N).mp4))
+fate-segment-eac3-to-mp4-header-%: CMD = framecrc -flags +bitexact -i $(TARGET_PATH)/tests/data/$(@:fate-segment-eac3-to-mp4-header-%=eac3-to-mp4-cated-%).mp4 -c copy
+fate-segment-eac3-to-mp4-header-md5sum: tests/data/eac3-to-mp4-header.mp4
+fate-segment-eac3-to-mp4-header-md5sum: CMD = do_md5sum tests/data/eac3-to-mp4-header.mp4
+FATE_SEGMENT_EAC3_SPLIT += fate-segment-eac3-to-mp4-header-md5sum
+FATE_SEGMENT-$(call ALLYES, EAC3_DEMUXER AC3_PARSER MP4_MUXER MOV_DEMUXER SEGMENT_MUXER) += $(FATE_SEGMENT_EAC3_SPLIT)
FATE_SAMPLES_FFMPEG += $(FATE_SEGMENT-yes)
diff --git a/tests/ref/fate/segment-ac3-to-mp4-header-000 b/tests/ref/fate/segment-ac3-to-mp4-header-000
new file mode 100644
index 0000000000..3d85d4b313
--- /dev/null
+++ b/tests/ref/fate/segment-ac3-to-mp4-header-000
@@ -0,0 +1,38 @@
+#tb 0: 1/48000
+#media_type 0: audio
+#codec_id 0: ac3
+#sample_rate 0: 48000
+#channel_layout 0: 60f
+#channel_layout_name 0: 5.1(side)
+0, 0, 0, 1536, 1792, 0xc6250823, S=1, 4, 0x00000000
+0, 1536, 1536, 1536, 1792, 0xb76a1098
+0, 3072, 3072, 1536, 1792, 0xfe6e1038
+0, 4608, 4608, 1536, 1792, 0x102f060a
+0, 6144, 6144, 1536, 1792, 0xfd881629
+0, 7680, 7680, 1536, 1792, 0x950505f6
+0, 9216, 9216, 1536, 1792, 0x3d9a143f
+0, 10752, 10752, 1536, 1792, 0xa2261142
+0, 12288, 12288, 1536, 1792, 0x9cc9053d
+0, 13824, 13824, 1536, 1792, 0xaaeb109b
+0, 15360, 15360, 1536, 1792, 0xd36308f6
+0, 16896, 16896, 1536, 1792, 0xb08a125d
+0, 18432, 18432, 1536, 1792, 0xd8d31026
+0, 19968, 19968, 1536, 1792, 0x9b87a34d
+0, 21504, 21504, 1536, 1792, 0x51ed77f6
+0, 23040, 23040, 1536, 1792, 0x29c16ed2
+0, 24576, 24576, 1536, 1792, 0x8c9662d6
+0, 26112, 26112, 1536, 1792, 0x32c85025
+0, 27648, 27648, 1536, 1792, 0x32914d88
+0, 29184, 29184, 1536, 1792, 0x84b9382b
+0, 30720, 30720, 1536, 1792, 0x003e4890
+0, 32256, 32256, 1536, 1792, 0x70325b4e
+0, 33792, 33792, 1536, 1792, 0x80e04a58
+0, 35328, 35328, 1536, 1792, 0x2c46323a
+0, 36864, 36864, 1536, 1792, 0x7be152a5
+0, 38400, 38400, 1536, 1792, 0x08615466
+0, 39936, 39936, 1536, 1792, 0x55364eaf
+0, 41472, 41472, 1536, 1792, 0x46595d56
+0, 43008, 43008, 1536, 1792, 0xdf476ace
+0, 44544, 44544, 1536, 1792, 0x9ff767dc
+0, 46080, 46080, 1536, 1792, 0xb4d450a7
+0, 47616, 47616, 1536, 1792, 0x032c7506
diff --git a/tests/ref/fate/segment-ac3-to-mp4-header-001 b/tests/ref/fate/segment-ac3-to-mp4-header-001
new file mode 100644
index 0000000000..ce7cc761b5
--- /dev/null
+++ b/tests/ref/fate/segment-ac3-to-mp4-header-001
@@ -0,0 +1,30 @@
+#tb 0: 1/48000
+#media_type 0: audio
+#codec_id 0: ac3
+#sample_rate 0: 48000
+#channel_layout 0: 60f
+#channel_layout_name 0: 5.1(side)
+0, 0, 0, 1536, 1792, 0x50e35426, S=1, 4, 0x00000000
+0, 1536, 1536, 1536, 1792, 0xe5575597
+0, 3072, 3072, 1536, 1792, 0x86565611
+0, 4608, 4608, 1536, 1792, 0xed6f54aa
+0, 6144, 6144, 1536, 1792, 0x4cee4aab
+0, 7680, 7680, 1536, 1792, 0x8aa33ac7
+0, 9216, 9216, 1536, 1792, 0xb665442c
+0, 10752, 10752, 1536, 1792, 0x9a4b647d
+0, 12288, 12288, 1536, 1792, 0xf40d582d
+0, 13824, 13824, 1536, 1792, 0xf22e5d98
+0, 15360, 15360, 1536, 1792, 0x2f7745be
+0, 16896, 16896, 1536, 1792, 0xa918561a
+0, 18432, 18432, 1536, 1792, 0x59cc56fb
+0, 19968, 19968, 1536, 1792, 0xaefe5dca
+0, 21504, 21504, 1536, 1792, 0x80ba657d
+0, 23040, 23040, 1536, 1792, 0x09137032
+0, 24576, 24576, 1536, 1792, 0xf51b5d34
+0, 26112, 26112, 1536, 1792, 0x1d695fb1
+0, 27648, 27648, 1536, 1792, 0xf6f56509
+0, 29184, 29184, 1536, 1792, 0xd1f658d5
+0, 30720, 30720, 1536, 1792, 0xb8614f64
+0, 32256, 32256, 1536, 1792, 0x8dd55743
+0, 33792, 33792, 1536, 1792, 0xcb1f50df
+0, 35328, 35328, 1536, 1440, 0xa129aa95
diff --git a/tests/ref/fate/segment-ac3-to-mp4-header-all b/tests/ref/fate/segment-ac3-to-mp4-header-all
new file mode 100644
index 0000000000..e0f45c494d
--- /dev/null
+++ b/tests/ref/fate/segment-ac3-to-mp4-header-all
@@ -0,0 +1,62 @@
+#tb 0: 1/48000
+#media_type 0: audio
+#codec_id 0: ac3
+#sample_rate 0: 48000
+#channel_layout 0: 60f
+#channel_layout_name 0: 5.1(side)
+0, 0, 0, 1536, 1792, 0xc6250823, S=1, 4, 0x00000000
+0, 1536, 1536, 1536, 1792, 0xb76a1098
+0, 3072, 3072, 1536, 1792, 0xfe6e1038
+0, 4608, 4608, 1536, 1792, 0x102f060a
+0, 6144, 6144, 1536, 1792, 0xfd881629
+0, 7680, 7680, 1536, 1792, 0x950505f6
+0, 9216, 9216, 1536, 1792, 0x3d9a143f
+0, 10752, 10752, 1536, 1792, 0xa2261142
+0, 12288, 12288, 1536, 1792, 0x9cc9053d
+0, 13824, 13824, 1536, 1792, 0xaaeb109b
+0, 15360, 15360, 1536, 1792, 0xd36308f6
+0, 16896, 16896, 1536, 1792, 0xb08a125d
+0, 18432, 18432, 1536, 1792, 0xd8d31026
+0, 19968, 19968, 1536, 1792, 0x9b87a34d
+0, 21504, 21504, 1536, 1792, 0x51ed77f6
+0, 23040, 23040, 1536, 1792, 0x29c16ed2
+0, 24576, 24576, 1536, 1792, 0x8c9662d6
+0, 26112, 26112, 1536, 1792, 0x32c85025
+0, 27648, 27648, 1536, 1792, 0x32914d88
+0, 29184, 29184, 1536, 1792, 0x84b9382b
+0, 30720, 30720, 1536, 1792, 0x003e4890
+0, 32256, 32256, 1536, 1792, 0x70325b4e
+0, 33792, 33792, 1536, 1792, 0x80e04a58
+0, 35328, 35328, 1536, 1792, 0x2c46323a
+0, 36864, 36864, 1536, 1792, 0x7be152a5
+0, 38400, 38400, 1536, 1792, 0x08615466
+0, 39936, 39936, 1536, 1792, 0x55364eaf
+0, 41472, 41472, 1536, 1792, 0x46595d56
+0, 43008, 43008, 1536, 1792, 0xdf476ace
+0, 44544, 44544, 1536, 1792, 0x9ff767dc
+0, 46080, 46080, 1536, 1792, 0xb4d450a7
+0, 47616, 47616, 1536, 1792, 0x032c7506
+0, 49152, 49152, 1536, 1792, 0x50e35426
+0, 50688, 50688, 1536, 1792, 0xe5575597
+0, 52224, 52224, 1536, 1792, 0x86565611
+0, 53760, 53760, 1536, 1792, 0xed6f54aa
+0, 55296, 55296, 1536, 1792, 0x4cee4aab
+0, 56832, 56832, 1536, 1792, 0x8aa33ac7
+0, 58368, 58368, 1536, 1792, 0xb665442c
+0, 59904, 59904, 1536, 1792, 0x9a4b647d
+0, 61440, 61440, 1536, 1792, 0xf40d582d
+0, 62976, 62976, 1536, 1792, 0xf22e5d98
+0, 64512, 64512, 1536, 1792, 0x2f7745be
+0, 66048, 66048, 1536, 1792, 0xa918561a
+0, 67584, 67584, 1536, 1792, 0x59cc56fb
+0, 69120, 69120, 1536, 1792, 0xaefe5dca
+0, 70656, 70656, 1536, 1792, 0x80ba657d
+0, 72192, 72192, 1536, 1792, 0x09137032
+0, 73728, 73728, 1536, 1792, 0xf51b5d34
+0, 75264, 75264, 1536, 1792, 0x1d695fb1
+0, 76800, 76800, 1536, 1792, 0xf6f56509
+0, 78336, 78336, 1536, 1792, 0xd1f658d5
+0, 79872, 79872, 1536, 1792, 0xb8614f64
+0, 81408, 81408, 1536, 1792, 0x8dd55743
+0, 82944, 82944, 1536, 1792, 0xcb1f50df
+0, 84480, 84480, 1536, 1440, 0xa129aa95
diff --git a/tests/ref/fate/segment-ac3-to-mp4-header-md5sum b/tests/ref/fate/segment-ac3-to-mp4-header-md5sum
new file mode 100644
index 0000000000..41323e70d2
--- /dev/null
+++ b/tests/ref/fate/segment-ac3-to-mp4-header-md5sum
@@ -0,0 +1 @@
+b6ead975a878a146ca9bfe5a5e6345b3 *tests/data/ac3-to-mp4-header.mp4
diff --git a/tests/ref/fate/segment-eac3-to-mp4-header-000 b/tests/ref/fate/segment-eac3-to-mp4-header-000
new file mode 100644
index 0000000000..69635c1eb0
--- /dev/null
+++ b/tests/ref/fate/segment-eac3-to-mp4-header-000
@@ -0,0 +1,38 @@
+#tb 0: 1/48000
+#media_type 0: audio
+#codec_id 0: eac3
+#sample_rate 0: 48000
+#channel_layout 0: 60f
+#channel_layout_name 0: 5.1(side)
+0, 0, 0, 1536, 1024, 0x2a56e574, S=1, 4, 0x00000000
+0, 1536, 1536, 1536, 1024, 0x055df18f
+0, 3072, 3072, 1536, 1024, 0x2030e3d1
+0, 4608, 4608, 1536, 1024, 0x1d84e6d1
+0, 6144, 6144, 1536, 1024, 0xd13cf965
+0, 7680, 7680, 1536, 1024, 0x8b20fc56
+0, 9216, 9216, 1536, 1024, 0xc942f304
+0, 10752, 10752, 1536, 1024, 0x29c40d92
+0, 12288, 12288, 1536, 1024, 0xa3e5ed75
+0, 13824, 13824, 1536, 1024, 0xdf3ff3f5
+0, 15360, 15360, 1536, 1024, 0x14d6e8fd
+0, 16896, 16896, 1536, 1024, 0x1abaf108
+0, 18432, 18432, 1536, 1024, 0x0118e617
+0, 19968, 19968, 1536, 1024, 0xa879f227
+0, 21504, 21504, 1536, 1024, 0xb19cf385
+0, 23040, 23040, 1536, 1024, 0x7831dd07
+0, 24576, 24576, 1536, 1024, 0xc3f9f4fb
+0, 26112, 26112, 1536, 1024, 0x628bf77e
+0, 27648, 27648, 1536, 1024, 0x826de875
+0, 29184, 29184, 1536, 1024, 0x0fa1eeff
+0, 30720, 30720, 1536, 1024, 0xa6bcfa53
+0, 32256, 32256, 1536, 1024, 0x6edee378
+0, 33792, 33792, 1536, 1024, 0xa4b9e5b4
+0, 35328, 35328, 1536, 1024, 0xb26dfa72
+0, 36864, 36864, 1536, 1024, 0x10c2e81d
+0, 38400, 38400, 1536, 1024, 0x1765d7bd
+0, 39936, 39936, 1536, 1024, 0x23cbebf4
+0, 41472, 41472, 1536, 1024, 0xfbd4ff1d
+0, 43008, 43008, 1536, 1024, 0x2683f22b
+0, 44544, 44544, 1536, 1024, 0x00baf4c6
+0, 46080, 46080, 1536, 1024, 0x99e0edcd
+0, 47616, 47616, 1536, 1024, 0x78e60506
diff --git a/tests/ref/fate/segment-eac3-to-mp4-header-001 b/tests/ref/fate/segment-eac3-to-mp4-header-001
new file mode 100644
index 0000000000..55b56a3b96
--- /dev/null
+++ b/tests/ref/fate/segment-eac3-to-mp4-header-001
@@ -0,0 +1,21 @@
+#tb 0: 1/48000
+#media_type 0: audio
+#codec_id 0: eac3
+#sample_rate 0: 48000
+#channel_layout 0: 60f
+#channel_layout_name 0: 5.1(side)
+0, 0, 0, 1536, 1024, 0x1be3fea9, S=1, 4, 0x00000000
+0, 1536, 1536, 1536, 1024, 0x4b65fb5f
+0, 3072, 3072, 1536, 1024, 0xe044eed5
+0, 4608, 4608, 1536, 1024, 0x4336ed35
+0, 6144, 6144, 1536, 1024, 0x93e6facc
+0, 7680, 7680, 1536, 1024, 0x4bebe3a0
+0, 9216, 9216, 1536, 1024, 0xa54fec79
+0, 10752, 10752, 1536, 1024, 0x9481de90
+0, 12288, 12288, 1536, 1024, 0x6032f9ac
+0, 13824, 13824, 1536, 1024, 0xfd0dfb2d
+0, 15360, 15360, 1536, 1024, 0x0fa7f0b0
+0, 16896, 16896, 1536, 1024, 0xef04ea99
+0, 18432, 18432, 1536, 1024, 0xe477ed37
+0, 19968, 19968, 1536, 1024, 0x8dd9eab1
+0, 21504, 21504, 1536, 1024, 0x96adf25d
diff --git a/tests/ref/fate/segment-eac3-to-mp4-header-all b/tests/ref/fate/segment-eac3-to-mp4-header-all
new file mode 100644
index 0000000000..5452885983
--- /dev/null
+++ b/tests/ref/fate/segment-eac3-to-mp4-header-all
@@ -0,0 +1,53 @@
+#tb 0: 1/48000
+#media_type 0: audio
+#codec_id 0: eac3
+#sample_rate 0: 48000
+#channel_layout 0: 60f
+#channel_layout_name 0: 5.1(side)
+0, 0, 0, 1536, 1024, 0x2a56e574, S=1, 4, 0x00000000
+0, 1536, 1536, 1536, 1024, 0x055df18f
+0, 3072, 3072, 1536, 1024, 0x2030e3d1
+0, 4608, 4608, 1536, 1024, 0x1d84e6d1
+0, 6144, 6144, 1536, 1024, 0xd13cf965
+0, 7680, 7680, 1536, 1024, 0x8b20fc56
+0, 9216, 9216, 1536, 1024, 0xc942f304
+0, 10752, 10752, 1536, 1024, 0x29c40d92
+0, 12288, 12288, 1536, 1024, 0xa3e5ed75
+0, 13824, 13824, 1536, 1024, 0xdf3ff3f5
+0, 15360, 15360, 1536, 1024, 0x14d6e8fd
+0, 16896, 16896, 1536, 1024, 0x1abaf108
+0, 18432, 18432, 1536, 1024, 0x0118e617
+0, 19968, 19968, 1536, 1024, 0xa879f227
+0, 21504, 21504, 1536, 1024, 0xb19cf385
+0, 23040, 23040, 1536, 1024, 0x7831dd07
+0, 24576, 24576, 1536, 1024, 0xc3f9f4fb
+0, 26112, 26112, 1536, 1024, 0x628bf77e
+0, 27648, 27648, 1536, 1024, 0x826de875
+0, 29184, 29184, 1536, 1024, 0x0fa1eeff
+0, 30720, 30720, 1536, 1024, 0xa6bcfa53
+0, 32256, 32256, 1536, 1024, 0x6edee378
+0, 33792, 33792, 1536, 1024, 0xa4b9e5b4
+0, 35328, 35328, 1536, 1024, 0xb26dfa72
+0, 36864, 36864, 1536, 1024, 0x10c2e81d
+0, 38400, 38400, 1536, 1024, 0x1765d7bd
+0, 39936, 39936, 1536, 1024, 0x23cbebf4
+0, 41472, 41472, 1536, 1024, 0xfbd4ff1d
+0, 43008, 43008, 1536, 1024, 0x2683f22b
+0, 44544, 44544, 1536, 1024, 0x00baf4c6
+0, 46080, 46080, 1536, 1024, 0x99e0edcd
+0, 47616, 47616, 1536, 1024, 0x78e60506
+0, 49152, 49152, 1536, 1024, 0x1be3fea9
+0, 50688, 50688, 1536, 1024, 0x4b65fb5f
+0, 52224, 52224, 1536, 1024, 0xe044eed5
+0, 53760, 53760, 1536, 1024, 0x4336ed35
+0, 55296, 55296, 1536, 1024, 0x93e6facc
+0, 56832, 56832, 1536, 1024, 0x4bebe3a0
+0, 58368, 58368, 1536, 1024, 0xa54fec79
+0, 59904, 59904, 1536, 1024, 0x9481de90
+0, 61440, 61440, 1536, 1024, 0x6032f9ac
+0, 62976, 62976, 1536, 1024, 0xfd0dfb2d
+0, 64512, 64512, 1536, 1024, 0x0fa7f0b0
+0, 66048, 66048, 1536, 1024, 0xef04ea99
+0, 67584, 67584, 1536, 1024, 0xe477ed37
+0, 69120, 69120, 1536, 1024, 0x8dd9eab1
+0, 70656, 70656, 1536, 1024, 0x96adf25d
diff --git a/tests/ref/fate/segment-eac3-to-mp4-header-md5sum b/tests/ref/fate/segment-eac3-to-mp4-header-md5sum
new file mode 100644
index 0000000000..8fadc43ae6
--- /dev/null
+++ b/tests/ref/fate/segment-eac3-to-mp4-header-md5sum
@@ -0,0 +1 @@
+362c70697f36c24f14611c6f1a1a49c1 *tests/data/eac3-to-mp4-header.mp4
--
2.16.2
More information about the ffmpeg-devel
mailing list