mozilla-gstreamer-760140.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Wed, 16 Jan 2013 23:10:38 +0100
changeset 607 dfcb6d8fcf5a
parent 606 9d39369e1b4c
child 612 3006d73ad2fa
permissions -rw-r--r--
merge changes from release branch
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     1
From: Alessandro Decina <alessandro.d@gmail.com>
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     2
Bug 760140 - Query the GstRegistry for the required demuxers/decoders from canPlayType
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     3
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     4
diff --git a/content/base/src/nsContentUtils.cpp b/content/base/src/nsContentUtils.cpp
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     5
--- a/content/base/src/nsContentUtils.cpp
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     6
+++ b/content/base/src/nsContentUtils.cpp
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
     7
@@ -143,16 +143,19 @@
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     8
 #include "xpcprivate.h" // nsXPConnect
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     9
 #include "nsScriptSecurityManager.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    10
 #include "nsIChannelPolicy.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    11
 #include "nsChannelPolicy.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    12
 #include "nsIContentSecurityPolicy.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    13
 #include "nsContentDLF.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    14
 #ifdef MOZ_MEDIA
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    15
 #include "nsHTMLMediaElement.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    16
+#ifdef MOZ_GSTREAMER
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    17
+#include "GStreamerDecoder.h"
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    18
+#endif
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    19
 #endif
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    20
 #include "nsDOMTouchEvent.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    21
 #include "nsIContentViewer.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    22
 #include "nsIObjectLoadingContent.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    23
 #include "nsCCUncollectableMarker.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    24
 #include "mozilla/Base64.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    25
 #include "mozilla/Preferences.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    26
 #include "nsDOMMutationObserver.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    27
diff --git a/content/html/content/public/nsHTMLMediaElement.h b/content/html/content/public/nsHTMLMediaElement.h
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    28
--- a/content/html/content/public/nsHTMLMediaElement.h
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    29
+++ b/content/html/content/public/nsHTMLMediaElement.h
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    30
@@ -259,17 +259,19 @@ public:
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    31
   void UpdateMediaSize(nsIntSize size);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    32
 
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    33
   // Returns the CanPlayStatus indicating if we can handle this
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    34
   // MIME type. The MIME type should not include the codecs parameter.
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    35
   // If it returns anything other than CANPLAY_NO then it also
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    36
   // returns a null-terminated list of supported codecs
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    37
   // in *aSupportedCodecs. This list should not be freed, it is static data.
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    38
   static CanPlayStatus CanHandleMediaType(const char* aMIMEType,
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    39
-                                          char const *const ** aSupportedCodecs);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    40
+                                          const char* aCodecs,
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    41
+                                          char const *const ** aSupportedCodecs,
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    42
+                                          bool* aCheckSupportedCodecs);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    43
 
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    44
   // Returns the CanPlayStatus indicating if we can handle the
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    45
   // full MIME type including the optional codecs parameter.
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    46
   static CanPlayStatus GetCanPlay(const nsAString& aType);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    47
 
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    48
   // Returns true if we should handle this MIME type when it appears
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    49
   // as an <object> or as a toplevel page. If, in practice, our support
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    50
   // for the type is more limited than appears in the wild, we should return
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    51
@@ -292,18 +294,16 @@ public:
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    52
 #ifdef MOZ_WEBM
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    53
   static bool IsWebMType(const nsACString& aType);
541
830e50bbfc79 working Aurora 17.0 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 529
diff changeset
    54
   static const char gWebMTypes[2][11];
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    55
   static char const *const gWebMCodecs[4];
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    56
 #endif
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    57
 
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    58
 #ifdef MOZ_GSTREAMER
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
    59
   static bool IsGStreamerSupportedType(const nsACString& aType);
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    60
-  static bool IsH264Type(const nsACString& aType);
541
830e50bbfc79 working Aurora 17.0 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 529
diff changeset
    61
-  static const char gH264Types[3][16];
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    62
 #endif
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    63
 
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
    64
 #ifdef MOZ_WIDGET_GONK
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
    65
   static bool IsOmxSupportedType(const nsACString& aType);
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
    66
   static const char gOmxTypes[5][16];
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    67
 #endif
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    68
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    69
 #if defined(MOZ_GSTREAMER) || defined(MOZ_WIDGET_GONK)
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    70
diff --git a/content/html/content/src/nsHTMLMediaElement.cpp b/content/html/content/src/nsHTMLMediaElement.cpp
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    71
--- a/content/html/content/src/nsHTMLMediaElement.cpp
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    72
+++ b/content/html/content/src/nsHTMLMediaElement.cpp
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    73
@@ -2213,50 +2213,29 @@ nsHTMLMediaElement::IsWebMType(const nsA
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
    74
       return true;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    75
     }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    76
   }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    77
 
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    78
   return false;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    79
 }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    80
 #endif
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    81
 
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
    82
-#if defined(MOZ_GSTREAMER) || defined(MOZ_WIDGET_GONK)
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
    83
+#ifdef MOZ_WIDGET_GONK
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    84
 char const *const nsHTMLMediaElement::gH264Codecs[9] = {
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    85
   "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
    86
   "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
    87
   "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
    88
   "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
    89
   "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
    90
   "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
    91
   "mp4v.20.3",    // 3GPP
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    92
   "mp4a.40.2",    // AAC-LC
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
    93
   nullptr
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
    94
 };
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    95
-#endif
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    96
-
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
    97
-#ifdef MOZ_GSTREAMER
541
830e50bbfc79 working Aurora 17.0 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 529
diff changeset
    98
-const char nsHTMLMediaElement::gH264Types[3][16] = {
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    99
-  "video/mp4",
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   100
-  "video/3gpp",
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   101
-  "video/quicktime",
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   102
-};
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
-bool
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   105
-nsHTMLMediaElement::IsH264Type(const nsACString& aType)
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   106
-{
541
830e50bbfc79 working Aurora 17.0 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 529
diff changeset
   107
-  for (uint32_t i = 0; i < ArrayLength(gH264Types); ++i) {
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   108
-    if (aType.EqualsASCII(gH264Types[i])) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   109
-      return true;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   110
-    }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   111
-  }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   112
-  return false;
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   113
-}
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   114
-#endif
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   115
-
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   116
-#ifdef MOZ_WIDGET_GONK
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   117
+
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   118
 const char nsHTMLMediaElement::gOmxTypes[5][16] = {
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   119
   "audio/mpeg",
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   120
   "audio/mp4",
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   121
   "video/mp4",
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   122
   "video/3gpp",
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   123
   "video/quicktime",
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   124
 };
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   125
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   126
@@ -2319,18 +2298,22 @@ nsHTMLMediaElement::IsDASHMPDType(const 
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   127
 
541
830e50bbfc79 working Aurora 17.0 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 529
diff changeset
   128
   return false;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   129
 }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   130
 #endif
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   131
 
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   132
 /* static */
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   133
 nsHTMLMediaElement::CanPlayStatus
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   134
 nsHTMLMediaElement::CanHandleMediaType(const char* aMIMEType,
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   135
-                                       char const *const ** aCodecList)
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   136
+                                       const char *aCodecs,
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   137
+                                       char const *const ** aCodecList,
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   138
+                                       bool* aCheckCodecList)
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   139
 {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   140
+  if (aCheckCodecList)
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   141
+    *aCheckCodecList = true;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   142
 #ifdef MOZ_RAW
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   143
   if (IsRawType(nsDependentCString(aMIMEType))) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   144
     *aCodecList = gRawCodecs;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   145
     return CANPLAY_MAYBE;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   146
   }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   147
 #endif
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   148
 #ifdef MOZ_OGG
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   149
   if (IsOggType(nsDependentCString(aMIMEType))) {
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   150
@@ -2354,20 +2337,22 @@ nsHTMLMediaElement::CanHandleMediaType(c
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   151
   if (IsDASHMPDType(nsDependentCString(aMIMEType))) {
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   152
     // DASH manifest uses WebM codecs only.
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   153
     *aCodecList = gWebMCodecs;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   154
     return CANPLAY_YES;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   155
   }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   156
 #endif
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   157
 
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   158
 #ifdef MOZ_GSTREAMER
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   159
-  if (IsH264Type(nsDependentCString(aMIMEType))) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   160
-    *aCodecList = gH264Codecs;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   161
-    return CANPLAY_MAYBE;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   162
-  }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   163
+  if (aCheckCodecList)
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   164
+    *aCheckCodecList = false;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   165
+  if (aCodecList)
541
830e50bbfc79 working Aurora 17.0 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 529
diff changeset
   166
+    *aCodecList = nullptr;
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   167
+  if (GStreamerDecoder::CanHandleMediaType(aMIMEType, aCodecs))
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   168
+    return CANPLAY_YES;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   169
 #endif
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   170
 #ifdef MOZ_WIDGET_GONK
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   171
   if (IsOmxSupportedType(nsDependentCString(aMIMEType))) {
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   172
     *aCodecList = gH264Codecs;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   173
     return CANPLAY_MAYBE;
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   174
   }
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   175
 #endif
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   176
 #ifdef MOZ_MEDIA_PLUGINS
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   177
@@ -2388,17 +2373,17 @@ bool nsHTMLMediaElement::ShouldHandleMed
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   178
   if (IsOggType(nsDependentCString(aMIMEType)))
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   179
     return true;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   180
 #endif
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   181
 #ifdef MOZ_WEBM
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   182
   if (IsWebMType(nsDependentCString(aMIMEType)))
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   183
     return true;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   184
 #endif
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   185
 #ifdef MOZ_GSTREAMER
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   186
-  if (IsH264Type(nsDependentCString(aMIMEType)))
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   187
+  if (GStreamerDecoder::CanHandleMediaType(aMIMEType, nullptr))
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   188
     return true;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   189
 #endif
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   190
 #ifdef MOZ_WIDGET_GONK
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   191
   if (IsOmxSupportedType(nsDependentCString(aMIMEType))) {
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   192
     return true;
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   193
   }
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   194
 #endif
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   195
 #ifdef MOZ_MEDIA_PLUGINS
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   196
@@ -2429,26 +2414,31 @@ nsHTMLMediaElement::GetCanPlay(const nsA
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   197
 {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   198
   nsContentTypeParser parser(aType);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   199
   nsAutoString mimeType;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   200
   nsresult rv = parser.GetType(mimeType);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   201
   if (NS_FAILED(rv))
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   202
     return CANPLAY_NO;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   203
 
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   204
   NS_ConvertUTF16toUTF8 mimeTypeUTF8(mimeType);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   205
+  nsAutoString codecs;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   206
+  rv = parser.GetParameter("codecs", codecs);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   207
+  NS_ConvertUTF16toUTF8 codecsUTF8(codecs);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   208
   char const *const * supportedCodecs;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   209
+  bool checkSupportedCodecs = true;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   210
   CanPlayStatus status = CanHandleMediaType(mimeTypeUTF8.get(),
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   211
-                                            &supportedCodecs);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   212
+                                            codecsUTF8.get(),
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   213
+                                            &supportedCodecs,
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   214
+                                            &checkSupportedCodecs);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   215
   if (status == CANPLAY_NO)
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   216
     return CANPLAY_NO;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   217
 
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   218
-  nsAutoString codecs;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   219
-  rv = parser.GetParameter("codecs", codecs);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   220
-  if (NS_FAILED(rv)) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   221
-    // Parameter not found or whatever
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   222
+  if (codecs.IsEmpty() || !checkSupportedCodecs) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   223
+    /* no codecs to check for or they were already checked in CanHandleMediaType
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   224
+     * above */
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   225
     return status;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   226
   }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   227
 
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   228
   CanPlayStatus result = CANPLAY_YES;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   229
   // 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
   230
   // of the 'codecs' parameter
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   231
   nsCharSeparatedTokenizer tokenizer(codecs, ',');
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   232
   bool expectMoreTokens = false;
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   233
@@ -2487,43 +2477,39 @@ nsHTMLMediaElement::CanPlayType(const ns
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   234
 }
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   235
 
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   236
 #ifdef MOZ_GSTREAMER
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   237
 bool
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   238
 nsHTMLMediaElement::IsGStreamerSupportedType(const nsACString& aMimeType)
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   239
 {
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   240
   if (!MediaDecoder::IsGStreamerEnabled())
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   241
     return false;
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   242
-  if (IsH264Type(aMimeType))
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   243
+
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   244
+  const char *type;
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   245
+  NS_CStringGetData(aMimeType, &type, nullptr);
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   246
+  if (GStreamerDecoder::CanHandleMediaType(type, nullptr))
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   247
     return true;
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   248
-  if (!Preferences::GetBool("media.prefer-gstreamer", false))
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   249
-    return false;
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   250
-#ifdef MOZ_WEBM
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   251
-  if (IsWebMType(aMimeType))
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   252
-    return true;
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   253
-#endif
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   254
-#ifdef MOZ_OGG
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   255
-  if (IsOggType(aMimeType))
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   256
-    return true;
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   257
-#endif
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   258
+
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   259
   return false;
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   260
 }
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   261
 #endif
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   262
 
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   263
 already_AddRefed<MediaDecoder>
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   264
 nsHTMLMediaElement::CreateDecoder(const nsACString& aType)
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   265
 {
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   266
 
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   267
 #ifdef MOZ_GSTREAMER
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   268
   // When enabled, use GStreamer for H.264, but not for codecs handled by our
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   269
   // bundled decoders, unless the "media.prefer-gstreamer" pref is set.
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   270
-  if (IsGStreamerSupportedType(aType)) {
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   271
-    nsRefPtr<GStreamerDecoder> decoder = new GStreamerDecoder();
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
-    if (decoder->Init(this)) {
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   273
-      return decoder.forget();
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   274
+  if (!Preferences::GetBool("media.prefer-gstreamer", false)) {
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   275
+    if (IsGStreamerSupportedType(aType)) {
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   276
+      nsRefPtr<GStreamerDecoder> decoder = new GStreamerDecoder();
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   277
+      if (decoder->Init(this)) {
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   278
+        return decoder.forget();
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   279
+      }
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   280
     }
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   281
   }
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   282
 #endif
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   283
 
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   284
 #ifdef MOZ_RAW
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   285
   if (IsRawType(aType)) {
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   286
     nsRefPtr<RawDecoder> decoder = new RawDecoder();
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   287
     if (decoder->Init(this)) {
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   288
@@ -2576,16 +2562,26 @@ nsHTMLMediaElement::CreateDecoder(const 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   289
   if (IsDASHMPDType(aType)) {
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   290
     nsRefPtr<DASHDecoder> decoder = new DASHDecoder();
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   291
     if (decoder->Init(this)) {
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   292
       return decoder.forget();
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   293
     }
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   294
   }
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   295
 #endif
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   296
 
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   297
+#ifdef MOZ_GSTREAMER
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   298
+  // use GStreamer as fallback if not preferred
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   299
+  if (IsGStreamerSupportedType(aType)) {
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   300
+    nsRefPtr<GStreamerDecoder> decoder = new GStreamerDecoder();
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   301
+    if (decoder->Init(this)) {
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   302
+      return decoder.forget();
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   303
+    }
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   304
+  }
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   305
+#endif
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   306
+
541
830e50bbfc79 working Aurora 17.0 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 529
diff changeset
   307
   return nullptr;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   308
 }
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   309
 
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   310
 nsresult nsHTMLMediaElement::InitializeDecoderAsClone(MediaDecoder* aOriginal)
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   311
 {
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   312
   NS_ASSERTION(mLoadingSrc, "mLoadingSrc must already be set");
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   313
   NS_ASSERTION(mDecoder == nullptr, "Shouldn't have a decoder");
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   314
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   315
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
   316
--- a/content/media/gstreamer/GStreamerDecoder.cpp
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   317
+++ b/content/media/gstreamer/GStreamerDecoder.cpp
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   318
@@ -2,18 +2,23 @@
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   319
 /* 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
   320
 /* 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
   321
  * 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
   322
  * 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
   323
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   324
 #include "MediaDecoderStateMachine.h"
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   325
 #include "GStreamerReader.h"
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   326
 #include "GStreamerDecoder.h"
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   327
+#include "nsGStreamerFormatHelper.h"
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   328
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   329
 namespace mozilla {
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   330
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   331
 MediaDecoderStateMachine* GStreamerDecoder::CreateStateMachine()
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   332
 {
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   333
   return new MediaDecoderStateMachine(this, new GStreamerReader(this));
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   334
 }
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   335
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   336
+bool GStreamerDecoder::CanHandleMediaType(const char* aMIMEType,
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   337
+                                            const char* aCodecs) {
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   338
+  return GStreamerFormatHelper::Instance()->CanHandleMediaType(aMIMEType, aCodecs);
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   339
+}
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   340
 } // namespace mozilla
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   341
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   342
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
   343
--- a/content/media/gstreamer/GStreamerDecoder.h
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   344
+++ b/content/media/gstreamer/GStreamerDecoder.h
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   345
@@ -11,13 +11,14 @@
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   346
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   347
 namespace mozilla {
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   348
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   349
 class GStreamerDecoder : public MediaDecoder
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   350
 {
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   351
 public:
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   352
   virtual MediaDecoder* Clone() { return new GStreamerDecoder(); }
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   353
   virtual MediaDecoderStateMachine* CreateStateMachine();
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   354
+  static bool CanHandleMediaType(const char* aMIMEType, const char* aCodecs);
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   355
 };
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   356
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   357
 } // namespace mozilla
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   358
 
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   359
 #endif
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   360
diff --git a/content/media/gstreamer/Makefile.in b/content/media/gstreamer/Makefile.in
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   361
--- a/content/media/gstreamer/Makefile.in
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   362
+++ b/content/media/gstreamer/Makefile.in
541
830e50bbfc79 working Aurora 17.0 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 529
diff changeset
   363
@@ -17,16 +17,17 @@ LIBXUL_LIBRARY 	= 1
529
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
 EXPORTS		+= \
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   366
 		GStreamerDecoder.h \
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   367
 		$(NULL)
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   368
 
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   369
 CPPSRCS		= \
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   370
 		GStreamerReader.cpp \
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   371
 		GStreamerDecoder.cpp \
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   372
+		nsGStreamerFormatHelper.cpp \
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   373
 		$(NULL)
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   374
 
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   375
 FORCE_STATIC_LIB = 1
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   376
 
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   377
 include $(topsrcdir)/config/rules.mk
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
 CFLAGS		+= $(GSTREAMER_CFLAGS)
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   380
 CXXFLAGS	+= $(GSTREAMER_CFLAGS)
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   381
diff --git a/content/media/gstreamer/nsGStreamerFormatHelper.cpp b/content/media/gstreamer/nsGStreamerFormatHelper.cpp
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
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   384
+++ b/content/media/gstreamer/nsGStreamerFormatHelper.cpp
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   385
@@ -0,0 +1,149 @@
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
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   392
+#include "nsGStreamerFormatHelper.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   393
+#include "nsCharSeparatedTokenizer.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   394
+#include "nsXPCOMStrings.h"
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   395
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   396
+#define ENTRY_FORMAT(entry) entry[0]
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   397
+#define ENTRY_CAPS(entry) entry[1]
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
+GStreamerFormatHelper* GStreamerFormatHelper::gInstance = nullptr;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   400
+
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   401
+GStreamerFormatHelper *GStreamerFormatHelper::Instance() {
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   402
+  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
   403
+    gst_init(nullptr, nullptr);
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   404
+    gInstance = new GStreamerFormatHelper();
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   405
+  }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   406
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   407
+  return gInstance;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   408
+}
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   409
+
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   410
+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
   411
+  : mFactories(nullptr),
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   412
+    mCookie(0)
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
+  const char *containers[3][2] = {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   415
+    {"video/mp4", "video/quicktime"},
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   416
+    {"audio/mp4", "audio/mpeg, mpegversion=(int)4"},
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   417
+    {"audio/mpeg", "audio/mpeg, mpegversion=(int)1"},
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   418
+  };
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   419
+  memcpy(mContainers, containers, sizeof(containers));
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   420
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   421
+  const char *codecs[7][2] = {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   422
+    {"avc1.42E01E", "video/x-h264"},
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   423
+    {"avc1.42001E", "video/x-h264"},
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   424
+    {"avc1.58A01E", "video/x-h264"},
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   425
+    {"avc1.4D401E", "video/x-h264"},
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   426
+    {"avc1.64001E", "video/x-h264"},
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   427
+    {"mp4a.40.2", "audio/mpeg, mpegversion=(int)4"},
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   428
+    {"mp3", "audio/mpeg, mpegversion=(int)1"},
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   429
+  };
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   430
+  memcpy(mCodecs, codecs, sizeof(codecs));
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   431
+}
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   432
+
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   433
+GStreamerFormatHelper::~GStreamerFormatHelper() {
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   434
+  if (mFactories)
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   435
+    g_list_free(mFactories);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   436
+}
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   437
+
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   438
+bool GStreamerFormatHelper::CanHandleMediaType(const char* aMIMEType,
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   439
+                                                 const char *aCodecs) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   440
+  GstCaps *caps = ConvertFormatsToCaps(aMIMEType, aCodecs);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   441
+  if (!caps) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   442
+    return false;
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
+  bool ret = HaveElementsToProcessCaps(caps);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   446
+  gst_caps_unref(caps);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   447
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   448
+  return ret;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   449
+}
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   450
+
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   451
+GstCaps *GStreamerFormatHelper::ConvertFormatsToCaps(const char *aMIMEType,
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   452
+                                                       const char *aCodecs) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   453
+  unsigned int i;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   454
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   455
+  /* convert aMIMEType to gst container 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
   456
+  const char *capsString = nullptr;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   457
+  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
   458
+    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
   459
+      capsString = ENTRY_CAPS(mContainers[i]);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   460
+      break;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   461
+    }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   462
+  }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   463
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   464
+  if (!capsString) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   465
+    /* 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
   466
+    return nullptr;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   467
+  }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   468
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   469
+  GstCaps *caps = gst_caps_from_string(capsString);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   470
+  /* container only */
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   471
+  if (!aCodecs) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   472
+    return caps;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   473
+  }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   474
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   475
+  nsDependentCSubstring codecs(aCodecs, strlen(aCodecs));
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   476
+  nsCCharSeparatedTokenizer tokenizer(codecs, ',');
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   477
+  while (tokenizer.hasMoreTokens()) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   478
+    const nsCSubstring& 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
   479
+    capsString = nullptr;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   480
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   481
+    for (i = 0; i < G_N_ELEMENTS(mCodecs); i++) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   482
+      if (codec.Equals(ENTRY_FORMAT(mCodecs[i]))) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   483
+        capsString = ENTRY_CAPS(mCodecs[i]);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   484
+        break;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   485
+      }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   486
+    }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   487
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   488
+    if (!capsString) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   489
+      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
   490
+      return nullptr;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   491
+    }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   492
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   493
+    GstCaps *tmp = gst_caps_from_string(capsString);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   494
+    /* appends and frees tmp */
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   495
+    gst_caps_append(caps, tmp);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   496
+  }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   497
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   498
+  return caps;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   499
+}
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   500
+
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   501
+bool GStreamerFormatHelper::HaveElementsToProcessCaps(GstCaps *aCaps) {
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   502
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   503
+  GList *factories = GetFactories();
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   504
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   505
+  GList *list;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   506
+  /* 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
   507
+   * 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
   508
+   * structure */
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   509
+  for (unsigned int i = 0; i < gst_caps_get_size(aCaps); i++) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   510
+    GstStructure *s = gst_caps_get_structure(aCaps, i);
573
71cf05d3ee57 added mozilla-gstreamer-803287.patch (TM: mozilla19) as replacement for mozilla-gstreamer.patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
   511
+    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
   512
+    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
   513
+    gst_caps_unref(caps);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   514
+    if (!list) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   515
+      return false;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   516
+    }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   517
+    g_list_free(list);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   518
+  }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   519
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   520
+  return true;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   521
+}
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   522
+
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   523
+GList * GStreamerFormatHelper::GetFactories() {
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   524
+  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
   525
+  if (cookie != mCookie) {
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   526
+    g_list_free(mFactories);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   527
+    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
   528
+        (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
   529
+         GST_RANK_MARGINAL);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   530
+    mCookie = cookie;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   531
+  }
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   532
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   533
+  return mFactories;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   534
+}
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   535
diff --git a/content/media/gstreamer/nsGStreamerFormatHelper.h b/content/media/gstreamer/nsGStreamerFormatHelper.h
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   536
new file mode 100644
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   537
--- /dev/null
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   538
+++ b/content/media/gstreamer/nsGStreamerFormatHelper.h
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   539
@@ -0,0 +1,37 @@
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   540
+/* -*- 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
   541
+/* 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
   542
+/* 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
   543
+ * 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
   544
+ * 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
   545
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   546
+#if !defined(nsGStreamerFormatHelper_h_)
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   547
+#define nsGStreamerFormatHelper_h_
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   548
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   549
+#include <gst/gst.h>
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   550
+#include <mozilla/Types.h>
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   551
+
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   552
+class GStreamerFormatHelper {
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   553
+  public:
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   554
+    static GStreamerFormatHelper *Instance();
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   555
+    ~GStreamerFormatHelper();
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   556
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   557
+    bool CanHandleMediaType(const char *aMIMEType,
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   558
+                            const char *aCodecs);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   559
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   560
+  private:
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   561
+    GStreamerFormatHelper();
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   562
+    GstCaps *ConvertFormatsToCaps(const char *aMIMEType,
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   563
+                                  const char *aCodecs);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   564
+    char * const *CodecListFromCaps(GstCaps *aCaps);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   565
+    bool HaveElementsToProcessCaps(GstCaps *aCaps);
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   566
+    GList *GetFactories();
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   567
+
606
9d39369e1b4c FF19beta cycle preparation (does not build yet)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 573
diff changeset
   568
+    static GStreamerFormatHelper *gInstance;
529
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   569
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   570
+    const char *mContainers[3][2];
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   571
+    const char *mCodecs[7][2];
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   572
+    GList *mFactories;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   573
+    uint32_t mCookie;
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   574
+};
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   575
+
4812378b5646 import GStreamer improvement from bmo#760140 (support mpeg audio)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   576
+#endif