summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRamiro Polla <ramiro.polla@gmail.com>2009-03-19 21:23:39 +0000
committerRamiro Polla <ramiro.polla@gmail.com>2009-03-19 21:23:39 +0000
commit9ba4821d933739d923edcb229e7129d939d56d48 (patch)
treedb07388b1b6d2d7d4bb6d098b574347ab24fc3cb
parent5c3d507f1a9aff13d93fc851a477ddbb2511bf6f (diff)
Split TrueHD decoder from MLP
Originally committed as revision 18045 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--doc/general.texi6
-rw-r--r--libavcodec/Makefile1
-rw-r--r--libavcodec/allcodecs.c1
-rw-r--r--libavcodec/avcodec.h3
-rw-r--r--libavcodec/mlp_parser.c2
-rw-r--r--libavcodec/mlpdec.c17
-rw-r--r--libavformat/mpeg.c2
7 files changed, 26 insertions, 6 deletions
diff --git a/doc/general.texi b/doc/general.texi
index 602d5f446a..4f0ab2a7af 100644
--- a/doc/general.texi
+++ b/doc/general.texi
@@ -544,8 +544,8 @@ following image formats are supported:
@item IMC (Intel Music Coder) @tab @tab X
@item MACE (Macintosh Audio Compression/Expansion) 3:1 @tab @tab X
@item MACE (Macintosh Audio Compression/Expansion) 6:1 @tab @tab X
-@item MLP(Meridian Lossless Packing)/TrueHD @tab @tab X
- @tab Used in DVD-Audio and Blu-Ray discs.
+@item MLP (Meridian Lossless Packing) @tab @tab X
+ @tab Used in DVD-Audio discs.
@item Monkey's Audio @tab @tab X
@tab Only versions 3.97-3.99 are supported.
@item MP1 (MPEG audio layer 1) @tab @tab IX
@@ -598,6 +598,8 @@ following image formats are supported:
@item Speex @tab @tab E
@tab supported through external library libspeex
@item True Audio (TTA) @tab @tab X
+@item TrueHD @tab @tab X
+ @tab Used in HD-DVD and Blu-Ray discs.
@item Vorbis @tab E @tab X
@ A native but very primitive encoder exists.
@item WavPack @tab @tab X
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 13415fc0d2..62793bf0e6 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -211,6 +211,7 @@ OBJS-$(CONFIG_THP_DECODER) += mjpegdec.o mjpeg.o
OBJS-$(CONFIG_TIERTEXSEQVIDEO_DECODER) += tiertexseqv.o
OBJS-$(CONFIG_TIFF_DECODER) += tiff.o lzw.o faxcompr.o
OBJS-$(CONFIG_TIFF_ENCODER) += tiffenc.o rle.o lzwenc.o
+OBJS-$(CONFIG_TRUEHD_DECODER) += mlpdec.o mlp_parser.o mlp.o
OBJS-$(CONFIG_TRUEMOTION1_DECODER) += truemotion1.o
OBJS-$(CONFIG_TRUEMOTION2_DECODER) += truemotion2.o
OBJS-$(CONFIG_TRUESPEECH_DECODER) += truespeech.o
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
index b024e01dd6..4dcbcd8b13 100644
--- a/libavcodec/allcodecs.c
+++ b/libavcodec/allcodecs.c
@@ -215,6 +215,7 @@ void avcodec_register_all(void)
REGISTER_DECODER (SMACKAUD, smackaud);
REGISTER_ENCDEC (SONIC, sonic);
REGISTER_ENCODER (SONIC_LS, sonic_ls);
+ REGISTER_DECODER (TRUEHD, truehd);
REGISTER_DECODER (TRUESPEECH, truespeech);
REGISTER_DECODER (TTA, tta);
REGISTER_DECODER (VMDAUDIO, vmdaudio);
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 3adc941ca8..0519dde1ea 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -30,7 +30,7 @@
#include "libavutil/avutil.h"
#define LIBAVCODEC_VERSION_MAJOR 52
-#define LIBAVCODEC_VERSION_MINOR 21
+#define LIBAVCODEC_VERSION_MINOR 22
#define LIBAVCODEC_VERSION_MICRO 0
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
@@ -310,6 +310,7 @@ enum CodecID {
CODEC_ID_SIPR,
CODEC_ID_MP1,
CODEC_ID_TWINVQ,
+ CODEC_ID_TRUEHD,
/* subtitle codecs */
CODEC_ID_DVD_SUBTITLE= 0x17000,
diff --git a/libavcodec/mlp_parser.c b/libavcodec/mlp_parser.c
index b3e5b3a191..34ee193da2 100644
--- a/libavcodec/mlp_parser.c
+++ b/libavcodec/mlp_parser.c
@@ -287,7 +287,7 @@ lost_sync:
}
AVCodecParser mlp_parser = {
- { CODEC_ID_MLP },
+ { CODEC_ID_MLP, CODEC_ID_TRUEHD },
sizeof(MLPParseContext),
mlp_init,
mlp_parse,
diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c
index 99754b329c..6b825cdea1 100644
--- a/libavcodec/mlpdec.c
+++ b/libavcodec/mlpdec.c
@@ -1038,6 +1038,7 @@ error:
return -1;
}
+#if CONFIG_MLP_DECODER
AVCodec mlp_decoder = {
"mlp",
CODEC_TYPE_AUDIO,
@@ -1047,6 +1048,20 @@ AVCodec mlp_decoder = {
NULL,
NULL,
read_access_unit,
- .long_name = NULL_IF_CONFIG_SMALL("MLP (Meridian Lossless Packing)/TrueHD"),
+ .long_name = NULL_IF_CONFIG_SMALL("MLP (Meridian Lossless Packing)"),
};
+#endif /* CONFIG_MLP_DECODER */
+#if CONFIG_TRUEHD_DECODER
+AVCodec truehd_decoder = {
+ "truehd",
+ CODEC_TYPE_AUDIO,
+ CODEC_ID_TRUEHD,
+ sizeof(MLPDecodeContext),
+ mlp_decode_init,
+ NULL,
+ NULL,
+ read_access_unit,
+ .long_name = NULL_IF_CONFIG_SMALL("TrueHD"),
+};
+#endif /* CONFIG_TRUEHD_DECODER */
diff --git a/libavformat/mpeg.c b/libavformat/mpeg.c
index b0f45e5343..17b5aba13c 100644
--- a/libavformat/mpeg.c
+++ b/libavformat/mpeg.c
@@ -487,7 +487,7 @@ static int mpegps_read_packet(AVFormatContext *s,
codec_id = CODEC_ID_PCM_DVD;
} else if (startcode >= 0xb0 && startcode <= 0xbf) {
type = CODEC_TYPE_AUDIO;
- codec_id = CODEC_ID_MLP;
+ codec_id = CODEC_ID_TRUEHD;
} else if (startcode >= 0xc0 && startcode <= 0xcf) {
/* Used for both AC-3 and E-AC-3 in EVOB files */
type = CODEC_TYPE_AUDIO;