mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-06 13:29:56 -05:00
port module-rtp-send.c to lock-free core
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1855 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
parent
08d4b237a3
commit
a558e9312e
7 changed files with 353 additions and 266 deletions
|
|
@ -25,7 +25,6 @@
|
|||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <time.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
|
|
@ -46,6 +45,7 @@
|
|||
#include <pulsecore/core-error.h>
|
||||
#include <pulsecore/core-util.h>
|
||||
#include <pulsecore/log.h>
|
||||
#include <pulsecore/macro.h>
|
||||
|
||||
#include "sap.h"
|
||||
#include "sdp.h"
|
||||
|
|
@ -53,9 +53,9 @@
|
|||
#define MIME_TYPE "application/sdp"
|
||||
|
||||
pa_sap_context* pa_sap_context_init_send(pa_sap_context *c, int fd, char *sdp_data) {
|
||||
assert(c);
|
||||
assert(fd >= 0);
|
||||
assert(sdp_data);
|
||||
pa_assert(c);
|
||||
pa_assert(fd >= 0);
|
||||
pa_assert(sdp_data);
|
||||
|
||||
c->fd = fd;
|
||||
c->sdp_data = sdp_data;
|
||||
|
|
@ -65,9 +65,9 @@ pa_sap_context* pa_sap_context_init_send(pa_sap_context *c, int fd, char *sdp_da
|
|||
}
|
||||
|
||||
void pa_sap_context_destroy(pa_sap_context *c) {
|
||||
assert(c);
|
||||
pa_assert(c);
|
||||
|
||||
close(c->fd);
|
||||
pa_close(c->fd);
|
||||
pa_xfree(c->sdp_data);
|
||||
}
|
||||
|
||||
|
|
@ -85,7 +85,7 @@ int pa_sap_send(pa_sap_context *c, int goodbye) {
|
|||
return -1;
|
||||
}
|
||||
|
||||
assert(sa->sa_family == AF_INET || sa->sa_family == AF_INET6);
|
||||
pa_assert(sa->sa_family == AF_INET || sa->sa_family == AF_INET6);
|
||||
|
||||
header = htonl(((uint32_t) 1 << 29) |
|
||||
(sa->sa_family == AF_INET6 ? (uint32_t) 1 << 28 : 0) |
|
||||
|
|
@ -113,14 +113,14 @@ int pa_sap_send(pa_sap_context *c, int goodbye) {
|
|||
m.msg_flags = 0;
|
||||
|
||||
if ((k = sendmsg(c->fd, &m, MSG_DONTWAIT)) < 0)
|
||||
pa_log("sendmsg() failed: %s\n", pa_cstrerror(errno));
|
||||
pa_log_warn("sendmsg() failed: %s\n", pa_cstrerror(errno));
|
||||
|
||||
return k;
|
||||
}
|
||||
|
||||
pa_sap_context* pa_sap_context_init_recv(pa_sap_context *c, int fd) {
|
||||
assert(c);
|
||||
assert(fd >= 0);
|
||||
pa_assert(c);
|
||||
pa_assert(fd >= 0);
|
||||
|
||||
c->fd = fd;
|
||||
c->sdp_data = NULL;
|
||||
|
|
@ -136,11 +136,11 @@ int pa_sap_recv(pa_sap_context *c, int *goodbye) {
|
|||
int six, ac;
|
||||
ssize_t r;
|
||||
|
||||
assert(c);
|
||||
assert(goodbye);
|
||||
pa_assert(c);
|
||||
pa_assert(goodbye);
|
||||
|
||||
if (ioctl(c->fd, FIONREAD, &size) < 0) {
|
||||
pa_log("FIONREAD failed: %s", pa_cstrerror(errno));
|
||||
pa_log_warn("FIONREAD failed: %s", pa_cstrerror(errno));
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
|
@ -159,12 +159,12 @@ int pa_sap_recv(pa_sap_context *c, int *goodbye) {
|
|||
m.msg_flags = 0;
|
||||
|
||||
if ((r = recvmsg(c->fd, &m, 0)) != size) {
|
||||
pa_log("recvmsg() failed: %s", r < 0 ? pa_cstrerror(errno) : "size mismatch");
|
||||
pa_log_warn("recvmsg() failed: %s", r < 0 ? pa_cstrerror(errno) : "size mismatch");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (size < 4) {
|
||||
pa_log("SAP packet too short.");
|
||||
pa_log_warn("SAP packet too short.");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
|
@ -172,17 +172,17 @@ int pa_sap_recv(pa_sap_context *c, int *goodbye) {
|
|||
header = ntohl(header);
|
||||
|
||||
if (header >> 29 != 1) {
|
||||
pa_log("Unsupported SAP version.");
|
||||
pa_log_warn("Unsupported SAP version.");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if ((header >> 25) & 1) {
|
||||
pa_log("Encrypted SAP not supported.");
|
||||
pa_log_warn("Encrypted SAP not supported.");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if ((header >> 24) & 1) {
|
||||
pa_log("Compressed SAP not supported.");
|
||||
pa_log_warn("Compressed SAP not supported.");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
|
@ -191,7 +191,7 @@ int pa_sap_recv(pa_sap_context *c, int *goodbye) {
|
|||
|
||||
k = 4 + (six ? 16 : 4) + ac*4;
|
||||
if (size < k) {
|
||||
pa_log("SAP packet too short (AD).");
|
||||
pa_log_warn("SAP packet too short (AD).");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
|
@ -202,7 +202,7 @@ int pa_sap_recv(pa_sap_context *c, int *goodbye) {
|
|||
e += sizeof(MIME_TYPE);
|
||||
size -= sizeof(MIME_TYPE);
|
||||
} else if ((unsigned) size < sizeof(PA_SDP_HEADER)-1 || strncmp(e, PA_SDP_HEADER, sizeof(PA_SDP_HEADER)-1)) {
|
||||
pa_log("Invalid SDP header.");
|
||||
pa_log_warn("Invalid SDP header.");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue