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
index 845ccf84e5d89a119606dc47e5870ee400994fba,5f2673b047ed4be57a87eed91d309c8327758417..def2b93f5550e568e0b055c78c1145aaf6ead48e
@@@ -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
index 788c8dd6894b3d5bda7ba3aa81cca61c33a6176b,3a4be608506655705f82f3fbe43b757f7c6971d2..02a0ffcd77cf950a1beed447c7d00f3ad9a83ff9
@@@ -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");
index 099be64a9ae357811a68ca34b85fb876c44c65d3,cb6304e6d8b9d46b9d267cd613af8042f3123f9b..17da501fe7faa8ea329bb8e2e1d203921ad3255c
@@@ -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:
index a01aa479b2939145ce7ded86ecbd4ad6fdc5b162,1957ceeaa83d6af27e89eb749a29458d125269d7..7b8d67f095af0417e0f9b09182d1b6afa617fefb
@@@ -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);
    }
index 8f0f2c5fc911d882909b4b3097cc8ab756ad7ed3,0815b2314ac223fe3eae9ca77adf11e10441ca68..e792e600b2c47f5baed33cefa075fffd5474908b
@@@ -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);
    }
index cf88bd6e5fb27d8b5f90125ac52f4ee009ed4475,33247d0994096fdc67ab357518fcf4e036fe64a2..2f34a0dfc9ca7ba3cd516e0e7162d11c16d067cc
@@@ -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. */
index 30f6a7f715c2d7d3f1d9b1d425861a42ec95884f,ca54ea886513bd71244a1d7c14397c687c0164a7..298708af6dd21a2776ab34e1c0dc424361b30fa0
@@@ -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);
    }
index 6c22596b3c754b29892d3bfe9262bb90972a2533,d5465c2d0a8d7eabccb0191a65097bb7b0058651..f8e8ab5144164c06c6ca3db44078b9ba744d158f
@@@ -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);
    }
index d6e856bec94346c1950f6cc40cd96e132ec1801f,1dea39403c1108d9024cd54c2f59151568cd7c2b..c94eb63af4a373290f1fcb18d162ac87a53e96c9
@@@ -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;
    }
  
index 27d463f7c45e65864d509cd313fcfb4112986dd8,50c858a121ae95c074484934910bb84cb4690313..4d4a80ede34b6ff3409def421e428e71cefbd2bb
@@@ -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;
  }
  
index 0a208cdc96da2e7e7c7dc60c4f4d0a988ac57ca6,395599b185e2743f4d84a5eade7208f5d63ff361..36dfd46ef1e777000e4a8776ede283376b323558
@@@ -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
index fcf7e873277e9ca0166f2bac5335e059778ae4b1,8672a1dd8767ae7fec1325332d0b497850d89e14..1c8108b96edc088314ceacd2147b8b69fac3d83d
@@@ -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)