From 347675ea994642c0ccd60f7af70f369f7a2d7a88 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Thu, 18 Oct 2007 23:02:24 +0000 Subject: Add rtp header. --- audio/gsta2dpsink.c | 55 +------------------------------------ audio/pcm_bluetooth.c | 55 +------------------------------------ audio/rtp.h | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 108 deletions(-) create mode 100644 audio/rtp.h 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 + * + * + * 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 -- cgit