Skip to content

Commit 599a188

Browse files
asurdej-comcastphiln
authored andcommitted
[GStreamerQuirks] Add isPlatformSupported() impl
Implement the isPlatformSupported() function by verifying the availability of the required GStreamer elements. Amlogic, Broadcom, Realtek and Westeros
1 parent ce4bc5e commit 599a188

11 files changed

Lines changed: 36 additions & 2 deletions

Source/WebCore/platform/gstreamer/GStreamerQuirkAmLogic.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ GStreamerQuirkAmLogic::GStreamerQuirkAmLogic()
3636
GST_DEBUG_CATEGORY_INIT(webkit_amlogic_quirks_debug, "webkitquirksamlogic", 0, "WebKit AmLogic Quirks");
3737
}
3838

39+
bool GStreamerQuirkAmLogic::isPlatformSupported() const
40+
{
41+
return adoptGRef(gst_element_factory_find("amlhalasink"));
42+
}
43+
3944
GstElement* GStreamerQuirkAmLogic::createWebAudioSink()
4045
{
4146
// autoaudiosink changes child element state to READY internally in auto detection phase

Source/WebCore/platform/gstreamer/GStreamerQuirkAmLogic.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class GStreamerQuirkAmLogic final : public GStreamerQuirk {
3030
public:
3131
GStreamerQuirkAmLogic();
3232
const ASCIILiteral identifier() const final { return "AmLogic"_s; }
33+
bool isPlatformSupported() const final;
3334

3435
GstElement* createWebAudioSink() final;
3536
void configureElement(GstElement*, const OptionSet<ElementRuntimeCharacteristics>&) final;

Source/WebCore/platform/gstreamer/GStreamerQuirkBroadcom.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ GStreamerQuirkBroadcom::GStreamerQuirkBroadcom()
3737
m_disallowedWebAudioDecoders = { "brcmaudfilter"_s };
3838
}
3939

40+
bool GStreamerQuirkBroadcom::isPlatformSupported() const
41+
{
42+
return adoptGRef(gst_element_factory_find("brcmaudiosink"));
43+
}
44+
4045
void GStreamerQuirkBroadcom::configureElement(GstElement* element, const OptionSet<ElementRuntimeCharacteristics>& characteristics)
4146
{
4247
if (!g_strcmp0(G_OBJECT_TYPE_NAME(element), "Gstbrcmaudiosink"))

Source/WebCore/platform/gstreamer/GStreamerQuirkBroadcom.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class GStreamerQuirkBroadcom final : public GStreamerQuirkBroadcomBase {
3232
public:
3333
GStreamerQuirkBroadcom();
3434
const ASCIILiteral identifier() const final { return "Broadcom"_s; }
35+
bool isPlatformSupported() const final;
3536

3637
void configureElement(GstElement*, const OptionSet<ElementRuntimeCharacteristics>&) final;
3738
std::optional<bool> isHardwareAccelerated(GstElementFactory*) final;

Source/WebCore/platform/gstreamer/GStreamerQuirkRealtek.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ GStreamerQuirkRealtek::GStreamerQuirkRealtek()
4747
};
4848
}
4949

50+
bool GStreamerQuirkRealtek::isPlatformSupported() const
51+
{
52+
return adoptGRef(gst_element_factory_find("rtkaudiosink"));
53+
}
54+
5055
GstElement* GStreamerQuirkRealtek::createWebAudioSink()
5156
{
5257
auto sink = makeGStreamerElement("rtkaudiosink", nullptr);

Source/WebCore/platform/gstreamer/GStreamerQuirkRealtek.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class GStreamerQuirkRealtek final : public GStreamerQuirk {
3030
public:
3131
GStreamerQuirkRealtek();
3232
const ASCIILiteral identifier() const final { return "Realtek"_s; }
33+
bool isPlatformSupported() const final;
3334

3435
GstElement* createWebAudioSink() final;
3536
void configureElement(GstElement*, const OptionSet<ElementRuntimeCharacteristics>&) final;

Source/WebCore/platform/gstreamer/GStreamerQuirkRialto.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,15 @@ GStreamerQuirkRialto::GStreamerQuirkRialto()
6868
}
6969
}
7070

71+
bool GStreamerQuirkRialto::isPlatformSupported() const
72+
{
73+
auto sinkFactory = adoptGRef(gst_element_factory_find("rialtomsevideosink"));
74+
if (!sinkFactory)
75+
return false;
76+
auto rank = gst_plugin_feature_get_rank(GST_PLUGIN_FEATURE(sinkFactory.get()));
77+
return rank > GST_RANK_MARGINAL;
78+
}
79+
7180
void GStreamerQuirkRialto::configureElement(GstElement* element, const OptionSet<ElementRuntimeCharacteristics>&)
7281
{
7382
if (!g_strcmp0(G_OBJECT_TYPE_NAME(G_OBJECT(element)), "GstURIDecodeBin3")) {

Source/WebCore/platform/gstreamer/GStreamerQuirkRialto.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class GStreamerQuirkRialto final : public GStreamerQuirk {
3535
public:
3636
GStreamerQuirkRialto();
3737
const ASCIILiteral identifier() const final { return "Rialto"_s; }
38+
bool isPlatformSupported() const final;
3839

3940
void configureElement(GstElement*, const OptionSet<ElementRuntimeCharacteristics>&) final;
4041
GstElement* createAudioSink() final;

Source/WebCore/platform/gstreamer/GStreamerQuirkWesteros.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ GStreamerQuirkWesteros::GStreamerQuirkWesteros()
5151
}
5252
}
5353

54+
bool GStreamerQuirkWesteros::isPlatformSupported() const
55+
{
56+
return adoptGRef(gst_element_factory_find("westerossink"));
57+
}
58+
5459
void GStreamerQuirkWesteros::configureElement(GstElement* element, const OptionSet<ElementRuntimeCharacteristics>& characteristics)
5560
{
5661
if (!characteristics.contains(ElementRuntimeCharacteristics::IsMediaStream))

Source/WebCore/platform/gstreamer/GStreamerQuirkWesteros.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class GStreamerQuirkWesteros final : public GStreamerQuirk {
3030
public:
3131
GStreamerQuirkWesteros();
3232
const ASCIILiteral identifier() const final { return "Westeros"_s; }
33+
bool isPlatformSupported() const final;
3334

3435
void configureElement(GstElement*, const OptionSet<ElementRuntimeCharacteristics>&) final;
3536
std::optional<bool> isHardwareAccelerated(GstElementFactory*) final;

0 commit comments

Comments
 (0)