]> code.delx.au - pulseaudio/commitdiff
Add seq and rtptime params to record/flush with a view to using these for timing...
authorColin Guthrie <pulse@colin.guthr.ie>
Mon, 9 Jun 2008 21:59:41 +0000 (21:59 +0000)
committerColin Guthrie <pulse@colin.guthr.ie>
Wed, 8 Oct 2008 19:32:09 +0000 (20:32 +0100)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2500 fefdeb5f-60dc-0310-8127-8f9354f1896f

src/modules/rtp/raop_client.c
src/modules/rtp/rtsp_client.c
src/modules/rtp/rtsp_client.h

index 4085a49493c02d7e273e804bb7e56b5a1aae31b2..4714d27329227b8c392aec1c0a4a7273450698e8 100644 (file)
@@ -90,6 +90,9 @@ struct pa_raop_client {
     pa_socket_client *sc;
     int fd;
 
+    uint16_t seq;
+    uint32_t rtptime;
+
     pa_raop_client_cb_t callback;
     void* userdata;
     pa_raop_client_closed_cb_t closed_callback;
@@ -317,7 +320,7 @@ static void rtsp_cb(pa_rtsp_client *rtsp, pa_rtsp_state state, pa_headerlist* he
             } else {
                 pa_log_warn("Audio Jack Status missing");
             }
-            pa_rtsp_record(c->rtsp);
+            pa_rtsp_record(c->rtsp, &c->seq, &c->rtptime);
             break;
         }
 
@@ -403,8 +406,6 @@ void pa_raop_client_free(pa_raop_client* c)
 }
 
 
-static void noop(PA_GCC_UNUSED void* p) {}
-
 int pa_raop_client_encode_sample(pa_raop_client* c, pa_memchunk* raw, pa_memchunk* encoded)
 {
     uint16_t len;
index f9fe9bfe99408cda8c81414fc259da05ea7cfa6b..700404281fa3825e9cb86ff30057711c6769d454 100644 (file)
@@ -47,6 +47,8 @@
 #include <pulsecore/strbuf.h>
 #include <pulsecore/poll.h>
 #include <pulsecore/ioline.h>
+#include <pulsecore/time-smoother.h>
+#include <pulsecore/rtclock.h>
 
 #include "rtsp_client.h"
 
@@ -467,9 +469,10 @@ int pa_rtsp_setup(pa_rtsp_client* c) {
 }
 
 
-int pa_rtsp_record(pa_rtsp_client* c) {
+int pa_rtsp_record(pa_rtsp_client* c, uint16_t* seq, uint32_t* rtptime) {
     pa_headerlist* headers;
     int rv;
+    char *info;
 
     pa_assert(c);
     if (!c->session) {
@@ -477,9 +480,14 @@ int pa_rtsp_record(pa_rtsp_client* c) {
         return -1;
     }
 
+    /* Todo: Generate these values randomly as per spec */
+    *seq = *rtptime = 0;
+
     headers = pa_headerlist_new();
     pa_headerlist_puts(headers, "Range", "npt=0-");
-    pa_headerlist_puts(headers, "RTP-Info", "seq=0;rtptime=0");
+    info = pa_sprintf_malloc("seq=%u;rtptime=%u", *seq, *rtptime);
+    pa_headerlist_puts(headers, "RTP-Info", info);
+    pa_xfree(info);
 
     c->state = STATE_RECORD;
     rv = rtsp_exec(c, "RECORD", NULL, NULL, 1, headers);
@@ -506,14 +514,17 @@ int pa_rtsp_setparameter(pa_rtsp_client *c, const char* param) {
 }
 
 
-int pa_rtsp_flush(pa_rtsp_client *c) {
+int pa_rtsp_flush(pa_rtsp_client *c, uint16_t seq, uint32_t rtptime) {
     pa_headerlist* headers;
     int rv;
+    char *info;
 
     pa_assert(c);
 
     headers = pa_headerlist_new();
-    pa_headerlist_puts(headers, "RTP-Info", "seq=0;rtptime=0");
+    info = pa_sprintf_malloc("seq=%u;rtptime=%u", seq, rtptime);
+    pa_headerlist_puts(headers, "RTP-Info", info);
+    pa_xfree(info);
 
     c->state = STATE_FLUSH;
     rv = rtsp_exec(c, "FLUSH", NULL, NULL, 1, headers);
index 3c5280c2413d91761b58530ccd964132c357d421..555401803a23a3a5dcdf80c84fd884964c4a64e2 100644 (file)
@@ -66,10 +66,10 @@ void pa_rtsp_remove_header(pa_rtsp_client *c, const char* key);
 int pa_rtsp_announce(pa_rtsp_client* c, const char* sdp);
 
 int pa_rtsp_setup(pa_rtsp_client* c);
-int pa_rtsp_record(pa_rtsp_client* c);
+int pa_rtsp_record(pa_rtsp_client* c, uint16_t* seq, uint32_t* rtptime);
 int pa_rtsp_teardown(pa_rtsp_client* c);
 
 int pa_rtsp_setparameter(pa_rtsp_client* c, const char* param);
-int pa_rtsp_flush(pa_rtsp_client* c);
+int pa_rtsp_flush(pa_rtsp_client* c, uint16_t seq, uint32_t rtptime);
 
 #endif