mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-30 13:41:48 +00:00
ext/audiofile/gstafsrc.c: Remove old debug output
Original commit message from CVS: * ext/audiofile/gstafsrc.c: (gst_afsrc_get): Remove old debug output * ext/dv/gstdvdec.c: (gst_dvdec_quality_get_type), (gst_dvdec_class_init), (gst_dvdec_loop), (gst_dvdec_change_state), (gst_dvdec_set_property), (gst_dvdec_get_property): Change the quality setting to an enum, so it works from gst-launch Don't renegotiate a non-linked pad. Allows audio only decoding. * gst/deinterlace/gstdeinterlace.c: (gst_deinterlace_getcaps), (gst_deinterlace_link), (gst_deinterlace_init): * gst/videodrop/gstvideodrop.c: (gst_videodrop_getcaps), (gst_videodrop_link): Some caps negotiation fixes
This commit is contained in:
parent
cbc28f86f9
commit
3b47dd30d6
4 changed files with 56 additions and 9 deletions
14
ChangeLog
14
ChangeLog
|
@ -1,3 +1,17 @@
|
|||
2004-05-13 Jan Schmidt <thaytan@mad.scientist.com>
|
||||
* ext/audiofile/gstafsrc.c: (gst_afsrc_get):
|
||||
Remove old debug output
|
||||
* ext/dv/gstdvdec.c: (gst_dvdec_quality_get_type),
|
||||
(gst_dvdec_class_init), (gst_dvdec_loop), (gst_dvdec_change_state),
|
||||
(gst_dvdec_set_property), (gst_dvdec_get_property):
|
||||
Change the quality setting to an enum, so it works from gst-launch
|
||||
Don't renegotiate a non-linked pad. Allows audio only decoding.
|
||||
* gst/deinterlace/gstdeinterlace.c: (gst_deinterlace_getcaps),
|
||||
(gst_deinterlace_link), (gst_deinterlace_init):
|
||||
* gst/videodrop/gstvideodrop.c: (gst_videodrop_getcaps),
|
||||
(gst_videodrop_link):
|
||||
Some caps negotiation fixes
|
||||
|
||||
2004-05-12 Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
|
||||
|
||||
* ext/tarkin/gsttarkin.c :
|
||||
|
|
|
@ -240,8 +240,8 @@ gst_afsrc_get (GstPad * pad)
|
|||
src->framestamp += gst_audio_frame_length (src->srcpad, buf);
|
||||
GST_BUFFER_TIMESTAMP (buf) = src->framestamp * 1E9
|
||||
/ gst_audio_frame_rate (src->srcpad);
|
||||
printf ("DEBUG: afsrc: timestamp set on output buffer: %f sec\n",
|
||||
GST_BUFFER_TIMESTAMP (buf) / 1E9);
|
||||
/* printf ("DEBUG: afsrc: timestamp set on output buffer: %f sec\n",
|
||||
GST_BUFFER_TIMESTAMP (buf) / 1E9); */
|
||||
|
||||
/* g_print("DEBUG: gstafsrc: pushed buffer of %ld bytes\n", readbytes); */
|
||||
return GST_DATA (buf);
|
||||
|
|
|
@ -139,6 +139,18 @@ gst_deinterlace_class_init (GstDeInterlaceClass * klass)
|
|||
gobject_class->set_property = gst_deinterlace_set_property;
|
||||
gobject_class->get_property = gst_deinterlace_get_property;
|
||||
}
|
||||
static GstCaps *
|
||||
gst_deinterlace_getcaps (GstPad * pad)
|
||||
{
|
||||
GstDeInterlace *filter;
|
||||
GstPad *otherpad;
|
||||
|
||||
filter = GST_DEINTERLACE (gst_pad_get_parent (pad));
|
||||
|
||||
otherpad = (pad == filter->srcpad) ? filter->sinkpad : filter->srcpad;
|
||||
|
||||
return gst_pad_get_allowed_caps (otherpad);
|
||||
}
|
||||
|
||||
static GstPadLinkReturn
|
||||
gst_deinterlace_link (GstPad * pad, const GstCaps * caps)
|
||||
|
@ -146,10 +158,13 @@ gst_deinterlace_link (GstPad * pad, const GstCaps * caps)
|
|||
GstDeInterlace *filter;
|
||||
GstStructure *structure;
|
||||
GstPadLinkReturn ret;
|
||||
GstPad *otherpad;
|
||||
|
||||
filter = GST_DEINTERLACE (gst_pad_get_parent (pad));
|
||||
|
||||
ret = gst_pad_try_set_caps (filter->srcpad, caps);
|
||||
otherpad = (pad == filter->srcpad) ? filter->sinkpad : filter->srcpad;
|
||||
|
||||
ret = gst_pad_try_set_caps (otherpad, caps);
|
||||
if (GST_PAD_LINK_FAILED (ret)) {
|
||||
return ret;
|
||||
}
|
||||
|
@ -176,12 +191,14 @@ gst_deinterlace_init (GstDeInterlace * filter)
|
|||
(&deinterlace_sink_factory), "sink");
|
||||
gst_pad_set_chain_function (filter->sinkpad, gst_deinterlace_chain);
|
||||
gst_pad_set_link_function (filter->sinkpad, gst_deinterlace_link);
|
||||
gst_pad_set_getcaps_function (filter->sinkpad, gst_deinterlace_getcaps);
|
||||
gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad);
|
||||
|
||||
filter->srcpad =
|
||||
gst_pad_new_from_template (gst_static_pad_template_get
|
||||
(&deinterlace_src_factory), "src");
|
||||
gst_pad_set_link_function (filter->srcpad, gst_deinterlace_link);
|
||||
gst_pad_set_getcaps_function (filter->srcpad, gst_deinterlace_getcaps);
|
||||
gst_element_add_pad (GST_ELEMENT (filter), filter->srcpad);
|
||||
|
||||
filter->show_deinterlaced_area_only = FALSE;
|
||||
|
|
|
@ -162,9 +162,9 @@ gst_videodrop_getcaps (GstPad * pad)
|
|||
gst_structure_set (structure,
|
||||
"framerate", GST_TYPE_DOUBLE_RANGE, 0.0, G_MAXDOUBLE, NULL);
|
||||
}
|
||||
if (negotiated) {
|
||||
for (i = 0; i < gst_caps_get_size (caps); i++) {
|
||||
structure = gst_caps_get_structure (caps, i);
|
||||
if ((negotiated) && (videodrop->speed != 1.0)) {
|
||||
for (i = 0; i < gst_caps_get_size (copy2); i++) {
|
||||
structure = gst_caps_get_structure (copy2, i);
|
||||
|
||||
gst_structure_set (structure,
|
||||
"framerate", G_TYPE_DOUBLE, otherfps * videodrop->speed, NULL);
|
||||
|
@ -195,14 +195,30 @@ gst_videodrop_link (GstPad * pad, const GstCaps * caps)
|
|||
ret = gst_structure_get_double (structure, "framerate", &fps);
|
||||
if (!ret)
|
||||
return GST_PAD_LINK_REFUSED;
|
||||
|
||||
if (pad == videodrop->srcpad) {
|
||||
videodrop->from_fps = fps;
|
||||
} else {
|
||||
videodrop->to_fps = fps;
|
||||
} else {
|
||||
videodrop->from_fps = fps;
|
||||
}
|
||||
|
||||
if (gst_pad_is_negotiated (otherpad)) {
|
||||
gst_pad_renegotiate (otherpad);
|
||||
/*
|
||||
* Ensure that the other side talks the format we're trying to set
|
||||
*/
|
||||
GstCaps *newcaps = gst_caps_copy (caps);
|
||||
|
||||
if (pad == videodrop->srcpad) {
|
||||
gst_caps_set_simple (newcaps,
|
||||
"framerate", G_TYPE_DOUBLE, videodrop->from_fps, NULL);
|
||||
} else {
|
||||
gst_caps_set_simple (newcaps,
|
||||
"framerate", G_TYPE_DOUBLE, videodrop->to_fps, NULL);
|
||||
}
|
||||
ret = gst_pad_try_set_caps (otherpad, newcaps);
|
||||
if (GST_PAD_LINK_FAILED (ret)) {
|
||||
return GST_PAD_LINK_REFUSED;
|
||||
}
|
||||
}
|
||||
|
||||
return GST_PAD_LINK_OK;
|
||||
|
|
Loading…
Reference in a new issue