mozilla-gstreamer-760140.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Tue, 14 May 2013 22:55:26 +0200
branchfirefox21
changeset 647 9d8bdcdd4d2a
parent 637 73640b76d6c3
permissions -rw-r--r--
21.0 release
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
     1
# HG changeset patch
637
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
     2
# Parent 74ba8ebd0dc72be84280bd4806f84d9ec1f4e130
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
     3
Bug 760140 - Query the GstRegistry for the required demuxers/decoders from canPlayType (TM: 22)
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
     4
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
     5
diff --git a/content/media/DecoderTraits.cpp b/content/media/DecoderTraits.cpp
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
     6
--- a/content/media/DecoderTraits.cpp
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
     7
+++ b/content/media/DecoderTraits.cpp
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
     8
@@ -7,16 +7,18 @@
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
     9
 #include "DecoderTraits.h"
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    10
 #include "MediaDecoder.h"
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    11
 #include "nsCharSeparatedTokenizer.h"
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    12
 #ifdef MOZ_MEDIA_PLUGINS
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    13
 #include "MediaPluginHost.h"
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    14
 #endif
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    15
 #ifdef MOZ_GSTREAMER
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    16
 #include "mozilla/Preferences.h"
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    17
+#include "GStreamerDecoder.h"
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    18
+#include "nsXPCOMStrings.h"
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    19
 #endif
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    20
 #ifdef MOZ_WMF
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    21
 #include "WMFDecoder.h"
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    22
 #endif
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    23
 
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    24
 namespace mozilla
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    25
 {
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    26
 
637
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
    27
@@ -137,48 +139,35 @@ DecoderTraits::IsWebMType(const nsACStri
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    28
     return false;
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    29
   }
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    30
 
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    31
   return CodecListContains(gWebMTypes, aType);
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    32
 }
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    33
 #endif
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    34
 
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    35
 #ifdef MOZ_GSTREAMER
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    36
-static const char* const gH264Types[4] = {
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    37
-  "video/mp4",
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    38
-  "video/3gpp",
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    39
-  "video/quicktime",
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    40
-  nullptr
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    41
-};
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    42
-
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    43
 bool
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    44
 DecoderTraits::IsGStreamerSupportedType(const nsACString& aMimeType)
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    45
 {
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    46
   if (!MediaDecoder::IsGStreamerEnabled())
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    47
     return false;
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    48
-  if (IsH264Type(aMimeType))
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    49
+  if (GStreamerDecoder::CanHandleMediaType(aMimeType, nullptr))
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    50
     return true;
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    51
   if (!Preferences::GetBool("media.prefer-gstreamer", false))
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    52
     return false;
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    53
 #ifdef MOZ_WEBM
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    54
   if (IsWebMType(aMimeType))
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    55
     return true;
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    56
 #endif
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    57
 #ifdef MOZ_OGG
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    58
   if (IsOggType(aMimeType))
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    59
     return true;
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    60
 #endif
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    61
   return false;
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    62
 }
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    63
-
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    64
-bool
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    65
-DecoderTraits::IsH264Type(const nsACString& aType)
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    66
-{
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    67
-  return CodecListContains(gH264Types, aType);
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    68
-}
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    69
 #endif
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    70
 
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
    71
 #ifdef MOZ_WIDGET_GONK
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    72
 static const char* const gOmxTypes[6] = {
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    73
   "audio/mpeg",
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    74
   "audio/mp4",
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    75
   "video/mp4",
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    76
   "video/3gpp",
637
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
    77
@@ -190,19 +179,17 @@ bool
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    78
 DecoderTraits::IsOmxSupportedType(const nsACString& aType)
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    79
 {
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    80
   if (!MediaDecoder::IsOmxEnabled()) {
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    81
     return false;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    82
   }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    83
 
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    84
   return CodecListContains(gOmxTypes, aType);
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    85
 }
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    86
-#endif
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    87
 
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
    88
-#if defined(MOZ_GSTREAMER) || defined(MOZ_WIDGET_GONK)
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    89
 static char const *const gH264Codecs[9] = {
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    90
   "avc1.42E01E",  // H.264 Constrained Baseline Profile Level 3.0
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    91
   "avc1.42001E",  // H.264 Baseline Profile Level 3.0
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    92
   "avc1.58A01E",  // H.264 Extended Profile Level 3.0
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    93
   "avc1.4D401E",  // H.264 Main Profile Level 3.0
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    94
   "avc1.64001E",  // H.264 High Profile Level 3.0
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    95
   "avc1.64001F",  // H.264 High Profile Level 3.1
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    96
   "mp4v.20.3",    // 3GPP
637
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
    97
@@ -303,19 +290,19 @@ DecoderTraits::CanHandleMediaType(const 
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    98
 #ifdef MOZ_DASH
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
    99
   if (IsDASHMPDType(nsDependentCString(aMIMEType))) {
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   100
     // DASH manifest uses WebM codecs only.
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   101
     codecList = gWebMCodecs;
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   102
     result = CANPLAY_YES;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   103
   }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   104
 #endif
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   105
 #ifdef MOZ_GSTREAMER
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   106
-  if (IsH264Type(nsDependentCString(aMIMEType))) {
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   107
-    codecList = gH264Codecs;
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   108
-    result = CANPLAY_MAYBE;
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   109
+  if (GStreamerDecoder::CanHandleMediaType(nsDependentCString(aMIMEType),
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   110
+                                           aHaveRequestedCodecs ? &aRequestedCodecs : nullptr)) {
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   111
+    return CANPLAY_YES;
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   112
   }
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   113
 #endif
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   114
 #ifdef MOZ_WIDGET_GONK
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   115
   if (IsOmxSupportedType(nsDependentCString(aMIMEType))) {
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   116
     codecList = gH264Codecs;
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   117
     result = CANPLAY_MAYBE;
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   118
   }
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   119
 #endif
637
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
   120
@@ -324,17 +311,17 @@ DecoderTraits::CanHandleMediaType(const 
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   121
     result = CANPLAY_MAYBE;
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   122
   }
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   123
 #endif
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   124
 #ifdef MOZ_MEDIA_PLUGINS
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   125
   if (MediaDecoder::IsMediaPluginsEnabled() &&
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   126
       GetMediaPluginHost()->FindDecoder(nsDependentCString(aMIMEType), &codecList))
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   127
     result = CANPLAY_MAYBE;
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   128
 #endif
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   129
-  if (result == CANPLAY_NO || !aHaveRequestedCodecs) {
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   130
+  if (result == CANPLAY_NO || !aHaveRequestedCodecs || !codecList) {
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   131
     return result;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   132
   }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   133
 
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   134
   // See http://www.rfc-editor.org/rfc/rfc4281.txt for the description
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   135
   // of the 'codecs' parameter
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   136
   nsCharSeparatedTokenizer tokenizer(aRequestedCodecs, ',');
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   137
   bool expectMoreTokens = false;
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   138
   while (tokenizer.hasMoreTokens()) {
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   139
diff --git a/content/media/DecoderTraits.h b/content/media/DecoderTraits.h
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   140
--- a/content/media/DecoderTraits.h
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   141
+++ b/content/media/DecoderTraits.h
637
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
   142
@@ -51,17 +51,16 @@ public:
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   143
 #ifdef MOZ_WEBM
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   144
   static bool IsWebMType(const nsACString& aType);
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   145
 #endif
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   146
 
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   147
 #ifdef MOZ_GSTREAMER
637
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
   148
   // When enabled, use GStreamer for H.264, but not for codecs handled by our
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
   149
   // bundled decoders, unless the "media.prefer-gstreamer" pref is set.
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   150
   static bool IsGStreamerSupportedType(const nsACString& aType);
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   151
-  static bool IsH264Type(const nsACString& aType);
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   152
 #endif
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   153
 
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   154
 #ifdef MOZ_WIDGET_GONK
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   155
   static bool IsOmxSupportedType(const nsACString& aType);
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   156
 #endif
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   157
 
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   158
 #ifdef MOZ_MEDIA_PLUGINS
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   159
   static bool IsMediaPluginsType(const nsACString& aType);
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   160
diff --git a/content/media/gstreamer/GStreamerDecoder.cpp b/content/media/gstreamer/GStreamerDecoder.cpp
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   161
--- a/content/media/gstreamer/GStreamerDecoder.cpp
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   162
+++ b/content/media/gstreamer/GStreamerDecoder.cpp
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   163
@@ -2,18 +2,26 @@
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   164
 /* vim:set ts=2 sw=2 sts=2 et cindent: */
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   165
 /* This Source Code Form is subject to the terms of the Mozilla Public
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   166
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   167
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   168
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   169
 #include "MediaDecoderStateMachine.h"
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   170
 #include "GStreamerReader.h"
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   171
 #include "GStreamerDecoder.h"
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   172
+#include "GStreamerFormatHelper.h"
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   173
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   174
 namespace mozilla {
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   175
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   176
 MediaDecoderStateMachine* GStreamerDecoder::CreateStateMachine()
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   177
 {
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   178
   return new MediaDecoderStateMachine(this, new GStreamerReader(this));
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   179
 }
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   180
 
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   181
+bool
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   182
+GStreamerDecoder::CanHandleMediaType(const nsACString& aMIMEType,
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   183
+                                     const nsAString* aCodecs)
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   184
+{
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   185
+  return GStreamerFormatHelper::Instance()->CanHandleMediaType(aMIMEType, aCodecs);
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   186
+}
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   187
+
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   188
 } // namespace mozilla
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   189
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   190
diff --git a/content/media/gstreamer/GStreamerDecoder.h b/content/media/gstreamer/GStreamerDecoder.h
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   191
--- a/content/media/gstreamer/GStreamerDecoder.h
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   192
+++ b/content/media/gstreamer/GStreamerDecoder.h
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   193
@@ -3,21 +3,23 @@
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   194
 /* This Source Code Form is subject to the terms of the Mozilla Public
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   195
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   196
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   197
 
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   198
 #if !defined(GStreamerDecoder_h_)
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   199
 #define GStreamerDecoder_h_
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   200
 
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   201
 #include "MediaDecoder.h"
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   202
+#include "nsXPCOMStrings.h"
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   203
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   204
 namespace mozilla {
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   205
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   206
 class GStreamerDecoder : public MediaDecoder
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   207
 {
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   208
 public:
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   209
   virtual MediaDecoder* Clone() { return new GStreamerDecoder(); }
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   210
   virtual MediaDecoderStateMachine* CreateStateMachine();
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   211
+  static bool CanHandleMediaType(const nsACString& aMIMEType, const nsAString* aCodecs);
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   212
 };
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   213
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   214
 } // namespace mozilla
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   215
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   216
 #endif
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   217
diff --git a/content/media/gstreamer/GStreamerFormatHelper.cpp b/content/media/gstreamer/GStreamerFormatHelper.cpp
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   218
new file mode 100644
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   219
--- /dev/null
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   220
+++ b/content/media/gstreamer/GStreamerFormatHelper.cpp
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   221
@@ -0,0 +1,159 @@
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   222
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   223
+/* vim:set ts=2 sw=2 sts=2 et cindent: */
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   224
+/* This Source Code Form is subject to the terms of the Mozilla Public
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   225
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   226
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   227
+
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   228
+#include "GStreamerFormatHelper.h"
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   229
+#include "nsCharSeparatedTokenizer.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   230
+#include "nsXPCOMStrings.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   231
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   232
+#define ENTRY_FORMAT(entry) entry[0]
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   233
+#define ENTRY_CAPS(entry) entry[1]
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   234
+
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   235
+GStreamerFormatHelper* GStreamerFormatHelper::gInstance = nullptr;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   236
+
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   237
+GStreamerFormatHelper* GStreamerFormatHelper::Instance() {
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   238
+  if (!gInstance) {
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   239
+    gst_init(nullptr, nullptr);
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   240
+    gInstance = new GStreamerFormatHelper();
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   241
+  }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   242
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   243
+  return gInstance;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   244
+}
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   245
+
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   246
+void GStreamerFormatHelper::Shutdown() {
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   247
+  if (gInstance) {
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   248
+    delete gInstance;
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   249
+    gInstance = nullptr;
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   250
+  }
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   251
+}
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   252
+
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   253
+char const *const GStreamerFormatHelper::mContainers[4][2] = {
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   254
+  {"video/mp4", "video/quicktime"},
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   255
+  {"video/quicktime", "video/quicktime"},
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   256
+  {"audio/mp4", "audio/mpeg, mpegversion=(int)4"},
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   257
+  {"audio/mpeg", "audio/mpeg, mpegversion=(int)1"},
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   258
+};
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   259
+
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   260
+char const *const GStreamerFormatHelper::mCodecs[8][2] = {
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   261
+  {"avc1.42E01E", "video/x-h264"},
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   262
+  {"avc1.42001E", "video/x-h264"},
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   263
+  {"avc1.58A01E", "video/x-h264"},
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   264
+  {"avc1.4D401E", "video/x-h264"},
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   265
+  {"avc1.64001E", "video/x-h264"},
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   266
+  {"avc1.64001F", "video/x-h264"},
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   267
+  {"mp4v.20.3", "video/3gpp"},
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   268
+  {"mp4a.40.2", "audio/mpeg, mpegversion=(int)4"},
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   269
+};
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   270
+
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   271
+GStreamerFormatHelper::GStreamerFormatHelper()
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   272
+  : mFactories(nullptr),
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   273
+    mCookie(static_cast<uint32_t>(-1))
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   274
+{
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   275
+}
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   276
+
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   277
+GStreamerFormatHelper::~GStreamerFormatHelper() {
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   278
+  if (mFactories)
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   279
+    g_list_free(mFactories);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   280
+}
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   281
+
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   282
+bool GStreamerFormatHelper::CanHandleMediaType(const nsACString& aMIMEType,
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   283
+                                               const nsAString* aCodecs) {
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   284
+  const char *type;
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   285
+  NS_CStringGetData(aMIMEType, &type, NULL);
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   286
+
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   287
+  GstCaps* caps = ConvertFormatsToCaps(type, aCodecs);
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   288
+  if (!caps) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   289
+    return false;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   290
+  }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   291
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   292
+  bool ret = HaveElementsToProcessCaps(caps);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   293
+  gst_caps_unref(caps);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   294
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   295
+  return ret;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   296
+}
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   297
+
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   298
+GstCaps* GStreamerFormatHelper::ConvertFormatsToCaps(const char* aMIMEType,
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   299
+                                                     const nsAString* aCodecs) {
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   300
+  unsigned int i;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   301
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   302
+  /* convert aMIMEType to gst container caps */
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   303
+  const char* capsString = nullptr;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   304
+  for (i = 0; i < G_N_ELEMENTS(mContainers); i++) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   305
+    if (!strcmp(ENTRY_FORMAT(mContainers[i]), aMIMEType)) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   306
+      capsString = ENTRY_CAPS(mContainers[i]);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   307
+      break;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   308
+    }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   309
+  }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   310
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   311
+  if (!capsString) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   312
+    /* we couldn't find any matching caps */
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   313
+    return nullptr;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   314
+  }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   315
+
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   316
+  GstCaps* caps = gst_caps_from_string(capsString);
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   317
+  /* container only */
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   318
+  if (!aCodecs) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   319
+    return caps;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   320
+  }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   321
+
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   322
+  nsCharSeparatedTokenizer tokenizer(*aCodecs, ',');
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   323
+  while (tokenizer.hasMoreTokens()) {
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   324
+    const nsSubstring& codec = tokenizer.nextToken();
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   325
+    capsString = nullptr;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   326
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   327
+    for (i = 0; i < G_N_ELEMENTS(mCodecs); i++) {
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   328
+      if (codec.EqualsASCII(ENTRY_FORMAT(mCodecs[i]))) {
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   329
+        capsString = ENTRY_CAPS(mCodecs[i]);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   330
+        break;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   331
+      }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   332
+    }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   333
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   334
+    if (!capsString) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   335
+      gst_caps_unref(caps);
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   336
+      return nullptr;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   337
+    }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   338
+
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   339
+    GstCaps* tmp = gst_caps_from_string(capsString);
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   340
+    /* appends and frees tmp */
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   341
+    gst_caps_append(caps, tmp);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   342
+  }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   343
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   344
+  return caps;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   345
+}
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   346
+
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   347
+bool GStreamerFormatHelper::HaveElementsToProcessCaps(GstCaps* aCaps) {
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   348
+
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   349
+  GList* factories = GetFactories();
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   350
+
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   351
+  GList* list;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   352
+  /* here aCaps contains [containerCaps, [codecCaps1, [codecCaps2, ...]]] so process
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   353
+   * caps structures individually as we want one element for _each_
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   354
+   * structure */
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   355
+  for (unsigned int i = 0; i < gst_caps_get_size(aCaps); i++) {
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   356
+    GstStructure* s = gst_caps_get_structure(aCaps, i);
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   357
+    GstCaps* caps = gst_caps_new_full(gst_structure_copy(s), nullptr);
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   358
+    list = gst_element_factory_list_filter (factories, caps, GST_PAD_SINK, FALSE);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   359
+    gst_caps_unref(caps);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   360
+    if (!list) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   361
+      return false;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   362
+    }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   363
+    g_list_free(list);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   364
+  }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   365
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   366
+  return true;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   367
+}
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   368
+
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   369
+GList* GStreamerFormatHelper::GetFactories() {
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   370
+  uint32_t cookie = gst_default_registry_get_feature_list_cookie ();
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   371
+  if (cookie != mCookie) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   372
+    g_list_free(mFactories);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   373
+    mFactories = gst_element_factory_list_get_elements
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   374
+        (GST_ELEMENT_FACTORY_TYPE_DEMUXER | GST_ELEMENT_FACTORY_TYPE_DECODER,
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   375
+         GST_RANK_MARGINAL);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   376
+    mCookie = cookie;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   377
+  }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   378
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   379
+  return mFactories;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   380
+}
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   381
diff --git a/content/media/gstreamer/GStreamerFormatHelper.h b/content/media/gstreamer/GStreamerFormatHelper.h
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   382
new file mode 100644
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   383
--- /dev/null
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   384
+++ b/content/media/gstreamer/GStreamerFormatHelper.h
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   385
@@ -0,0 +1,60 @@
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   386
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   387
+/* vim:set ts=2 sw=2 sts=2 et cindent: */
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   388
+/* This Source Code Form is subject to the terms of the Mozilla Public
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   389
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   390
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   391
+
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   392
+#if !defined(GStreamerFormatHelper_h_)
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   393
+#define GStreamerFormatHelper_h_
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   394
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   395
+#include <gst/gst.h>
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   396
+#include <mozilla/Types.h>
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   397
+#include "nsXPCOMStrings.h"
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   398
+
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   399
+class GStreamerFormatHelper {
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   400
+  /* This class can be used to query the GStreamer registry for the required
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   401
+   * demuxers/decoders from nsHTMLMediaElement::CanPlayType.
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   402
+   * It implements looking at the GstRegistry to check if elements to
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   403
+   * demux/decode the formats passed to CanPlayType() are actually installed.
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   404
+   */
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   405
+  public:
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   406
+    static GStreamerFormatHelper* Instance();
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   407
+    ~GStreamerFormatHelper();
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   408
+
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   409
+    bool CanHandleMediaType(const nsACString& aMIMEType,
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   410
+                            const nsAString* aCodecs);
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   411
+
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   412
+   static void Shutdown();
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   413
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   414
+  private:
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   415
+    GStreamerFormatHelper();
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   416
+    GstCaps* ConvertFormatsToCaps(const char* aMIMEType,
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   417
+                                  const nsAString* aCodecs);
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   418
+    char* const *CodecListFromCaps(GstCaps* aCaps);
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   419
+    bool HaveElementsToProcessCaps(GstCaps* aCaps);
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   420
+    GList* GetFactories();
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   421
+
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   422
+    static GStreamerFormatHelper* gInstance;
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   423
+
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   424
+    /* table to convert from container MIME types to GStreamer elements */
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   425
+    static char const *const mContainers[4][2];
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   426
+
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   427
+    /* table to convert from codec MIME types to GStreamer elements */
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   428
+    static char const *const mCodecs[8][2];
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   429
+
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   430
+    /* list of GStreamer element factories
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   431
+     * Element factories are the basic types retrieved from the GStreamer
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   432
+     * registry, they describe all plugins and elements that GStreamer can
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   433
+     * create.
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   434
+     * This means that element factories are useful for automated element
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   435
+     * instancing, such as what autopluggers do,
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   436
+     * and for creating lists of available elements. */
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   437
+    GList* mFactories;
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   438
+
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   439
+    /* Storage for the default registrys feature list cookie.
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   440
+     * It changes every time a feature is added to or removed from the
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   441
+     * GStreamer registry. */
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   442
+    uint32_t mCookie;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   443
+};
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   444
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   445
+#endif
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   446
diff --git a/content/media/gstreamer/Makefile.in b/content/media/gstreamer/Makefile.in
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   447
--- a/content/media/gstreamer/Makefile.in
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   448
+++ b/content/media/gstreamer/Makefile.in
637
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
   449
@@ -13,21 +13,23 @@ include $(DEPTH)/config/autoconf.mk
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   450
 MODULE		= content
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   451
 LIBRARY_NAME	= gkcongstreamer_s
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   452
 LIBXUL_LIBRARY 	= 1
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   453
 
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   454
 
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   455
 EXPORTS		+= \
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   456
 		GStreamerDecoder.h \
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   457
 		GStreamerReader.h \
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   458
+		GStreamerFormatHelper.h \
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   459
 		$(NULL)
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   460
 
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   461
 CPPSRCS		= \
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   462
 		GStreamerReader.cpp \
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   463
 		GStreamerDecoder.cpp \
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   464
+		GStreamerFormatHelper.cpp \
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   465
 		$(NULL)
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   466
 
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   467
 FORCE_STATIC_LIB = 1
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   468
 
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   469
 include $(topsrcdir)/config/rules.mk
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   470
 
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   471
 CFLAGS		+= $(GSTREAMER_CFLAGS)
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   472
 CXXFLAGS	+= $(GSTREAMER_CFLAGS)
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   473
diff --git a/layout/build/Makefile.in b/layout/build/Makefile.in
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   474
--- a/layout/build/Makefile.in
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   475
+++ b/layout/build/Makefile.in
637
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
   476
@@ -318,16 +318,20 @@ LOCAL_INCLUDES	+= -I$(srcdir)/../base \
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   477
 		   -I$(topsrcdir)/js/xpconnect/loader \
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   478
 		   -I$(topsrcdir)/caps/include \
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   479
 		   -I$(topsrcdir)/netwerk/base/src \
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   480
 		   -I$(topsrcdir)/content/svg/content/src \
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   481
 		   -I$(topsrcdir)/extensions/cookie \
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   482
 		   -I$(topsrcdir)/netwerk/cookie \
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   483
 		   $(NULL)
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   484
 
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   485
+ifdef MOZ_GSTREAMER
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   486
+LOCAL_INCLUDES	+= $(GSTREAMER_CFLAGS)
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   487
+endif
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   488
+
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   489
 ifdef MOZ_B2G_RIL #{
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   490
 LOCAL_INCLUDES	+= -I$(topsrcdir)/dom/system/gonk
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   491
 endif #}
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   492
 
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   493
 ifdef MOZ_B2G_FM #{
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   494
 LOCAL_INCLUDES	+= -I$(topsrcdir)/dom/fm
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   495
 endif #}
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   496
 
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   497
diff --git a/layout/build/nsLayoutStatics.cpp b/layout/build/nsLayoutStatics.cpp
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   498
--- a/layout/build/nsLayoutStatics.cpp
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   499
+++ b/layout/build/nsLayoutStatics.cpp
637
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
   500
@@ -79,16 +79,20 @@
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   501
 #ifdef MOZ_MEDIA_PLUGINS
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   502
 #include "MediaPluginHost.h"
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   503
 #endif
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   504
 
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   505
 #ifdef MOZ_WMF
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   506
 #include "WMFDecoder.h"
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   507
 #endif
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   508
 
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   509
+#ifdef MOZ_GSTREAMER
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   510
+#include "GStreamerFormatHelper.h"
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   511
+#endif
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   512
+
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   513
 #ifdef MOZ_SYDNEYAUDIO
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   514
 #include "AudioStream.h"
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   515
 #endif
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   516
 
637
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
   517
 #ifdef MOZ_WIDGET_GONK
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
   518
 #include "nsVolumeService.h"
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
   519
 using namespace mozilla::system;
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
   520
 #endif
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
   521
@@ -344,16 +348,20 @@ nsLayoutStatics::Shutdown()
612
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   522
   nsXBLService::Shutdown();
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   523
   nsAutoCopyListener::Shutdown();
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   524
   FrameLayerBuilder::Shutdown();
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   525
 
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   526
 #ifdef MOZ_MEDIA_PLUGINS
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   527
   MediaPluginHost::Shutdown();
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   528
 #endif
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   529
 
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   530
+#ifdef MOZ_GSTREAMER
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   531
+  GStreamerFormatHelper::Shutdown();
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   532
+#endif
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   533
+
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   534
 #ifdef MOZ_SYDNEYAUDIO
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   535
   AudioStream::ShutdownLibrary();
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   536
 #endif
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   537
 
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   538
 #ifdef MOZ_WMF
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   539
   WMFDecoder::UnloadDLLs();
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   540
 #endif
3006d73ad2fa move on to Aurora 20
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 606
diff changeset
   541