Revert "dataurisrc: Remove unnecessary else if condition"
authorThiago Santos <thiagoss@osg.samsung.com>
Sun, 7 Sep 2014 04:30:16 +0000 (01:30 -0300)
committerThiago Santos <thiagoss@osg.samsung.com>
Sun, 7 Sep 2014 04:30:16 +0000 (01:30 -0300)
This reverts commit 3024ae9c38490817a76c83feab3c8472989cafad.

The *buf can be NULL or not depending if the caller of gst_pad_get_range
function provided or not a buffer.

gst/dataurisrc/gstdataurisrc.c

index f18fae7..1fde36d 100644 (file)
@@ -227,13 +227,21 @@ gst_data_uri_src_create (GstBaseSrc * basesrc, guint64 offset, guint size,
    * larger than the max. available size if a segment at the end is requested */
   if (offset + size > gst_buffer_get_size (src->buffer)) {
     ret = GST_FLOW_EOS;
+  } else if (*buf != NULL) {
+    GstMapInfo src_info;
+    GstMapInfo dest_info;
+    gsize fill_size;
+
+    gst_buffer_map (src->buffer, &src_info, GST_MAP_READ);
+    gst_buffer_map (*buf, &dest_info, GST_MAP_WRITE);
+
+    fill_size = gst_buffer_fill (*buf, 0, src_info.data + offset, size);
+
+    gst_buffer_unmap (*buf, &dest_info);
+    gst_buffer_unmap (src->buffer, &src_info);
+    gst_buffer_set_size (*buf, fill_size);
+    ret = GST_FLOW_OK;
   } else {
-    /* Adding a check to unreference the buffer if *buf != NULL, 
-     * just in case a buffer is provided*/
-    if (*buf != NULL) {
-      gst_buffer_unref (*buf);
-      GST_FIXME_OBJECT (src, "Buffer is not supposed to be provided here");
-    }
     *buf =
         gst_buffer_copy_region (src->buffer, GST_BUFFER_COPY_ALL, offset, size);
     ret = GST_FLOW_OK;