ext/aalib/gstaasink.c: Add fixate function. (bug #131128)
authorDavid Schleef <ds@schleef.org>
Sat, 6 Mar 2004 04:51:15 +0000 (04:51 +0000)
committerDavid Schleef <ds@schleef.org>
Sat, 6 Mar 2004 04:51:15 +0000 (04:51 +0000)
Original commit message from CVS:
* ext/aalib/gstaasink.c: (gst_aasink_fixate), (gst_aasink_init):
Add fixate function. (bug #131128)
* ext/sdl/sdlvideosink.c: (gst_sdlvideosink_init),
(gst_sdlvideosink_fixate):  Add fixate function.
* gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_link):
Fix attempt to print a non-pointer using GST_PTR_FORMAT.
* gst/wavparse/gstwavparse.c: (gst_wavparse_parse_fmt):
Fix missing break that was causing ulaw to be interpreted as
raw int.

ChangeLog
ext/sdl/sdlvideosink.c

index cb88082..007d831 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 2004-03-05  David Schleef  <ds@schleef.org>
 
+       * ext/aalib/gstaasink.c: (gst_aasink_fixate), (gst_aasink_init):
+       Add fixate function. (bug #131128)
+       * ext/sdl/sdlvideosink.c: (gst_sdlvideosink_init),
+       (gst_sdlvideosink_fixate):  Add fixate function.
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_link):
+       Fix attempt to print a non-pointer using GST_PTR_FORMAT.
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_parse_fmt):
+       Fix missing break that was causing ulaw to be interpreted as
+       raw int.
+
+2004-03-05  David Schleef  <ds@schleef.org>
+
        * gst/mpegstream/gstrfc2250enc.c: (gst_rfc2250_enc_add_slice):
        Fix code that ignores return value of gst_buffer_merge().
        (bug #114560)
index e882f97..aada0eb 100644 (file)
@@ -65,6 +65,7 @@ static void     gst_sdlvideosink_destroy      (GstSDLVideoSink      *sdl);
 static GstPadLinkReturn
                 gst_sdlvideosink_sinkconnect  (GstPad               *pad,
                                                const GstCaps       *caps);
+static GstCaps * gst_sdlvideosink_fixate (GstPad *pad, const GstCaps *caps);
 static void     gst_sdlvideosink_chain        (GstPad               *pad,
                                                GstData              *data);
 
@@ -266,6 +267,8 @@ gst_sdlvideosink_init (GstSDLVideoSink *sdlvideosink)
                               gst_sdlvideosink_chain);
   gst_pad_set_link_function (GST_VIDEOSINK_PAD (sdlvideosink),
                              gst_sdlvideosink_sinkconnect);
+  gst_pad_set_fixate_function (GST_VIDEOSINK_PAD (sdlvideosink),
+                             gst_sdlvideosink_fixate);
 
   sdlvideosink->width = -1;
   sdlvideosink->height = -1;
@@ -506,6 +509,32 @@ gst_sdlvideosink_create (GstSDLVideoSink *sdlvideosink)
   return TRUE;
 }
 
+static GstCaps *
+gst_sdlvideosink_fixate (GstPad *pad, const GstCaps *caps)
+{
+  GstStructure *structure;
+  GstCaps *newcaps;
+
+  if (gst_caps_get_size (caps) > 1) return NULL;
+
+  newcaps = gst_caps_copy (caps);
+  structure = gst_caps_get_structure (newcaps, 0);
+
+  if (gst_caps_structure_fixate_field_nearest_int (structure, "width", 320)) {
+    return newcaps;
+  }
+  if (gst_caps_structure_fixate_field_nearest_int (structure, "height", 240)) {
+    return newcaps;
+  }
+  if (gst_caps_structure_fixate_field_nearest_double (structure, "framerate",
+                                                      30.0)) {
+    return newcaps;
+  }
+
+  gst_caps_free (newcaps);
+  return NULL;
+}
+
 static GstPadLinkReturn
 gst_sdlvideosink_sinkconnect (GstPad  *pad,
                               const GstCaps *vscapslist)