mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-03-30 15:18:36 +00:00
create a separate codec_id for E-AC-3
Originally committed as revision 15143 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
5f86057ffd
commit
2988c93d94
@ -76,7 +76,8 @@ get_next:
|
|||||||
avctx->request_channels < s->channels &&
|
avctx->request_channels < s->channels &&
|
||||||
(avctx->request_channels <= 2 ||
|
(avctx->request_channels <= 2 ||
|
||||||
(avctx->request_channels == 1 &&
|
(avctx->request_channels == 1 &&
|
||||||
avctx->codec_id == CODEC_ID_AC3))) {
|
(avctx->codec_id == CODEC_ID_AC3 ||
|
||||||
|
avctx->codec_id == CODEC_ID_EAC3)))) {
|
||||||
avctx->channels = avctx->request_channels;
|
avctx->channels = avctx->request_channels;
|
||||||
} else {
|
} else {
|
||||||
avctx->channels = s->channels;
|
avctx->channels = s->channels;
|
||||||
|
@ -188,7 +188,7 @@ static av_cold int ac3_parse_init(AVCodecParserContext *s1)
|
|||||||
|
|
||||||
|
|
||||||
AVCodecParser ac3_parser = {
|
AVCodecParser ac3_parser = {
|
||||||
{ CODEC_ID_AC3 },
|
{ CODEC_ID_AC3, CODEC_ID_EAC3 },
|
||||||
sizeof(AACAC3ParseContext),
|
sizeof(AACAC3ParseContext),
|
||||||
ac3_parse_init,
|
ac3_parse_init,
|
||||||
ff_aac_ac3_parse,
|
ff_aac_ac3_parse,
|
||||||
|
@ -1288,5 +1288,16 @@ AVCodec ac3_decoder = {
|
|||||||
.init = ac3_decode_init,
|
.init = ac3_decode_init,
|
||||||
.close = ac3_decode_end,
|
.close = ac3_decode_end,
|
||||||
.decode = ac3_decode_frame,
|
.decode = ac3_decode_frame,
|
||||||
.long_name = NULL_IF_CONFIG_SMALL("ATSC A/52 (AC-3, E-AC-3)"),
|
.long_name = NULL_IF_CONFIG_SMALL("ATSC A/52A (AC-3)"),
|
||||||
|
};
|
||||||
|
|
||||||
|
AVCodec eac3_decoder = {
|
||||||
|
.name = "eac3",
|
||||||
|
.type = CODEC_TYPE_AUDIO,
|
||||||
|
.id = CODEC_ID_EAC3,
|
||||||
|
.priv_data_size = sizeof (AC3DecodeContext),
|
||||||
|
.init = ac3_decode_init,
|
||||||
|
.close = ac3_decode_end,
|
||||||
|
.decode = ac3_decode_frame,
|
||||||
|
.long_name = NULL_IF_CONFIG_SMALL("ATSC A/52B (AC-3, E-AC-3)"),
|
||||||
};
|
};
|
||||||
|
@ -1365,5 +1365,5 @@ AVCodec ac3_encoder = {
|
|||||||
AC3_encode_close,
|
AC3_encode_close,
|
||||||
NULL,
|
NULL,
|
||||||
.sample_fmts = (enum SampleFormat[]){SAMPLE_FMT_S16,SAMPLE_FMT_NONE},
|
.sample_fmts = (enum SampleFormat[]){SAMPLE_FMT_S16,SAMPLE_FMT_NONE},
|
||||||
.long_name = NULL_IF_CONFIG_SMALL("ATSC A/52 (AC-3, E-AC-3)"),
|
.long_name = NULL_IF_CONFIG_SMALL("ATSC A/52A (AC-3)"),
|
||||||
};
|
};
|
||||||
|
@ -189,6 +189,7 @@ void avcodec_register_all(void)
|
|||||||
REGISTER_DECODER (COOK, cook);
|
REGISTER_DECODER (COOK, cook);
|
||||||
REGISTER_DECODER (DCA, dca);
|
REGISTER_DECODER (DCA, dca);
|
||||||
REGISTER_DECODER (DSICINAUDIO, dsicinaudio);
|
REGISTER_DECODER (DSICINAUDIO, dsicinaudio);
|
||||||
|
REGISTER_DECODER (EAC3, eac3);
|
||||||
REGISTER_ENCDEC (FLAC, flac);
|
REGISTER_ENCDEC (FLAC, flac);
|
||||||
REGISTER_DECODER (IMC, imc);
|
REGISTER_DECODER (IMC, imc);
|
||||||
REGISTER_DECODER (MACE3, mace3);
|
REGISTER_DECODER (MACE3, mace3);
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
#include "libavutil/avutil.h"
|
#include "libavutil/avutil.h"
|
||||||
|
|
||||||
#define LIBAVCODEC_VERSION_MAJOR 51
|
#define LIBAVCODEC_VERSION_MAJOR 51
|
||||||
#define LIBAVCODEC_VERSION_MINOR 70
|
#define LIBAVCODEC_VERSION_MINOR 71
|
||||||
#define LIBAVCODEC_VERSION_MICRO 0
|
#define LIBAVCODEC_VERSION_MICRO 0
|
||||||
|
|
||||||
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
||||||
@ -306,6 +306,7 @@ enum CodecID {
|
|||||||
CODEC_ID_WMAPRO,
|
CODEC_ID_WMAPRO,
|
||||||
CODEC_ID_WMALOSSLESS,
|
CODEC_ID_WMALOSSLESS,
|
||||||
CODEC_ID_ATRAC3P,
|
CODEC_ID_ATRAC3P,
|
||||||
|
CODEC_ID_EAC3,
|
||||||
|
|
||||||
/* subtitle codecs */
|
/* subtitle codecs */
|
||||||
CODEC_ID_DVD_SUBTITLE= 0x17000,
|
CODEC_ID_DVD_SUBTITLE= 0x17000,
|
||||||
|
@ -44,6 +44,8 @@ OBJS-$(CONFIG_DV_MUXER) += dvenc.o
|
|||||||
OBJS-$(CONFIG_DXA_DEMUXER) += dxa.o riff.o
|
OBJS-$(CONFIG_DXA_DEMUXER) += dxa.o riff.o
|
||||||
OBJS-$(CONFIG_EA_CDATA_DEMUXER) += eacdata.o
|
OBJS-$(CONFIG_EA_CDATA_DEMUXER) += eacdata.o
|
||||||
OBJS-$(CONFIG_EA_DEMUXER) += electronicarts.o
|
OBJS-$(CONFIG_EA_DEMUXER) += electronicarts.o
|
||||||
|
OBJS-$(CONFIG_EAC3_DEMUXER) += raw.o
|
||||||
|
OBJS-$(CONFIG_EAC3_MUXER) += raw.o
|
||||||
OBJS-$(CONFIG_FFM_DEMUXER) += ffmdec.o
|
OBJS-$(CONFIG_FFM_DEMUXER) += ffmdec.o
|
||||||
OBJS-$(CONFIG_FFM_MUXER) += ffmenc.o
|
OBJS-$(CONFIG_FFM_MUXER) += ffmenc.o
|
||||||
OBJS-$(CONFIG_FLAC_DEMUXER) += raw.o
|
OBJS-$(CONFIG_FLAC_DEMUXER) += raw.o
|
||||||
|
@ -76,6 +76,7 @@ void av_register_all(void)
|
|||||||
REGISTER_DEMUXER (DXA, dxa);
|
REGISTER_DEMUXER (DXA, dxa);
|
||||||
REGISTER_DEMUXER (EA, ea);
|
REGISTER_DEMUXER (EA, ea);
|
||||||
REGISTER_DEMUXER (EA_CDATA, ea_cdata);
|
REGISTER_DEMUXER (EA_CDATA, ea_cdata);
|
||||||
|
REGISTER_MUXDEMUX (EAC3, eac3);
|
||||||
REGISTER_MUXDEMUX (FFM, ffm);
|
REGISTER_MUXDEMUX (FFM, ffm);
|
||||||
REGISTER_MUXDEMUX (FLAC, flac);
|
REGISTER_MUXDEMUX (FLAC, flac);
|
||||||
REGISTER_DEMUXER (FLIC, flic);
|
REGISTER_DEMUXER (FLIC, flic);
|
||||||
|
@ -487,8 +487,8 @@ static int dirac_probe(AVProbeData *p)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_AC3_DEMUXER
|
#if (CONFIG_AC3_DEMUXER || CONFIG_EAC3_DEMUXER)
|
||||||
static int ac3_probe(AVProbeData *p)
|
static int ac3_eac3_probe(AVProbeData *p, int *codec_id)
|
||||||
{
|
{
|
||||||
int max_frames, first_frames = 0, frames;
|
int max_frames, first_frames = 0, frames;
|
||||||
uint8_t *buf, *buf2, *end;
|
uint8_t *buf, *buf2, *end;
|
||||||
@ -499,6 +499,7 @@ static int ac3_probe(AVProbeData *p)
|
|||||||
buf = p->buf;
|
buf = p->buf;
|
||||||
end = buf + p->buf_size;
|
end = buf + p->buf_size;
|
||||||
|
|
||||||
|
*codec_id = CODEC_ID_AC3;
|
||||||
for(; buf < end; buf++) {
|
for(; buf < end; buf++) {
|
||||||
buf2 = buf;
|
buf2 = buf;
|
||||||
|
|
||||||
@ -509,6 +510,8 @@ static int ac3_probe(AVProbeData *p)
|
|||||||
if(buf2 + hdr.frame_size > end ||
|
if(buf2 + hdr.frame_size > end ||
|
||||||
av_crc(av_crc_get_table(AV_CRC_16_ANSI), 0, buf2 + 2, hdr.frame_size - 2))
|
av_crc(av_crc_get_table(AV_CRC_16_ANSI), 0, buf2 + 2, hdr.frame_size - 2))
|
||||||
break;
|
break;
|
||||||
|
if (hdr.bitstream_id > 10)
|
||||||
|
*codec_id = CODEC_ID_EAC3;
|
||||||
buf2 += hdr.frame_size;
|
buf2 += hdr.frame_size;
|
||||||
}
|
}
|
||||||
max_frames = FFMAX(max_frames, frames);
|
max_frames = FFMAX(max_frames, frames);
|
||||||
@ -522,6 +525,28 @@ static int ac3_probe(AVProbeData *p)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_AC3_DEMUXER
|
||||||
|
static int ac3_probe(AVProbeData *p)
|
||||||
|
{
|
||||||
|
int codec_id = CODEC_ID_NONE;
|
||||||
|
int score = ac3_eac3_probe(p, &codec_id);
|
||||||
|
if(codec_id == CODEC_ID_AC3)
|
||||||
|
return score;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_EAC3_DEMUXER
|
||||||
|
static int eac3_probe(AVProbeData *p)
|
||||||
|
{
|
||||||
|
int codec_id = CODEC_ID_NONE;
|
||||||
|
int score = ac3_eac3_probe(p, &codec_id);
|
||||||
|
if(codec_id == CODEC_ID_EAC3)
|
||||||
|
return score;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_FLAC_DEMUXER
|
#ifdef CONFIG_FLAC_DEMUXER
|
||||||
static int flac_probe(AVProbeData *p)
|
static int flac_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
@ -633,6 +658,35 @@ AVOutputFormat dts_muxer = {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_EAC3_DEMUXER
|
||||||
|
AVInputFormat eac3_demuxer = {
|
||||||
|
"eac3",
|
||||||
|
NULL_IF_CONFIG_SMALL("raw E-AC-3"),
|
||||||
|
0,
|
||||||
|
eac3_probe,
|
||||||
|
audio_read_header,
|
||||||
|
raw_read_partial_packet,
|
||||||
|
.flags= AVFMT_GENERIC_INDEX,
|
||||||
|
.extensions = "eac3",
|
||||||
|
.value = CODEC_ID_EAC3,
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_EAC3_MUXER
|
||||||
|
AVOutputFormat eac3_muxer = {
|
||||||
|
"eac3",
|
||||||
|
NULL_IF_CONFIG_SMALL("raw E-AC-3"),
|
||||||
|
"audio/x-eac3",
|
||||||
|
"eac3",
|
||||||
|
0,
|
||||||
|
CODEC_ID_EAC3,
|
||||||
|
CODEC_ID_NONE,
|
||||||
|
NULL,
|
||||||
|
raw_write_packet,
|
||||||
|
.flags= AVFMT_NOTIMESTAMPS,
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_FLAC_DEMUXER
|
#ifdef CONFIG_FLAC_DEMUXER
|
||||||
AVInputFormat flac_demuxer = {
|
AVInputFormat flac_demuxer = {
|
||||||
"flac",
|
"flac",
|
||||||
|
Loading…
Reference in New Issue
Block a user