summaryrefslogtreecommitdiffstats
path: root/contrib/ffmpeg/A00-latm.patch
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ffmpeg/A00-latm.patch')
-rw-r--r--contrib/ffmpeg/A00-latm.patch147
1 files changed, 82 insertions, 65 deletions
diff --git a/contrib/ffmpeg/A00-latm.patch b/contrib/ffmpeg/A00-latm.patch
index 28196b74d..192d703cc 100644
--- a/contrib/ffmpeg/A00-latm.patch
+++ b/contrib/ffmpeg/A00-latm.patch
@@ -1,8 +1,8 @@
-Index: ffmpeg-r20817/libavcodec/allcodecs.c
+Index: ffmpeg-r22950/libavcodec/allcodecs.c
===================================================================
---- ffmpeg-r20817/libavcodec/allcodecs.c (revision 20817)
-+++ ffmpeg-r20817/libavcodec/allcodecs.c (working copy)
-@@ -314,6 +314,7 @@
+--- ffmpeg-r22950/libavcodec/allcodecs.c (revision 22950)
++++ ffmpeg-r22950/libavcodec/allcodecs.c (working copy)
+@@ -334,6 +334,7 @@
REGISTER_ENCDEC (LIBDIRAC, libdirac);
REGISTER_ENCODER (LIBFAAC, libfaac);
REGISTER_DECODER (LIBFAAD, libfaad);
@@ -10,7 +10,7 @@ Index: ffmpeg-r20817/libavcodec/allcodecs.c
REGISTER_ENCDEC (LIBGSM, libgsm);
REGISTER_ENCDEC (LIBGSM_MS, libgsm_ms);
REGISTER_ENCODER (LIBMP3LAME, libmp3lame);
-@@ -329,6 +330,7 @@
+@@ -349,6 +350,7 @@
/* parsers */
REGISTER_PARSER (AAC, aac);
@@ -18,11 +18,11 @@ Index: ffmpeg-r20817/libavcodec/allcodecs.c
REGISTER_PARSER (AC3, ac3);
REGISTER_PARSER (CAVSVIDEO, cavsvideo);
REGISTER_PARSER (DCA, dca);
-Index: ffmpeg-r20817/libavcodec/avcodec.h
+Index: ffmpeg-r22950/libavcodec/avcodec.h
===================================================================
---- ffmpeg-r20817/libavcodec/avcodec.h (revision 20817)
-+++ ffmpeg-r20817/libavcodec/avcodec.h (working copy)
-@@ -276,6 +276,7 @@
+--- ffmpeg-r22950/libavcodec/avcodec.h (revision 22950)
++++ ffmpeg-r22950/libavcodec/avcodec.h (working copy)
+@@ -286,6 +286,7 @@
CODEC_ID_MP2= 0x15000,
CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3
CODEC_ID_AAC,
@@ -30,11 +30,11 @@ Index: ffmpeg-r20817/libavcodec/avcodec.h
CODEC_ID_AC3,
CODEC_ID_DTS,
CODEC_ID_VORBIS,
-Index: ffmpeg-r20817/libavcodec/Makefile
+Index: ffmpeg-r22950/libavcodec/Makefile
===================================================================
---- ffmpeg-r20817/libavcodec/Makefile (revision 20817)
-+++ ffmpeg-r20817/libavcodec/Makefile (working copy)
-@@ -474,7 +474,7 @@
+--- ffmpeg-r22950/libavcodec/Makefile (revision 22950)
++++ ffmpeg-r22950/libavcodec/Makefile (working copy)
+@@ -505,7 +505,7 @@
OBJS-$(CONFIG_LIBDIRAC_DECODER) += libdiracdec.o
OBJS-$(CONFIG_LIBDIRAC_ENCODER) += libdiracenc.o libdirac_libschro.o
OBJS-$(CONFIG_LIBFAAC_ENCODER) += libfaac.o
@@ -43,7 +43,7 @@ Index: ffmpeg-r20817/libavcodec/Makefile
OBJS-$(CONFIG_LIBGSM_DECODER) += libgsm.o
OBJS-$(CONFIG_LIBGSM_ENCODER) += libgsm.o
OBJS-$(CONFIG_LIBGSM_MS_DECODER) += libgsm.o
-@@ -498,7 +498,7 @@
+@@ -529,7 +529,7 @@
# parsers
OBJS-$(CONFIG_AAC_PARSER) += aac_parser.o aac_ac3_parser.o \
@@ -52,11 +52,11 @@ Index: ffmpeg-r20817/libavcodec/Makefile
OBJS-$(CONFIG_AC3_PARSER) += ac3_parser.o ac3tab.o \
aac_ac3_parser.o
OBJS-$(CONFIG_CAVSVIDEO_PARSER) += cavs_parser.o
-Index: ffmpeg-r20817/libavcodec/latmaac.c
+Index: ffmpeg-r22950/libavcodec/latmaac.c
===================================================================
---- ffmpeg-r20817/libavcodec/latmaac.c (revision 0)
-+++ ffmpeg-r20817/libavcodec/latmaac.c (revision 0)
-@@ -0,0 +1,625 @@
+--- ffmpeg-r22950/libavcodec/latmaac.c (revision 0)
++++ ffmpeg-r22950/libavcodec/latmaac.c (revision 0)
+@@ -0,0 +1,642 @@
+/*
+ * copyright (c) 2008 Paul Kendall <[email protected]>
+ *
@@ -167,14 +167,17 @@ Index: ffmpeg-r20817/libavcodec/latmaac.c
+
+static void readGASpecificConfig(struct AACConfig *cfg, GetBitContext *b, PutBitContext *o)
+{
-+ int framelen_flag = get_bits(b, 1);
-+ put_bits(o, 1, framelen_flag);
-+ int dependsOnCoder = get_bits(b, 1);
-+ put_bits(o, 1, dependsOnCoder);
++ int framelen_flag;
++ int dependsOnCoder;
+ int ext_flag;
+ int delay;
+ int layerNr;
+
++ framelen_flag = get_bits(b, 1);
++ put_bits(o, 1, framelen_flag);
++ dependsOnCoder = get_bits(b, 1);
++ put_bits(o, 1, dependsOnCoder);
++
+ if (dependsOnCoder) {
+ delay = get_bits(b, 14);
+ put_bits(o, 14, delay);
@@ -213,13 +216,16 @@ Index: ffmpeg-r20817/libavcodec/latmaac.c
+
+static int readAudioSpecificConfig(struct AACConfig *cfg, GetBitContext *b)
+{
++ int ret;
++ int sbr_present;
+ PutBitContext o;
++
+ init_put_bits(&o, cfg->extra, sizeof(cfg->extra));
+
+ // returns the number of bits read
-+ int ret = 0;
-+ int sbr_present = -1;
+
++ ret = 0;
++ sbr_present = -1;
+ // object
+ cfg->audioObjectType = get_bits(b, 5);
+ put_bits(&o, 5, cfg->audioObjectType);
@@ -287,6 +293,8 @@ Index: ffmpeg-r20817/libavcodec/latmaac.c
+ }
+
+ if (parser->audio_mux_version_A == 0) {
++ int frame_length_type;
++
+ if (parser->audio_mux_version == 1) {
+ parser->taraFullness = latm_get_value(b);
+ }
@@ -314,7 +322,7 @@ Index: ffmpeg-r20817/libavcodec/latmaac.c
+ }
+
+ // these are not needed... perhaps
-+ int frame_length_type = get_bits(b, 3);
++ frame_length_type = get_bits(b, 3);
+ parser->frameLengthType = frame_length_type;
+ if (frame_length_type == 0) {
+ get_bits(b, 8);
@@ -323,10 +331,12 @@ Index: ffmpeg-r20817/libavcodec/latmaac.c
+ } else if (frame_length_type == 3 ||
+ frame_length_type == 4 ||
+ frame_length_type == 5) {
-+ int celp_table_index = get_bits(b, 6);
++ int celp_table_index;
++ celp_table_index = get_bits(b, 6);
+ } else if (frame_length_type == 6 ||
+ frame_length_type == 7) {
-+ int hvxc_table_index = get_bits(b, 1);
++ int hvxc_table_index;
++ hvxc_table_index = get_bits(b, 1);
+ }
+
+ // other data
@@ -337,8 +347,8 @@ Index: ffmpeg-r20817/libavcodec/latmaac.c
+ parser->other_data_bits = latm_get_value(b);
+ } else {
+ // other data not present
-+ parser->other_data_bits = 0;
+ int esc, tmp;
++ parser->other_data_bits = 0;
+ do {
+ parser->other_data_bits <<= 8;
+ esc = get_bits(b, 1);
@@ -401,9 +411,10 @@ Index: ffmpeg-r20817/libavcodec/latmaac.c
+
+static int readAudioSyncStream(struct AACParser *parser, GetBitContext *b, int size, uint8_t *payload, int *payloadsize)
+{
++ int muxlength;
+ // ISO/IEC 14496-3 Table 1.28 - Syntax of AudioMuxElement()
+ if (get_bits(b, 11) != 0x2b7) return -1; // not LATM
-+ int muxlength = get_bits(b, 13);
++ muxlength = get_bits(b, 13);
+
+ if (3+muxlength > size) return 0; // not enough data
+
@@ -528,7 +539,11 @@ Index: ffmpeg-r20817/libavcodec/latmaac.c
+
+ // are we going to initialize from decoder specific info ?
+ if (decoder->parser->config.extrasize > 0) {
-+ char ret = NeAACDecInit2(decoder->aac_decoder, (unsigned char*)decoder->parser->config.extra, decoder->parser->config.extrasize, &decoder->in_samplerate, &decoder->in_channels);
++ char ret;
++ unsigned long samplerate;
++
++ ret = NeAACDecInit2(decoder->aac_decoder, (unsigned char*)decoder->parser->config.extra, decoder->parser->config.extrasize, &samplerate, &decoder->in_channels);
++ decoder->in_samplerate = samplerate;
+ if (ret < 0) {
+ aac_filter_close(decoder); // gone wrong ?
+ return -1;
@@ -541,7 +556,7 @@ Index: ffmpeg-r20817/libavcodec/latmaac.c
+ return 0;
+}
+
-+AACDecoder *aac_filter_create()
++static AACDecoder *aac_filter_create()
+{
+ AACDecoder *decoder = (AACDecoder *)av_malloc(sizeof(AACDecoder));
+ decoder->parser = latm_create_parser();
@@ -550,14 +565,14 @@ Index: ffmpeg-r20817/libavcodec/latmaac.c
+ return (void *)decoder;
+}
+
-+void aac_filter_destroy(AACDecoder *decoder)
++static void aac_filter_destroy(AACDecoder *decoder)
+{
+ aac_filter_close(decoder);
+ latm_destroy_parser(decoder->parser);
+ av_free(decoder);
+}
+
-+int aac_filter_receive(AACDecoder *decoder, void *out, int *out_size, uint8_t *data, int size)
++static int aac_filter_receive(AACDecoder *decoder, void *out, int *out_size, uint8_t *data, int size)
+{
+ uint8_t tempbuf[32*1024];
+ int ret;
@@ -574,6 +589,9 @@ Index: ffmpeg-r20817/libavcodec/latmaac.c
+ latm_write_data(decoder->parser, data, size);
+
+ do {
++ NeAACDecFrameInfo info;
++ void *buf;
++
+ ret = latm_parse_packet(decoder->parser, tempbuf, sizeof(tempbuf));
+ if (ret < 0) {
+ latm_flush(decoder->parser);
@@ -600,8 +618,7 @@ Index: ffmpeg-r20817/libavcodec/latmaac.c
+ //-------------------------------------------------------------------------
+ // Decode samples
+ //-------------------------------------------------------------------------
-+ NeAACDecFrameInfo info;
-+ void *buf = NeAACDecDecode(decoder->aac_decoder, &info, data, size);
++ buf = NeAACDecDecode(decoder->aac_decoder, &info, data, size);
+
+ if (buf) {
+ decoder->in_samplerate = info.samplerate;
@@ -631,7 +648,7 @@ Index: ffmpeg-r20817/libavcodec/latmaac.c
+ return consumed;
+}
+
-+void aac_filter_getinfo(AACDecoder *decoder, int *sample_rate, int *channels)
++static void aac_filter_getinfo(AACDecoder *decoder, int *sample_rate, int *channels)
+{
+ if(!decoder->open) return;
+ *sample_rate = decoder->in_samplerate;
@@ -682,10 +699,10 @@ Index: ffmpeg-r20817/libavcodec/latmaac.c
+ .decode = faac_decode_frame,
+ .long_name = "AAC over LATM",
+};
-Index: ffmpeg-r20817/libavcodec/latm_parser.c
+Index: ffmpeg-r22950/libavcodec/latm_parser.c
===================================================================
---- ffmpeg-r20817/libavcodec/latm_parser.c (revision 0)
-+++ ffmpeg-r20817/libavcodec/latm_parser.c (revision 0)
+--- ffmpeg-r22950/libavcodec/latm_parser.c (revision 0)
++++ ffmpeg-r22950/libavcodec/latm_parser.c (revision 0)
@@ -0,0 +1,128 @@
+/*
+ * LATM parser
@@ -815,20 +832,20 @@ Index: ffmpeg-r20817/libavcodec/latm_parser.c
+ ff_parse_close,
+ latm_split,
+};
-Index: ffmpeg-r20817/libavformat/mpegts.c
+Index: ffmpeg-r22950/libavformat/mpegts.c
===================================================================
---- ffmpeg-r20817/libavformat/mpegts.c (revision 20817)
-+++ ffmpeg-r20817/libavformat/mpegts.c (working copy)
-@@ -499,7 +499,7 @@
- { 0x04, CODEC_TYPE_AUDIO, CODEC_ID_MP3 },
- { 0x0f, CODEC_TYPE_AUDIO, CODEC_ID_AAC },
- { 0x10, CODEC_TYPE_VIDEO, CODEC_ID_MPEG4 },
-- { 0x11, CODEC_TYPE_AUDIO, CODEC_ID_AAC }, /* LATM syntax */
-+ { 0x11, CODEC_TYPE_AUDIO, CODEC_ID_AAC_LATM }, /* LATM syntax */
- { 0x1b, CODEC_TYPE_VIDEO, CODEC_ID_H264 },
- { 0xd1, CODEC_TYPE_VIDEO, CODEC_ID_DIRAC },
- { 0xea, CODEC_TYPE_VIDEO, CODEC_ID_VC1 },
-@@ -683,7 +683,7 @@
+--- ffmpeg-r22950/libavformat/mpegts.c (revision 22950)
++++ ffmpeg-r22950/libavformat/mpegts.c (working copy)
+@@ -497,7 +497,7 @@
+ { 0x04, AVMEDIA_TYPE_AUDIO, CODEC_ID_MP3 },
+ { 0x0f, AVMEDIA_TYPE_AUDIO, CODEC_ID_AAC },
+ { 0x10, AVMEDIA_TYPE_VIDEO, CODEC_ID_MPEG4 },
+- //{ 0x11, AVMEDIA_TYPE_AUDIO, CODEC_ID_AAC }, /* LATM syntax */
++ { 0x11, AVMEDIA_TYPE_AUDIO, CODEC_ID_AAC_LATM }, /* LATM syntax */
+ { 0x1b, AVMEDIA_TYPE_VIDEO, CODEC_ID_H264 },
+ { 0xd1, AVMEDIA_TYPE_VIDEO, CODEC_ID_DIRAC },
+ { 0xea, AVMEDIA_TYPE_VIDEO, CODEC_ID_VC1 },
+@@ -684,7 +684,7 @@
if ((!pes->st && pes->stream->nb_streams == MAX_STREAMS) ||
(pes->st && pes->st->discard == AVDISCARD_ALL) ||
@@ -837,10 +854,10 @@ Index: ffmpeg-r20817/libavformat/mpegts.c
goto skip;
/* stream not present in PMT */
-Index: ffmpeg-r20817/libavformat/mpegts.h
+Index: ffmpeg-r22950/libavformat/mpegts.h
===================================================================
---- ffmpeg-r20817/libavformat/mpegts.h (revision 20817)
-+++ ffmpeg-r20817/libavformat/mpegts.h (working copy)
+--- ffmpeg-r22950/libavformat/mpegts.h (revision 22950)
++++ ffmpeg-r22950/libavformat/mpegts.h (working copy)
@@ -49,6 +49,7 @@
#define STREAM_TYPE_PRIVATE_DATA 0x06
#define STREAM_TYPE_AUDIO_AAC 0x0f
@@ -849,11 +866,11 @@ Index: ffmpeg-r20817/libavformat/mpegts.h
#define STREAM_TYPE_VIDEO_H264 0x1b
#define STREAM_TYPE_VIDEO_VC1 0xea
#define STREAM_TYPE_VIDEO_DIRAC 0xd1
-Index: ffmpeg-r20817/libavformat/mpeg.c
+Index: ffmpeg-r22950/libavformat/mpeg.c
===================================================================
---- ffmpeg-r20817/libavformat/mpeg.c (revision 20817)
-+++ ffmpeg-r20817/libavformat/mpeg.c (working copy)
-@@ -282,7 +282,7 @@
+--- ffmpeg-r22950/libavformat/mpeg.c (revision 22950)
++++ ffmpeg-r22950/libavformat/mpeg.c (working copy)
+@@ -287,7 +287,7 @@
/* find matching stream */
if (!((startcode >= 0x1c0 && startcode <= 0x1df) ||
(startcode >= 0x1e0 && startcode <= 0x1ef) ||
@@ -862,20 +879,20 @@ Index: ffmpeg-r20817/libavformat/mpeg.c
goto redo;
if (ppos) {
*ppos = url_ftell(s->pb) - 4;
-@@ -449,6 +449,9 @@
+@@ -454,6 +454,9 @@
} else if(es_type == STREAM_TYPE_AUDIO_AAC){
codec_id = CODEC_ID_AAC;
- type = CODEC_TYPE_AUDIO;
+ type = AVMEDIA_TYPE_AUDIO;
+ } else if(es_type == STREAM_TYPE_AUDIO_AAC_LATM){
+ codec_id = CODEC_ID_AAC_LATM;
+ type = CODEC_TYPE_AUDIO;
} else if(es_type == STREAM_TYPE_VIDEO_MPEG4){
codec_id = CODEC_ID_MPEG4;
- type = CODEC_TYPE_VIDEO;
-Index: ffmpeg-r20817/libavformat/mpeg.h
+ type = AVMEDIA_TYPE_VIDEO;
+Index: ffmpeg-r22950/libavformat/mpeg.h
===================================================================
---- ffmpeg-r20817/libavformat/mpeg.h (revision 20817)
-+++ ffmpeg-r20817/libavformat/mpeg.h (working copy)
+--- ffmpeg-r22950/libavformat/mpeg.h (revision 22950)
++++ ffmpeg-r22950/libavformat/mpeg.h (working copy)
@@ -53,6 +53,7 @@
#define STREAM_TYPE_PRIVATE_DATA 0x06
#define STREAM_TYPE_AUDIO_AAC 0x0f