Don't set buffer offset and duration
[gst-aseq-appsrc.git] / gst-aseq-appsrc.c
index 7c42ab4..506409e 100644 (file)
@@ -75,6 +75,12 @@ init_seq (App * app)
     goto error;
   }
 
+  /*
+   * Prevent Valgrind from reporting cached configuration as memory leaks, see:
+   * http://git.alsa-project.org/?p=alsa-lib.git;a=blob;f=MEMORY-LEAK;hb=HEAD
+   */
+  snd_config_update_free_global();
+
   ret = snd_seq_set_client_name (app->seq, DEFAULT_CLIENT_NAME);
   if (ret < 0) {
     GST_ERROR ("Cannot set client name - %s", snd_strerror (ret));
@@ -182,8 +188,6 @@ push_buffer (App * app, gpointer data, guint size)
 
   GST_BUFFER_DTS (buffer) = time;
   GST_BUFFER_PTS (buffer) = time;
-  GST_BUFFER_OFFSET (buffer) = time;
-  GST_BUFFER_DURATION (buffer) = DEFAULT_TICK_PERIOD_MS * GST_MSECOND;
 
   local_data = g_memdup (data, size);
 
@@ -222,14 +226,18 @@ feed_data (GstElement * appsrc, guint size, App * app)
   ret = poll (app->pfds, app->npfds, DEFAULT_POLL_TIMEOUT_MS);
   if (ret < 0) {
     GST_ERROR ("ERROR in poll: %s", strerror (errno));
+    gst_app_src_end_of_stream (GST_APP_SRC (appsrc));
   } else if (ret == 0) {
     push_tick_buffer (app);
   } else {
     do {
       snd_seq_event_t *event;
       err = snd_seq_event_input (app->seq, &event);
-      if (err < 0)
+      if (err < 0 && err != -EAGAIN) {
+        GST_ERROR ("Error in snd_seq_event_input: %s", snd_strerror (err));
+        gst_app_src_end_of_stream (GST_APP_SRC (appsrc));
         break;
+      }
       if (event) {
         size_ev =
             snd_midi_event_decode (app->parser, app->buffer, DEFAULT_BUFSIZE,
@@ -242,6 +250,7 @@ feed_data (GstElement * appsrc, guint size, App * app)
           } else {
             GST_ERROR ("Error decoding event from ALSA to output: %s",
                 strerror (-size_ev));
+            gst_app_src_end_of_stream (GST_APP_SRC (appsrc));
             break;
           }
         } else {