mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 23:06:49 +00:00
ogg: small GValue optimisation
No need to copy buffers we put into the streamheader any more now that we don't put caps on buffers any more, so there's no danger of a refcount cycle.
This commit is contained in:
parent
63eda9ddc0
commit
d97dd36ae5
3 changed files with 6 additions and 13 deletions
|
@ -147,7 +147,7 @@ static GstFlowReturn gst_ogg_demux_combine_flows (GstOggDemux * ogg,
|
||||||
GstOggPad * pad, GstFlowReturn ret);
|
GstOggPad * pad, GstFlowReturn ret);
|
||||||
static void gst_ogg_demux_sync_streams (GstOggDemux * ogg);
|
static void gst_ogg_demux_sync_streams (GstOggDemux * ogg);
|
||||||
|
|
||||||
GstCaps *gst_ogg_demux_set_header_on_caps (GstOggDemux * ogg,
|
static GstCaps *gst_ogg_demux_set_header_on_caps (GstOggDemux * ogg,
|
||||||
GstCaps * caps, GList * headers);
|
GstCaps * caps, GList * headers);
|
||||||
static gboolean gst_ogg_demux_send_event (GstOggDemux * ogg, GstEvent * event);
|
static gboolean gst_ogg_demux_send_event (GstOggDemux * ogg, GstEvent * event);
|
||||||
static gboolean gst_ogg_demux_perform_seek_push (GstOggDemux * ogg,
|
static gboolean gst_ogg_demux_perform_seek_push (GstOggDemux * ogg,
|
||||||
|
@ -2499,7 +2499,7 @@ gst_ogg_demux_deactivate_current_chain (GstOggDemux * ogg)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
GstCaps *
|
static GstCaps *
|
||||||
gst_ogg_demux_set_header_on_caps (GstOggDemux * ogg, GstCaps * caps,
|
gst_ogg_demux_set_header_on_caps (GstOggDemux * ogg, GstCaps * caps,
|
||||||
GList * headers)
|
GList * headers)
|
||||||
{
|
{
|
||||||
|
@ -2534,8 +2534,7 @@ gst_ogg_demux_set_header_on_caps (GstOggDemux * ogg, GstCaps * caps,
|
||||||
headers = headers->next;
|
headers = headers->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
gst_structure_set_value (structure, "streamheader", &array);
|
gst_structure_take_value (structure, "streamheader", &array);
|
||||||
g_value_unset (&array);
|
|
||||||
GST_LOG_OBJECT (ogg, "here are the newly set caps: %" GST_PTR_FORMAT, caps);
|
GST_LOG_OBJECT (ogg, "here are the newly set caps: %" GST_PTR_FORMAT, caps);
|
||||||
|
|
||||||
return caps;
|
return caps;
|
||||||
|
|
|
@ -1117,7 +1117,6 @@ gst_ogg_mux_set_header_on_caps (GstCaps * caps, GList * buffers)
|
||||||
|
|
||||||
while (walk) {
|
while (walk) {
|
||||||
GstBuffer *buf = GST_BUFFER (walk->data);
|
GstBuffer *buf = GST_BUFFER (walk->data);
|
||||||
GstBuffer *copy;
|
|
||||||
GValue value = { 0 };
|
GValue value = { 0 };
|
||||||
|
|
||||||
walk = walk->next;
|
walk = walk->next;
|
||||||
|
@ -1128,14 +1127,11 @@ gst_ogg_mux_set_header_on_caps (GstCaps * caps, GList * buffers)
|
||||||
GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_HEADER);
|
GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_HEADER);
|
||||||
|
|
||||||
g_value_init (&value, GST_TYPE_BUFFER);
|
g_value_init (&value, GST_TYPE_BUFFER);
|
||||||
copy = gst_buffer_copy (buf);
|
gst_value_set_buffer (&value, buf);
|
||||||
gst_value_set_buffer (&value, copy);
|
|
||||||
gst_buffer_unref (copy);
|
|
||||||
gst_value_array_append_value (&array, &value);
|
gst_value_array_append_value (&array, &value);
|
||||||
g_value_unset (&value);
|
g_value_unset (&value);
|
||||||
}
|
}
|
||||||
gst_structure_set_value (structure, "streamheader", &array);
|
gst_structure_take_value (structure, "streamheader", &array);
|
||||||
g_value_unset (&array);
|
|
||||||
|
|
||||||
return caps;
|
return caps;
|
||||||
}
|
}
|
||||||
|
|
|
@ -585,12 +585,10 @@ gst_ogg_parse_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
|
||||||
caps = gst_caps_make_writable (caps);
|
caps = gst_caps_make_writable (caps);
|
||||||
|
|
||||||
structure = gst_caps_get_structure (caps, 0);
|
structure = gst_caps_get_structure (caps, 0);
|
||||||
gst_structure_set_value (structure, "streamheader", &array);
|
gst_structure_take_value (structure, "streamheader", &array);
|
||||||
|
|
||||||
gst_pad_set_caps (ogg->srcpad, caps);
|
gst_pad_set_caps (ogg->srcpad, caps);
|
||||||
|
|
||||||
g_value_unset (&array);
|
|
||||||
|
|
||||||
if (ogg->caps)
|
if (ogg->caps)
|
||||||
gst_caps_unref (ogg->caps);
|
gst_caps_unref (ogg->caps);
|
||||||
ogg->caps = caps;
|
ogg->caps = caps;
|
||||||
|
|
Loading…
Reference in a new issue