Merge branch 'master' into 0.11
authorWim Taymans <wim.taymans@collabora.co.uk>
Tue, 24 May 2011 15:34:19 +0000 (17:34 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Tue, 24 May 2011 15:34:19 +0000 (17:34 +0200)
Conflicts:
gst/avi/gstavidemux.c
gst/rtp/gstrtpac3depay.c
gst/rtp/gstrtpg726depay.c
gst/rtp/gstrtpmpvdepay.c
gst/videofilter/gstgamma.c

17 files changed:
1  2 
configure.ac
ext/flac/gstflacdec.c
gst/avi/gstavidemux.c
gst/isomp4/qtdemux.c
gst/matroska/matroska-demux.c
gst/rtp/gstrtpac3depay.c
gst/rtp/gstrtpbvdepay.c
gst/rtp/gstrtpg722depay.c
gst/rtp/gstrtpg726depay.c
gst/rtp/gstrtpgsmdepay.c
gst/rtp/gstrtpilbcdepay.c
gst/rtp/gstrtpmpvdepay.c
gst/rtp/gstrtppcmadepay.c
gst/rtp/gstrtppcmudepay.c
gst/rtsp/gstrtspsrc.c
sys/v4l2/gstv4l2object.c
sys/v4l2/gstv4l2sink.c

diff --cc configure.ac
Simple merge
Simple merge
@@@ -1878,10 -1900,9 +1878,12 @@@ gst_avi_demux_roundup_list (GstAviDemu
  
      GST_DEBUG_OBJECT (avi, "rounding up dubious list size %d", size);
      obuf = gst_buffer_new_and_alloc (size + 1);
 -    memcpy (GST_BUFFER_DATA (obuf), GST_BUFFER_DATA (*buf), size);
 +
 +    data = gst_buffer_map (obuf, NULL, NULL, GST_MAP_WRITE);
 +    gst_buffer_extract (*buf, 0, data, size);
+     /* assume 0 padding, at least makes outcome deterministic */
 -    (GST_BUFFER_DATA (obuf))[size] = 0;
++    data[size] = 0;
 +    gst_buffer_unmap (obuf, data, size + 1);
      gst_buffer_replace (buf, obuf);
    }
  }
Simple merge
@@@ -2687,11 -2451,11 +2451,11 @@@ gst_matroska_demux_handle_seek_event (G
      /* upstream takes care of flushing and all that
       * ... and newsegment event handling takes care of the rest */
      return perform_seek_to_offset (demux,
-         entry->pos + demux->ebml_segment_start);
+         entry->pos + demux->common.ebml_segment_start);
    }
  
 -  flush = ! !(flags & GST_SEEK_FLAG_FLUSH);
 -  keyunit = ! !(flags & GST_SEEK_FLAG_KEY_UNIT);
 +  flush = !!(flags & GST_SEEK_FLAG_FLUSH);
 +  keyunit = !!(flags & GST_SEEK_FLAG_KEY_UNIT);
  
    if (flush) {
      GST_DEBUG_OBJECT (demux, "Starting flush");
@@@ -165,35 -168,39 +165,36 @@@ gst_rtp_ac3_depay_process (GstBaseRTPDe
  
    rtpac3depay = GST_RTP_AC3_DEPAY (depayload);
  
 -  {
 -    guint8 *payload;
 -    guint16 FT, NF;
 +  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
  
 -    if (gst_rtp_buffer_get_payload_len (buf) < 2)
 -      goto empty_packet;
 +  if (gst_rtp_buffer_get_payload_len (&rtp) < 2)
 +    goto empty_packet;
  
 -    payload = gst_rtp_buffer_get_payload (buf);
 +  payload = gst_rtp_buffer_get_payload (&rtp);
  
 -    /* strip off header
 -     *
 -     *  0                   1
 -     *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
 -     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 -     * |    MBZ    | FT|       NF      |
 -     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 -     */
 -    FT = payload[0] & 0x3;
 -    NF = payload[1];
 +  /* strip off header
 +   *
 +   *  0                   1
 +   *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
 +   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +   * |    MBZ    | FT|       NF      |
 +   * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 +   */
 +  FT = payload[0] & 0x3;
 +  NF = payload[1];
  
 -    GST_DEBUG_OBJECT (rtpac3depay, "FT: %d, NF: %d", FT, NF);
 +  GST_DEBUG_OBJECT (rtpac3depay, "FT: %d, NF: %d", FT, NF);
  
 -    /* We don't bother with fragmented packets yet */
 -    outbuf = gst_rtp_buffer_get_payload_subbuffer (buf, 2, -1);
 +  /* We don't bother with fragmented packets yet */
 +  outbuf = gst_rtp_buffer_get_payload_subbuffer (&rtp, 2, -1);
  
 -    if (outbuf)
 -        GST_DEBUG_OBJECT (rtpac3depay, "pushing buffer of size %d",
 -            GST_BUFFER_SIZE (outbuf));
 +  gst_rtp_buffer_unmap (&rtp);
  
-   GST_DEBUG_OBJECT (rtpac3depay, "pushing buffer of size %d",
-       gst_buffer_get_size (outbuf));
 -    return outbuf;
 -  }
++  if (outbuf)
++    GST_DEBUG_OBJECT (rtpac3depay, "pushing buffer of size %d",
++        gst_buffer_get_size (outbuf));
  
 -  return NULL;
 +  return outbuf;
  
    /* ERRORS */
  empty_packet:
@@@ -153,20 -156,16 +153,20 @@@ gst_rtp_bv_depay_process (GstBaseRTPDep
  {
    GstBuffer *outbuf;
    gboolean marker;
 +  GstRTPBuffer rtp = { NULL, };
 +
 +  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
  
 -  marker = gst_rtp_buffer_get_marker (buf);
 +  marker = gst_rtp_buffer_get_marker (&rtp);
  
    GST_DEBUG ("process : got %d bytes, mark %d ts %u seqn %d",
 -      GST_BUFFER_SIZE (buf), marker,
 -      gst_rtp_buffer_get_timestamp (buf), gst_rtp_buffer_get_seq (buf));
 +      gst_buffer_get_size (buf), marker,
 +      gst_rtp_buffer_get_timestamp (&rtp), gst_rtp_buffer_get_seq (&rtp));
  
 -  outbuf = gst_rtp_buffer_get_payload_buffer (buf);
 +  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
 +  gst_rtp_buffer_unmap (&rtp);
  
-   if (marker) {
+   if (marker && outbuf) {
      /* mark start of talkspurt with DISCONT */
      GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
    }
@@@ -231,11 -233,10 +231,11 @@@ gst_rtp_g722_depay_process (GstBaseRTPD
  
    GST_DEBUG_OBJECT (rtpg722depay, "got payload of %d bytes", payload_len);
  
 -  outbuf = gst_rtp_buffer_get_payload_buffer (buf);
 -  marker = gst_rtp_buffer_get_marker (buf);
 +  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
 +  marker = gst_rtp_buffer_get_marker (&rtp);
 +  gst_rtp_buffer_unmap (&rtp);
  
-   if (marker) {
+   if (marker && outbuf) {
      /* mark talk spurt with DISCONT */
      GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
    }
@@@ -221,20 -221,31 +221,24 @@@ gst_rtp_g726_depay_process (GstBaseRTPD
  
    if (depay->aal2 || depay->force_aal2) {
      /* AAL2, we can just copy the bytes */
 -    outbuf = gst_rtp_buffer_get_payload_buffer (buf);
 +    outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
+     if (!outbuf)
+       goto bad_len;
    } else {
 -    guint8 *in, *out, tmp;
 +    guint8 *in, *out, tmp, *odata;
      guint len;
 +    gsize osize;
  
 -    in = gst_rtp_buffer_get_payload (buf);
 -    len = gst_rtp_buffer_get_payload_len (buf);
 -
 -    if (gst_buffer_is_writable (buf)) {
 -      outbuf = gst_rtp_buffer_get_payload_buffer (buf);
 -    } else {
 -      GstBuffer *copy;
 -
 -      /* copy buffer */
 -      copy = gst_buffer_copy (buf);
 -      outbuf = gst_rtp_buffer_get_payload_buffer (copy);
 -      gst_buffer_unref (copy);
 -    }
 +    in = gst_rtp_buffer_get_payload (&rtp);
 +    len = gst_rtp_buffer_get_payload_len (&rtp);
  
 +    outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
+     if (!outbuf)
+       goto bad_len;
 +    outbuf = gst_buffer_make_writable (outbuf);
  
 -    out = GST_BUFFER_DATA (outbuf);
 +    odata = gst_buffer_map (outbuf, &osize, NULL, GST_MAP_WRITE);
 +    out = odata;
  
      /* we need to reshuffle the bytes, input is always of the form
       * A B C D ... with the number of bits depending on the bitrate. */
@@@ -122,21 -127,16 +122,21 @@@ gst_rtp_gsm_depay_process (GstBaseRTPDe
  {
    GstBuffer *outbuf = NULL;
    gboolean marker;
 +  GstRTPBuffer rtp = { NULL };
 +
 +  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
  
 -  marker = gst_rtp_buffer_get_marker (buf);
 +  marker = gst_rtp_buffer_get_marker (&rtp);
  
    GST_DEBUG ("process : got %d bytes, mark %d ts %u seqn %d",
 -      GST_BUFFER_SIZE (buf), marker,
 -      gst_rtp_buffer_get_timestamp (buf), gst_rtp_buffer_get_seq (buf));
 +      gst_buffer_get_size (buf), marker,
 +      gst_rtp_buffer_get_timestamp (&rtp), gst_rtp_buffer_get_seq (&rtp));
 +
 +  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
  
 -  outbuf = gst_rtp_buffer_get_payload_buffer (buf);
 +  gst_rtp_buffer_unmap (&rtp);
  
-   if (marker) {
+   if (marker && outbuf) {
      /* mark start of talkspurt with DISCONT */
      GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
    }
@@@ -176,21 -179,16 +176,21 @@@ gst_rtp_ilbc_depay_process (GstBaseRTPD
  {
    GstBuffer *outbuf;
    gboolean marker;
 +  GstRTPBuffer rtp = { NULL };
  
 -  marker = gst_rtp_buffer_get_marker (buf);
 +  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
 +
 +  marker = gst_rtp_buffer_get_marker (&rtp);
  
    GST_DEBUG ("process : got %d bytes, mark %d ts %u seqn %d",
 -      GST_BUFFER_SIZE (buf), marker,
 -      gst_rtp_buffer_get_timestamp (buf), gst_rtp_buffer_get_seq (buf));
 +      gst_buffer_get_size (buf), marker,
 +      gst_rtp_buffer_get_timestamp (&rtp), gst_rtp_buffer_get_seq (&rtp));
 +
 +  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
  
 -  outbuf = gst_rtp_buffer_get_payload_buffer (buf);
 +  gst_rtp_buffer_unmap (&rtp);
  
-   if (marker) {
+   if (marker && outbuf) {
      /* mark start of talkspurt with DISCONT */
      GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
    }
@@@ -170,12 -174,14 +170,13 @@@ gst_rtp_mpv_depay_process (GstBaseRTPDe
        payload += 4;
      }
  
 -    outbuf = gst_rtp_buffer_get_payload_subbuffer (buf, payload_header, -1);
 +    outbuf = gst_rtp_buffer_get_payload_subbuffer (&rtp, payload_header, -1);
  
-     GST_DEBUG_OBJECT (rtpmpvdepay,
-         "gst_rtp_mpv_depay_chain: pushing buffer of size %d",
-         gst_buffer_get_size (outbuf));
+     if (outbuf) {
+       GST_DEBUG_OBJECT (rtpmpvdepay,
+           "gst_rtp_mpv_depay_chain: pushing buffer of size %d",
 -          GST_BUFFER_SIZE (outbuf));
++          gst_buffer_get_size (outbuf));
+     }
 -
      return outbuf;
    }
  
@@@ -130,29 -133,26 +130,31 @@@ gst_rtp_pcma_depay_process (GstBaseRTPD
    GstBuffer *outbuf = NULL;
    gboolean marker;
    guint len;
 +  GstRTPBuffer rtp = { NULL };
 +
 +  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
  
 -  marker = gst_rtp_buffer_get_marker (buf);
 +  marker = gst_rtp_buffer_get_marker (&rtp);
  
    GST_DEBUG ("process : got %d bytes, mark %d ts %u seqn %d",
 -      GST_BUFFER_SIZE (buf), marker,
 -      gst_rtp_buffer_get_timestamp (buf), gst_rtp_buffer_get_seq (buf));
 +      gst_buffer_get_size (buf), marker,
 +      gst_rtp_buffer_get_timestamp (&rtp), gst_rtp_buffer_get_seq (&rtp));
  
 -  len = gst_rtp_buffer_get_payload_len (buf);
 -  outbuf = gst_rtp_buffer_get_payload_buffer (buf);
 +  len = gst_rtp_buffer_get_payload_len (&rtp);
 +  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
 +  gst_rtp_buffer_unmap (&rtp);
  
-   GST_BUFFER_DURATION (outbuf) =
-       gst_util_uint64_scale_int (len, GST_SECOND, depayload->clock_rate);
+   if (outbuf) {
+     GST_BUFFER_DURATION (outbuf) =
+         gst_util_uint64_scale_int (len, GST_SECOND, depayload->clock_rate);
  
-   if (marker) {
-     /* mark start of talkspurt with DISCONT */
-     GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
+     if (marker) {
+       /* mark start of talkspurt with DISCONT */
+       GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
+     }
    }
  
 +
    return outbuf;
  }
  
@@@ -130,26 -134,24 +131,28 @@@ gst_rtp_pcmu_depay_process (GstBaseRTPD
    GstBuffer *outbuf = NULL;
    guint len;
    gboolean marker;
 +  GstRTPBuffer rtp = { NULL };
 +
 +  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
  
 -  marker = gst_rtp_buffer_get_marker (buf);
 +  marker = gst_rtp_buffer_get_marker (&rtp);
  
    GST_DEBUG ("process : got %d bytes, mark %d ts %u seqn %d",
 -      GST_BUFFER_SIZE (buf), marker,
 -      gst_rtp_buffer_get_timestamp (buf), gst_rtp_buffer_get_seq (buf));
 +      gst_buffer_get_size (buf), marker,
 +      gst_rtp_buffer_get_timestamp (&rtp), gst_rtp_buffer_get_seq (&rtp));
  
 -  len = gst_rtp_buffer_get_payload_len (buf);
 -  outbuf = gst_rtp_buffer_get_payload_buffer (buf);
 +  len = gst_rtp_buffer_get_payload_len (&rtp);
 +  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
 +  gst_rtp_buffer_unmap (&rtp);
  
-   GST_BUFFER_DURATION (outbuf) =
-       gst_util_uint64_scale_int (len, GST_SECOND, depayload->clock_rate);
+   if (outbuf) {
+     GST_BUFFER_DURATION (outbuf) =
+         gst_util_uint64_scale_int (len, GST_SECOND, depayload->clock_rate);
  
-   if (marker) {
-     /* mark start of talkspurt with DISCONT */
-     GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
+     if (marker) {
+       /* mark start of talkspurt with DISCONT */
+       GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
+     }
    }
  
    return outbuf;
Simple merge
Simple merge
@@@ -105,10 -107,12 +107,10 @@@ gst_v4l2sink_iface_supported (GstImplem
    g_assert (iface_type == GST_TYPE_X_OVERLAY ||
        iface_type == GST_TYPE_NAVIGATION ||
        iface_type == GST_TYPE_COLOR_BALANCE ||
-       iface_type == GST_TYPE_VIDEO_ORIENTATION);
 -      iface_type == GST_TYPE_VIDEO_ORIENTATION ||
 -      iface_type == GST_TYPE_TUNER);
++      iface_type == GST_TYPE_VIDEO_ORIENTATION || iface_type == GST_TYPE_TUNER);
  #else
    g_assert (iface_type == GST_TYPE_COLOR_BALANCE ||
-       iface_type == GST_TYPE_VIDEO_ORIENTATION);
 -      iface_type == GST_TYPE_VIDEO_ORIENTATION ||
 -      iface_type == GST_TYPE_TUNER);
++      iface_type == GST_TYPE_VIDEO_ORIENTATION || iface_type == GST_TYPE_TUNER);
  #endif
  
    if (v4l2object->video_fd == -1)