mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-20 04:56:24 +00:00
alsa: Update for negotiation related API changes
This commit is contained in:
parent
8d6e2c8a89
commit
0415b90e99
2 changed files with 34 additions and 8 deletions
|
@ -79,7 +79,7 @@ static void gst_alsasink_set_property (GObject * object,
|
||||||
static void gst_alsasink_get_property (GObject * object,
|
static void gst_alsasink_get_property (GObject * object,
|
||||||
guint prop_id, GValue * value, GParamSpec * pspec);
|
guint prop_id, GValue * value, GParamSpec * pspec);
|
||||||
|
|
||||||
static GstCaps *gst_alsasink_getcaps (GstBaseSink * bsink);
|
static GstCaps *gst_alsasink_getcaps (GstBaseSink * bsink, GstCaps * filter);
|
||||||
|
|
||||||
static gboolean gst_alsasink_open (GstAudioSink * asink);
|
static gboolean gst_alsasink_open (GstAudioSink * asink);
|
||||||
static gboolean gst_alsasink_prepare (GstAudioSink * asink,
|
static gboolean gst_alsasink_prepare (GstAudioSink * asink,
|
||||||
|
@ -291,7 +291,7 @@ if ((err = call) < 0) \
|
||||||
} G_STMT_END;
|
} G_STMT_END;
|
||||||
|
|
||||||
static GstCaps *
|
static GstCaps *
|
||||||
gst_alsasink_getcaps (GstBaseSink * bsink)
|
gst_alsasink_getcaps (GstBaseSink * bsink, GstCaps * filter)
|
||||||
{
|
{
|
||||||
GstElementClass *element_class;
|
GstElementClass *element_class;
|
||||||
GstPadTemplate *pad_template;
|
GstPadTemplate *pad_template;
|
||||||
|
@ -305,7 +305,11 @@ gst_alsasink_getcaps (GstBaseSink * bsink)
|
||||||
|
|
||||||
if (sink->cached_caps) {
|
if (sink->cached_caps) {
|
||||||
GST_LOG_OBJECT (sink, "Returning cached caps");
|
GST_LOG_OBJECT (sink, "Returning cached caps");
|
||||||
return gst_caps_ref (sink->cached_caps);
|
if (filter)
|
||||||
|
return gst_caps_intersect_full (filter, sink->cached_caps,
|
||||||
|
GST_CAPS_INTERSECT_FIRST);
|
||||||
|
else
|
||||||
|
return gst_caps_ref (sink->cached_caps);
|
||||||
}
|
}
|
||||||
|
|
||||||
element_class = GST_ELEMENT_GET_CLASS (sink);
|
element_class = GST_ELEMENT_GET_CLASS (sink);
|
||||||
|
@ -321,7 +325,16 @@ gst_alsasink_getcaps (GstBaseSink * bsink)
|
||||||
|
|
||||||
GST_INFO_OBJECT (sink, "returning caps %" GST_PTR_FORMAT, caps);
|
GST_INFO_OBJECT (sink, "returning caps %" GST_PTR_FORMAT, caps);
|
||||||
|
|
||||||
return caps;
|
if (filter) {
|
||||||
|
GstCaps *intersection;
|
||||||
|
|
||||||
|
intersection =
|
||||||
|
gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
|
||||||
|
gst_caps_unref (caps);
|
||||||
|
return intersection;
|
||||||
|
} else {
|
||||||
|
return caps;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -77,7 +77,7 @@ static void gst_alsasrc_set_property (GObject * object,
|
||||||
static void gst_alsasrc_get_property (GObject * object,
|
static void gst_alsasrc_get_property (GObject * object,
|
||||||
guint prop_id, GValue * value, GParamSpec * pspec);
|
guint prop_id, GValue * value, GParamSpec * pspec);
|
||||||
|
|
||||||
static GstCaps *gst_alsasrc_getcaps (GstBaseSrc * bsrc);
|
static GstCaps *gst_alsasrc_getcaps (GstBaseSrc * bsrc, GstCaps * filter);
|
||||||
|
|
||||||
static gboolean gst_alsasrc_open (GstAudioSrc * asrc);
|
static gboolean gst_alsasrc_open (GstAudioSrc * asrc);
|
||||||
static gboolean gst_alsasrc_prepare (GstAudioSrc * asrc,
|
static gboolean gst_alsasrc_prepare (GstAudioSrc * asrc,
|
||||||
|
@ -301,7 +301,7 @@ if ((err = call) < 0) \
|
||||||
|
|
||||||
|
|
||||||
static GstCaps *
|
static GstCaps *
|
||||||
gst_alsasrc_getcaps (GstBaseSrc * bsrc)
|
gst_alsasrc_getcaps (GstBaseSrc * bsrc, GstCaps * filter)
|
||||||
{
|
{
|
||||||
GstElementClass *element_class;
|
GstElementClass *element_class;
|
||||||
GstPadTemplate *pad_template;
|
GstPadTemplate *pad_template;
|
||||||
|
@ -317,7 +317,11 @@ gst_alsasrc_getcaps (GstBaseSrc * bsrc)
|
||||||
|
|
||||||
if (src->cached_caps) {
|
if (src->cached_caps) {
|
||||||
GST_LOG_OBJECT (src, "Returning cached caps");
|
GST_LOG_OBJECT (src, "Returning cached caps");
|
||||||
return gst_caps_ref (src->cached_caps);
|
if (filter)
|
||||||
|
return gst_caps_intersect_full (filter, src->cached_caps,
|
||||||
|
GST_CAPS_INTERSECT_FIRST);
|
||||||
|
else
|
||||||
|
return gst_caps_ref (src->cached_caps);
|
||||||
}
|
}
|
||||||
|
|
||||||
element_class = GST_ELEMENT_GET_CLASS (src);
|
element_class = GST_ELEMENT_GET_CLASS (src);
|
||||||
|
@ -333,7 +337,16 @@ gst_alsasrc_getcaps (GstBaseSrc * bsrc)
|
||||||
|
|
||||||
GST_INFO_OBJECT (src, "returning caps %" GST_PTR_FORMAT, caps);
|
GST_INFO_OBJECT (src, "returning caps %" GST_PTR_FORMAT, caps);
|
||||||
|
|
||||||
return caps;
|
if (filter) {
|
||||||
|
GstCaps *intersection;
|
||||||
|
|
||||||
|
intersection =
|
||||||
|
gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
|
||||||
|
gst_caps_unref (caps);
|
||||||
|
return intersection;
|
||||||
|
} else {
|
||||||
|
return caps;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
Loading…
Reference in a new issue