OSDN Git Service

Bump ffmpeg from 22950 to 25082
authorjstebbins <jstebbins@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Tue, 14 Sep 2010 16:38:12 +0000 (16:38 +0000)
committerjstebbins <jstebbins@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Tue, 14 Sep 2010 16:38:12 +0000 (16:38 +0000)
It's been 5 months since an ffmpeg bump.

One negative is that we loose LATM support.
The LATM patch is just impossible to apply
anymore since ffmpeg dropped support for using
the external faad lib. There are ifdef's in the
code should anyone wish to revert to an earlier
ffmpeg and enable LATM.

git-svn-id: svn://localhost/HandBrake/trunk@3526 b64f7644-9d1e-0410-96f1-a4d463321fa5

contrib/ffmpeg/A00-latm.patch [deleted file]
contrib/ffmpeg/A04-mov-seek.patch [deleted file]
contrib/ffmpeg/P03-mingw-gnu99.patch [new file with mode: 0644]
contrib/ffmpeg/module.defs
gtk/src/Makefile.am
gtk/src/main.c
libhb/module.defs
libhb/stream.c
macosx/HandBrake.xcodeproj/project.pbxproj
macosx/main.mm
test/module.defs

diff --git a/contrib/ffmpeg/A00-latm.patch b/contrib/ffmpeg/A00-latm.patch
deleted file mode 100644 (file)
index 192d703..0000000
+++ /dev/null
@@ -1,903 +0,0 @@
-Index: ffmpeg-r22950/libavcodec/allcodecs.c
-===================================================================
---- 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);
-+    REGISTER_DECODER (LIBFAAD, libfaad2);
-     REGISTER_ENCDEC  (LIBGSM, libgsm);
-     REGISTER_ENCDEC  (LIBGSM_MS, libgsm_ms);
-     REGISTER_ENCODER (LIBMP3LAME, libmp3lame);
-@@ -349,6 +350,7 @@
-     /* parsers */
-     REGISTER_PARSER  (AAC, aac);
-+    REGISTER_PARSER  (AAC, aac_latm);
-     REGISTER_PARSER  (AC3, ac3);
-     REGISTER_PARSER  (CAVSVIDEO, cavsvideo);
-     REGISTER_PARSER  (DCA, dca);
-Index: ffmpeg-r22950/libavcodec/avcodec.h
-===================================================================
---- 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,
-+    CODEC_ID_AAC_LATM,
-     CODEC_ID_AC3,
-     CODEC_ID_DTS,
-     CODEC_ID_VORBIS,
-Index: ffmpeg-r22950/libavcodec/Makefile
-===================================================================
---- 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
--OBJS-$(CONFIG_LIBFAAD_DECODER)            += libfaad.o
-+OBJS-$(CONFIG_LIBFAAD_DECODER)            += libfaad.o latmaac.o
- OBJS-$(CONFIG_LIBGSM_DECODER)             += libgsm.o
- OBJS-$(CONFIG_LIBGSM_ENCODER)             += libgsm.o
- OBJS-$(CONFIG_LIBGSM_MS_DECODER)          += libgsm.o
-@@ -529,7 +529,7 @@
- # parsers
- OBJS-$(CONFIG_AAC_PARSER)              += aac_parser.o aac_ac3_parser.o \
--                                          mpeg4audio.o
-+                                          mpeg4audio.o latm_parser.o
- OBJS-$(CONFIG_AC3_PARSER)              += ac3_parser.o ac3tab.o \
-                                           aac_ac3_parser.o
- OBJS-$(CONFIG_CAVSVIDEO_PARSER)        += cavs_parser.o
-Index: ffmpeg-r22950/libavcodec/latmaac.c
-===================================================================
---- ffmpeg-r22950/libavcodec/latmaac.c (revision 0)
-+++ ffmpeg-r22950/libavcodec/latmaac.c (revision 0)
-@@ -0,0 +1,642 @@
-+/*
-+ * copyright (c) 2008 Paul Kendall <paul@kcbbs.gen.nz>
-+ *
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+/**
-+ * @file latmaac.c
-+ * LATM wrapped AAC decoder
-+ */
-+
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <math.h>
-+#include <sys/types.h>
-+
-+#include "parser.h"
-+#include "get_bits.h"
-+#include "put_bits.h"
-+#include "mpeg4audio.h"
-+#include "neaacdec.h"
-+
-+#define min(a,b) ((a)<(b) ? (a) : (b))
-+
-+
-+/*
-+    Note: This decoder filter is intended to decode LATM streams transferred
-+    in MPEG transport streams which are only supposed to contain one program.
-+    To do a more complex LATM demuxing a separate LATM demuxer should be used.
-+*/
-+
-+#define AAC_NONE 0            // mode not detected (or indicated in mediatype)
-+#define AAC_LATM 1            // LATM packets (ISO/IEC 14496-3  1.7.3 Multiplex layer)
-+
-+#define SYNC_LATM 0x2b7            // 11 bits
-+
-+#define MAX_SIZE 8*1024
-+
-+typedef struct AACConfig
-+{
-+    uint8_t    extra[64];            // should be way enough
-+    int        extrasize;
-+
-+    int        audioObjectType;
-+    int        samplingFrequencyIndex;
-+    int        samplingFrequency;
-+    int        channelConfiguration;
-+    int        channels;
-+} AACConfig;
-+
-+typedef struct AACParser
-+{
-+    AACConfig          config;
-+    uint8_t            frameLengthType;
-+    uint16_t           muxSlotLengthBytes;
-+
-+    uint8_t            audio_mux_version;
-+    uint8_t            audio_mux_version_A;
-+    int                taraFullness;
-+    uint8_t            config_crc;
-+    int64_t            other_data_bits;
-+
-+    int                mode;
-+    int                offset;        // byte offset in "buf" buffer
-+    uint8_t            buf[MAX_SIZE]; // allocated buffer
-+    int                count;         // number of bytes written in buffer
-+} AACParser;
-+
-+typedef struct AACDecoder 
-+{
-+    AACParser          *parser;
-+    faacDecHandle      aac_decoder;
-+    int                open;
-+    uint32_t           in_samplerate;
-+    uint8_t            in_channels;
-+} AACDecoder;
-+
-+typedef struct {
-+    AACDecoder*        decoder;
-+} FAACContext;
-+
-+static inline int64_t latm_get_value(GetBitContext *b)
-+{
-+    uint8_t bytesForValue = get_bits(b, 2);
-+    int64_t value = 0;
-+    int i;
-+    for (i=0; i<=bytesForValue; i++) {
-+        value <<= 8;
-+        value |= get_bits(b, 8);
-+    }
-+    return value;
-+}
-+
-+static void readGASpecificConfig(struct AACConfig *cfg, GetBitContext *b, PutBitContext *o)
-+{
-+    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);
-+    }
-+    ext_flag = get_bits(b, 1);
-+    put_bits(o, 1, ext_flag);
-+    if (!cfg->channelConfiguration) {
-+        // program config element
-+        // TODO:
-+    }
-+
-+    if (cfg->audioObjectType == 6 || cfg->audioObjectType == 20) {
-+        layerNr = get_bits(b, 3);
-+        put_bits(o, 3, layerNr);
-+    }
-+    if (ext_flag) {
-+        if (cfg->audioObjectType == 22) {
-+            skip_bits(b, 5);                    // numOfSubFrame
-+            skip_bits(b, 11);                    // layer_length
-+
-+            put_bits(o, 16, 0);
-+        }
-+        if (cfg->audioObjectType == 17 ||
-+            cfg->audioObjectType == 19 ||
-+            cfg->audioObjectType == 20 ||
-+            cfg->audioObjectType == 23) {
-+
-+            skip_bits(b, 3);                    // stuff
-+            put_bits(o, 3, 0);
-+        }
-+
-+        skip_bits(b, 1);                        // extflag3
-+        put_bits(o, 1, 0);
-+    }
-+}
-+
-+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
-+
-+    ret = 0;
-+    sbr_present = -1;
-+    // object
-+    cfg->audioObjectType = get_bits(b, 5);
-+        put_bits(&o, 5, cfg->audioObjectType);
-+    if (cfg->audioObjectType == 31) {
-+        uint8_t n = get_bits(b, 6);
-+        put_bits(&o, 6, n);
-+        cfg->audioObjectType = 32 + n;
-+    }
-+
-+    cfg->samplingFrequencyIndex = get_bits(b, 4);
-+    cfg->samplingFrequency = ff_mpeg4audio_sample_rates[cfg->samplingFrequencyIndex];
-+    put_bits(&o, 4, cfg->samplingFrequencyIndex);
-+    if (cfg->samplingFrequencyIndex == 0x0f) {
-+        uint32_t f = get_bits_long(b, 24);
-+        put_bits(&o, 24, f);
-+        cfg->samplingFrequency = f;
-+    }
-+    cfg->channelConfiguration = get_bits(b, 4);
-+    put_bits(&o, 4, cfg->channelConfiguration);
-+    cfg->channels = ff_mpeg4audio_channels[cfg->channelConfiguration];
-+
-+    if (cfg->audioObjectType == 5) {
-+        sbr_present = 1;
-+
-+        // TODO: parsing !!!!!!!!!!!!!!!!
-+    }
-+
-+    switch (cfg->audioObjectType) {
-+    case 1:
-+    case 2:
-+    case 3:
-+    case 4:
-+    case 6:
-+    case 7:
-+    case 17:
-+    case 19:
-+    case 20:
-+    case 21:
-+    case 22:
-+    case 23:
-+        readGASpecificConfig(cfg, b, &o);
-+        break;
-+    }
-+
-+    if (sbr_present == -1) {
-+        if (cfg->samplingFrequency <= 24000) {
-+            cfg->samplingFrequency *= 2;
-+        }            
-+    }
-+
-+    // count the extradata
-+    ret = put_bits_count(&o);
-+    align_put_bits(&o);
-+    flush_put_bits(&o);
-+    cfg->extrasize = (ret + 7) >> 3;
-+    return ret;
-+}
-+
-+static void readStreamMuxConfig(struct AACParser *parser, GetBitContext *b)
-+{
-+    parser->audio_mux_version_A = 0;
-+    parser->audio_mux_version = get_bits(b, 1);
-+    if (parser->audio_mux_version == 1) {                // audioMuxVersion
-+        parser->audio_mux_version_A = get_bits(b, 1);
-+    }
-+
-+    if (parser->audio_mux_version_A == 0) {
-+        int frame_length_type;
-+
-+        if (parser->audio_mux_version == 1) {
-+            parser->taraFullness = latm_get_value(b);
-+        }
-+        get_bits(b, 1);                    // allStreamSameTimeFraming = 1
-+        get_bits(b, 6);                    // numSubFrames = 0
-+        get_bits(b, 4);                    // numPrograms = 0
-+
-+        // for each program
-+        get_bits(b, 3);                    // numLayer = 0
-+
-+        // for each layer
-+        if (parser->audio_mux_version == 0) {
-+            // audio specific config.
-+            readAudioSpecificConfig(&parser->config, b);
-+        } else {
-+            int ascLen = latm_get_value(b);
-+            ascLen -= readAudioSpecificConfig(&parser->config, b);
-+
-+            // fill bits
-+            while (ascLen > 16) {
-+                skip_bits(b, 16);
-+                ascLen -= 16;
-+            }
-+            skip_bits(b, ascLen);                    
-+        }
-+
-+        // these are not needed... perhaps
-+        frame_length_type = get_bits(b, 3);
-+        parser->frameLengthType = frame_length_type;
-+        if (frame_length_type == 0) {
-+            get_bits(b, 8);
-+        } else if (frame_length_type == 1) {
-+            get_bits(b, 9);
-+        } else if (frame_length_type == 3 ||
-+            frame_length_type == 4 ||
-+            frame_length_type == 5) {
-+            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;
-+            hvxc_table_index = get_bits(b, 1);
-+        }
-+
-+        // other data
-+        parser->other_data_bits = 0;
-+        if (get_bits(b, 1)) {
-+            // other data present
-+            if (parser->audio_mux_version == 1) {
-+                parser->other_data_bits = latm_get_value(b);
-+            } else {
-+                // other data not present
-+                int esc, tmp;
-+                parser->other_data_bits = 0;
-+                do {
-+                    parser->other_data_bits <<= 8;
-+                    esc = get_bits(b, 1);
-+                    tmp = get_bits(b, 8);
-+                    parser->other_data_bits |= tmp;
-+                } while (esc);
-+            }
-+        }
-+
-+        // CRC
-+        if (get_bits(b, 1)) {
-+            parser->config_crc = get_bits(b, 8);
-+        }
-+    } else {
-+        // tbd
-+    }
-+}
-+
-+static void readPayloadLengthInfo(struct AACParser *parser, GetBitContext *b)
-+{
-+    uint8_t tmp;
-+    if (parser->frameLengthType == 0) {
-+        parser->muxSlotLengthBytes = 0;
-+        do {
-+            tmp = get_bits(b, 8);
-+            parser->muxSlotLengthBytes += tmp;
-+        } while (tmp == 255);
-+    } else {
-+        if (parser->frameLengthType == 5 ||
-+            parser->frameLengthType == 7 ||
-+            parser->frameLengthType == 3) {
-+            get_bits(b, 2);
-+        }
-+    }
-+}
-+
-+static void readAudioMuxElement(struct AACParser *parser, GetBitContext *b, uint8_t *payload, int *payloadsize)
-+{
-+    uint8_t    use_same_mux = get_bits(b, 1);
-+    if (!use_same_mux) {
-+        readStreamMuxConfig(parser, b);
-+    }
-+
-+    if (parser->audio_mux_version_A == 0) {
-+        int j;
-+
-+        readPayloadLengthInfo(parser, b);
-+
-+        // copy data
-+        for (j=0; j<parser->muxSlotLengthBytes; j++) {
-+            *payload++ = get_bits(b, 8);
-+        }
-+        *payloadsize = parser->muxSlotLengthBytes;
-+
-+        // ignore otherdata
-+    } else {
-+        // TBD
-+    }
-+}
-+
-+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
-+    muxlength = get_bits(b, 13);
-+
-+    if (3+muxlength > size) return 0;            // not enough data
-+
-+    readAudioMuxElement(parser, b, payload, payloadsize);
-+
-+    // we don't parse anything else here...
-+    return (3+muxlength);
-+}
-+
-+
-+static void flush_buf(struct AACParser *parser, int offset) {
-+    int bytes_to_flush = min(parser->count, offset);
-+    int left = (parser->count - bytes_to_flush);
-+
-+    if (bytes_to_flush > 0) {
-+        if (left > 0) {
-+            memcpy(parser->buf, parser->buf+bytes_to_flush, left);
-+            parser->count = left;
-+        } else {
-+            parser->count = 0;
-+        }
-+    }
-+}
-+
-+static struct AACParser *latm_create_parser()
-+{
-+    struct AACParser *parser = (struct AACParser *)av_malloc(sizeof(struct AACParser));
-+    memset(parser, 0, sizeof(struct AACParser));
-+    return parser;
-+}
-+
-+static void latm_destroy_parser(struct AACParser *parser)
-+{
-+    av_free(parser);
-+}
-+
-+static void latm_flush(struct AACParser *parser)
-+{
-+    parser->offset = 0;
-+    parser->count = 0;
-+}
-+
-+static void latm_write_data(struct AACParser *parser, uint8_t *data, int len)
-+{
-+    // buffer overflow check... just ignore the data before
-+    if (parser->count + len > MAX_SIZE) {
-+        flush_buf(parser, parser->offset);
-+        parser->offset = 0;
-+        if (parser->count + len > MAX_SIZE) {
-+            int to_flush = (parser->count+len) - MAX_SIZE;
-+            flush_buf(parser, to_flush);
-+        }
-+    }
-+
-+    // append data
-+    memcpy(parser->buf+parser->count, data, len);
-+    parser->count += len;
-+}
-+
-+static int latm_parse_packet(struct AACParser *parser, uint8_t *data, int maxsize)
-+{
-+    /*
-+        Return value is either number of bytes parsed or
-+        -1 when failed.
-+        0 = need more data.
-+    */
-+
-+    uint8_t    *start = parser->buf + parser->offset;
-+    int        bytes  = parser->count - parser->offset;
-+    GetBitContext    b;
-+    init_get_bits(&b, start, bytes);
-+
-+    if (parser->mode == AAC_LATM) {
-+        int outsize = 0;
-+        int    ret = readAudioSyncStream(parser, &b, bytes, data, &outsize);
-+
-+        if (ret < 0) return -1;
-+        if (ret == 0) return 0;
-+
-+        // update the offset
-+        parser->offset += ret;
-+        return outsize;
-+    }
-+
-+    // check for syncwords
-+    while (bytes > 2) {
-+        if (show_bits(&b, 11) == SYNC_LATM) {
-+            // we must parse config first...
-+            int outsize = 0;
-+
-+            // check if there is a complete packet available...
-+            int ret = readAudioSyncStream(parser, &b, bytes, data, &outsize);
-+            if (ret < 0) return -1;
-+            if (ret == 0) return 0;
-+            parser->offset += ret;
-+
-+            parser->mode = AAC_LATM;
-+            return outsize;
-+        }
-+        skip_bits(&b, 8);
-+        parser->offset++;
-+        bytes--;
-+    }
-+    return 0;
-+}
-+
-+static void aac_filter_close(AACDecoder *decoder)
-+{
-+    if (decoder->aac_decoder) {
-+        NeAACDecClose(decoder->aac_decoder);
-+        decoder->aac_decoder = NULL;
-+    }
-+    decoder->open = 0;
-+}
-+
-+static int aac_decoder_open(AACDecoder *decoder)
-+{
-+    if (decoder->aac_decoder) return 0;
-+
-+    decoder->aac_decoder = NeAACDecOpen();
-+    if (!decoder->aac_decoder) return -1;
-+
-+    // are we going to initialize from decoder specific info ?
-+    if (decoder->parser->config.extrasize > 0) {
-+        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;
-+        }
-+        decoder->open = 1;
-+    } else {
-+        // we'll open the decoder later...
-+        decoder->open = 0;
-+    }
-+    return 0;
-+}
-+
-+static AACDecoder *aac_filter_create()
-+{
-+    AACDecoder *decoder = (AACDecoder *)av_malloc(sizeof(AACDecoder));
-+    decoder->parser = latm_create_parser();
-+    decoder->aac_decoder = NULL;
-+    decoder->open = 0;
-+    return (void *)decoder;
-+}
-+
-+static void aac_filter_destroy(AACDecoder *decoder)
-+{
-+    aac_filter_close(decoder);
-+    latm_destroy_parser(decoder->parser);
-+    av_free(decoder);
-+}
-+
-+static int aac_filter_receive(AACDecoder *decoder, void *out, int *out_size, uint8_t *data, int size)
-+{
-+    uint8_t    tempbuf[32*1024];
-+    int        ret;
-+    int        consumed = size;
-+    int        decoded;
-+    int        max_size = *out_size;
-+    
-+    *out_size = 0;
-+
-+    //-------------------------------------------------------------------------
-+    // Multiplex Parsing
-+    //-------------------------------------------------------------------------
-+
-+    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);
-+                        return consumed;
-+                }
-+        if (ret == 0) return consumed;
-+
-+        data = tempbuf;
-+        size = ret;
-+
-+        //-------------------------------------------------------------------------
-+        // Initialize decoder (if necessary)
-+        //-------------------------------------------------------------------------
-+        if (!decoder->open) {
-+            aac_filter_close(decoder);
-+            if (decoder->parser->mode == AAC_LATM) {
-+                ret = aac_decoder_open(decoder);
-+                if (ret < 0) return consumed;
-+            }
-+
-+            if(!decoder->open) return consumed;
-+        }
-+
-+        //-------------------------------------------------------------------------
-+        // Decode samples
-+        //-------------------------------------------------------------------------
-+        buf = NeAACDecDecode(decoder->aac_decoder, &info, data, size);
-+
-+        if (buf) {
-+            decoder->in_samplerate = info.samplerate;
-+            decoder->in_channels = info.channels;
-+
-+            //---------------------------------------------------------------------
-+            // Deliver decoded samples
-+            //---------------------------------------------------------------------
-+
-+            // kram dekoduje 16-bit. my vypustame 16-bit. takze by to malo byt okej
-+            decoded = info.samples * sizeof(short);
-+
-+            // napraskame tam sample
-+            *out_size += decoded;
-+            if(*out_size > max_size) {
-+                av_log(NULL, AV_LOG_ERROR, "overflow!\n");
-+            } else {
-+                memcpy(out, buf, decoded);
-+                out = (unsigned char *)out + decoded;
-+            }
-+        } else {
-+            // need more data
-+            break;
-+        }
-+
-+    } while (1);    // decode all packets
-+    return consumed;
-+}
-+
-+static void aac_filter_getinfo(AACDecoder *decoder, int *sample_rate, int *channels)
-+{
-+    if(!decoder->open) return;
-+    *sample_rate = decoder->in_samplerate;
-+    *channels = decoder->in_channels;
-+}
-+
-+static int faac_decode_init(AVCodecContext *avctx)
-+{
-+    FAACContext *s = avctx->priv_data;
-+    avctx->sample_fmt = SAMPLE_FMT_S16;
-+    avctx->frame_size = 360;
-+    avctx->sample_rate = 48000;
-+    avctx->channels = 2;
-+    avctx->bit_rate = 8192 * 8 * avctx->sample_rate / avctx->frame_size;
-+    s->decoder = aac_filter_create();
-+    return 0;
-+}
-+
-+static int faac_decode_frame(AVCodecContext *avctx,
-+                             void *data, int *data_size,
-+                             AVPacket *avpkt)
-+{
-+    FAACContext *s = avctx->priv_data;
-+    int ret;
-+
-+    if (s->decoder == NULL) faac_decode_init(avctx);
-+    ret = aac_filter_receive(s->decoder, data, data_size, avpkt->data, avpkt->size);
-+    aac_filter_getinfo(s->decoder, &(avctx->sample_rate), &(avctx->channels));
-+    return ret;
-+}
-+
-+static int faac_decode_end(AVCodecContext *avctx)
-+{
-+    FAACContext *s = avctx->priv_data;
-+    if(s->decoder != NULL) {
-+        aac_filter_destroy(s->decoder);
-+    }
-+    return 0;
-+}
-+
-+AVCodec libfaad2_decoder = {
-+    .name = "AAC_LATM",
-+    .type = CODEC_TYPE_AUDIO,
-+    .id = CODEC_ID_AAC_LATM,
-+    .priv_data_size = sizeof (FAACContext),
-+    .init = faac_decode_init,
-+    .close = faac_decode_end,
-+    .decode = faac_decode_frame,
-+    .long_name = "AAC over LATM",
-+};
-Index: ffmpeg-r22950/libavcodec/latm_parser.c
-===================================================================
---- ffmpeg-r22950/libavcodec/latm_parser.c     (revision 0)
-+++ ffmpeg-r22950/libavcodec/latm_parser.c     (revision 0)
-@@ -0,0 +1,128 @@
-+/*
-+ * LATM parser
-+ * Copyright (c) 2008 Paul Kendall <paul@kcbbs.gen.nz>
-+ *
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+/**
-+ * @file latm_parser.c
-+ * LATM parser
-+ */
-+
-+#include "parser.h"
-+
-+#define LATM_HEADER     0x56e000      // 0x2b7 (11 bits)
-+#define LATM_MASK       0xFFE000      // top 11 bits
-+#define LATM_SIZE_MASK  0x001FFF      // bottom 13 bits
-+
-+typedef struct LATMParseContext{
-+    ParseContext pc;
-+    int count;
-+} LATMParseContext;
-+
-+/**
-+ * finds the end of the current frame in the bitstream.
-+ * @return the position of the first byte of the next frame, or -1
-+ */
-+static int latm_find_frame_end(AVCodecParserContext *s1, const uint8_t *buf,
-+                               int buf_size) {
-+    LATMParseContext *s = s1->priv_data;
-+    ParseContext *pc = &s->pc;
-+    int pic_found, i;
-+    uint32_t state;
-+
-+    pic_found = pc->frame_start_found;
-+    state = pc->state;
-+
-+    i = 0;
-+    if(!pic_found){
-+        for(i=0; i<buf_size; i++){
-+            state = (state<<8) | buf[i];
-+            if((state & LATM_MASK) == LATM_HEADER){
-+                i++;
-+                s->count = - i;
-+                pic_found=1;
-+                break;
-+            }
-+        }
-+    }
-+
-+    if(pic_found){
-+        /* EOF considered as end of frame */
-+        if (buf_size == 0)
-+            return 0;
-+        if((state & LATM_SIZE_MASK) - s->count <= buf_size) {
-+            pc->frame_start_found = 0;
-+            pc->state = -1;
-+            return (state & LATM_SIZE_MASK) - s->count;
-+      }
-+    }
-+
-+    s->count += buf_size;
-+    pc->frame_start_found = pic_found;
-+    pc->state = state;
-+    return END_NOT_FOUND;
-+}
-+
-+static int latm_parse(AVCodecParserContext *s1,
-+                           AVCodecContext *avctx,
-+                           const uint8_t **poutbuf, int *poutbuf_size,
-+                           const uint8_t *buf, int buf_size)
-+{
-+    LATMParseContext *s = s1->priv_data;
-+    ParseContext *pc = &s->pc;
-+    int next;
-+
-+    if(s1->flags & PARSER_FLAG_COMPLETE_FRAMES){
-+        next = buf_size;
-+    }else{
-+        next = latm_find_frame_end(s1, buf, buf_size);
-+
-+        if (ff_combine_frame(pc, next, &buf, &buf_size) < 0) {
-+            *poutbuf = NULL;
-+            *poutbuf_size = 0;
-+            return buf_size;
-+        }
-+    }
-+    *poutbuf = buf;
-+    *poutbuf_size = buf_size;
-+    return next;
-+}
-+
-+static int latm_split(AVCodecContext *avctx,
-+                           const uint8_t *buf, int buf_size)
-+{
-+    int i;
-+    uint32_t state= -1;
-+
-+    for(i=0; i<buf_size; i++){
-+        state= (state<<8) | buf[i];
-+        if((state & LATM_MASK) == LATM_HEADER)
-+            return i-2;
-+    }
-+    return 0;
-+}
-+
-+AVCodecParser aac_latm_parser = {
-+    { CODEC_ID_AAC_LATM },
-+    sizeof(LATMParseContext),
-+    NULL,
-+    latm_parse,
-+    ff_parse_close,
-+    latm_split,
-+};
-Index: ffmpeg-r22950/libavformat/mpegts.c
-===================================================================
---- 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) ||
--                        code == 0x1be) /* padding_stream */
-+                        code == 0x1be || code == 0x1fa) /* padding_stream */
-                         goto skip;
-                     /* stream not present in PMT */
-Index: ffmpeg-r22950/libavformat/mpegts.h
-===================================================================
---- 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
- #define STREAM_TYPE_VIDEO_MPEG4     0x10
-+#define STREAM_TYPE_AUDIO_AAC_LATM  0x11
- #define STREAM_TYPE_VIDEO_H264      0x1b
- #define STREAM_TYPE_VIDEO_VC1       0xea
- #define STREAM_TYPE_VIDEO_DIRAC     0xd1
-Index: ffmpeg-r22950/libavformat/mpeg.c
-===================================================================
---- 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) ||
--          (startcode == 0x1bd) || (startcode == 0x1fd)))
-+          (startcode == 0x1bd) || (startcode == 0x1fa) || (startcode == 0x1fd)))
-         goto redo;
-     if (ppos) {
-         *ppos = url_ftell(s->pb) - 4;
-@@ -454,6 +454,9 @@
-         } else if(es_type == STREAM_TYPE_AUDIO_AAC){
-             codec_id = CODEC_ID_AAC;
-             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 = AVMEDIA_TYPE_VIDEO;
-Index: ffmpeg-r22950/libavformat/mpeg.h
-===================================================================
---- 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
- #define STREAM_TYPE_VIDEO_MPEG4     0x10
-+#define STREAM_TYPE_AUDIO_AAC_LATM  0x11
- #define STREAM_TYPE_VIDEO_H264      0x1b
- #define STREAM_TYPE_AUDIO_AC3       0x81
diff --git a/contrib/ffmpeg/A04-mov-seek.patch b/contrib/ffmpeg/A04-mov-seek.patch
deleted file mode 100644 (file)
index ecfff65..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: libavformat/mov.c
-===================================================================
---- ffmpeg.orig/libavformat/mov.c      (revision 22950)
-+++ ffmpeg/libavformat/mov.c   (working copy)
-@@ -2466,6 +2466,8 @@
-     sample = av_index_search_timestamp(st, timestamp, flags);
-     dprintf(s, "stream %d, timestamp %"PRId64", sample %d\n", st->index, timestamp, sample);
-+    if (sample < 0 && st->nb_index_entries && timestamp < st->index_entries[0].timestamp)
-+        sample = 0;
-     if (sample < 0) /* not sure what to do */
-         return -1;
-     sc->current_sample = sample;
diff --git a/contrib/ffmpeg/P03-mingw-gnu99.patch b/contrib/ffmpeg/P03-mingw-gnu99.patch
new file mode 100644 (file)
index 0000000..06a598d
--- /dev/null
@@ -0,0 +1,22 @@
+Index: configure
+===================================================================
+--- ffmpeg.orig/configure      (revision 25082)
++++ ffmpeg/configure   (working copy)
+@@ -2222,7 +2222,7 @@
+ fi
+ add_cppflags -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112
+-check_cflags -std=c99
++check_cflags -std=gnu99
+ check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
+ #include <stdlib.h>
+ EOF
+@@ -2230,7 +2230,7 @@
+ #include <stdlib.h>
+ EOF
+-check_host_cflags -std=c99
++check_host_cflags -std=gnu99
+ case "$arch" in
+     alpha|ia64|mips|parisc|sparc)
index 4ad4a21..82d4be7 100644 (file)
@@ -1,7 +1,7 @@
 $(eval $(call import.MODULE.defs,FFMPEG,ffmpeg,BZIP2 FAAD2 ZLIB))
 $(eval $(call import.CONTRIB.defs,FFMPEG))
 
-FFMPEG.FETCH.url = http://download.m0k.org/handbrake/contrib/ffmpeg-r22950.tar.bz2
+FFMPEG.FETCH.url = http://download.m0k.org/handbrake/contrib/ffmpeg-r25082.tar.bz2
 
 FFMPEG.CONFIGURE.deps =
 FFMPEG.CONFIGURE.env  =
@@ -15,12 +15,12 @@ FFMPEG.CONFIGURE.extra = \
     --disable-muxers \
     --disable-network \
     --disable-vaapi \
+    --disable-dxva2 \
     --enable-bzlib \
     --enable-encoder=ac3 \
     --enable-encoder=mpeg4 \
     --enable-encoder=snow \
     --enable-gpl \
-    --enable-libfaad \
     --enable-muxer=ipod \
     --enable-zlib \
     --cc="$(FFMPEG.GCC.gcc)" \
index 42d5d7f..aec38fc 100644 (file)
@@ -2,13 +2,13 @@
 
 if MINGW
 HB_LIBS= \
-       -lhb -la52 -lmkv -lavformat -lavcodec -lavutil -ldca -ldvdnav -ldvdread \
+       -lhb -la52 -lmkv -lavformat -lavcodec -lavutil -lavcore -ldca -ldvdnav -ldvdread \
        -lfaac -lmp3lame -lmpeg2 -lvorbis -lvorbisenc -logg -lsamplerate \
        -lx264 -lmp4v2 -lswscale -ltheora -lfaad -lz \
        -lbz2 -liberty -lpthreadGC2 -lbluray
 else
 HB_LIBS= \
-       -lhb -la52 -lmkv -lavformat -lavcodec -lavutil -ldca -ldvdnav -ldvdread \
+       -lhb -la52 -lmkv -lavformat -lavcodec -lavutil -lavcore -ldca -ldvdnav -ldvdread \
        -lfaac -lmp3lame -lmpeg2 -lvorbis -lvorbisenc -logg -lsamplerate \
        -lx264 -lmp4v2 -lswscale -ltheora -lfaad -lz \
        -lbz2 -lpthread -lbluray
index 7e62d60..4fde5d6 100644 (file)
@@ -716,10 +716,6 @@ watch_volumes(signal_user_data_t *ud)
 #endif
 }
 
-// Hack to avoid a segfault in libavcodec
-extern int mm_flags;
-int mm_support();
-
 G_MODULE_EXPORT void x264_entry_changed_cb(GtkWidget *widget, signal_user_data_t *ud);
 void preview_window_expose_cb(void);
 
@@ -765,7 +761,6 @@ main (int argc, char *argv[])
        GError *error = NULL;
        GOptionContext *context;
 
-       mm_flags = mm_support();
 #ifdef ENABLE_NLS
        bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
        bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
index b4b1964..c6fb9dc 100644 (file)
@@ -89,7 +89,7 @@ LIBHB.dll = $(LIBHB.build/)hb.dll
 LIBHB.lib = $(LIBHB.build/)hb.lib
 
 LIBHB.dll.libs = $(foreach n, \
-        a52 avcodec avformat avutil dca dvdnav dvdread faac faad mkv mpeg2 mp3lame mp4v2 \
+        a52 avcore avcodec avformat avutil dca dvdnav dvdread faac faad mkv mpeg2 mp3lame mp4v2 \
         ogg samplerate swscale theora vorbis vorbisenc x264 bluray, \
         $(CONTRIB.build/)lib/lib$(n).a )
 
index 733727c..9166ace 100644 (file)
@@ -58,7 +58,11 @@ static const stream2codec_t st2codec[256] = {
     st(0x0e, N, 0,                 0,              "ISO 13818-1 auxiliary"),
     st(0x0f, A, HB_ACODEC_MPGA,    CODEC_ID_AAC,   "ISO 13818-7 AAC Audio"),
     st(0x10, V, WORK_DECAVCODECV,  CODEC_ID_MPEG4, "MPEG4"),
+#if defined(OLD_LATM_PATCH)
     st(0x11, A, HB_ACODEC_MPGA,    CODEC_ID_AAC_LATM, "MPEG4 LATM AAC"),
+#else
+    st(0x11, N, 0,                 0,              "MPEG4 LATM AAC"),
+#endif
     st(0x12, U, 0,                 0,              "MPEG4 generic"),
 
     st(0x14, N, 0,                 0,              "ISO 13818-6 DSM-CC download"),
@@ -2543,6 +2547,7 @@ int hb_ts_decode_pkt( hb_stream_t *stream, const uint8_t * pkt, hb_buffer_t *obu
                              ( pkt[10] >> 7 );
             ++stream->ts_pcr_in;
             stream->ts_found_pcr = 1;
+            stream->ts_flags |= TS_HAS_PCR;
         }
     }
 
@@ -2667,7 +2672,7 @@ int hb_ts_decode_pkt( hb_stream_t *stream, const uint8_t * pkt, hb_buffer_t *obu
                     return 0;
                 }
                 // if we have a dts use it otherwise use the pts
-                stream->ts_pcr = pes_timestamp( pes + ( pes[7] & 0x40? 14 : 9 ) );
+                stream->ts_pcr = pes_timestamp( pes + ( pes[7] & 0x40?14:9 ) );
                 ++stream->ts_pcr_in;
             }
         }
index d329c9d..a163f52 100644 (file)
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavcodec.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavformat.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libavutil.a",
+                                       "$(EXTERNAL_BUILD)/contrib/lib/libavcore.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdca.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdnav.a",
                                        "$(EXTERNAL_BUILD)/contrib/lib/libdvdread.a",
index 0d0b01a..260a8ad 100644 (file)
@@ -29,11 +29,6 @@ void hb_error_handler( const char *errmsg )
 }
 }
 
-extern "C" {
-extern int mm_flags;
-int mm_support();
-}
-
 char * str_printf(const char *fmt, ...)
 {
     /* Guess we need no more than 100 bytes. */
@@ -143,7 +138,6 @@ int main( int argc, const char ** argv )
             }
         }
     }
-    mm_flags = mm_support();
     signal( SIGINT, SigHandler );
     hb_register_error_handler(&hb_error_handler);
     return NSApplicationMain( argc, argv );
index cd79c05..7dd3235 100644 (file)
@@ -10,7 +10,7 @@ TEST.c.o = $(patsubst $(SRC/)%.c,$(BUILD/)%.o,$(TEST.c))
 TEST.exe = $(BUILD/)$(call TARGET.exe,$(HB.name)CLI)
 
 TEST.libs = $(LIBHB.a) $(foreach n, \
-        a52 avcodec avformat avutil dca dvdnav dvdread faac faad mkv mpeg2 mp3lame mp4v2 \
+        a52 avcore avcodec avformat avutil dca dvdnav dvdread faac faad mkv mpeg2 mp3lame mp4v2 \
         ogg samplerate swscale theora vorbis vorbisenc x264 bluray, \
         $(CONTRIB.build/)lib/lib$(n).a )