diff -up mozilla-aurora/config/external/moz.build.remove-ogg mozilla-aurora/config/external/moz.build --- mozilla-aurora/config/external/moz.build.remove-ogg 2014-05-06 13:17:17.000000000 +0200 +++ mozilla-aurora/config/external/moz.build 2014-06-03 13:51:14.450340480 +0200 @@ -33,14 +33,15 @@ if CONFIG['MOZ_WEBM_ENCODER']: if CONFIG['MOZ_VPX'] and not CONFIG['MOZ_NATIVE_LIBVPX']: external_dirs += ['media/libvpx'] +if CONFIG['MOZ_OGG']: + external_dirs += ['media/libogg', 'media/libtheora'] + if not CONFIG['MOZ_NATIVE_PNG']: external_dirs += ['media/libpng'] external_dirs += [ 'media/kiss_fft', 'media/libcubeb', - 'media/libogg', - 'media/libtheora', 'media/libspeex_resampler', 'media/libsoundtouch', ] diff -up mozilla-aurora/configure.in.remove-ogg mozilla-aurora/configure.in --- mozilla-aurora/configure.in.remove-ogg 2014-05-06 13:17:17.000000000 +0200 +++ mozilla-aurora/configure.in 2014-06-03 13:51:14.452340483 +0200 @@ -3938,6 +3938,7 @@ MOZ_FEEDS=1 MOZ_WEBAPP_RUNTIME= MOZ_JSDEBUGGER=1 MOZ_AUTH_EXTENSION=1 +MOZ_OGG=1 MOZ_RAW= MOZ_VORBIS= MOZ_TREMOR= @@ -5191,25 +5192,37 @@ fi AC_SUBST(MOZ_RAW) -dnl Checks for __attribute__(aligned()) directive need by libogg -AC_CACHE_CHECK([__attribute__ ((aligned ())) support], - [ac_cv_c_attribute_aligned], - [ac_cv_c_attribute_aligned=0 - CFLAGS_save="${CFLAGS}" - CFLAGS="${CFLAGS} -Werror" - for ac_cv_c_attr_align_try in 64 32 16 8; do - echo "trying $ac_cv_c_attr_align_try" - AC_TRY_COMPILE([], - [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;], - [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"]) - if test "$ac_cv_c_attribute_aligned" != 0; then - break; - fi - done - CFLAGS="${CFLAGS_save}"]) -if test "${ac_cv_c_attribute_aligned}" != "0"; then - AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], - [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment]) +dnl ======================================================== +dnl = Disable Ogg Codecs +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(ogg, +[ --disable-ogg Disable support for OGG media (Theora video and Vorbis audio)], + MOZ_OGG=, + MOZ_OGG=1) + +if test -n "$MOZ_OGG"; then + AC_DEFINE(MOZ_OGG) + + dnl Checks for __attribute__(aligned()) directive + AC_CACHE_CHECK([__attribute__ ((aligned ())) support], + [ac_cv_c_attribute_aligned], + [ac_cv_c_attribute_aligned=0 + CFLAGS_save="${CFLAGS}" + CFLAGS="${CFLAGS} -Werror" + for ac_cv_c_attr_align_try in 64 32 16 8; do + echo "trying $ac_cv_c_attr_align_try" + AC_TRY_COMPILE([], + [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;], + [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"]) + if test "$ac_cv_c_attribute_aligned" != 0; then + break; + fi + done + CFLAGS="${CFLAGS_save}"]) + if test "${ac_cv_c_attribute_aligned}" != "0"; then + AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], + [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment]) + fi fi dnl ======================================================== @@ -5426,7 +5439,7 @@ AC_SUBST(MOZ_NATIVE_LIBVPX) AC_SUBST(MOZ_LIBVPX_CFLAGS) AC_SUBST(MOZ_LIBVPX_LIBS) -if test "$MOZ_WEBM"; then +if test "$MOZ_WEBM" -o "$MOZ_OGG"; then if test "$MOZ_SAMPLE_TYPE_FLOAT32"; then MOZ_VORBIS=1 else @@ -5533,6 +5546,15 @@ dnl ==================================== dnl = Handle dependent MEDIA defines dnl ======================================================== +if test -n "$MOZ_OPUS" -a -z "$MOZ_OGG"; then + AC_MSG_ERROR([MOZ_OPUS requires MOZ_OGG which is disabled.]) +fi + +if test -n "$MOZ_VORBIS" -a -z "$MOZ_OGG"; then + AC_MSG_ERROR([MOZ_VORBIS requires MOZ_OGG which is disabled. +Note that you need vorbis support for WebM playback.]) +fi + if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then AC_MSG_ERROR([MOZ_VORBIS and MOZ_TREMOR are mutually exclusive! The build system should not allow them both to be set, but they are. Please file a bug at https://bugzilla.mozilla.org/]) fi @@ -8842,6 +8864,7 @@ AC_SUBST(MOZ_APPLEMEDIA) AC_SUBST(MOZ_OMX_PLUGIN) AC_SUBST(MOZ_VPX_ERROR_CONCEALMENT) AC_SUBST(MOZ_VPX) +AC_SUBST(MOZ_OGG) AC_SUBST(VPX_AS) AC_SUBST(VPX_ASFLAGS) AC_SUBST(VPX_DASH_C_FLAG) diff -up mozilla-aurora/content/html/content/src/HTMLAudioElement.cpp.remove-ogg mozilla-aurora/content/html/content/src/HTMLAudioElement.cpp --- mozilla-aurora/content/html/content/src/HTMLAudioElement.cpp.remove-ogg 2014-05-06 13:17:19.000000000 +0200 +++ mozilla-aurora/content/html/content/src/HTMLAudioElement.cpp 2014-06-03 13:51:14.452340483 +0200 @@ -81,12 +81,16 @@ nsresult HTMLAudioElement::SetAcceptHead #ifdef MOZ_WEBM "audio/webm," #endif +#ifdef MOZ_OGG "audio/ogg," +#endif #ifdef MOZ_WAVE "audio/wav," #endif "audio/*;q=0.9," +#ifdef MOZ_OGG "application/ogg;q=0.7," +#endif "video/*;q=0.6,*/*;q=0.5"); return aChannel->SetRequestHeader(NS_LITERAL_CSTRING("Accept"), diff -up mozilla-aurora/content/html/content/src/HTMLVideoElement.cpp.remove-ogg mozilla-aurora/content/html/content/src/HTMLVideoElement.cpp --- mozilla-aurora/content/html/content/src/HTMLVideoElement.cpp.remove-ogg 2014-05-06 13:17:19.000000000 +0200 +++ mozilla-aurora/content/html/content/src/HTMLVideoElement.cpp 2014-06-03 13:51:14.452340483 +0200 @@ -136,9 +136,13 @@ nsresult HTMLVideoElement::SetAcceptHead #ifdef MOZ_WEBM "video/webm," #endif +#ifdef MOZ_OGG "video/ogg," +#endif "video/*;q=0.9," +#ifdef MOZ_OGG "application/ogg;q=0.7," +#endif "audio/*;q=0.6,*/*;q=0.5"); return aChannel->SetRequestHeader(NS_LITERAL_CSTRING("Accept"), diff -up mozilla-aurora/content/media/DecoderTraits.cpp.remove-ogg mozilla-aurora/content/media/DecoderTraits.cpp --- mozilla-aurora/content/media/DecoderTraits.cpp.remove-ogg 2014-05-06 13:17:20.000000000 +0200 +++ mozilla-aurora/content/media/DecoderTraits.cpp 2014-06-03 13:51:14.452340483 +0200 @@ -13,8 +13,10 @@ #include "MediaPluginHost.h" #endif +#ifdef MOZ_OGG #include "OggDecoder.h" #include "OggReader.h" +#endif #ifdef MOZ_WAVE #include "WaveDecoder.h" #include "WaveReader.h" @@ -100,6 +102,7 @@ IsRawType(const nsACString& aType) } #endif +#ifdef MOZ_OGG // See http://www.rfc-editor.org/rfc/rfc5334.txt for the definitions // of Ogg media types and codec types static const char* const gOggTypes[4] = { @@ -131,6 +134,7 @@ IsOggType(const nsACString& aType) return CodecListContains(gOggTypes, aType); } +#endif #ifdef MOZ_WAVE // See http://www.rfc-editor.org/rfc/rfc2361.txt for the definitions @@ -199,8 +203,10 @@ IsGStreamerSupportedType(const nsACStrin if (IsWebMType(aMimeType) && !Preferences::GetBool("media.prefer-gstreamer", false)) return false; #endif +#ifdef MOZ_OGG if (IsOggType(aMimeType) && !Preferences::GetBool("media.prefer-gstreamer", false)) return false; +#endif return GStreamerDecoder::CanHandleMediaType(aMimeType, nullptr); } @@ -370,10 +376,12 @@ DecoderTraits::CanHandleMediaType(const result = CANPLAY_MAYBE; } #endif +#ifdef MOZ_OGG if (IsOggType(nsDependentCString(aMIMEType))) { codecList = MediaDecoder::IsOpusEnabled() ? gOggCodecsWithOpus : gOggCodecs; result = CANPLAY_MAYBE; } +#endif #ifdef MOZ_WAVE if (IsWaveType(nsDependentCString(aMIMEType))) { codecList = gWaveCodecs; @@ -479,10 +487,12 @@ InstantiateDecoder(const nsACString& aTy return decoder.forget(); } #endif +#ifdef MOZ_OGG if (IsOggType(aType)) { decoder = new OggDecoder(); return decoder.forget(); } +#endif #ifdef MOZ_WAVE if (IsWaveType(aType)) { decoder = new WaveDecoder(); @@ -587,9 +597,11 @@ MediaDecoderReader* DecoderTraits::Creat decoderReader = new RawReader(aDecoder); } else #endif +#ifdef MOZ_OGG if (IsOggType(aType)) { decoderReader = new OggReader(aDecoder); } else +#endif #ifdef MOZ_WAVE if (IsWaveType(aType)) { decoderReader = new WaveReader(aDecoder); @@ -642,7 +654,9 @@ MediaDecoderReader* DecoderTraits::Creat bool DecoderTraits::IsSupportedInVideoDocument(const nsACString& aType) { return +#ifdef MOZ_OGG IsOggType(aType) || +#endif #ifdef MOZ_OMX_DECODER // We support amr inside WebApps on firefoxOS but not in general web content. // Ensure we dont create a VideoDocument when accessing amr URLs directly. diff -up mozilla-aurora/content/media/encoder/MediaEncoder.cpp.remove-ogg mozilla-aurora/content/media/encoder/MediaEncoder.cpp --- mozilla-aurora/content/media/encoder/MediaEncoder.cpp.remove-ogg 2014-05-06 13:17:20.000000000 +0200 +++ mozilla-aurora/content/media/encoder/MediaEncoder.cpp 2014-06-03 13:51:14.453340485 +0200 @@ -9,7 +9,9 @@ #include "prlog.h" #include "mozilla/Preferences.h" +#ifdef MOZ_OGG #include "OggWriter.h" +#endif #ifdef MOZ_OPUS #include "OpusTrackEncoder.h" @@ -133,6 +135,7 @@ MediaEncoder::CreateEncoder(const nsAStr mimeType = NS_LITERAL_STRING(AUDIO_3GPP); } #endif // MOZ_OMX_ENCODER +#ifdef MOZ_OGG else if (MediaDecoder::IsOggEnabled() && MediaDecoder::IsOpusEnabled() && (aMIMEType.EqualsLiteral(AUDIO_OGG) || (aTrackTypes & ContainerWriter::CREATE_AUDIO_TRACK))) { @@ -142,6 +145,7 @@ MediaEncoder::CreateEncoder(const nsAStr NS_ENSURE_TRUE(audioEncoder, nullptr); mimeType = NS_LITERAL_STRING(AUDIO_OGG); } +#endif // MOZ_OGG else { LOG(PR_LOG_ERROR, ("Can not find any encoder to record this media stream")); return nullptr; diff -up mozilla-aurora/content/media/MediaDecoder.cpp.remove-ogg mozilla-aurora/content/media/MediaDecoder.cpp --- mozilla-aurora/content/media/MediaDecoder.cpp.remove-ogg 2014-05-06 13:17:20.000000000 +0200 +++ mozilla-aurora/content/media/MediaDecoder.cpp 2014-06-03 13:51:14.453340485 +0200 @@ -1653,6 +1653,7 @@ MediaDecoder::IsRawEnabled() } #endif +#ifdef MOZ_OGG bool MediaDecoder::IsOpusEnabled() { @@ -1668,6 +1669,7 @@ MediaDecoder::IsOggEnabled() { return Preferences::GetBool("media.ogg.enabled"); } +#endif #ifdef MOZ_WAVE bool diff -up mozilla-aurora/content/media/MediaDecoder.h.remove-ogg mozilla-aurora/content/media/MediaDecoder.h --- mozilla-aurora/content/media/MediaDecoder.h.remove-ogg 2014-05-06 13:17:20.000000000 +0200 +++ mozilla-aurora/content/media/MediaDecoder.h 2014-06-03 13:51:14.453340485 +0200 @@ -844,8 +844,10 @@ public: static bool IsRawEnabled(); #endif +#ifdef MOZ_OGG static bool IsOggEnabled(); static bool IsOpusEnabled(); +#endif #ifdef MOZ_WAVE static bool IsWaveEnabled(); diff -up mozilla-aurora/content/media/moz.build.remove-ogg mozilla-aurora/content/media/moz.build --- mozilla-aurora/content/media/moz.build.remove-ogg 2014-05-06 13:17:20.000000000 +0200 +++ mozilla-aurora/content/media/moz.build 2014-06-03 13:51:14.453340485 +0200 @@ -7,7 +7,6 @@ PARALLEL_DIRS += [ 'encoder', 'mediasource', - 'ogg', 'webaudio', 'webvtt' ] @@ -17,6 +16,9 @@ TEST_TOOL_DIRS += ['compiledtest'] if CONFIG['MOZ_RAW']: PARALLEL_DIRS += ['raw'] +if CONFIG['MOZ_OGG']: + PARALLEL_DIRS += ['ogg'] + if CONFIG['MOZ_WAVE']: PARALLEL_DIRS += ['wave'] diff -up mozilla-aurora/layout/media/symbols.def.in.remove-ogg mozilla-aurora/layout/media/symbols.def.in --- mozilla-aurora/layout/media/symbols.def.in.remove-ogg 2014-05-06 13:17:13.000000000 +0200 +++ mozilla-aurora/layout/media/symbols.def.in 2014-06-03 13:51:14.454340486 +0200 @@ -145,6 +145,7 @@ cubeb_stream_init cubeb_stream_start cubeb_stream_stop cubeb_stream_get_latency +#ifdef MOZ_OGG th_comment_clear th_comment_init th_decode_alloc @@ -158,6 +159,7 @@ th_info_init th_packet_isheader th_packet_iskeyframe th_setup_free +#endif #ifdef MOZ_OPUS opus_decoder_create opus_decoder_destroy diff -up mozilla-aurora/modules/libpref/src/init/all.js.remove-ogg mozilla-aurora/modules/libpref/src/init/all.js --- mozilla-aurora/modules/libpref/src/init/all.js.remove-ogg 2014-05-19 11:43:49.000000000 +0200 +++ mozilla-aurora/modules/libpref/src/init/all.js 2014-06-03 13:51:25.028355239 +0200 @@ -212,7 +212,9 @@ pref("media.fragmented-mp4.use-blank-dec #ifdef MOZ_RAW pref("media.raw.enabled", true); #endif +#ifdef MOZ_OGG pref("media.ogg.enabled", true); +#endif #ifdef MOZ_OPUS pref("media.opus.enabled", true); #endif diff -up mozilla-aurora/python/mozbuild/mozbuild/mozinfo.py.remove-ogg mozilla-aurora/python/mozbuild/mozbuild/mozinfo.py --- mozilla-aurora/python/mozbuild/mozbuild/mozinfo.py.remove-ogg 2014-05-06 13:17:17.000000000 +0200 +++ mozilla-aurora/python/mozbuild/mozbuild/mozinfo.py 2014-06-03 13:51:25.028355239 +0200 @@ -84,6 +84,7 @@ def build_dict(config, env=os.environ): d['tests_enabled'] = substs.get('ENABLE_TESTS') == "1" d['bin_suffix'] = substs.get('BIN_SUFFIX', '') + d['ogg'] = bool(substs.get('MOZ_OGG')) d['webm'] = bool(substs.get('MOZ_WEBM')) d['wave'] = bool(substs.get('MOZ_WAVE')) diff -up mozilla-aurora/uriloader/exthandler/nsExternalHelperAppService.cpp.remove-ogg mozilla-aurora/uriloader/exthandler/nsExternalHelperAppService.cpp --- mozilla-aurora/uriloader/exthandler/nsExternalHelperAppService.cpp.remove-ogg 2014-05-06 13:17:27.000000000 +0200 +++ mozilla-aurora/uriloader/exthandler/nsExternalHelperAppService.cpp 2014-06-03 13:51:25.030355242 +0200 @@ -462,6 +462,7 @@ static nsDefaultMimeTypeEntry defaultMim { "application/xhtml+xml", "xhtml" }, { "application/xhtml+xml", "xht" }, { TEXT_PLAIN, "txt" }, +#ifdef MOZ_OGG { VIDEO_OGG, "ogv" }, { VIDEO_OGG, "ogg" }, { APPLICATION_OGG, "ogg" }, @@ -469,6 +470,7 @@ static nsDefaultMimeTypeEntry defaultMim #ifdef MOZ_OPUS { AUDIO_OGG, "opus" }, #endif +#endif #ifdef MOZ_WEBM { VIDEO_WEBM, "webm" }, { AUDIO_WEBM, "webm" }, diff -up mozilla-aurora/xpcom/build/nsXPComInit.cpp.remove-ogg mozilla-aurora/xpcom/build/nsXPComInit.cpp --- mozilla-aurora/xpcom/build/nsXPComInit.cpp.remove-ogg 2014-06-03 14:04:38.913464144 +0200 +++ mozilla-aurora/xpcom/build/nsXPComInit.cpp 2014-06-03 14:06:03.282582245 +0200 @@ -133,7 +133,9 @@ extern nsresult nsStringInputStreamConst #include "mozilla/VisualEventTracer.h" #endif +#if MOZ_OGG #include "ogg/ogg.h" +#endif #if defined(MOZ_VPX) && !defined(MOZ_VPX_NO_MEM_REPORTING) #include "vpx_mem/vpx_mem.h" #endif @@ -378,7 +380,7 @@ private: NS_IMPL_ISUPPORTS(ICUReporter, nsIMemoryReporter) /* static */ template<> Atomic CountingAllocatorBase::sAmount(0); - +#if MOZ_OGG class OggReporter MOZ_FINAL : public nsIMemoryReporter, public CountingAllocatorBase { @@ -420,7 +422,7 @@ NS_IMPL_ISUPPORTS(VPXReporter, nsIMemory /* static */ template<> Atomic CountingAllocatorBase::sAmount(0); #endif /* MOZ_VPX */ - +#endif /* MOZ_OGG */ #ifdef MOZ_WEBM class NesteggReporter MOZ_FINAL : public nsIMemoryReporter , public CountingAllocatorBase @@ -606,12 +608,13 @@ NS_InitXPCOM2(nsIServiceManager* *result // depend on the XPCOM-based memory reporting goop. So for now, we have // this oddness. mozilla::SetICUMemoryFunctions(); - +#if MOZ_OGG // Do the same for libogg. ogg_set_mem_functions(OggReporter::CountingMalloc, OggReporter::CountingCalloc, OggReporter::CountingRealloc, OggReporter::CountingFree); +#endif #if defined(MOZ_VPX) && !defined(MOZ_VPX_NO_MEM_REPORTING) // And for VPX. @@ -678,7 +681,9 @@ NS_InitXPCOM2(nsIServiceManager* *result // The memory reporter manager is up and running -- register our reporters. RegisterStrongMemoryReporter(new ICUReporter()); +#if MOZ_OGG RegisterStrongMemoryReporter(new OggReporter()); +#endif #ifdef MOZ_VPX RegisterStrongMemoryReporter(new VPXReporter()); #endif