diff options
-rw-r--r-- | contrib/ffmpeg/A00-latm.patch | 903 | ||||
-rw-r--r-- | contrib/ffmpeg/A04-mov-seek.patch | 13 | ||||
-rw-r--r-- | contrib/ffmpeg/P03-mingw-gnu99.patch | 22 | ||||
-rw-r--r-- | contrib/ffmpeg/module.defs | 4 | ||||
-rw-r--r-- | gtk/src/Makefile.am | 4 | ||||
-rw-r--r-- | gtk/src/main.c | 5 | ||||
-rw-r--r-- | libhb/module.defs | 2 | ||||
-rw-r--r-- | libhb/stream.c | 7 | ||||
-rw-r--r-- | macosx/HandBrake.xcodeproj/project.pbxproj | 20 | ||||
-rw-r--r-- | macosx/main.mm | 6 | ||||
-rw-r--r-- | test/module.defs | 2 |
11 files changed, 54 insertions, 934 deletions
diff --git a/contrib/ffmpeg/A00-latm.patch b/contrib/ffmpeg/A00-latm.patch deleted file mode 100644 index 192d703cc..000000000 --- a/contrib/ffmpeg/A00-latm.patch +++ /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 <[email protected]> -+ * -+ * 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 <[email protected]> -+ * -+ * 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 index ecfff65ce..000000000 --- a/contrib/ffmpeg/A04-mov-seek.patch +++ /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 index 000000000..06a598dd0 --- /dev/null +++ b/contrib/ffmpeg/P03-mingw-gnu99.patch @@ -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) diff --git a/contrib/ffmpeg/module.defs b/contrib/ffmpeg/module.defs index 4ad4a2122..82d4be780 100644 --- a/contrib/ffmpeg/module.defs +++ b/contrib/ffmpeg/module.defs @@ -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)" \ diff --git a/gtk/src/Makefile.am b/gtk/src/Makefile.am index 42d5d7f78..aec38fcfe 100644 --- a/gtk/src/Makefile.am +++ b/gtk/src/Makefile.am @@ -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 diff --git a/gtk/src/main.c b/gtk/src/main.c index 7e62d6099..4fde5d69d 100644 --- a/gtk/src/main.c +++ b/gtk/src/main.c @@ -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"); diff --git a/libhb/module.defs b/libhb/module.defs index b4b1964c9..c6fb9dceb 100644 --- a/libhb/module.defs +++ b/libhb/module.defs @@ -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 ) diff --git a/libhb/stream.c b/libhb/stream.c index 733727c08..9166ace41 100644 --- a/libhb/stream.c +++ b/libhb/stream.c @@ -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; } } diff --git a/macosx/HandBrake.xcodeproj/project.pbxproj b/macosx/HandBrake.xcodeproj/project.pbxproj index d329c9d28..a163f5237 100644 --- a/macosx/HandBrake.xcodeproj/project.pbxproj +++ b/macosx/HandBrake.xcodeproj/project.pbxproj @@ -719,6 +719,7 @@ "$(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", @@ -751,6 +752,7 @@ "$(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", @@ -818,6 +820,7 @@ "$(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", @@ -856,6 +859,7 @@ "$(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", @@ -944,6 +948,7 @@ "$(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", @@ -982,6 +987,7 @@ "$(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", @@ -1070,6 +1076,7 @@ "$(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", @@ -1108,6 +1115,7 @@ "$(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", @@ -1196,6 +1204,7 @@ "$(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", @@ -1234,6 +1243,7 @@ "$(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", @@ -1325,6 +1335,7 @@ "$(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", @@ -1363,6 +1374,7 @@ "$(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", @@ -1454,6 +1466,7 @@ "$(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", @@ -1492,6 +1505,7 @@ "$(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", @@ -1583,6 +1597,7 @@ "$(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", @@ -1621,6 +1636,7 @@ "$(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", @@ -1712,6 +1728,7 @@ "$(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", @@ -1750,6 +1767,7 @@ "$(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", @@ -1849,6 +1867,7 @@ "$(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", @@ -1891,6 +1910,7 @@ "$(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", diff --git a/macosx/main.mm b/macosx/main.mm index 0d0b01a6a..260a8ad92 100644 --- a/macosx/main.mm +++ b/macosx/main.mm @@ -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 ); diff --git a/test/module.defs b/test/module.defs index cd79c05c0..7dd323556 100644 --- a/test/module.defs +++ b/test/module.defs @@ -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 ) |