Negotiation fixes.

Original commit message from CVS:
Negotiation fixes.
This commit is contained in:
David Schleef 2003-12-31 08:02:04 +00:00
parent 34835ba3e7
commit ceb2719593
2 changed files with 36 additions and 7 deletions

View file

@ -1,3 +1,32 @@
2003-12-30 David Schleef <ds@schleef.org>
* ext/ffmpeg/gstffmpegcolorspace.c:
(gst_ffmpegcsp_caps_remove_format_info), (gst_ffmpegcsp_getcaps),
(gst_ffmpegcsp_pad_link), (gst_ffmpegcsp_init),
(gst_ffmpegcsp_chain): Negotiation fixes
* ext/mad/gstmad.c: (gst_mad_chain): Negotiation fixes
* gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_chain),
(gst_audio_convert_link), (gst_audio_convert_channels):
* gst/audioscale/gstaudioscale.c: (gst_audioscale_getcaps),
(gst_audioscale_link), (gst_audioscale_get_buffer),
(gst_audioscale_chain): Negotiation fixes
* gst/audioscale/gstaudioscale.h:
* gst/videofilter/gstvideofilter.c:
(gst_videofilter_format_get_structure), (gst_videofilter_getcaps),
(gst_videofilter_link), (gst_videofilter_init),
(gst_videofilter_set_output_size), (gst_videofilter_setup),
(gst_videofilter_find_format_by_structure):
* gst/videofilter/gstvideofilter.h: Negotiation fixes
* gst/videoscale/gstvideoscale.c: (gst_videoscale_getcaps),
(gst_videoscale_link):
* gst/videoscale/videoscale.c: (videoscale_get_structure),
(videoscale_find_by_structure), (gst_videoscale_setup):
* gst/videoscale/videoscale.h: Negotiation fixes
* sys/ximage/ximagesink.c: (gst_ximagesink_handle_xevents),
(gst_ximagesink_fixate), (gst_ximagesink_init): Add a fixate
function, restrict resizing to a multiple of 4 (hack until
everyone supports odd sizes correctly).
2003-12-29 Colin Walters <walters@verbum.org> 2003-12-29 Colin Walters <walters@verbum.org>
* ext/esd/esdsink.c (gst_esdsink_link): Fix typo; get depth instead of * ext/esd/esdsink.c (gst_esdsink_link): Fix typo; get depth instead of

View file

@ -1057,12 +1057,14 @@ gst_mad_chain (GstPad *pad, GstData *_data)
gst_mad_update_info (mad); gst_mad_update_info (mad);
if (mad->channels != nchannels || mad->rate != rate) { if (mad->channels != nchannels || mad->rate != rate) {
GstPadLinkReturn ret;
if (mad->stream.options & MAD_OPTION_HALFSAMPLERATE) if (mad->stream.options & MAD_OPTION_HALFSAMPLERATE)
rate >>=1; rate >>=1;
/* we set the caps even when the pad is not connected so they /* we set the caps even when the pad is not connected so they
* can be gotten for streaminfo */ * can be gotten for streaminfo */
if (gst_pad_try_set_caps (mad->srcpad, ret = gst_pad_try_set_caps (mad->srcpad,
gst_caps_new_simple ("audio/x-raw-int", gst_caps_new_simple ("audio/x-raw-int",
"endianness", G_TYPE_INT, G_BYTE_ORDER, "endianness", G_TYPE_INT, G_BYTE_ORDER,
"signed", G_TYPE_BOOLEAN, TRUE, "signed", G_TYPE_BOOLEAN, TRUE,
@ -1070,13 +1072,11 @@ gst_mad_chain (GstPad *pad, GstData *_data)
"depth", G_TYPE_INT, 16, "depth", G_TYPE_INT, 16,
"rate", G_TYPE_INT, rate, "rate", G_TYPE_INT, rate,
"channels", G_TYPE_INT, nchannels, "channels", G_TYPE_INT, nchannels,
NULL)) <= 0) NULL));
{ if (GST_PAD_LINK_FAILED (ret)) {
if (!gst_pad_recover_caps_error (mad->srcpad, NULL)) { gst_element_error (GST_ELEMENT (mad), "Could not set caps on source pad");
gst_buffer_unref (buffer);
return; return;
} }
}
mad->channels = nchannels; mad->channels = nchannels;
mad->rate = rate; mad->rate = rate;
} }