RTP: implement demux EOF
authorRémi Denis-Courmont <rdenis@simphalempin.com>
Thu, 27 Nov 2008 16:45:17 +0000 (18:45 +0200)
committerRémi Denis-Courmont <rdenis@simphalempin.com>
Thu, 27 Nov 2008 17:12:57 +0000 (19:12 +0200)
modules/access/rtp/input.c
modules/access/rtp/rtp.c
modules/access/rtp/rtp.h

index 0cfa406..73b37b8 100644 (file)
@@ -190,7 +190,11 @@ void *rtp_thread (void *data)
 }
 
 
-void rtp_process (demux_t *demux)
+/**
+ * Process one RTP packet from the de-jitter queue.
+ * @return 0 on success, -1 on EOF
+ */
+int rtp_process (demux_t *demux)
 {
     demux_sys_t *p_sys = demux->p_sys;
     mtime_t deadline = INT64_MAX;
@@ -202,4 +206,6 @@ void rtp_process (demux_t *demux)
     else
         vlc_cond_wait (&p_sys->wait, &p_sys->lock);
     vlc_mutex_unlock (&p_sys->lock);
+
+    return p_sys->dead ? -1 : 0;
 }
index c3b4bd0..056d940 100644 (file)
@@ -632,6 +632,5 @@ int rtp_autodetect (demux_t *demux, rtp_session_t *session,
  */
 static int Demux (demux_t *demux)
 {
-    rtp_process (demux);
-    return 1;
+    return rtp_process (demux) ? 0 : 1;
 }
index 9861664..0d7659d 100644 (file)
@@ -46,7 +46,7 @@ void rtp_queue (demux_t *, rtp_session_t *, block_t *);
 bool rtp_dequeue (demux_t *, const rtp_session_t *, mtime_t *);
 int rtp_add_type (demux_t *demux, rtp_session_t *ses, const rtp_pt_t *pt);
 
-void rtp_process (demux_t *demux);
+int rtp_process (demux_t *demux);
 void *rtp_thread (void *data);
 
 /* Global data */