Merge remote-tracking branch 'origin/master' into 0.11
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Sat, 26 Nov 2011 12:12:59 +0000 (12:12 +0000)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Sat, 26 Nov 2011 12:12:59 +0000 (12:12 +0000)
Conflicts:
ext/vorbis/gstvorbisenc.c
gst/playback/gstdecodebin2.c
gst/playback/gstplaysinkconvertbin.c
gst/videorate/gstvideorate.c

1  2 
ext/ogg/gstoggdemux.c
ext/ogg/gstoggdemux.h
ext/ogg/gstoggmux.c
ext/vorbis/gstvorbisenc.c
gst-libs/gst/audio/Makefile.am
gst-libs/gst/audio/gstaudiodecoder.h
gst-libs/gst/audio/gstaudioencoder.h
gst/playback/gstdecodebin2.c
gst/playback/gstplaybin2.c
gst/playback/gstplaysinkconvertbin.c
gst/videorate/gstvideorate.c

Simple merge
Simple merge
@@@ -968,9 -987,13 +968,15 @@@ gst_ogg_mux_queue_pads (GstOggMux * ogg
              } else {
                GST_DEBUG_OBJECT (pad, "caps detected: %" GST_PTR_FORMAT,
                    pad->map.caps);
+               if (pad->map.is_sparse) {
+                 GST_DEBUG_OBJECT (pad, "Pad is sparse, marking as such");
+                 gst_collect_pads2_set_waiting (ogg_mux->collect,
+                     (GstCollectData2 *) pad, FALSE);
+               }
              }
 +            if (caps)
 +              gst_caps_unref (caps);
            }
  
            if (pad->have_type)
@@@ -63,9 -63,10 +63,9 @@@ static GstStaticPadTemplate vorbis_enc_
  GST_STATIC_PAD_TEMPLATE ("sink",
      GST_PAD_SINK,
      GST_PAD_ALWAYS,
 -    GST_STATIC_CAPS ("audio/x-raw-float, "
 -        "rate = (int) [ 1, 200000 ], "
 -        "channels = (int) [ 1, 255 ], " "endianness = (int) BYTE_ORDER, "
 -        "width = (int) 32")
 +    GST_STATIC_CAPS ("audio/x-raw, "
 +        "format = (string) " GST_AUDIO_NE (F32) ", "
-         "rate = (int) [ 1, 200000 ], " "channels = (int) [ 1, 256 ]")
++        "rate = (int) [ 1, 200000 ], " "channels = (int) [ 1, 255 ]")
      );
  
  static GstStaticPadTemplate vorbis_enc_src_factory =
@@@ -292,10 -308,11 +292,10 @@@ gst_vorbis_enc_generate_sink_caps (void
      gst_caps_append_structure (caps, structure);
    }
  
 -  gst_caps_append_structure (caps, gst_structure_new ("audio/x-raw-float",
 +  gst_caps_append_structure (caps, gst_structure_new ("audio/x-raw",
 +          "format", G_TYPE_STRING, GST_AUDIO_NE (F32),
            "rate", GST_TYPE_INT_RANGE, 1, 200000,
-           "channels", GST_TYPE_INT_RANGE, 9, 256, NULL));
 -          "channels", GST_TYPE_INT_RANGE, 9, 255,
 -          "endianness", G_TYPE_INT, G_BYTE_ORDER, "width", G_TYPE_INT, 32,
 -          NULL));
++          "channels", GST_TYPE_INT_RANGE, 9, 255, NULL));
  
    return caps;
  }
@@@ -78,9 -76,7 +78,8 @@@ GstAudio-@GST_MAJORMINOR@.gir: $(INTROS
                GST_PLUGIN_SYSTEM_PATH="" GST_PLUGIN_PATH="" GST_REGISTRY_UPDATE=no \
                $(INTROSPECTION_SCANNER) -v --namespace GstAudio \
                --nsversion=@GST_MAJORMINOR@ \
 +              --warn-all \
                --strip-prefix=Gst \
-               -DGST_USE_UNSTABLE_API \
                -I$(top_srcdir)/gst-libs \
                -I$(top_builddir)/gst-libs \
                $(gir_cincludes) \
Simple merge
Simple merge
@@@ -2224,9 -2224,11 +2223,9 @@@ check_upstream_seekable (GstDecodeBin 
    gst_query_unref (query);
  
    /* try harder to query upstream size if we didn't get it the first time */
-   if (dbin->upstream_seekable && stop == -1) {
+   if (seekable && stop == -1) {
 -    GstFormat fmt = GST_FORMAT_BYTES;
 -
      GST_DEBUG_OBJECT (dbin, "doing duration query to fix up unset stop");
 -    gst_pad_query_peer_duration (pad, &fmt, &stop);
 +    gst_pad_peer_query_duration (pad, GST_FORMAT_BYTES, &stop);
    }
  
    /* if upstream doesn't know the size, it's likely that it's not seekable in
Simple merge
@@@ -335,11 -321,25 +336,23 @@@ gst_play_sink_convert_bin_sink_setcaps 
  
    GST_DEBUG_OBJECT (self, "raw %d, self->raw %d, blocked %d",
        raw, self->raw, gst_pad_is_blocked (self->sink_proxypad));
    if (raw) {
-     if (!self->raw && !gst_pad_is_blocked (self->sink_proxypad)) {
-       GST_DEBUG_OBJECT (self, "Changing caps from non-raw to raw");
-       reconfigure = TRUE;
-       block_proxypad (self);
+     if (!gst_pad_is_blocked (self->sink_proxypad)) {
+       GstPad *target = gst_ghost_pad_get_target (GST_GHOST_PAD (self->sinkpad));
 -      if (!self->raw || (target && !gst_pad_accept_caps (target, caps))) {
++      if (!self->raw || (target && !gst_pad_query_accept_caps (target, caps))) {
+         if (!self->raw)
+           GST_DEBUG_OBJECT (self, "Changing caps from non-raw to raw");
+         else
+           GST_DEBUG_OBJECT (self, "Changing caps in an incompatible way");
+         reconfigure = TRUE;
 -        gst_pad_set_blocked_async_full (self->sink_proxypad, TRUE,
 -            (GstPadBlockCallback) pad_blocked_cb, gst_object_ref (self),
 -            (GDestroyNotify) gst_object_unref);
++        block_proxypad (self);
+       }
+       if (target)
+         gst_object_unref (target);
      }
    } else {
      if (self->raw && !gst_pad_is_blocked (self->sink_proxypad)) {
@@@ -402,34 -408,25 +415,60 @@@ gst_play_sink_convert_bin_getcaps (GstP
  
    gst_object_unref (self);
  
 -  allowed_caps = gst_pad_get_caps_reffed (pad);
+   GST_DEBUG_OBJECT (pad, "Returning caps %" GST_PTR_FORMAT, ret);
+   return ret;
+ }
+ static gboolean
+ gst_play_sink_convert_bin_acceptcaps (GstPad * pad, GstCaps * caps)
+ {
+   GstCaps *allowed_caps;
+   gboolean ret;
++  allowed_caps = gst_pad_query_caps (pad, NULL);
+   /* FIXME 0.11: Should be a subset check now */
+   ret = gst_caps_can_intersect (caps, allowed_caps);
+   gst_caps_unref (allowed_caps);
    return ret;
  }
  
 +static gboolean
 +gst_play_sink_convert_bin_query (GstPad * pad, GstObject * parent,
 +    GstQuery * query)
 +{
 +  gboolean res = FALSE;
 +
 +  switch (GST_QUERY_TYPE (query)) {
++    case GST_QUERY_ACCEPT_CAPS:
++    {
++      GstCaps *caps;
++
++      gst_query_parse_accept_caps (query, &caps);
++      gst_query_set_accept_caps_result (query,
++          gst_play_sink_convert_bin_acceptcaps (pad, caps));
++      res = TRUE;
++      break;
++    }
 +    case GST_QUERY_CAPS:
 +    {
 +      GstCaps *filter, *caps;
 +
 +      gst_query_parse_caps (query, &filter);
 +      caps = gst_play_sink_convert_bin_getcaps (pad, filter);
 +      gst_query_set_caps_result (query, caps);
 +      gst_caps_unref (caps);
 +      res = TRUE;
 +      break;
 +    }
 +    default:
 +      res = gst_pad_query_default (pad, parent, query);
 +      break;
 +  }
 +  return res;
 +}
 +
  void
  gst_play_sink_convert_bin_remove_elements (GstPlaySinkConvertBin * self)
  {
@@@ -92,18 -92,21 +92,17 @@@ enu
  
  enum
  {
-   ARG_0,
-   ARG_IN,
-   ARG_OUT,
-   ARG_DUP,
-   ARG_DROP,
-   ARG_SILENT,
-   ARG_NEW_PREF,
-   ARG_SKIP_TO_FIRST,
-   ARG_DROP_ONLY,
-   ARG_AVERAGE_PERIOD,
-   ARG_MAX_RATE
-       /* FILL ME */
+   PROP_0,
+   PROP_IN,
+   PROP_OUT,
+   PROP_DUP,
+   PROP_DROP,
+   PROP_SILENT,
+   PROP_NEW_PREF,
+   PROP_SKIP_TO_FIRST,
+   PROP_DROP_ONLY,
+   PROP_AVERAGE_PERIOD,
 -  PROP_MAX_RATE,
 -  PROP_FORCE_FPS
 -      /* FILL ME */
++  PROP_MAX_RATE
  };
  
  static GstStaticPadTemplate gst_video_rate_src_template =
@@@ -1163,36 -1228,40 +1162,36 @@@ gst_video_rate_get_property (GObject * 
  
    GST_OBJECT_LOCK (videorate);
    switch (prop_id) {
-     case ARG_IN:
+     case PROP_IN:
        g_value_set_uint64 (value, videorate->in);
        break;
-     case ARG_OUT:
+     case PROP_OUT:
        g_value_set_uint64 (value, videorate->out);
        break;
-     case ARG_DUP:
+     case PROP_DUP:
        g_value_set_uint64 (value, videorate->dup);
        break;
-     case ARG_DROP:
+     case PROP_DROP:
        g_value_set_uint64 (value, videorate->drop);
        break;
-     case ARG_SILENT:
+     case PROP_SILENT:
        g_value_set_boolean (value, videorate->silent);
        break;
-     case ARG_NEW_PREF:
+     case PROP_NEW_PREF:
        g_value_set_double (value, videorate->new_pref);
        break;
-     case ARG_SKIP_TO_FIRST:
+     case PROP_SKIP_TO_FIRST:
        g_value_set_boolean (value, videorate->skip_to_first);
        break;
-     case ARG_DROP_ONLY:
+     case PROP_DROP_ONLY:
        g_value_set_boolean (value, videorate->drop_only);
        break;
-     case ARG_AVERAGE_PERIOD:
+     case PROP_AVERAGE_PERIOD:
        g_value_set_uint64 (value, videorate->average_period_set);
        break;
-     case ARG_MAX_RATE:
+     case PROP_MAX_RATE:
        g_value_set_int (value, g_atomic_int_get (&videorate->max_rate));
        break;
 -    case PROP_FORCE_FPS:
 -      gst_value_set_fraction (value, videorate->force_fps_n,
 -          videorate->force_fps_d);
 -      break;
      default:
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
        break;