mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	Add seq and rtptime params to record/flush with a view to using these for timing and device suspension
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2500 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
		
							parent
							
								
									651da7d095
								
							
						
					
					
						commit
						5f527dc479
					
				
					 3 changed files with 21 additions and 9 deletions
				
			
		| 
						 | 
					@ -90,6 +90,9 @@ struct pa_raop_client {
 | 
				
			||||||
    pa_socket_client *sc;
 | 
					    pa_socket_client *sc;
 | 
				
			||||||
    int fd;
 | 
					    int fd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    uint16_t seq;
 | 
				
			||||||
 | 
					    uint32_t rtptime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_raop_client_cb_t callback;
 | 
					    pa_raop_client_cb_t callback;
 | 
				
			||||||
    void* userdata;
 | 
					    void* userdata;
 | 
				
			||||||
    pa_raop_client_closed_cb_t closed_callback;
 | 
					    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 {
 | 
					            } else {
 | 
				
			||||||
                pa_log_warn("Audio Jack Status missing");
 | 
					                pa_log_warn("Audio Jack Status missing");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            pa_rtsp_record(c->rtsp);
 | 
					            pa_rtsp_record(c->rtsp, &c->seq, &c->rtptime);
 | 
				
			||||||
            break;
 | 
					            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)
 | 
					int pa_raop_client_encode_sample(pa_raop_client* c, pa_memchunk* raw, pa_memchunk* encoded)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    uint16_t len;
 | 
					    uint16_t len;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,6 +47,8 @@
 | 
				
			||||||
#include <pulsecore/strbuf.h>
 | 
					#include <pulsecore/strbuf.h>
 | 
				
			||||||
#include <pulsecore/poll.h>
 | 
					#include <pulsecore/poll.h>
 | 
				
			||||||
#include <pulsecore/ioline.h>
 | 
					#include <pulsecore/ioline.h>
 | 
				
			||||||
 | 
					#include <pulsecore/time-smoother.h>
 | 
				
			||||||
 | 
					#include <pulsecore/rtclock.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "rtsp_client.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;
 | 
					    pa_headerlist* headers;
 | 
				
			||||||
    int rv;
 | 
					    int rv;
 | 
				
			||||||
 | 
					    char *info;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_assert(c);
 | 
					    pa_assert(c);
 | 
				
			||||||
    if (!c->session) {
 | 
					    if (!c->session) {
 | 
				
			||||||
| 
						 | 
					@ -477,9 +480,14 @@ int pa_rtsp_record(pa_rtsp_client* c) {
 | 
				
			||||||
        return -1;
 | 
					        return -1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Todo: Generate these values randomly as per spec */
 | 
				
			||||||
 | 
					    *seq = *rtptime = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    headers = pa_headerlist_new();
 | 
					    headers = pa_headerlist_new();
 | 
				
			||||||
    pa_headerlist_puts(headers, "Range", "npt=0-");
 | 
					    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;
 | 
					    c->state = STATE_RECORD;
 | 
				
			||||||
    rv = rtsp_exec(c, "RECORD", NULL, NULL, 1, headers);
 | 
					    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;
 | 
					    pa_headerlist* headers;
 | 
				
			||||||
    int rv;
 | 
					    int rv;
 | 
				
			||||||
 | 
					    char *info;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_assert(c);
 | 
					    pa_assert(c);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    headers = pa_headerlist_new();
 | 
					    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;
 | 
					    c->state = STATE_FLUSH;
 | 
				
			||||||
    rv = rtsp_exec(c, "FLUSH", NULL, NULL, 1, headers);
 | 
					    rv = rtsp_exec(c, "FLUSH", NULL, NULL, 1, headers);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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_announce(pa_rtsp_client* c, const char* sdp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int pa_rtsp_setup(pa_rtsp_client* c);
 | 
					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_teardown(pa_rtsp_client* c);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int pa_rtsp_setparameter(pa_rtsp_client* c, const char* param);
 | 
					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
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue