mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-09-29 23:32:33 +00:00
-base: don't use buffer caps
Port to newest 0.11 core API, remove GST_PAD_CAPS and GST_BUFFER_CAPS.
This commit is contained in:
parent
df54ba57a9
commit
ec57868488
45 changed files with 242 additions and 248 deletions
|
@ -629,20 +629,17 @@ get_buffer (GstVisual * visual, GstBuffer ** outbuf)
|
||||||
GstFlowReturn ret;
|
GstFlowReturn ret;
|
||||||
|
|
||||||
/* we don't know an output format yet, pick one */
|
/* we don't know an output format yet, pick one */
|
||||||
if (GST_PAD_CAPS (visual->srcpad) == NULL) {
|
if (!gst_pad_has_current_caps (visual->srcpad)) {
|
||||||
if (!gst_vis_src_negotiate (visual))
|
if (!gst_vis_src_negotiate (visual))
|
||||||
return GST_FLOW_NOT_NEGOTIATED;
|
return GST_FLOW_NOT_NEGOTIATED;
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (visual, "allocating output buffer with caps %"
|
GST_DEBUG_OBJECT (visual, "allocating output buffer");
|
||||||
GST_PTR_FORMAT, GST_PAD_CAPS (visual->srcpad));
|
|
||||||
|
|
||||||
ret = gst_buffer_pool_acquire_buffer (visual->pool, outbuf, NULL);
|
ret = gst_buffer_pool_acquire_buffer (visual->pool, outbuf, NULL);
|
||||||
if (ret != GST_FLOW_OK)
|
if (ret != GST_FLOW_OK)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
gst_buffer_set_caps (*outbuf, GST_PAD_CAPS (visual->srcpad));
|
|
||||||
|
|
||||||
return GST_FLOW_OK;
|
return GST_FLOW_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -659,7 +656,7 @@ gst_visual_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
|
|
||||||
/* If we don't have an output format yet, preallocate a buffer to try and
|
/* If we don't have an output format yet, preallocate a buffer to try and
|
||||||
* set one */
|
* set one */
|
||||||
if (GST_PAD_CAPS (visual->srcpad) == NULL) {
|
if (!gst_pad_has_current_caps (visual->srcpad)) {
|
||||||
ret = get_buffer (visual, &outbuf);
|
ret = get_buffer (visual, &outbuf);
|
||||||
if (ret != GST_FLOW_OK) {
|
if (ret != GST_FLOW_OK) {
|
||||||
gst_buffer_unref (buffer);
|
gst_buffer_unref (buffer);
|
||||||
|
|
|
@ -261,7 +261,6 @@ gst_ogg_avi_parse_setcaps (GstPad * pad, GstCaps * caps)
|
||||||
|
|
||||||
/* now output the raw vorbis header packets */
|
/* now output the raw vorbis header packets */
|
||||||
out = gst_buffer_copy_region (buffer, GST_BUFFER_COPY_ALL, offs, sizes[i]);
|
out = gst_buffer_copy_region (buffer, GST_BUFFER_COPY_ALL, offs, sizes[i]);
|
||||||
gst_buffer_set_caps (out, outcaps);
|
|
||||||
gst_pad_push (ogg->srcpad, out);
|
gst_pad_push (ogg->srcpad, out);
|
||||||
|
|
||||||
offs += sizes[i];
|
offs += sizes[i];
|
||||||
|
|
|
@ -229,7 +229,7 @@ gst_ogg_pad_query_types (GstPad * pad)
|
||||||
static GstCaps *
|
static GstCaps *
|
||||||
gst_ogg_pad_getcaps (GstPad * pad)
|
gst_ogg_pad_getcaps (GstPad * pad)
|
||||||
{
|
{
|
||||||
return gst_caps_ref (GST_PAD_CAPS (pad));
|
return gst_pad_get_current_caps (pad);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
@ -574,7 +574,6 @@ gst_ogg_demux_chain_peer (GstOggPad * pad, ogg_packet * packet,
|
||||||
goto not_added;
|
goto not_added;
|
||||||
|
|
||||||
buf = gst_buffer_new_and_alloc (packet->bytes - offset - trim);
|
buf = gst_buffer_new_and_alloc (packet->bytes - offset - trim);
|
||||||
gst_buffer_set_caps (buf, GST_PAD_CAPS (pad));
|
|
||||||
|
|
||||||
/* set delta flag for OGM content */
|
/* set delta flag for OGM content */
|
||||||
if (delta_unit)
|
if (delta_unit)
|
||||||
|
@ -1772,7 +1771,8 @@ gst_ogg_demux_activate_chain (GstOggDemux * ogg, GstOggChain * chain,
|
||||||
gst_ogg_pad_mark_discont (pad);
|
gst_ogg_pad_mark_discont (pad);
|
||||||
pad->last_ret = GST_FLOW_OK;
|
pad->last_ret = GST_FLOW_OK;
|
||||||
|
|
||||||
if (pad->map.is_skeleton || pad->added || GST_PAD_CAPS (pad) == NULL)
|
if (pad->map.is_skeleton || pad->added
|
||||||
|
|| !gst_pad_has_current_caps (GST_PAD_CAST (pad)))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (ogg, "adding pad %" GST_PTR_FORMAT, pad);
|
GST_DEBUG_OBJECT (ogg, "adding pad %" GST_PTR_FORMAT, pad);
|
||||||
|
|
|
@ -499,8 +499,6 @@ static GstFlowReturn
|
||||||
gst_ogg_mux_push_buffer (GstOggMux * mux, GstBuffer * buffer,
|
gst_ogg_mux_push_buffer (GstOggMux * mux, GstBuffer * buffer,
|
||||||
GstOggPadData * oggpad)
|
GstOggPadData * oggpad)
|
||||||
{
|
{
|
||||||
GstCaps *caps;
|
|
||||||
|
|
||||||
/* fix up OFFSET and OFFSET_END again */
|
/* fix up OFFSET and OFFSET_END again */
|
||||||
GST_BUFFER_OFFSET (buffer) = mux->offset;
|
GST_BUFFER_OFFSET (buffer) = mux->offset;
|
||||||
mux->offset += gst_buffer_get_size (buffer);
|
mux->offset += gst_buffer_get_size (buffer);
|
||||||
|
@ -515,11 +513,6 @@ gst_ogg_mux_push_buffer (GstOggMux * mux, GstBuffer * buffer,
|
||||||
mux->last_ts = run_time;
|
mux->last_ts = run_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
caps = gst_pad_get_negotiated_caps (mux->srcpad);
|
|
||||||
gst_buffer_set_caps (buffer, caps);
|
|
||||||
if (caps)
|
|
||||||
gst_caps_unref (caps);
|
|
||||||
|
|
||||||
return gst_pad_push (mux->srcpad, buffer);
|
return gst_pad_push (mux->srcpad, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -806,13 +799,15 @@ gst_ogg_mux_queue_pads (GstOggMux * ogg_mux)
|
||||||
|
|
||||||
/* if we're not yet in data mode, ensure we're setup on the first packet */
|
/* if we're not yet in data mode, ensure we're setup on the first packet */
|
||||||
if (!pad->have_type) {
|
if (!pad->have_type) {
|
||||||
|
GstCaps *caps;
|
||||||
|
|
||||||
/* Use headers in caps, if any; this will allow us to be resilient
|
/* Use headers in caps, if any; this will allow us to be resilient
|
||||||
* to starting streams on the fly, and some streams (like VP8
|
* to starting streams on the fly, and some streams (like VP8
|
||||||
* at least) do not send headers packets, as other muxers don't
|
* at least) do not send headers packets, as other muxers don't
|
||||||
* expect/need them. */
|
* expect/need them. */
|
||||||
|
caps = gst_pad_get_current_caps (GST_PAD_CAST (pad));
|
||||||
pad->have_type =
|
pad->have_type =
|
||||||
gst_ogg_stream_setup_map_from_caps_headers (&pad->map,
|
gst_ogg_stream_setup_map_from_caps_headers (&pad->map, caps);
|
||||||
GST_BUFFER_CAPS (buf));
|
|
||||||
|
|
||||||
if (!pad->have_type) {
|
if (!pad->have_type) {
|
||||||
/* fallback on the packet */
|
/* fallback on the packet */
|
||||||
|
@ -820,11 +815,13 @@ gst_ogg_mux_queue_pads (GstOggMux * ogg_mux)
|
||||||
}
|
}
|
||||||
if (!pad->have_type) {
|
if (!pad->have_type) {
|
||||||
GST_ERROR_OBJECT (pad, "mapper didn't recognise input stream "
|
GST_ERROR_OBJECT (pad, "mapper didn't recognise input stream "
|
||||||
"(pad caps: %" GST_PTR_FORMAT ")", GST_PAD_CAPS (pad));
|
"(pad caps: %" GST_PTR_FORMAT ")", caps);
|
||||||
} else {
|
} else {
|
||||||
GST_DEBUG_OBJECT (pad, "caps detected: %" GST_PTR_FORMAT,
|
GST_DEBUG_OBJECT (pad, "caps detected: %" GST_PTR_FORMAT,
|
||||||
pad->map.caps);
|
pad->map.caps);
|
||||||
}
|
}
|
||||||
|
if (caps)
|
||||||
|
gst_caps_unref (caps);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pad->have_type)
|
if (pad->have_type)
|
||||||
|
|
|
@ -604,9 +604,6 @@ gst_ogg_parse_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
GstOggStream *stream = (GstOggStream *) l->data;
|
GstOggStream *stream = (GstOggStream *) l->data;
|
||||||
GstBuffer *buf = GST_BUFFER (stream->headers->data);
|
GstBuffer *buf = GST_BUFFER (stream->headers->data);
|
||||||
|
|
||||||
buf = gst_buffer_make_writable (buf);
|
|
||||||
gst_buffer_set_caps (buf, caps);
|
|
||||||
|
|
||||||
result = gst_pad_push (ogg->srcpad, buf);
|
result = gst_pad_push (ogg->srcpad, buf);
|
||||||
if (result != GST_FLOW_OK)
|
if (result != GST_FLOW_OK)
|
||||||
return result;
|
return result;
|
||||||
|
@ -619,9 +616,6 @@ gst_ogg_parse_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
for (j = stream->headers->next; j != NULL; j = j->next) {
|
for (j = stream->headers->next; j != NULL; j = j->next) {
|
||||||
GstBuffer *buf = GST_BUFFER (j->data);
|
GstBuffer *buf = GST_BUFFER (j->data);
|
||||||
|
|
||||||
buf = gst_buffer_make_writable (buf);
|
|
||||||
gst_buffer_set_caps (buf, caps);
|
|
||||||
|
|
||||||
result = gst_pad_push (ogg->srcpad, buf);
|
result = gst_pad_push (ogg->srcpad, buf);
|
||||||
if (result != GST_FLOW_OK)
|
if (result != GST_FLOW_OK)
|
||||||
return result;
|
return result;
|
||||||
|
@ -648,10 +642,8 @@ gst_ogg_parse_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
g_list_length (stream->unknown_pages) + 1);
|
g_list_length (stream->unknown_pages) + 1);
|
||||||
|
|
||||||
for (k = stream->unknown_pages; k != NULL; k = k->next) {
|
for (k = stream->unknown_pages; k != NULL; k = k->next) {
|
||||||
GstBuffer *buf;
|
GstBuffer *buf = GST_BUFFER (k->data);
|
||||||
|
|
||||||
buf = gst_buffer_make_writable (GST_BUFFER (k->data));
|
|
||||||
gst_buffer_set_caps (buf, caps);
|
|
||||||
result = gst_pad_push (ogg->srcpad, buf);
|
result = gst_pad_push (ogg->srcpad, buf);
|
||||||
if (result != GST_FLOW_OK)
|
if (result != GST_FLOW_OK)
|
||||||
return result;
|
return result;
|
||||||
|
@ -671,7 +663,7 @@ gst_ogg_parse_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
GstBuffer *buf = stream->stored_buffers->data;
|
GstBuffer *buf = stream->stored_buffers->data;
|
||||||
|
|
||||||
buf = gst_buffer_make_writable (buf);
|
buf = gst_buffer_make_writable (buf);
|
||||||
gst_buffer_set_caps (buf, ogg->caps);
|
|
||||||
GST_BUFFER_TIMESTAMP (buf) = buffertimestamp;
|
GST_BUFFER_TIMESTAMP (buf) = buffertimestamp;
|
||||||
if (!keyframe) {
|
if (!keyframe) {
|
||||||
GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT);
|
GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT);
|
||||||
|
@ -689,7 +681,6 @@ gst_ogg_parse_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
pagebuffer = gst_buffer_make_writable (pagebuffer);
|
pagebuffer = gst_buffer_make_writable (pagebuffer);
|
||||||
gst_buffer_set_caps (pagebuffer, ogg->caps);
|
|
||||||
if (!keyframe) {
|
if (!keyframe) {
|
||||||
GST_BUFFER_FLAG_SET (pagebuffer, GST_BUFFER_FLAG_DELTA_UNIT);
|
GST_BUFFER_FLAG_SET (pagebuffer, GST_BUFFER_FLAG_DELTA_UNIT);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -622,16 +622,19 @@ gst_ogm_parse_stream_header (GstOgmParse * ogm, const guint8 * data, guint size)
|
||||||
goto cannot_decode;
|
goto cannot_decode;
|
||||||
|
|
||||||
if (ogm->srcpad) {
|
if (ogm->srcpad) {
|
||||||
GstCaps *current_caps = GST_PAD_CAPS (ogm->srcpad);
|
GstCaps *current_caps = gst_pad_get_current_caps (ogm->srcpad);
|
||||||
|
|
||||||
if (current_caps && caps && !gst_caps_is_equal (current_caps, caps)) {
|
if (current_caps) {
|
||||||
GST_WARNING_OBJECT (ogm, "Already an existing pad %s:%s",
|
if (caps && !gst_caps_is_equal (current_caps, caps)) {
|
||||||
GST_DEBUG_PAD_NAME (ogm->srcpad));
|
GST_WARNING_OBJECT (ogm, "Already an existing pad %s:%s",
|
||||||
gst_pad_set_active (ogm->srcpad, FALSE);
|
GST_DEBUG_PAD_NAME (ogm->srcpad));
|
||||||
gst_element_remove_pad (GST_ELEMENT (ogm), ogm->srcpad);
|
gst_pad_set_active (ogm->srcpad, FALSE);
|
||||||
ogm->srcpad = NULL;
|
gst_element_remove_pad (GST_ELEMENT (ogm), ogm->srcpad);
|
||||||
} else {
|
ogm->srcpad = NULL;
|
||||||
GST_DEBUG_OBJECT (ogm, "Existing pad has the same caps, do nothing");
|
} else {
|
||||||
|
GST_DEBUG_OBJECT (ogm, "Existing pad has the same caps, do nothing");
|
||||||
|
}
|
||||||
|
gst_caps_unref (current_caps);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -640,8 +643,8 @@ gst_ogm_parse_stream_header (GstOgmParse * ogm, const guint8 * data, guint size)
|
||||||
|
|
||||||
ogm->srcpad = gst_pad_new_from_template (ogm->srcpadtempl, "src");
|
ogm->srcpad = gst_pad_new_from_template (ogm->srcpadtempl, "src");
|
||||||
gst_pad_use_fixed_caps (ogm->srcpad);
|
gst_pad_use_fixed_caps (ogm->srcpad);
|
||||||
gst_pad_set_caps (ogm->srcpad, caps);
|
|
||||||
gst_pad_set_active (ogm->srcpad, TRUE);
|
gst_pad_set_active (ogm->srcpad, TRUE);
|
||||||
|
gst_pad_set_caps (ogm->srcpad, caps);
|
||||||
gst_element_add_pad (GST_ELEMENT (ogm), ogm->srcpad);
|
gst_element_add_pad (GST_ELEMENT (ogm), ogm->srcpad);
|
||||||
GST_INFO_OBJECT (ogm, "Added pad %s:%s with caps %" GST_PTR_FORMAT,
|
GST_INFO_OBJECT (ogm, "Added pad %s:%s with caps %" GST_PTR_FORMAT,
|
||||||
GST_DEBUG_PAD_NAME (ogm->srcpad), caps);
|
GST_DEBUG_PAD_NAME (ogm->srcpad), caps);
|
||||||
|
@ -714,8 +717,6 @@ gst_ogm_parse_comment_packet (GstOgmParse * ogm, GstBuffer * buf)
|
||||||
/* do not push packet downstream, just let parent unref it */
|
/* do not push packet downstream, just let parent unref it */
|
||||||
ret = GST_FLOW_OK;
|
ret = GST_FLOW_OK;
|
||||||
} else {
|
} else {
|
||||||
buf = gst_buffer_copy (buf);
|
|
||||||
gst_buffer_set_caps (buf, GST_PAD_CAPS (ogm->srcpad));
|
|
||||||
ret = gst_pad_push (ogm->srcpad, buf);
|
ret = gst_pad_push (ogm->srcpad, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -820,7 +821,6 @@ gst_ogm_parse_data_packet (GstOgmParse * ogm, GstBuffer * buf,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ogm->srcpad) {
|
if (ogm->srcpad) {
|
||||||
gst_buffer_set_caps (sbuf, GST_PAD_CAPS (ogm->srcpad));
|
|
||||||
GST_LOG_OBJECT (ogm, "Pushing buffer with ts=%" GST_TIME_FORMAT,
|
GST_LOG_OBJECT (ogm, "Pushing buffer with ts=%" GST_TIME_FORMAT,
|
||||||
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (sbuf)));
|
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (sbuf)));
|
||||||
ret = gst_pad_push (ogm->srcpad, sbuf);
|
ret = gst_pad_push (ogm->srcpad, sbuf);
|
||||||
|
|
|
@ -2423,10 +2423,13 @@ gst_base_text_overlay_video_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
* duration (we only use those estimated values internally though, we
|
* duration (we only use those estimated values internally though, we
|
||||||
* don't want to set bogus values on the buffer itself) */
|
* don't want to set bogus values on the buffer itself) */
|
||||||
if (stop == -1) {
|
if (stop == -1) {
|
||||||
|
GstCaps *caps;
|
||||||
GstStructure *s;
|
GstStructure *s;
|
||||||
gint fps_num, fps_denom;
|
gint fps_num, fps_denom;
|
||||||
|
|
||||||
s = gst_caps_get_structure (GST_PAD_CAPS (pad), 0);
|
/* FIXME, store this in setcaps */
|
||||||
|
caps = gst_pad_get_current_caps (pad);
|
||||||
|
s = gst_caps_get_structure (caps, 0);
|
||||||
if (gst_structure_get_fraction (s, "framerate", &fps_num, &fps_denom) &&
|
if (gst_structure_get_fraction (s, "framerate", &fps_num, &fps_denom) &&
|
||||||
fps_num && fps_denom) {
|
fps_num && fps_denom) {
|
||||||
GST_DEBUG_OBJECT (overlay, "estimating duration based on framerate");
|
GST_DEBUG_OBJECT (overlay, "estimating duration based on framerate");
|
||||||
|
@ -2435,6 +2438,7 @@ gst_base_text_overlay_video_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
GST_WARNING_OBJECT (overlay, "no duration, assuming minimal duration");
|
GST_WARNING_OBJECT (overlay, "no duration, assuming minimal duration");
|
||||||
stop = start + 1; /* we need to assume some interval */
|
stop = start + 1; /* we need to assume some interval */
|
||||||
}
|
}
|
||||||
|
gst_caps_unref (caps);
|
||||||
}
|
}
|
||||||
|
|
||||||
gst_object_sync_values (G_OBJECT (overlay), GST_BUFFER_TIMESTAMP (buffer));
|
gst_object_sync_values (G_OBJECT (overlay), GST_BUFFER_TIMESTAMP (buffer));
|
||||||
|
|
|
@ -506,7 +506,6 @@ gst_text_render_chain (GstPad * pad, GstBuffer * inbuf)
|
||||||
|
|
||||||
GST_DEBUG ("Allocating buffer WxH = %dx%d", render->width, render->height);
|
GST_DEBUG ("Allocating buffer WxH = %dx%d", render->width, render->height);
|
||||||
outbuf = gst_buffer_new_and_alloc (render->width * render->height * 4);
|
outbuf = gst_buffer_new_and_alloc (render->width * render->height * 4);
|
||||||
gst_buffer_set_caps (outbuf, caps);
|
|
||||||
|
|
||||||
gst_buffer_copy_into (outbuf, inbuf, GST_BUFFER_COPY_TIMESTAMPS, 0, -1);
|
gst_buffer_copy_into (outbuf, inbuf, GST_BUFFER_COPY_TIMESTAMPS, 0, -1);
|
||||||
data = gst_buffer_map (outbuf, &size, NULL, GST_MAP_WRITE);
|
data = gst_buffer_map (outbuf, &size, NULL, GST_MAP_WRITE);
|
||||||
|
|
|
@ -1122,8 +1122,6 @@ theora_handle_image (GstTheoraDec * dec, th_ycbcr_buffer buf, GstBuffer ** out)
|
||||||
if (G_UNLIKELY (result != GST_FLOW_OK))
|
if (G_UNLIKELY (result != GST_FLOW_OK))
|
||||||
goto no_buffer;
|
goto no_buffer;
|
||||||
|
|
||||||
gst_buffer_set_caps (*out, GST_PAD_CAPS (dec->srcpad));
|
|
||||||
|
|
||||||
data = gst_buffer_map (*out, &size, NULL, GST_MAP_WRITE);
|
data = gst_buffer_map (*out, &size, NULL, GST_MAP_WRITE);
|
||||||
|
|
||||||
/* FIXME, we can do things slightly more efficient when we know that
|
/* FIXME, we can do things slightly more efficient when we know that
|
||||||
|
|
|
@ -696,7 +696,6 @@ theora_buffer_from_packet (GstTheoraEnc * enc, ogg_packet * packet,
|
||||||
}
|
}
|
||||||
|
|
||||||
gst_buffer_fill (buf, 0, packet->packet, packet->bytes);
|
gst_buffer_fill (buf, 0, packet->packet, packet->bytes);
|
||||||
gst_buffer_set_caps (buf, GST_PAD_CAPS (enc->srcpad));
|
|
||||||
/* see ext/ogg/README; OFFSET_END takes "our" granulepos, OFFSET its
|
/* see ext/ogg/README; OFFSET_END takes "our" granulepos, OFFSET its
|
||||||
* time representation */
|
* time representation */
|
||||||
GST_BUFFER_OFFSET_END (buf) =
|
GST_BUFFER_OFFSET_END (buf) =
|
||||||
|
@ -1208,9 +1207,6 @@ theora_enc_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
caps = theora_set_header_on_caps (caps, buffers);
|
caps = theora_set_header_on_caps (caps, buffers);
|
||||||
GST_DEBUG ("here are the caps: %" GST_PTR_FORMAT, caps);
|
GST_DEBUG ("here are the caps: %" GST_PTR_FORMAT, caps);
|
||||||
gst_pad_set_caps (enc->srcpad, caps);
|
gst_pad_set_caps (enc->srcpad, caps);
|
||||||
|
|
||||||
g_slist_foreach (buffers, (GFunc) gst_buffer_set_caps, caps);
|
|
||||||
|
|
||||||
gst_caps_unref (caps);
|
gst_caps_unref (caps);
|
||||||
|
|
||||||
/* push out the header buffers */
|
/* push out the header buffers */
|
||||||
|
|
|
@ -364,8 +364,6 @@ theora_parse_push_headers (GstTheoraParse * parse)
|
||||||
GstBuffer *buf;
|
GstBuffer *buf;
|
||||||
|
|
||||||
if ((buf = parse->streamheader[i])) {
|
if ((buf = parse->streamheader[i])) {
|
||||||
buf = gst_buffer_make_writable (buf);
|
|
||||||
gst_buffer_set_caps (buf, GST_PAD_CAPS (parse->srcpad));
|
|
||||||
gst_pad_push (parse->srcpad, buf);
|
gst_pad_push (parse->srcpad, buf);
|
||||||
parse->streamheader[i] = NULL;
|
parse->streamheader[i] = NULL;
|
||||||
}
|
}
|
||||||
|
@ -498,8 +496,6 @@ theora_parse_push_buffer (GstTheoraParse * parse, GstBuffer * buf,
|
||||||
GST_BUFFER_TIMESTAMP (buf) = this_time;
|
GST_BUFFER_TIMESTAMP (buf) = this_time;
|
||||||
GST_BUFFER_DURATION (buf) = next_time - this_time;
|
GST_BUFFER_DURATION (buf) = next_time - this_time;
|
||||||
|
|
||||||
gst_buffer_set_caps (buf, GST_PAD_CAPS (parse->srcpad));
|
|
||||||
|
|
||||||
if (parse->times)
|
if (parse->times)
|
||||||
theora_parse_munge_granulepos (parse, buf, keyframe, frame);
|
theora_parse_munge_granulepos (parse, buf, keyframe, frame);
|
||||||
|
|
||||||
|
|
|
@ -914,7 +914,6 @@ vorbis_handle_data_packet (GstVorbisDec * vd, ogg_packet * packet,
|
||||||
|
|
||||||
/* alloc buffer for it */
|
/* alloc buffer for it */
|
||||||
out = gst_buffer_new_and_alloc (size);
|
out = gst_buffer_new_and_alloc (size);
|
||||||
gst_buffer_set_caps (out, GST_PAD_CAPS (vd->srcpad));
|
|
||||||
|
|
||||||
/* get samples ready for reading now, should be sample_count */
|
/* get samples ready for reading now, should be sample_count */
|
||||||
#ifdef USE_TREMOLO
|
#ifdef USE_TREMOLO
|
||||||
|
|
|
@ -840,8 +840,6 @@ gst_vorbis_enc_buffer_from_packet (GstVorbisEnc * vorbisenc,
|
||||||
vorbisenc->next_discont = FALSE;
|
vorbisenc->next_discont = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
gst_buffer_set_caps (outbuf, vorbisenc->srccaps);
|
|
||||||
|
|
||||||
GST_LOG_OBJECT (vorbisenc, "encoded buffer of %d bytes",
|
GST_LOG_OBJECT (vorbisenc, "encoded buffer of %d bytes",
|
||||||
gst_buffer_get_size (outbuf));
|
gst_buffer_get_size (outbuf));
|
||||||
return outbuf;
|
return outbuf;
|
||||||
|
@ -862,8 +860,6 @@ gst_vorbis_enc_buffer_from_header_packet (GstVorbisEnc * vorbisenc,
|
||||||
GST_BUFFER_TIMESTAMP (outbuf) = GST_CLOCK_TIME_NONE;
|
GST_BUFFER_TIMESTAMP (outbuf) = GST_CLOCK_TIME_NONE;
|
||||||
GST_BUFFER_DURATION (outbuf) = GST_CLOCK_TIME_NONE;
|
GST_BUFFER_DURATION (outbuf) = GST_CLOCK_TIME_NONE;
|
||||||
|
|
||||||
gst_buffer_set_caps (outbuf, vorbisenc->srccaps);
|
|
||||||
|
|
||||||
GST_DEBUG ("created header packet buffer, %d bytes",
|
GST_DEBUG ("created header packet buffer, %d bytes",
|
||||||
gst_buffer_get_size (outbuf));
|
gst_buffer_get_size (outbuf));
|
||||||
return outbuf;
|
return outbuf;
|
||||||
|
@ -1099,10 +1095,6 @@ gst_vorbis_enc_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
GST_DEBUG ("here are the caps: %" GST_PTR_FORMAT, caps);
|
GST_DEBUG ("here are the caps: %" GST_PTR_FORMAT, caps);
|
||||||
gst_pad_set_caps (vorbisenc->srcpad, caps);
|
gst_pad_set_caps (vorbisenc->srcpad, caps);
|
||||||
|
|
||||||
gst_buffer_set_caps (buf1, caps);
|
|
||||||
gst_buffer_set_caps (buf2, caps);
|
|
||||||
gst_buffer_set_caps (buf3, caps);
|
|
||||||
|
|
||||||
/* push out buffers */
|
/* push out buffers */
|
||||||
/* push_buffer takes the reference even for failure */
|
/* push_buffer takes the reference even for failure */
|
||||||
if ((ret = gst_vorbis_enc_push_buffer (vorbisenc, buf1)) != GST_FLOW_OK)
|
if ((ret = gst_vorbis_enc_push_buffer (vorbisenc, buf1)) != GST_FLOW_OK)
|
||||||
|
|
|
@ -232,14 +232,8 @@ vorbis_parse_push_headers (GstVorbisParse * parse)
|
||||||
vorbis_parse_drain_event_queue (parse);
|
vorbis_parse_drain_event_queue (parse);
|
||||||
|
|
||||||
/* push out buffers, ignoring return value... */
|
/* push out buffers, ignoring return value... */
|
||||||
outbuf1 = gst_buffer_make_writable (outbuf1);
|
|
||||||
gst_buffer_set_caps (outbuf1, GST_PAD_CAPS (parse->srcpad));
|
|
||||||
gst_pad_push (parse->srcpad, outbuf1);
|
gst_pad_push (parse->srcpad, outbuf1);
|
||||||
outbuf2 = gst_buffer_make_writable (outbuf2);
|
|
||||||
gst_buffer_set_caps (outbuf2, GST_PAD_CAPS (parse->srcpad));
|
|
||||||
gst_pad_push (parse->srcpad, outbuf2);
|
gst_pad_push (parse->srcpad, outbuf2);
|
||||||
outbuf3 = gst_buffer_make_writable (outbuf3);
|
|
||||||
gst_buffer_set_caps (outbuf3, GST_PAD_CAPS (parse->srcpad));
|
|
||||||
gst_pad_push (parse->srcpad, outbuf3);
|
gst_pad_push (parse->srcpad, outbuf3);
|
||||||
|
|
||||||
g_list_free (parse->streamheader);
|
g_list_free (parse->streamheader);
|
||||||
|
@ -278,8 +272,6 @@ vorbis_parse_push_buffer (GstVorbisParse * parse, GstBuffer * buf,
|
||||||
GST_BUFFER_TIMESTAMP (buf) =
|
GST_BUFFER_TIMESTAMP (buf) =
|
||||||
GST_BUFFER_OFFSET (buf) - GST_BUFFER_DURATION (buf);
|
GST_BUFFER_OFFSET (buf) - GST_BUFFER_DURATION (buf);
|
||||||
|
|
||||||
gst_buffer_set_caps (buf, GST_PAD_CAPS (parse->srcpad));
|
|
||||||
|
|
||||||
return gst_pad_push (parse->srcpad, buf);
|
return gst_pad_push (parse->srcpad, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -981,10 +981,6 @@ gst_app_src_create (GstBaseSrc * bsrc, guint64 offset, guint size,
|
||||||
/* only update the offset when in random_access mode */
|
/* only update the offset when in random_access mode */
|
||||||
if (priv->stream_type == GST_APP_STREAM_TYPE_RANDOM_ACCESS)
|
if (priv->stream_type == GST_APP_STREAM_TYPE_RANDOM_ACCESS)
|
||||||
priv->offset += buf_size;
|
priv->offset += buf_size;
|
||||||
if (caps) {
|
|
||||||
*buf = gst_buffer_make_writable (*buf);
|
|
||||||
gst_buffer_set_caps (*buf, caps);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* signal that we removed an item */
|
/* signal that we removed an item */
|
||||||
g_cond_broadcast (priv->cond);
|
g_cond_broadcast (priv->cond);
|
||||||
|
|
|
@ -49,24 +49,31 @@ gst_audio_frame_byte_size (GstPad * pad)
|
||||||
|
|
||||||
int width = 0;
|
int width = 0;
|
||||||
int channels = 0;
|
int channels = 0;
|
||||||
const GstCaps *caps = NULL;
|
GstCaps *caps;
|
||||||
GstStructure *structure;
|
GstStructure *structure;
|
||||||
|
|
||||||
/* get caps of pad */
|
/* get caps of pad */
|
||||||
caps = GST_PAD_CAPS (pad);
|
caps = gst_pad_get_current_caps (pad);
|
||||||
|
|
||||||
if (caps == NULL) {
|
if (caps == NULL)
|
||||||
/* ERROR: could not get caps of pad */
|
goto no_caps;
|
||||||
g_warning ("gstaudio: could not get caps of pad %s:%s\n",
|
|
||||||
GST_DEBUG_PAD_NAME (pad));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
structure = gst_caps_get_structure (caps, 0);
|
structure = gst_caps_get_structure (caps, 0);
|
||||||
|
|
||||||
gst_structure_get_int (structure, "width", &width);
|
gst_structure_get_int (structure, "width", &width);
|
||||||
gst_structure_get_int (structure, "channels", &channels);
|
gst_structure_get_int (structure, "channels", &channels);
|
||||||
|
gst_caps_unref (caps);
|
||||||
|
|
||||||
return (width / 8) * channels;
|
return (width / 8) * channels;
|
||||||
|
|
||||||
|
/* ERRORS */
|
||||||
|
no_caps:
|
||||||
|
{
|
||||||
|
/* ERROR: could not get caps of pad */
|
||||||
|
g_warning ("gstaudio: could not get caps of pad %s:%s\n",
|
||||||
|
GST_DEBUG_PAD_NAME (pad));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -113,34 +120,38 @@ gst_audio_duration_from_pad_buffer (GstPad * pad, GstBuffer * buf)
|
||||||
int width = 0;
|
int width = 0;
|
||||||
int channels = 0;
|
int channels = 0;
|
||||||
int rate = 0;
|
int rate = 0;
|
||||||
|
GstCaps *caps;
|
||||||
GstClockTime length;
|
|
||||||
|
|
||||||
const GstCaps *caps = NULL;
|
|
||||||
GstStructure *structure;
|
GstStructure *structure;
|
||||||
|
|
||||||
g_assert (GST_IS_BUFFER (buf));
|
g_assert (GST_IS_BUFFER (buf));
|
||||||
|
|
||||||
/* get caps of pad */
|
/* get caps of pad */
|
||||||
caps = GST_PAD_CAPS (pad);
|
caps = gst_pad_get_current_caps (pad);
|
||||||
if (caps == NULL) {
|
if (caps == NULL)
|
||||||
|
goto no_caps;
|
||||||
|
|
||||||
|
structure = gst_caps_get_structure (caps, 0);
|
||||||
|
bytes = gst_buffer_get_size (buf);
|
||||||
|
gst_structure_get_int (structure, "width", &width);
|
||||||
|
gst_structure_get_int (structure, "channels", &channels);
|
||||||
|
gst_structure_get_int (structure, "rate", &rate);
|
||||||
|
gst_caps_unref (caps);
|
||||||
|
|
||||||
|
g_assert (bytes != 0);
|
||||||
|
g_assert (width != 0);
|
||||||
|
g_assert (channels != 0);
|
||||||
|
g_assert (rate != 0);
|
||||||
|
|
||||||
|
return (bytes * 8 * GST_SECOND) / (rate * channels * width);
|
||||||
|
|
||||||
|
/* ERRORS */
|
||||||
|
no_caps:
|
||||||
|
{
|
||||||
/* ERROR: could not get caps of pad */
|
/* ERROR: could not get caps of pad */
|
||||||
g_warning ("gstaudio: could not get caps of pad %s:%s\n",
|
g_warning ("gstaudio: could not get caps of pad %s:%s\n",
|
||||||
GST_DEBUG_PAD_NAME (pad));
|
GST_DEBUG_PAD_NAME (pad));
|
||||||
length = GST_CLOCK_TIME_NONE;
|
return GST_CLOCK_TIME_NONE;
|
||||||
} else {
|
|
||||||
structure = gst_caps_get_structure (caps, 0);
|
|
||||||
bytes = gst_buffer_get_size (buf);
|
|
||||||
gst_structure_get_int (structure, "width", &width);
|
|
||||||
gst_structure_get_int (structure, "channels", &channels);
|
|
||||||
gst_structure_get_int (structure, "rate", &rate);
|
|
||||||
|
|
||||||
g_assert (bytes != 0);
|
|
||||||
g_assert (width != 0);
|
|
||||||
g_assert (channels != 0);
|
|
||||||
g_assert (rate != 0);
|
|
||||||
length = (bytes * 8 * GST_SECOND) / (rate * channels * width);
|
|
||||||
}
|
}
|
||||||
return length;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1613,10 +1613,6 @@ gst_cdda_base_src_create (GstPushSrc * pushsrc, GstBuffer ** buffer)
|
||||||
return GST_FLOW_ERROR;
|
return GST_FLOW_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GST_BUFFER_CAPS (buf) == NULL) {
|
|
||||||
gst_buffer_set_caps (buf, GST_PAD_CAPS (GST_BASE_SRC_PAD (src)));
|
|
||||||
}
|
|
||||||
|
|
||||||
format = GST_FORMAT_TIME;
|
format = GST_FORMAT_TIME;
|
||||||
if (gst_pad_query_position (GST_BASE_SRC_PAD (src), &format, &qry_position)) {
|
if (gst_pad_query_position (GST_BASE_SRC_PAD (src), &format, &qry_position)) {
|
||||||
gint64 next_ts = 0;
|
gint64 next_ts = 0;
|
||||||
|
|
|
@ -392,22 +392,14 @@ gst_base_rtp_depayload_chain (GstPad * pad, GstBuffer * in)
|
||||||
not_negotiated:
|
not_negotiated:
|
||||||
{
|
{
|
||||||
/* this is not fatal but should be filtered earlier */
|
/* this is not fatal but should be filtered earlier */
|
||||||
if (GST_BUFFER_CAPS (in) == NULL) {
|
GST_ELEMENT_ERROR (filter, CORE, NEGOTIATION,
|
||||||
GST_ELEMENT_ERROR (filter, CORE, NEGOTIATION,
|
("No RTP format was negotiated."),
|
||||||
("No RTP format was negotiated."),
|
("Input buffers need to have RTP caps set on them. This is usually "
|
||||||
("Input buffers need to have RTP caps set on them. This is usually "
|
"achieved by setting the 'caps' property of the upstream source "
|
||||||
"achieved by setting the 'caps' property of the upstream source "
|
"element (often udpsrc or appsrc), or by putting a capsfilter "
|
||||||
"element (often udpsrc or appsrc), or by putting a capsfilter "
|
"element before the depayloader and setting the 'caps' property "
|
||||||
"element before the depayloader and setting the 'caps' property "
|
"on that. Also see http://cgit.freedesktop.org/gstreamer/"
|
||||||
"on that. Also see http://cgit.freedesktop.org/gstreamer/"
|
"gst-plugins-good/tree/gst/rtp/README"));
|
||||||
"gst-plugins-good/tree/gst/rtp/README"));
|
|
||||||
} else {
|
|
||||||
GST_ELEMENT_ERROR (filter, CORE, NEGOTIATION,
|
|
||||||
("No RTP format was negotiated."),
|
|
||||||
("RTP caps on input buffer were rejected, most likely because they "
|
|
||||||
"were incomplete or contained wrong values. Check the debug log "
|
|
||||||
"for more information."));
|
|
||||||
}
|
|
||||||
gst_buffer_unref (in);
|
gst_buffer_unref (in);
|
||||||
return GST_FLOW_NOT_NEGOTIATED;
|
return GST_FLOW_NOT_NEGOTIATED;
|
||||||
}
|
}
|
||||||
|
@ -550,7 +542,6 @@ typedef struct
|
||||||
{
|
{
|
||||||
GstBaseRTPDepayload *depayload;
|
GstBaseRTPDepayload *depayload;
|
||||||
GstBaseRTPDepayloadClass *bclass;
|
GstBaseRTPDepayloadClass *bclass;
|
||||||
GstCaps *caps;
|
|
||||||
gboolean do_ts;
|
gboolean do_ts;
|
||||||
gboolean rtptime;
|
gboolean rtptime;
|
||||||
} HeaderData;
|
} HeaderData;
|
||||||
|
@ -561,7 +552,6 @@ set_headers (GstBuffer ** buffer, guint idx, HeaderData * data)
|
||||||
GstBaseRTPDepayload *depayload = data->depayload;
|
GstBaseRTPDepayload *depayload = data->depayload;
|
||||||
|
|
||||||
*buffer = gst_buffer_make_writable (*buffer);
|
*buffer = gst_buffer_make_writable (*buffer);
|
||||||
gst_buffer_set_caps (*buffer, data->caps);
|
|
||||||
|
|
||||||
/* set the timestamp if we must and can */
|
/* set the timestamp if we must and can */
|
||||||
if (data->bclass->set_gst_timestamp && data->do_ts)
|
if (data->bclass->set_gst_timestamp && data->do_ts)
|
||||||
|
@ -583,7 +573,6 @@ gst_base_rtp_depayload_prepare_push (GstBaseRTPDepayload * filter,
|
||||||
HeaderData data;
|
HeaderData data;
|
||||||
|
|
||||||
data.depayload = filter;
|
data.depayload = filter;
|
||||||
data.caps = GST_PAD_CAPS (filter->srcpad);
|
|
||||||
data.rtptime = rtptime;
|
data.rtptime = rtptime;
|
||||||
data.do_ts = do_ts;
|
data.do_ts = do_ts;
|
||||||
data.bclass = GST_BASE_RTP_DEPAYLOAD_GET_CLASS (filter);
|
data.bclass = GST_BASE_RTP_DEPAYLOAD_GET_CLASS (filter);
|
||||||
|
|
|
@ -708,7 +708,6 @@ typedef struct
|
||||||
guint32 ssrc;
|
guint32 ssrc;
|
||||||
guint16 seqnum;
|
guint16 seqnum;
|
||||||
guint8 pt;
|
guint8 pt;
|
||||||
GstCaps *caps;
|
|
||||||
GstClockTime timestamp;
|
GstClockTime timestamp;
|
||||||
guint64 offset;
|
guint64 offset;
|
||||||
guint32 rtptime;
|
guint32 rtptime;
|
||||||
|
@ -740,7 +739,6 @@ set_headers (GstBuffer ** buffer, guint group, guint idx, HeaderData * data)
|
||||||
gst_rtp_buffer_set_timestamp (&rtp, data->rtptime);
|
gst_rtp_buffer_set_timestamp (&rtp, data->rtptime);
|
||||||
gst_rtp_buffer_unmap (&rtp);
|
gst_rtp_buffer_unmap (&rtp);
|
||||||
|
|
||||||
gst_buffer_set_caps (*buffer, data->caps);
|
|
||||||
/* increment the seqnum for each buffer */
|
/* increment the seqnum for each buffer */
|
||||||
data->seqnum++;
|
data->seqnum++;
|
||||||
|
|
||||||
|
@ -770,7 +768,6 @@ gst_basertppayload_prepare_push (GstBaseRTPPayload * payload,
|
||||||
data.seqnum = payload->seqnum;
|
data.seqnum = payload->seqnum;
|
||||||
data.ssrc = payload->current_ssrc;
|
data.ssrc = payload->current_ssrc;
|
||||||
data.pt = payload->pt;
|
data.pt = payload->pt;
|
||||||
data.caps = GST_PAD_CAPS (payload->srcpad);
|
|
||||||
|
|
||||||
/* find the first buffer with a timestamp */
|
/* find the first buffer with a timestamp */
|
||||||
if (is_list) {
|
if (is_list) {
|
||||||
|
|
|
@ -468,7 +468,6 @@ gst_tag_demux_trim_buffer (GstTagDemux * tagdemux, GstBuffer ** buf_ref,
|
||||||
|
|
||||||
GST_BUFFER_OFFSET (buf) = out_offset;
|
GST_BUFFER_OFFSET (buf) = out_offset;
|
||||||
GST_BUFFER_OFFSET_END (buf) = out_offset + out_size;
|
GST_BUFFER_OFFSET_END (buf) = out_offset + out_size;
|
||||||
gst_buffer_set_caps (buf, tagdemux->priv->src_caps);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -709,10 +708,6 @@ gst_tag_demux_chain (GstPad * pad, GstBuffer * buf)
|
||||||
demux->priv->send_tag_event = FALSE;
|
demux->priv->send_tag_event = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ensure the caps are set correctly */
|
|
||||||
outbuf = gst_buffer_make_writable (outbuf);
|
|
||||||
gst_buffer_set_caps (outbuf, GST_PAD_CAPS (demux->priv->srcpad));
|
|
||||||
|
|
||||||
GST_LOG_OBJECT (demux, "Pushing buffer %p", outbuf);
|
GST_LOG_OBJECT (demux, "Pushing buffer %p", outbuf);
|
||||||
|
|
||||||
return gst_pad_push (demux->priv->srcpad, outbuf);
|
return gst_pad_push (demux->priv->srcpad, outbuf);
|
||||||
|
@ -1327,8 +1322,6 @@ gst_tag_demux_read_range (GstTagDemux * demux,
|
||||||
|
|
||||||
/* this should only happen in streaming mode */
|
/* this should only happen in streaming mode */
|
||||||
g_assert (*buffer != NULL);
|
g_assert (*buffer != NULL);
|
||||||
|
|
||||||
gst_buffer_set_caps (*buffer, demux->priv->src_caps);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -551,12 +551,15 @@ static GList *
|
||||||
gst_tag_to_metadata_block_picture (const gchar * tag,
|
gst_tag_to_metadata_block_picture (const gchar * tag,
|
||||||
const GValue * image_value)
|
const GValue * image_value)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
gchar *comment_data, *data_result;
|
gchar *comment_data, *data_result;
|
||||||
const gchar *mime_type;
|
const gchar *mime_type;
|
||||||
guint mime_type_len;
|
guint mime_type_len;
|
||||||
GstStructure *mime_struct;
|
GstStructure *mime_struct;
|
||||||
GstBuffer *buffer;
|
GstBuffer *buffer;
|
||||||
|
#endif
|
||||||
GList *l = NULL;
|
GList *l = NULL;
|
||||||
|
#if 0
|
||||||
guint8 *data;
|
guint8 *data;
|
||||||
gsize size;
|
gsize size;
|
||||||
GstByteWriter writer;
|
GstByteWriter writer;
|
||||||
|
@ -564,9 +567,14 @@ gst_tag_to_metadata_block_picture (const gchar * tag,
|
||||||
gint width = 0, height = 0;
|
gint width = 0, height = 0;
|
||||||
guint8 *metadata_block;
|
guint8 *metadata_block;
|
||||||
guint metadata_block_len;
|
guint metadata_block_len;
|
||||||
|
#endif
|
||||||
|
|
||||||
g_return_val_if_fail (image_value != NULL, NULL);
|
g_return_val_if_fail (image_value != NULL, NULL);
|
||||||
|
|
||||||
|
/* FIXME, no more buffer caps */
|
||||||
|
g_assert_not_reached ();
|
||||||
|
|
||||||
|
#if 0
|
||||||
buffer = gst_value_get_buffer (image_value);
|
buffer = gst_value_get_buffer (image_value);
|
||||||
g_return_val_if_fail (gst_caps_is_fixed (buffer->caps), NULL);
|
g_return_val_if_fail (gst_caps_is_fixed (buffer->caps), NULL);
|
||||||
mime_struct = gst_caps_get_structure (buffer->caps, 0);
|
mime_struct = gst_caps_get_structure (buffer->caps, 0);
|
||||||
|
@ -621,6 +629,7 @@ gst_tag_to_metadata_block_picture (const gchar * tag,
|
||||||
g_free (comment_data);
|
g_free (comment_data);
|
||||||
|
|
||||||
l = g_list_append (l, data_result);
|
l = g_list_append (l, data_result);
|
||||||
|
#endif
|
||||||
|
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|
|
@ -612,8 +612,9 @@ gst_tag_image_data_to_image_buffer (const guint8 * image_data,
|
||||||
image_type, NULL);
|
image_type, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
gst_buffer_set_caps (image, caps);
|
g_warning ("extra image data can't be set");
|
||||||
gst_caps_unref (caps);
|
gst_caps_unref (caps);
|
||||||
|
|
||||||
return image;
|
return image;
|
||||||
|
|
||||||
/* ERRORS */
|
/* ERRORS */
|
||||||
|
|
|
@ -233,6 +233,7 @@ link_failed:
|
||||||
/**
|
/**
|
||||||
* gst_video_convert_frame:
|
* gst_video_convert_frame:
|
||||||
* @buf: a #GstBuffer
|
* @buf: a #GstBuffer
|
||||||
|
* @from_caps: the #GstCaps to convert from
|
||||||
* @to_caps: the #GstCaps to convert to
|
* @to_caps: the #GstCaps to convert to
|
||||||
* @timeout: the maximum amount of time allowed for the processing.
|
* @timeout: the maximum amount of time allowed for the processing.
|
||||||
* @err: pointer to a #GError. Can be %NULL.
|
* @err: pointer to a #GError. Can be %NULL.
|
||||||
|
@ -250,23 +251,21 @@ link_failed:
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
GstBuffer *
|
GstBuffer *
|
||||||
gst_video_convert_frame (GstBuffer * buf, const GstCaps * to_caps,
|
gst_video_convert_frame (GstBuffer * buf, GstCaps * from_caps,
|
||||||
GstClockTime timeout, GError ** err)
|
const GstCaps * to_caps, GstClockTime timeout, GError ** err)
|
||||||
{
|
{
|
||||||
GstMessage *msg;
|
GstMessage *msg;
|
||||||
GstBuffer *result = NULL;
|
GstBuffer *result = NULL;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
GstBus *bus;
|
GstBus *bus;
|
||||||
GstCaps *from_caps, *to_caps_copy = NULL;
|
GstCaps *to_caps_copy = NULL;
|
||||||
GstFlowReturn ret;
|
GstFlowReturn ret;
|
||||||
GstElement *pipeline, *src, *sink;
|
GstElement *pipeline, *src, *sink;
|
||||||
guint i, n;
|
guint i, n;
|
||||||
|
|
||||||
g_return_val_if_fail (buf != NULL, NULL);
|
g_return_val_if_fail (buf != NULL, NULL);
|
||||||
g_return_val_if_fail (to_caps != NULL, NULL);
|
g_return_val_if_fail (to_caps != NULL, NULL);
|
||||||
g_return_val_if_fail (GST_BUFFER_CAPS (buf) != NULL, NULL);
|
g_return_val_if_fail (from_caps != NULL, NULL);
|
||||||
|
|
||||||
from_caps = GST_BUFFER_CAPS (buf);
|
|
||||||
|
|
||||||
to_caps_copy = gst_caps_new_empty ();
|
to_caps_copy = gst_caps_new_empty ();
|
||||||
n = gst_caps_get_size (to_caps);
|
n = gst_caps_get_size (to_caps);
|
||||||
|
@ -597,14 +596,15 @@ done:
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
gst_video_convert_frame_async (GstBuffer * buf, const GstCaps * to_caps,
|
gst_video_convert_frame_async (GstBuffer * buf, GstCaps * from_caps,
|
||||||
GstClockTime timeout, GstVideoConvertFrameCallback callback,
|
const GstCaps * to_caps, GstClockTime timeout,
|
||||||
gpointer user_data, GDestroyNotify destroy_notify)
|
GstVideoConvertFrameCallback callback, gpointer user_data,
|
||||||
|
GDestroyNotify destroy_notify)
|
||||||
{
|
{
|
||||||
GMainContext *context = NULL;
|
GMainContext *context = NULL;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
GstBus *bus;
|
GstBus *bus;
|
||||||
GstCaps *from_caps, *to_caps_copy = NULL;
|
GstCaps *to_caps_copy = NULL;
|
||||||
GstElement *pipeline, *src, *sink;
|
GstElement *pipeline, *src, *sink;
|
||||||
guint i, n;
|
guint i, n;
|
||||||
GSource *source;
|
GSource *source;
|
||||||
|
@ -612,7 +612,7 @@ gst_video_convert_frame_async (GstBuffer * buf, const GstCaps * to_caps,
|
||||||
|
|
||||||
g_return_if_fail (buf != NULL);
|
g_return_if_fail (buf != NULL);
|
||||||
g_return_if_fail (to_caps != NULL);
|
g_return_if_fail (to_caps != NULL);
|
||||||
g_return_if_fail (GST_BUFFER_CAPS (buf) != NULL);
|
g_return_if_fail (from_caps != NULL);
|
||||||
g_return_if_fail (callback != NULL);
|
g_return_if_fail (callback != NULL);
|
||||||
|
|
||||||
context = g_main_context_get_thread_default ();
|
context = g_main_context_get_thread_default ();
|
||||||
|
@ -620,8 +620,6 @@ gst_video_convert_frame_async (GstBuffer * buf, const GstCaps * to_caps,
|
||||||
if (!context)
|
if (!context)
|
||||||
context = g_main_context_default ();
|
context = g_main_context_default ();
|
||||||
|
|
||||||
from_caps = GST_BUFFER_CAPS (buf);
|
|
||||||
|
|
||||||
to_caps_copy = gst_caps_new_empty ();
|
to_caps_copy = gst_caps_new_empty ();
|
||||||
n = gst_caps_get_size (to_caps);
|
n = gst_caps_get_size (to_caps);
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
|
|
|
@ -65,37 +65,52 @@ gst_video_frame_rate (GstPad * pad)
|
||||||
{
|
{
|
||||||
const GValue *fps;
|
const GValue *fps;
|
||||||
gchar *fps_string;
|
gchar *fps_string;
|
||||||
|
GstCaps *caps = NULL;
|
||||||
const GstCaps *caps = NULL;
|
|
||||||
GstStructure *structure;
|
GstStructure *structure;
|
||||||
|
|
||||||
/* get pad caps */
|
/* get pad caps */
|
||||||
caps = GST_PAD_CAPS (pad);
|
caps = gst_pad_get_current_caps (pad);
|
||||||
if (caps == NULL) {
|
if (caps == NULL)
|
||||||
g_warning ("gstvideo: failed to get caps of pad %s:%s",
|
goto no_caps;
|
||||||
GST_DEBUG_PAD_NAME (pad));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
structure = gst_caps_get_structure (caps, 0);
|
structure = gst_caps_get_structure (caps, 0);
|
||||||
if ((fps = gst_structure_get_value (structure, "framerate")) == NULL) {
|
if ((fps = gst_structure_get_value (structure, "framerate")) == NULL)
|
||||||
g_warning ("gstvideo: failed to get framerate property of pad %s:%s",
|
goto no_framerate;
|
||||||
GST_DEBUG_PAD_NAME (pad));
|
|
||||||
return NULL;
|
if (!GST_VALUE_HOLDS_FRACTION (fps))
|
||||||
}
|
goto no_fraction;
|
||||||
if (!GST_VALUE_HOLDS_FRACTION (fps)) {
|
|
||||||
g_warning
|
|
||||||
("gstvideo: framerate property of pad %s:%s is not of type Fraction",
|
|
||||||
GST_DEBUG_PAD_NAME (pad));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
fps_string = gst_value_serialize (fps);
|
fps_string = gst_value_serialize (fps);
|
||||||
GST_DEBUG ("Framerate request on pad %s:%s: %s",
|
GST_DEBUG ("Framerate request on pad %s:%s: %s",
|
||||||
GST_DEBUG_PAD_NAME (pad), fps_string);
|
GST_DEBUG_PAD_NAME (pad), fps_string);
|
||||||
g_free (fps_string);
|
g_free (fps_string);
|
||||||
|
|
||||||
|
gst_caps_unref (caps);
|
||||||
|
|
||||||
return fps;
|
return fps;
|
||||||
|
|
||||||
|
/* ERRORS */
|
||||||
|
no_caps:
|
||||||
|
{
|
||||||
|
g_warning ("gstvideo: failed to get caps of pad %s:%s",
|
||||||
|
GST_DEBUG_PAD_NAME (pad));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
no_framerate:
|
||||||
|
{
|
||||||
|
g_warning ("gstvideo: failed to get framerate property of pad %s:%s",
|
||||||
|
GST_DEBUG_PAD_NAME (pad));
|
||||||
|
gst_caps_unref (caps);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
no_fraction:
|
||||||
|
{
|
||||||
|
g_warning
|
||||||
|
("gstvideo: framerate property of pad %s:%s is not of type Fraction",
|
||||||
|
GST_DEBUG_PAD_NAME (pad));
|
||||||
|
gst_caps_unref (caps);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -115,7 +130,7 @@ gst_video_frame_rate (GstPad * pad)
|
||||||
gboolean
|
gboolean
|
||||||
gst_video_get_size (GstPad * pad, gint * width, gint * height)
|
gst_video_get_size (GstPad * pad, gint * width, gint * height)
|
||||||
{
|
{
|
||||||
const GstCaps *caps = NULL;
|
GstCaps *caps = NULL;
|
||||||
GstStructure *structure;
|
GstStructure *structure;
|
||||||
gboolean ret;
|
gboolean ret;
|
||||||
|
|
||||||
|
@ -123,28 +138,36 @@ gst_video_get_size (GstPad * pad, gint * width, gint * height)
|
||||||
g_return_val_if_fail (width != NULL, FALSE);
|
g_return_val_if_fail (width != NULL, FALSE);
|
||||||
g_return_val_if_fail (height != NULL, FALSE);
|
g_return_val_if_fail (height != NULL, FALSE);
|
||||||
|
|
||||||
caps = GST_PAD_CAPS (pad);
|
caps = gst_pad_get_current_caps (pad);
|
||||||
|
if (caps == NULL)
|
||||||
if (caps == NULL) {
|
goto no_caps;
|
||||||
g_warning ("gstvideo: failed to get caps of pad %s:%s",
|
|
||||||
GST_DEBUG_PAD_NAME (pad));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
structure = gst_caps_get_structure (caps, 0);
|
structure = gst_caps_get_structure (caps, 0);
|
||||||
ret = gst_structure_get_int (structure, "width", width);
|
ret = gst_structure_get_int (structure, "width", width);
|
||||||
ret &= gst_structure_get_int (structure, "height", height);
|
ret &= gst_structure_get_int (structure, "height", height);
|
||||||
|
gst_caps_unref (caps);
|
||||||
|
|
||||||
if (!ret) {
|
if (!ret)
|
||||||
g_warning ("gstvideo: failed to get size properties on pad %s:%s",
|
goto no_size;
|
||||||
GST_DEBUG_PAD_NAME (pad));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
GST_DEBUG ("size request on pad %s:%s: %dx%d",
|
GST_DEBUG ("size request on pad %s:%s: %dx%d",
|
||||||
GST_DEBUG_PAD_NAME (pad), width ? *width : -1, height ? *height : -1);
|
GST_DEBUG_PAD_NAME (pad), width ? *width : -1, height ? *height : -1);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
/* ERROR */
|
||||||
|
no_caps:
|
||||||
|
{
|
||||||
|
g_warning ("gstvideo: failed to get caps of pad %s:%s",
|
||||||
|
GST_DEBUG_PAD_NAME (pad));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
no_size:
|
||||||
|
{
|
||||||
|
g_warning ("gstvideo: failed to get size properties on pad %s:%s",
|
||||||
|
GST_DEBUG_PAD_NAME (pad));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -488,11 +488,11 @@ gboolean gst_video_format_convert (GstVideoFormat format, int width, int height,
|
||||||
GstEvent *gst_video_event_new_still_frame (gboolean in_still);
|
GstEvent *gst_video_event_new_still_frame (gboolean in_still);
|
||||||
gboolean gst_video_event_parse_still_frame (GstEvent *event, gboolean *in_still);
|
gboolean gst_video_event_parse_still_frame (GstEvent *event, gboolean *in_still);
|
||||||
|
|
||||||
GstBuffer *gst_video_convert_frame(GstBuffer *buf, const GstCaps *to_caps,
|
GstBuffer *gst_video_convert_frame(GstBuffer *buf, GstCaps *from_caps, const GstCaps *to_caps,
|
||||||
GstClockTime timeout, GError **error);
|
GstClockTime timeout, GError **error);
|
||||||
|
|
||||||
typedef void (*GstVideoConvertFrameCallback) (GstBuffer *buf, GError *error, gpointer user_data);
|
typedef void (*GstVideoConvertFrameCallback) (GstBuffer *buf, GError *error, gpointer user_data);
|
||||||
void gst_video_convert_frame_async(GstBuffer *buf, const GstCaps *to_caps,
|
void gst_video_convert_frame_async(GstBuffer *buf, GstCaps *from_caps, const GstCaps *to_caps,
|
||||||
GstClockTime timeout, GstVideoConvertFrameCallback callback,
|
GstClockTime timeout, GstVideoConvertFrameCallback callback,
|
||||||
gpointer user_data, GDestroyNotify destroy_notify);
|
gpointer user_data, GDestroyNotify destroy_notify);
|
||||||
|
|
||||||
|
|
|
@ -220,6 +220,21 @@ gst_adder_sink_getcaps (GstPad * pad)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
GstPad *pad;
|
||||||
|
GstCaps *caps;
|
||||||
|
} IterData;
|
||||||
|
|
||||||
|
static void
|
||||||
|
setcapsfunc (const GValue * item, IterData * data)
|
||||||
|
{
|
||||||
|
GstPad *otherpad = g_value_get_object (item);
|
||||||
|
|
||||||
|
if (otherpad != data->pad)
|
||||||
|
gst_pad_set_caps (data->pad, data->caps);
|
||||||
|
}
|
||||||
|
|
||||||
/* the first caps we receive on any of the sinkpads will define the caps for all
|
/* the first caps we receive on any of the sinkpads will define the caps for all
|
||||||
* the other sinkpads because we can only mix streams with the same caps.
|
* the other sinkpads because we can only mix streams with the same caps.
|
||||||
*/
|
*/
|
||||||
|
@ -227,28 +242,39 @@ static gboolean
|
||||||
gst_adder_setcaps (GstPad * pad, GstCaps * caps)
|
gst_adder_setcaps (GstPad * pad, GstCaps * caps)
|
||||||
{
|
{
|
||||||
GstAdder *adder;
|
GstAdder *adder;
|
||||||
GList *pads;
|
|
||||||
GstStructure *structure;
|
GstStructure *structure;
|
||||||
const char *media_type;
|
const char *media_type;
|
||||||
|
GstIterator *it;
|
||||||
|
GstIteratorResult ires;
|
||||||
|
IterData idata;
|
||||||
|
gboolean done;
|
||||||
|
|
||||||
adder = GST_ADDER (GST_PAD_PARENT (pad));
|
adder = GST_ADDER (GST_PAD_PARENT (pad));
|
||||||
|
|
||||||
GST_LOG_OBJECT (adder, "setting caps on pad %p,%s to %" GST_PTR_FORMAT, pad,
|
GST_LOG_OBJECT (adder, "setting caps on pad %p,%s to %" GST_PTR_FORMAT, pad,
|
||||||
GST_PAD_NAME (pad), caps);
|
GST_PAD_NAME (pad), caps);
|
||||||
|
|
||||||
|
it = gst_element_iterate_pads (GST_ELEMENT_CAST (adder));
|
||||||
|
|
||||||
/* FIXME, see if the other pads can accept the format. Also lock the
|
/* FIXME, see if the other pads can accept the format. Also lock the
|
||||||
* format on the other pads to this new format. */
|
* format on the other pads to this new format. */
|
||||||
GST_OBJECT_LOCK (adder);
|
idata.caps = caps;
|
||||||
pads = GST_ELEMENT (adder)->pads;
|
idata.pad = pad;
|
||||||
while (pads) {
|
|
||||||
GstPad *otherpad = GST_PAD (pads->data);
|
|
||||||
|
|
||||||
if (otherpad != pad) {
|
done = FALSE;
|
||||||
gst_caps_replace (&GST_PAD_CAPS (otherpad), caps);
|
while (!done) {
|
||||||
|
ires = gst_iterator_foreach (it, (GstIteratorForeachFunction) setcapsfunc,
|
||||||
|
&idata);
|
||||||
|
|
||||||
|
switch (ires) {
|
||||||
|
case GST_ITERATOR_RESYNC:
|
||||||
|
gst_iterator_resync (it);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
done = TRUE;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
pads = g_list_next (pads);
|
|
||||||
}
|
}
|
||||||
GST_OBJECT_UNLOCK (adder);
|
|
||||||
|
|
||||||
/* parse caps now */
|
/* parse caps now */
|
||||||
structure = gst_caps_get_structure (caps, 0);
|
structure = gst_caps_get_structure (caps, 0);
|
||||||
|
@ -1100,11 +1126,6 @@ gst_adder_collected (GstCollectPads * pads, gpointer user_data)
|
||||||
|
|
||||||
GST_LOG_OBJECT (adder, "channel %p: preparing output buffer of %d bytes",
|
GST_LOG_OBJECT (adder, "channel %p: preparing output buffer of %d bytes",
|
||||||
collect_data, outsize);
|
collect_data, outsize);
|
||||||
/* make data and metadata writable, can simply return the inbuf when we
|
|
||||||
* are the only one referencing this buffer. If this is the last (and
|
|
||||||
* only) GAP buffer, it will automatically copy the GAP flag. */
|
|
||||||
outbuf = gst_buffer_make_writable (inbuf);
|
|
||||||
gst_buffer_set_caps (outbuf, GST_PAD_CAPS (adder->srcpad));
|
|
||||||
|
|
||||||
outdata = gst_buffer_map (outbuf, NULL, NULL, GST_MAP_WRITE);
|
outdata = gst_buffer_map (outbuf, NULL, NULL, GST_MAP_WRITE);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1070,10 +1070,6 @@ gst_audio_convert_transform (GstBaseTransform * base, GstBuffer * inbuf,
|
||||||
gint samples;
|
gint samples;
|
||||||
gpointer src, dst;
|
gpointer src, dst;
|
||||||
|
|
||||||
GST_CAT_LOG_OBJECT (GST_CAT_PERFORMANCE, base, "converting audio from %"
|
|
||||||
GST_PTR_FORMAT " to %" GST_PTR_FORMAT, GST_BUFFER_CAPS (inbuf),
|
|
||||||
GST_BUFFER_CAPS (outbuf));
|
|
||||||
|
|
||||||
/* get amount of samples to convert. */
|
/* get amount of samples to convert. */
|
||||||
samples = gst_buffer_get_size (inbuf) / this->ctx.in.unit_size;
|
samples = gst_buffer_get_size (inbuf) / this->ctx.in.unit_size;
|
||||||
|
|
||||||
|
|
|
@ -634,7 +634,6 @@ gst_audio_rate_chain (GstPad * pad, GstBuffer * buf)
|
||||||
GST_BUFFER_FLAG_SET (fill, GST_BUFFER_FLAG_DISCONT);
|
GST_BUFFER_FLAG_SET (fill, GST_BUFFER_FLAG_DISCONT);
|
||||||
audiorate->discont = FALSE;
|
audiorate->discont = FALSE;
|
||||||
}
|
}
|
||||||
gst_buffer_set_caps (fill, GST_PAD_CAPS (audiorate->srcpad));
|
|
||||||
|
|
||||||
ret = gst_pad_push (audiorate->srcpad, fill);
|
ret = gst_pad_push (audiorate->srcpad, fill);
|
||||||
if (ret != GST_FLOW_OK)
|
if (ret != GST_FLOW_OK)
|
||||||
|
@ -681,8 +680,6 @@ gst_audio_rate_chain (GstPad * pad, GstBuffer * buf)
|
||||||
gst_buffer_unref (buf);
|
gst_buffer_unref (buf);
|
||||||
buf = trunc;
|
buf = trunc;
|
||||||
|
|
||||||
gst_buffer_set_caps (buf, GST_PAD_CAPS (audiorate->srcpad));
|
|
||||||
|
|
||||||
audiorate->drop += truncsamples;
|
audiorate->drop += truncsamples;
|
||||||
GST_DEBUG_OBJECT (audiorate, "truncating %" G_GUINT64_FORMAT " samples",
|
GST_DEBUG_OBJECT (audiorate, "truncating %" G_GUINT64_FORMAT " samples",
|
||||||
truncsamples);
|
truncsamples);
|
||||||
|
|
|
@ -821,8 +821,6 @@ gst_audio_resample_push_drain (GstAudioResample * resample, guint history_len)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
outbuf = gst_buffer_new_and_alloc (outsize);
|
outbuf = gst_buffer_new_and_alloc (outsize);
|
||||||
gst_buffer_set_caps (outbuf,
|
|
||||||
GST_PAD_CAPS (GST_BASE_TRANSFORM_SRC_PAD (resample)));
|
|
||||||
|
|
||||||
data = gst_buffer_map (outbuf, NULL, NULL, GST_MAP_WRITE);
|
data = gst_buffer_map (outbuf, NULL, NULL, GST_MAP_WRITE);
|
||||||
|
|
||||||
|
|
|
@ -1092,7 +1092,6 @@ gst_audio_test_src_create (GstBaseSrc * basesrc, guint64 offset,
|
||||||
bytes = src->generate_samples_per_buffer * src->sample_size * src->channels;
|
bytes = src->generate_samples_per_buffer * src->sample_size * src->channels;
|
||||||
|
|
||||||
buf = gst_buffer_new_and_alloc (bytes);
|
buf = gst_buffer_new_and_alloc (bytes);
|
||||||
gst_buffer_set_caps (buf, GST_PAD_CAPS (basesrc->srcpad));
|
|
||||||
|
|
||||||
next_byte = src->next_byte + (src->reverse ? (-bytes) : bytes);
|
next_byte = src->next_byte + (src->reverse ? (-bytes) : bytes);
|
||||||
next_time = gst_util_uint64_scale_int (next_sample, GST_SECOND,
|
next_time = gst_util_uint64_scale_int (next_sample, GST_SECOND,
|
||||||
|
|
|
@ -510,6 +510,7 @@ static gboolean
|
||||||
setup_recoder_pipeline (GstSmartEncoder * smart_encoder)
|
setup_recoder_pipeline (GstSmartEncoder * smart_encoder)
|
||||||
{
|
{
|
||||||
GstPad *tmppad;
|
GstPad *tmppad;
|
||||||
|
GstCaps *caps;
|
||||||
|
|
||||||
/* Fast path */
|
/* Fast path */
|
||||||
if (G_UNLIKELY (smart_encoder->encoder))
|
if (G_UNLIKELY (smart_encoder->encoder))
|
||||||
|
@ -518,14 +519,18 @@ setup_recoder_pipeline (GstSmartEncoder * smart_encoder)
|
||||||
GST_DEBUG ("Creating internal decoder and encoder");
|
GST_DEBUG ("Creating internal decoder and encoder");
|
||||||
|
|
||||||
/* Create decoder/encoder */
|
/* Create decoder/encoder */
|
||||||
smart_encoder->decoder = get_decoder (GST_PAD_CAPS (smart_encoder->sinkpad));
|
caps = gst_pad_get_current_caps (smart_encoder->sinkpad);
|
||||||
|
smart_encoder->decoder = get_decoder (caps);
|
||||||
if (G_UNLIKELY (smart_encoder->decoder == NULL))
|
if (G_UNLIKELY (smart_encoder->decoder == NULL))
|
||||||
goto no_decoder;
|
goto no_decoder;
|
||||||
|
gst_caps_unref (caps);
|
||||||
gst_element_set_bus (smart_encoder->decoder, GST_ELEMENT_BUS (smart_encoder));
|
gst_element_set_bus (smart_encoder->decoder, GST_ELEMENT_BUS (smart_encoder));
|
||||||
|
|
||||||
smart_encoder->encoder = get_encoder (GST_PAD_CAPS (smart_encoder->sinkpad));
|
caps = gst_pad_get_current_caps (smart_encoder->sinkpad);
|
||||||
|
smart_encoder->encoder = get_encoder (caps);
|
||||||
if (G_UNLIKELY (smart_encoder->encoder == NULL))
|
if (G_UNLIKELY (smart_encoder->encoder == NULL))
|
||||||
goto no_encoder;
|
goto no_encoder;
|
||||||
|
gst_caps_unref (caps);
|
||||||
gst_element_set_bus (smart_encoder->encoder, GST_ELEMENT_BUS (smart_encoder));
|
gst_element_set_bus (smart_encoder->encoder, GST_ELEMENT_BUS (smart_encoder));
|
||||||
|
|
||||||
GST_DEBUG ("Creating internal pads");
|
GST_DEBUG ("Creating internal pads");
|
||||||
|
@ -536,8 +541,6 @@ setup_recoder_pipeline (GstSmartEncoder * smart_encoder)
|
||||||
smart_encoder->internal_srcpad = gst_pad_new ("internal_src", GST_PAD_SRC);
|
smart_encoder->internal_srcpad = gst_pad_new ("internal_src", GST_PAD_SRC);
|
||||||
g_object_set_qdata ((GObject *) smart_encoder->internal_srcpad,
|
g_object_set_qdata ((GObject *) smart_encoder->internal_srcpad,
|
||||||
INTERNAL_ELEMENT, smart_encoder);
|
INTERNAL_ELEMENT, smart_encoder);
|
||||||
gst_pad_set_caps (smart_encoder->internal_srcpad,
|
|
||||||
GST_PAD_CAPS (smart_encoder->sinkpad));
|
|
||||||
gst_pad_set_active (smart_encoder->internal_srcpad, TRUE);
|
gst_pad_set_active (smart_encoder->internal_srcpad, TRUE);
|
||||||
|
|
||||||
/* Sink pad which will get the buffers from the encoder.
|
/* Sink pad which will get the buffers from the encoder.
|
||||||
|
@ -546,8 +549,6 @@ setup_recoder_pipeline (GstSmartEncoder * smart_encoder)
|
||||||
smart_encoder->internal_sinkpad = gst_pad_new ("internal_sink", GST_PAD_SINK);
|
smart_encoder->internal_sinkpad = gst_pad_new ("internal_sink", GST_PAD_SINK);
|
||||||
g_object_set_qdata ((GObject *) smart_encoder->internal_sinkpad,
|
g_object_set_qdata ((GObject *) smart_encoder->internal_sinkpad,
|
||||||
INTERNAL_ELEMENT, smart_encoder);
|
INTERNAL_ELEMENT, smart_encoder);
|
||||||
gst_pad_set_caps (smart_encoder->internal_sinkpad,
|
|
||||||
GST_PAD_CAPS (smart_encoder->sinkpad));
|
|
||||||
gst_pad_set_chain_function (smart_encoder->internal_sinkpad, internal_chain);
|
gst_pad_set_chain_function (smart_encoder->internal_sinkpad, internal_chain);
|
||||||
gst_pad_set_active (smart_encoder->internal_sinkpad, TRUE);
|
gst_pad_set_active (smart_encoder->internal_sinkpad, TRUE);
|
||||||
|
|
||||||
|
@ -575,15 +576,15 @@ setup_recoder_pipeline (GstSmartEncoder * smart_encoder)
|
||||||
|
|
||||||
no_decoder:
|
no_decoder:
|
||||||
{
|
{
|
||||||
GST_WARNING ("Couldn't find a decoder for %" GST_PTR_FORMAT,
|
GST_WARNING ("Couldn't find a decoder for %" GST_PTR_FORMAT, caps);
|
||||||
GST_PAD_CAPS (smart_encoder->sinkpad));
|
gst_caps_unref (caps);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
no_encoder:
|
no_encoder:
|
||||||
{
|
{
|
||||||
GST_WARNING ("Couldn't find an encoder for %" GST_PTR_FORMAT,
|
GST_WARNING ("Couldn't find an encoder for %" GST_PTR_FORMAT, caps);
|
||||||
GST_PAD_CAPS (smart_encoder->sinkpad));
|
gst_caps_unref (caps);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -317,7 +317,6 @@ gst_gdp_depay_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set caps and push */
|
/* set caps and push */
|
||||||
gst_buffer_set_caps (buf, this->caps);
|
|
||||||
GST_LOG_OBJECT (this, "deserialized buffer %p, pushing, timestamp %"
|
GST_LOG_OBJECT (this, "deserialized buffer %p, pushing, timestamp %"
|
||||||
GST_TIME_FORMAT ", duration %" GST_TIME_FORMAT
|
GST_TIME_FORMAT ", duration %" GST_TIME_FORMAT
|
||||||
", offset %" G_GINT64_FORMAT ", offset_end %" G_GINT64_FORMAT
|
", offset %" G_GINT64_FORMAT ", offset_end %" G_GINT64_FORMAT
|
||||||
|
|
|
@ -210,6 +210,7 @@ gst_gdp_stamp_buffer (GstGDPPay * this, GstBuffer * buffer)
|
||||||
this->offset = GST_BUFFER_OFFSET_END (buffer);
|
this->offset = GST_BUFFER_OFFSET_END (buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
static GstBuffer *
|
static GstBuffer *
|
||||||
gst_gdp_buffer_from_caps (GstGDPPay * this, GstCaps * caps)
|
gst_gdp_buffer_from_caps (GstGDPPay * this, GstCaps * caps)
|
||||||
{
|
{
|
||||||
|
@ -241,6 +242,7 @@ packet_failed:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static GstBuffer *
|
static GstBuffer *
|
||||||
gst_gdp_pay_buffer_from_buffer (GstGDPPay * this, GstBuffer * buffer)
|
gst_gdp_pay_buffer_from_buffer (GstGDPPay * this, GstBuffer * buffer)
|
||||||
|
@ -352,7 +354,6 @@ gst_gdp_pay_reset_streamheader (GstGDPPay * this)
|
||||||
GST_DEBUG_OBJECT (this, "1.0, appending copy of new segment buffer %p",
|
GST_DEBUG_OBJECT (this, "1.0, appending copy of new segment buffer %p",
|
||||||
this->new_segment_buf);
|
this->new_segment_buf);
|
||||||
new_segment_buf = gst_buffer_copy (this->new_segment_buf);
|
new_segment_buf = gst_buffer_copy (this->new_segment_buf);
|
||||||
gst_buffer_set_caps (new_segment_buf, NULL);
|
|
||||||
g_value_init (&value, GST_TYPE_BUFFER);
|
g_value_init (&value, GST_TYPE_BUFFER);
|
||||||
gst_value_set_buffer (&value, new_segment_buf);
|
gst_value_set_buffer (&value, new_segment_buf);
|
||||||
gst_value_array_append_value (&array, &value);
|
gst_value_array_append_value (&array, &value);
|
||||||
|
@ -366,7 +367,6 @@ gst_gdp_pay_reset_streamheader (GstGDPPay * this)
|
||||||
tag_buf = this->tag_buf;
|
tag_buf = this->tag_buf;
|
||||||
this->tag_buf = NULL;
|
this->tag_buf = NULL;
|
||||||
|
|
||||||
gst_buffer_set_caps (tag_buf, NULL);
|
|
||||||
g_value_init (&value, GST_TYPE_BUFFER);
|
g_value_init (&value, GST_TYPE_BUFFER);
|
||||||
gst_value_set_buffer (&value, tag_buf);
|
gst_value_set_buffer (&value, tag_buf);
|
||||||
gst_value_array_append_value (&array, &value);
|
gst_value_array_append_value (&array, &value);
|
||||||
|
@ -378,7 +378,6 @@ gst_gdp_pay_reset_streamheader (GstGDPPay * this)
|
||||||
gst_gdp_stamp_buffer (this, this->caps_buf);
|
gst_gdp_stamp_buffer (this, this->caps_buf);
|
||||||
GST_DEBUG_OBJECT (this, "appending copy of caps buffer %p", this->caps_buf);
|
GST_DEBUG_OBJECT (this, "appending copy of caps buffer %p", this->caps_buf);
|
||||||
caps_buf = gst_buffer_copy (this->caps_buf);
|
caps_buf = gst_buffer_copy (this->caps_buf);
|
||||||
gst_buffer_set_caps (caps_buf, NULL);
|
|
||||||
g_value_init (&value, GST_TYPE_BUFFER);
|
g_value_init (&value, GST_TYPE_BUFFER);
|
||||||
gst_value_set_buffer (&value, caps_buf);
|
gst_value_set_buffer (&value, caps_buf);
|
||||||
gst_value_array_append_value (&array, &value);
|
gst_value_array_append_value (&array, &value);
|
||||||
|
@ -453,10 +452,6 @@ gst_gdp_pay_reset_streamheader (GstGDPPay * this)
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (this, "Setting caps on src pad %" GST_PTR_FORMAT, caps);
|
GST_DEBUG_OBJECT (this, "Setting caps on src pad %" GST_PTR_FORMAT, caps);
|
||||||
gst_pad_set_caps (this->srcpad, caps);
|
gst_pad_set_caps (this->srcpad, caps);
|
||||||
this->caps_buf = gst_buffer_make_writable (this->caps_buf);
|
|
||||||
gst_buffer_set_caps (this->caps_buf, caps);
|
|
||||||
this->new_segment_buf = gst_buffer_make_writable (this->new_segment_buf);
|
|
||||||
gst_buffer_set_caps (this->new_segment_buf, caps);
|
|
||||||
|
|
||||||
/* if these are our first ever buffers, send out new_segment first */
|
/* if these are our first ever buffers, send out new_segment first */
|
||||||
if (!this->sent_streamheader) {
|
if (!this->sent_streamheader) {
|
||||||
|
@ -482,7 +477,6 @@ gst_gdp_pay_reset_streamheader (GstGDPPay * this)
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (this->tag_buf) {
|
if (this->tag_buf) {
|
||||||
gst_buffer_set_caps (this->tag_buf, caps);
|
|
||||||
GST_DEBUG_OBJECT (this, "Pushing GDP tag buffer %p", this->tag_buf);
|
GST_DEBUG_OBJECT (this, "Pushing GDP tag buffer %p", this->tag_buf);
|
||||||
/* we stored these bufs with refcount 1, so make sure we keep a ref */
|
/* we stored these bufs with refcount 1, so make sure we keep a ref */
|
||||||
r = gst_pad_push (this->srcpad, gst_buffer_ref (this->tag_buf));
|
r = gst_pad_push (this->srcpad, gst_buffer_ref (this->tag_buf));
|
||||||
|
@ -510,7 +504,6 @@ gst_gdp_pay_reset_streamheader (GstGDPPay * this)
|
||||||
this->queue = g_list_delete_link (this->queue, this->queue);
|
this->queue = g_list_delete_link (this->queue, this->queue);
|
||||||
|
|
||||||
/* set caps and push */
|
/* set caps and push */
|
||||||
gst_buffer_set_caps (buffer, caps);
|
|
||||||
r = gst_pad_push (this->srcpad, buffer);
|
r = gst_pad_push (this->srcpad, buffer);
|
||||||
if (r != GST_FLOW_OK) {
|
if (r != GST_FLOW_OK) {
|
||||||
GST_WARNING_OBJECT (this, "pushing queued GDP buffer returned %d", r);
|
GST_WARNING_OBJECT (this, "pushing queued GDP buffer returned %d", r);
|
||||||
|
@ -540,7 +533,6 @@ gst_gdp_queue_buffer (GstGDPPay * this, GstBuffer * buffer)
|
||||||
if (this->sent_streamheader) {
|
if (this->sent_streamheader) {
|
||||||
GST_LOG_OBJECT (this, "Pushing GDP buffer %p, caps %" GST_PTR_FORMAT,
|
GST_LOG_OBJECT (this, "Pushing GDP buffer %p, caps %" GST_PTR_FORMAT,
|
||||||
buffer, this->caps);
|
buffer, this->caps);
|
||||||
gst_buffer_set_caps (buffer, GST_PAD_CAPS (this->srcpad));
|
|
||||||
return gst_pad_push (this->srcpad, buffer);
|
return gst_pad_push (this->srcpad, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -557,7 +549,9 @@ static GstFlowReturn
|
||||||
gst_gdp_pay_chain (GstPad * pad, GstBuffer * buffer)
|
gst_gdp_pay_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
{
|
{
|
||||||
GstGDPPay *this;
|
GstGDPPay *this;
|
||||||
|
#if 0
|
||||||
GstCaps *caps;
|
GstCaps *caps;
|
||||||
|
#endif
|
||||||
GstBuffer *outbuffer;
|
GstBuffer *outbuffer;
|
||||||
GstFlowReturn ret;
|
GstFlowReturn ret;
|
||||||
|
|
||||||
|
@ -587,7 +581,7 @@ gst_gdp_pay_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
this->new_segment_buf = outbuffer;
|
this->new_segment_buf = outbuffer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
/* make sure we've received caps before */
|
/* make sure we've received caps before */
|
||||||
caps = gst_buffer_get_caps (buffer);
|
caps = gst_buffer_get_caps (buffer);
|
||||||
if (!this->caps && !caps)
|
if (!this->caps && !caps)
|
||||||
|
@ -613,6 +607,7 @@ gst_gdp_pay_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
|
|
||||||
if (caps)
|
if (caps)
|
||||||
gst_caps_unref (caps);
|
gst_caps_unref (caps);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* create a GDP header packet,
|
/* create a GDP header packet,
|
||||||
* then create a GST buffer of the header packet and the buffer contents */
|
* then create a GST buffer of the header packet and the buffer contents */
|
||||||
|
@ -641,6 +636,7 @@ done:
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
/* ERRORS */
|
/* ERRORS */
|
||||||
|
#if 0
|
||||||
no_caps:
|
no_caps:
|
||||||
{
|
{
|
||||||
/* when returning a fatal error as a GstFlowReturn we must post an error
|
/* when returning a fatal error as a GstFlowReturn we must post an error
|
||||||
|
@ -660,6 +656,7 @@ no_caps_buffer:
|
||||||
ret = GST_FLOW_ERROR;
|
ret = GST_FLOW_ERROR;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
no_buffer:
|
no_buffer:
|
||||||
{
|
{
|
||||||
GST_ELEMENT_ERROR (this, STREAM, ENCODE, (NULL),
|
GST_ELEMENT_ERROR (this, STREAM, ENCODE, (NULL),
|
||||||
|
|
|
@ -1885,10 +1885,7 @@ get_pad_caps (GstPad * pad)
|
||||||
|
|
||||||
/* first check the pad caps, if this is set, we are positively sure it is
|
/* first check the pad caps, if this is set, we are positively sure it is
|
||||||
* fixed and exactly what the element will produce. */
|
* fixed and exactly what the element will produce. */
|
||||||
GST_OBJECT_LOCK (pad);
|
caps = gst_pad_get_current_caps (pad);
|
||||||
if ((caps = GST_PAD_CAPS (pad)))
|
|
||||||
gst_caps_ref (caps);
|
|
||||||
GST_OBJECT_UNLOCK (pad);
|
|
||||||
|
|
||||||
/* then use the getcaps function if we don't have caps. These caps might not
|
/* then use the getcaps function if we don't have caps. These caps might not
|
||||||
* be fixed in some cases, in which case analyze_new_pad will set up a
|
* be fixed in some cases, in which case analyze_new_pad will set up a
|
||||||
|
|
|
@ -784,6 +784,7 @@ handoff (GstElement * identity, GstBuffer * frame, gpointer data)
|
||||||
{
|
{
|
||||||
GstPlayBin *play_bin = GST_PLAY_BIN (data);
|
GstPlayBin *play_bin = GST_PLAY_BIN (data);
|
||||||
|
|
||||||
|
#if 0
|
||||||
/* applications need to know the buffer caps,
|
/* applications need to know the buffer caps,
|
||||||
* make sure they are always set on the frame */
|
* make sure they are always set on the frame */
|
||||||
if (GST_BUFFER_CAPS (frame) == NULL) {
|
if (GST_BUFFER_CAPS (frame) == NULL) {
|
||||||
|
@ -794,6 +795,7 @@ handoff (GstElement * identity, GstBuffer * frame, gpointer data)
|
||||||
gst_object_unref (pad);
|
gst_object_unref (pad);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
gst_buffer_replace (&play_bin->frame, frame);
|
gst_buffer_replace (&play_bin->frame, frame);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2850,7 +2850,8 @@ gst_play_sink_convert_frame (GstPlaySink * playsink, GstCaps * caps)
|
||||||
GstBuffer *temp;
|
GstBuffer *temp;
|
||||||
GError *err = NULL;
|
GError *err = NULL;
|
||||||
|
|
||||||
temp = gst_video_convert_frame (result, caps, 25 * GST_SECOND, &err);
|
/* FIXME, need to get the input buffer caps */
|
||||||
|
temp = gst_video_convert_frame (result, NULL, caps, 25 * GST_SECOND, &err);
|
||||||
gst_buffer_unref (result);
|
gst_buffer_unref (result);
|
||||||
if (temp == NULL && err) {
|
if (temp == NULL && err) {
|
||||||
/* I'm really uncertain whether we should make playsink post an error
|
/* I'm really uncertain whether we should make playsink post an error
|
||||||
|
|
|
@ -275,8 +275,6 @@ gst_ssa_parse_push_line (GstSsaParse * parse, gchar * txt,
|
||||||
GST_BUFFER_TIMESTAMP (buf) = start;
|
GST_BUFFER_TIMESTAMP (buf) = start;
|
||||||
GST_BUFFER_DURATION (buf) = duration;
|
GST_BUFFER_DURATION (buf) = duration;
|
||||||
|
|
||||||
gst_buffer_set_caps (buf, GST_PAD_CAPS (parse->srcpad));
|
|
||||||
|
|
||||||
GST_LOG_OBJECT (parse, "Pushing buffer with timestamp %" GST_TIME_FORMAT
|
GST_LOG_OBJECT (parse, "Pushing buffer with timestamp %" GST_TIME_FORMAT
|
||||||
" and duration %" GST_TIME_FORMAT, GST_TIME_ARGS (start),
|
" and duration %" GST_TIME_FORMAT, GST_TIME_ARGS (start),
|
||||||
GST_TIME_ARGS (duration));
|
GST_TIME_ARGS (duration));
|
||||||
|
|
|
@ -1484,7 +1484,6 @@ handle_buffer (GstSubParse * self, GstBuffer * buf)
|
||||||
|
|
||||||
/* +1 for terminating NUL character */
|
/* +1 for terminating NUL character */
|
||||||
buf = gst_buffer_new_and_alloc (subtitle_len + 1);
|
buf = gst_buffer_new_and_alloc (subtitle_len + 1);
|
||||||
gst_buffer_set_caps (buf, GST_PAD_CAPS (self->srcpad));
|
|
||||||
|
|
||||||
/* copy terminating NUL character as well */
|
/* copy terminating NUL character as well */
|
||||||
gst_buffer_fill (buf, 0, subtitle, subtitle_len + 1);
|
gst_buffer_fill (buf, 0, subtitle, subtitle_len + 1);
|
||||||
|
|
|
@ -1303,9 +1303,13 @@ gst_multi_fd_sink_client_queue_buffer (GstMultiFdSink * sink,
|
||||||
gboolean send_streamheader = FALSE;
|
gboolean send_streamheader = FALSE;
|
||||||
GstStructure *s;
|
GstStructure *s;
|
||||||
|
|
||||||
|
#if 0
|
||||||
/* before we queue the buffer, we check if we need to queue streamheader
|
/* before we queue the buffer, we check if we need to queue streamheader
|
||||||
* buffers (because it's a new client, or because they changed) */
|
* buffers (because it's a new client, or because they changed) */
|
||||||
caps = gst_buffer_get_caps (buffer); /* cleaned up after streamheader */
|
caps = gst_buffer_get_caps (buffer); /* cleaned up after streamheader */
|
||||||
|
#else
|
||||||
|
caps = NULL;
|
||||||
|
#endif
|
||||||
if (!client->caps) {
|
if (!client->caps) {
|
||||||
GST_DEBUG_OBJECT (sink,
|
GST_DEBUG_OBJECT (sink,
|
||||||
"[fd %5d] no previous caps for this client, send streamheader",
|
"[fd %5d] no previous caps for this client, send streamheader",
|
||||||
|
@ -2476,13 +2480,16 @@ gst_multi_fd_sink_render (GstBaseSink * bsink, GstBuffer * buf)
|
||||||
{
|
{
|
||||||
GstMultiFdSink *sink;
|
GstMultiFdSink *sink;
|
||||||
gboolean in_caps;
|
gboolean in_caps;
|
||||||
|
#if 0
|
||||||
GstCaps *bufcaps, *padcaps;
|
GstCaps *bufcaps, *padcaps;
|
||||||
|
#endif
|
||||||
|
|
||||||
sink = GST_MULTI_FD_SINK (bsink);
|
sink = GST_MULTI_FD_SINK (bsink);
|
||||||
|
|
||||||
g_return_val_if_fail (GST_OBJECT_FLAG_IS_SET (sink, GST_MULTI_FD_SINK_OPEN),
|
g_return_val_if_fail (GST_OBJECT_FLAG_IS_SET (sink, GST_MULTI_FD_SINK_OPEN),
|
||||||
GST_FLOW_WRONG_STATE);
|
GST_FLOW_WRONG_STATE);
|
||||||
|
|
||||||
|
#if 0
|
||||||
/* since we check every buffer for streamheader caps, we need to make
|
/* since we check every buffer for streamheader caps, we need to make
|
||||||
* sure every buffer has caps set */
|
* sure every buffer has caps set */
|
||||||
bufcaps = gst_buffer_get_caps (buf);
|
bufcaps = gst_buffer_get_caps (buf);
|
||||||
|
@ -2491,10 +2498,12 @@ gst_multi_fd_sink_render (GstBaseSink * bsink, GstBuffer * buf)
|
||||||
/* make sure we have caps on the pad */
|
/* make sure we have caps on the pad */
|
||||||
if (!padcaps && !bufcaps)
|
if (!padcaps && !bufcaps)
|
||||||
goto no_caps;
|
goto no_caps;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* get IN_CAPS first, code below might mess with the flags */
|
/* get IN_CAPS first, code below might mess with the flags */
|
||||||
in_caps = GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_IN_CAPS);
|
in_caps = GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_IN_CAPS);
|
||||||
|
|
||||||
|
#if 0
|
||||||
/* stamp the buffer with previous caps if no caps set */
|
/* stamp the buffer with previous caps if no caps set */
|
||||||
if (!bufcaps) {
|
if (!bufcaps) {
|
||||||
if (!gst_buffer_is_writable (buf)) {
|
if (!gst_buffer_is_writable (buf)) {
|
||||||
|
@ -2518,6 +2527,7 @@ gst_multi_fd_sink_render (GstBaseSink * bsink, GstBuffer * buf)
|
||||||
/* since we keep this buffer out of the scope of this method */
|
/* since we keep this buffer out of the scope of this method */
|
||||||
gst_buffer_ref (buf);
|
gst_buffer_ref (buf);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
GST_LOG_OBJECT (sink, "received buffer %p, in_caps: %s, offset %"
|
GST_LOG_OBJECT (sink, "received buffer %p, in_caps: %s, offset %"
|
||||||
G_GINT64_FORMAT ", offset_end %" G_GINT64_FORMAT
|
G_GINT64_FORMAT ", offset_end %" G_GINT64_FORMAT
|
||||||
|
@ -2563,12 +2573,14 @@ gst_multi_fd_sink_render (GstBaseSink * bsink, GstBuffer * buf)
|
||||||
return GST_FLOW_OK;
|
return GST_FLOW_OK;
|
||||||
|
|
||||||
/* ERRORS */
|
/* ERRORS */
|
||||||
|
#if 0
|
||||||
no_caps:
|
no_caps:
|
||||||
{
|
{
|
||||||
GST_ELEMENT_ERROR (sink, CORE, NEGOTIATION, (NULL),
|
GST_ELEMENT_ERROR (sink, CORE, NEGOTIATION, (NULL),
|
||||||
("Received first buffer without caps set"));
|
("Received first buffer without caps set"));
|
||||||
return GST_FLOW_NOT_NEGOTIATED;
|
return GST_FLOW_NOT_NEGOTIATED;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -197,8 +197,6 @@ gst_tcp_client_src_create (GstPushSrc * psrc, GstBuffer ** outbuf)
|
||||||
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (*outbuf)),
|
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (*outbuf)),
|
||||||
GST_TIME_ARGS (GST_BUFFER_DURATION (*outbuf)),
|
GST_TIME_ARGS (GST_BUFFER_DURATION (*outbuf)),
|
||||||
GST_BUFFER_OFFSET (*outbuf), GST_BUFFER_OFFSET_END (*outbuf));
|
GST_BUFFER_OFFSET (*outbuf), GST_BUFFER_OFFSET_END (*outbuf));
|
||||||
|
|
||||||
gst_buffer_set_caps (*outbuf, src->caps);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -498,8 +498,6 @@ gst_video_rate_flush_prev (GstVideoRate * videorate, gboolean duplicate)
|
||||||
/* adapt for looping, bring back to time in current segment. */
|
/* adapt for looping, bring back to time in current segment. */
|
||||||
GST_BUFFER_TIMESTAMP (outbuf) = push_ts - videorate->segment.accum;
|
GST_BUFFER_TIMESTAMP (outbuf) = push_ts - videorate->segment.accum;
|
||||||
|
|
||||||
gst_buffer_set_caps (outbuf, GST_PAD_CAPS (videorate->srcpad));
|
|
||||||
|
|
||||||
GST_LOG_OBJECT (videorate,
|
GST_LOG_OBJECT (videorate,
|
||||||
"old is best, dup, pushing buffer outgoing ts %" GST_TIME_FORMAT,
|
"old is best, dup, pushing buffer outgoing ts %" GST_TIME_FORMAT,
|
||||||
GST_TIME_ARGS (push_ts));
|
GST_TIME_ARGS (push_ts));
|
||||||
|
|
|
@ -36,10 +36,6 @@ on_new_buffer_from_source (GstElement * elt, ProgramData * data)
|
||||||
|
|
||||||
gst_buffer_copy_into (app_buffer, buffer, GST_BUFFER_COPY_MEMORY, 0, size);
|
gst_buffer_copy_into (app_buffer, buffer, GST_BUFFER_COPY_MEMORY, 0, size);
|
||||||
|
|
||||||
/* newer basesrc will set caps for use automatically but it does not really
|
|
||||||
* hurt to set it on the buffer again */
|
|
||||||
gst_buffer_set_caps (app_buffer, GST_BUFFER_CAPS (buffer));
|
|
||||||
|
|
||||||
/* we don't need the appsink buffer anymore */
|
/* we don't need the appsink buffer anymore */
|
||||||
gst_buffer_unref (buffer);
|
gst_buffer_unref (buffer);
|
||||||
|
|
||||||
|
|
|
@ -2051,7 +2051,11 @@ shot_cb (GtkButton * button, gpointer data)
|
||||||
* that it can only be an rgb buffer. The only thing we have not specified
|
* that it can only be an rgb buffer. The only thing we have not specified
|
||||||
* on the caps is the height, which is dependant on the pixel-aspect-ratio
|
* on the caps is the height, which is dependant on the pixel-aspect-ratio
|
||||||
* of the source material */
|
* of the source material */
|
||||||
|
#if 0
|
||||||
caps = GST_BUFFER_CAPS (buffer);
|
caps = GST_BUFFER_CAPS (buffer);
|
||||||
|
#endif
|
||||||
|
/* FIXME, get the caps on the buffer somehow */
|
||||||
|
caps = NULL;
|
||||||
if (!caps) {
|
if (!caps) {
|
||||||
g_warning ("could not get snapshot format\n");
|
g_warning ("could not get snapshot format\n");
|
||||||
goto done;
|
goto done;
|
||||||
|
|
|
@ -2041,7 +2041,11 @@ shot_cb (GtkButton * button, gpointer data)
|
||||||
* that it can only be an rgb buffer. The only thing we have not specified
|
* that it can only be an rgb buffer. The only thing we have not specified
|
||||||
* on the caps is the height, which is dependant on the pixel-aspect-ratio
|
* on the caps is the height, which is dependant on the pixel-aspect-ratio
|
||||||
* of the source material */
|
* of the source material */
|
||||||
|
#if 0
|
||||||
caps = GST_BUFFER_CAPS (buffer);
|
caps = GST_BUFFER_CAPS (buffer);
|
||||||
|
#endif
|
||||||
|
/* FIXME, need to get the caps of the buffer somehow */
|
||||||
|
caps = NULL;
|
||||||
if (!caps) {
|
if (!caps) {
|
||||||
g_warning ("could not get snapshot format\n");
|
g_warning ("could not get snapshot format\n");
|
||||||
goto done;
|
goto done;
|
||||||
|
|
|
@ -118,7 +118,11 @@ main (int argc, char *argv[])
|
||||||
* that it can only be an rgb buffer. The only thing we have not specified
|
* that it can only be an rgb buffer. The only thing we have not specified
|
||||||
* on the caps is the height, which is dependant on the pixel-aspect-ratio
|
* on the caps is the height, which is dependant on the pixel-aspect-ratio
|
||||||
* of the source material */
|
* of the source material */
|
||||||
|
#if 0
|
||||||
caps = GST_BUFFER_CAPS (buffer);
|
caps = GST_BUFFER_CAPS (buffer);
|
||||||
|
#endif
|
||||||
|
/* FIXME, get buffer caps somehow */
|
||||||
|
caps = NULL;
|
||||||
if (!caps) {
|
if (!caps) {
|
||||||
g_print ("could not get snapshot format\n");
|
g_print ("could not get snapshot format\n");
|
||||||
exit (-1);
|
exit (-1);
|
||||||
|
|
Loading…
Reference in a new issue