summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.dentz@openbossa.org>2007-10-18 23:02:24 +0000
committerLuiz Augusto von Dentz <luiz.dentz@openbossa.org>2007-10-18 23:02:24 +0000
commit347675ea994642c0ccd60f7af70f369f7a2d7a88 (patch)
tree34946ab29ceed3cfd7983935d733ae7fb3f423fa
parent2dda76438063672e2bdccf1709db3615d453ad5b (diff)
Add rtp header.
-rw-r--r--audio/gsta2dpsink.c55
-rw-r--r--audio/pcm_bluetooth.c55
-rw-r--r--audio/rtp.h76
3 files changed, 78 insertions, 108 deletions
diff --git a/audio/gsta2dpsink.c b/audio/gsta2dpsink.c
index 1bb88b36..433846eb 100644
--- a/audio/gsta2dpsink.c
+++ b/audio/gsta2dpsink.c
@@ -37,6 +37,7 @@
#include "ipc.h"
#include "sbc.h"
+#include "rtp.h"
#include "gsta2dpsink.h"
@@ -87,60 +88,6 @@ struct bluetooth_data {
struct bluetooth_a2dp a2dp; /* A2DP data */
};
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-
-struct rtp_header {
- uint8_t cc:4;
- uint8_t x:1;
- uint8_t p:1;
- uint8_t v:2;
-
- uint8_t pt:7;
- uint8_t m:1;
-
- uint16_t sequence_number;
- uint32_t timestamp;
- uint32_t ssrc;
- uint32_t csrc[0];
-} __attribute__ ((packed));
-
-struct rtp_payload {
- uint8_t frame_count:4;
- uint8_t rfa0:1;
- uint8_t is_last_fragment:1;
- uint8_t is_first_fragment:1;
- uint8_t is_fragmented:1;
-} __attribute__ ((packed));
-
-#elif __BYTE_ORDER == __BIG_ENDIAN
-
-struct rtp_header {
- uint8_t v:2;
- uint8_t p:1;
- uint8_t x:1;
- uint8_t cc:4;
-
- uint8_t m:1;
- uint8_t pt:7;
-
- uint16_t sequence_number;
- uint32_t timestamp;
- uint32_t ssrc;
- uint32_t csrc[0];
-} __attribute__ ((packed));
-
-struct rtp_payload {
- uint8_t is_fragmented:1;
- uint8_t is_first_fragment:1;
- uint8_t is_last_fragment:1;
- uint8_t rfa0:1;
- uint8_t frame_count:4;
-} __attribute__ ((packed));
-
-#else
-#error "Unknown byte order"
-#endif
-
#define IS_SBC(n) (strcmp((n), "audio/x-sbc") == 0)
#define IS_MPEG(n) (strcmp((n), "audio/mpeg") == 0)
diff --git a/audio/pcm_bluetooth.c b/audio/pcm_bluetooth.c
index 806ed37b..ae1a1bcd 100644
--- a/audio/pcm_bluetooth.c
+++ b/audio/pcm_bluetooth.c
@@ -38,6 +38,7 @@
#include "ipc.h"
#include "sbc.h"
+#include "rtp.h"
//#define ENABLE_DEBUG
@@ -66,60 +67,6 @@
#define SCO_RXBUFS 0x04
#endif
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-
-struct rtp_header {
- uint8_t cc:4;
- uint8_t x:1;
- uint8_t p:1;
- uint8_t v:2;
-
- uint8_t pt:7;
- uint8_t m:1;
-
- uint16_t sequence_number;
- uint32_t timestamp;
- uint32_t ssrc;
- uint32_t csrc[0];
-} __attribute__ ((packed));
-
-struct rtp_payload {
- uint8_t frame_count:4;
- uint8_t rfa0:1;
- uint8_t is_last_fragment:1;
- uint8_t is_first_fragment:1;
- uint8_t is_fragmented:1;
-} __attribute__ ((packed));
-
-#elif __BYTE_ORDER == __BIG_ENDIAN
-
-struct rtp_header {
- uint8_t v:2;
- uint8_t p:1;
- uint8_t x:1;
- uint8_t cc:4;
-
- uint8_t m:1;
- uint8_t pt:7;
-
- uint16_t sequence_number;
- uint32_t timestamp;
- uint32_t ssrc;
- uint32_t csrc[0];
-} __attribute__ ((packed));
-
-struct rtp_payload {
- uint8_t is_fragmented:1;
- uint8_t is_first_fragment:1;
- uint8_t is_last_fragment:1;
- uint8_t rfa0:1;
- uint8_t frame_count:4;
-} __attribute__ ((packed));
-
-#else
-#error "Unknown byte order"
-#endif
-
struct bluetooth_a2dp {
sbc_t sbc; /* Codec data */
int codesize; /* SBC codesize */
diff --git a/audio/rtp.h b/audio/rtp.h
new file mode 100644
index 00000000..931b7346
--- /dev/null
+++ b/audio/rtp.h
@@ -0,0 +1,76 @@
+/*
+ *
+ * BlueZ - Bluetooth protocol stack for Linux
+ *
+ * Copyright (C) 2004-2007 Marcel Holtmann <marcel@holtmann.org>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+
+struct rtp_header {
+ uint8_t cc:4;
+ uint8_t x:1;
+ uint8_t p:1;
+ uint8_t v:2;
+
+ uint8_t pt:7;
+ uint8_t m:1;
+
+ uint16_t sequence_number;
+ uint32_t timestamp;
+ uint32_t ssrc;
+ uint32_t csrc[0];
+} __attribute__ ((packed));
+
+struct rtp_payload {
+ uint8_t frame_count:4;
+ uint8_t rfa0:1;
+ uint8_t is_last_fragment:1;
+ uint8_t is_first_fragment:1;
+ uint8_t is_fragmented:1;
+} __attribute__ ((packed));
+
+#elif __BYTE_ORDER == __BIG_ENDIAN
+
+struct rtp_header {
+ uint8_t v:2;
+ uint8_t p:1;
+ uint8_t x:1;
+ uint8_t cc:4;
+
+ uint8_t m:1;
+ uint8_t pt:7;
+
+ uint16_t sequence_number;
+ uint32_t timestamp;
+ uint32_t ssrc;
+ uint32_t csrc[0];
+} __attribute__ ((packed));
+
+struct rtp_payload {
+ uint8_t is_fragmented:1;
+ uint8_t is_first_fragment:1;
+ uint8_t is_last_fragment:1;
+ uint8_t rfa0:1;
+ uint8_t frame_count:4;
+} __attribute__ ((packed));
+
+#else
+#error "Unknown byte order"
+#endif