|
|
@ -322,6 +322,7 @@ struct eac3_info { |
|
|
|
} substream[1]; /* TODO: support 8 independent substreams */ |
|
|
|
} substream[1]; /* TODO: support 8 independent substreams */ |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if CONFIG_AC3_PARSER |
|
|
|
static int handle_eac3(MOVMuxContext *mov, AVPacket *pkt, MOVTrack *track) |
|
|
|
static int handle_eac3(MOVMuxContext *mov, AVPacket *pkt, MOVTrack *track) |
|
|
|
{ |
|
|
|
{ |
|
|
|
GetBitContext gbc; |
|
|
|
GetBitContext gbc; |
|
|
@ -442,6 +443,7 @@ concatenate: |
|
|
|
|
|
|
|
|
|
|
|
return pkt->size; |
|
|
|
return pkt->size; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
static int mov_write_eac3_tag(AVIOContext *pb, MOVTrack *track) |
|
|
|
static int mov_write_eac3_tag(AVIOContext *pb, MOVTrack *track) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -4188,13 +4190,15 @@ int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt) |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
size = ff_hevc_annexb2mp4(pb, pkt->data, pkt->size, 0, NULL); |
|
|
|
size = ff_hevc_annexb2mp4(pb, pkt->data, pkt->size, 0, NULL); |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (CONFIG_AC3_PARSER && enc->codec_id == AV_CODEC_ID_EAC3) { |
|
|
|
#if CONFIG_AC3_PARSER |
|
|
|
|
|
|
|
} else if (enc->codec_id == AV_CODEC_ID_EAC3) { |
|
|
|
size = handle_eac3(mov, pkt, trk); |
|
|
|
size = handle_eac3(mov, pkt, trk); |
|
|
|
if (size < 0) |
|
|
|
if (size < 0) |
|
|
|
return size; |
|
|
|
return size; |
|
|
|
else if (!size) |
|
|
|
else if (!size) |
|
|
|
goto end; |
|
|
|
goto end; |
|
|
|
avio_write(pb, pkt->data, size); |
|
|
|
avio_write(pb, pkt->data, size); |
|
|
|
|
|
|
|
#endif |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
avio_write(pb, pkt->data, size); |
|
|
|
avio_write(pb, pkt->data, size); |
|
|
|
} |
|
|
|
} |
|
|
|