[bTSstream-devel] [Git][videolan/bitstream][master] 4 commits: rtp: add support for padding
Massiot
gitlab at videolan.org
Thu Jun 1 00:01:55 CEST 2017
Massiot pushed to branch master at videolan / bitstream
Commits:
0a31c355 by Christophe Massiot at 2017-05-31T23:56:02+02:00
rtp: add support for padding
- - - - -
bbb3bb3b by Christophe Massiot at 2017-05-31T23:56:31+02:00
rtp3551: add dynamic types
- - - - -
25ed3470 by Christophe Massiot at 2017-05-31T23:57:07+02:00
rtp6184: parse special NAL types
- - - - -
fe4e1b89 by Christophe Massiot at 2017-06-01T00:00:40+02:00
h264: add write functions for NAL header
- - - - -
5 changed files:
- NEWS
- ietf/rtp.h
- ietf/rtp3551.h
- ietf/rtp6184.h
- mpeg/h264.h
Changes:
=====================================
NEWS
=====================================
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,10 @@
+1.3
+===
+ - Add support for avcC and hvcC structures
+ - Add support for LOAS AAC
+ - Improve support for RTP
+ - Use ISO 6937 as default DVB charset
+
1.2 (31 Jan 2017)
=================
- Add partial support for ITU-T H.265
=====================================
ietf/rtp.h
=====================================
--- a/ietf/rtp.h
+++ b/ietf/rtp.h
@@ -71,6 +71,16 @@ static inline bool rtp_check_hdr(const uint8_t *p_rtp)
return (p_rtp[0] & 0xc0) == 0x80;
}
+static inline void rtp_set_padding(uint8_t *p_rtp)
+{
+ p_rtp[0] |= 0x20;
+}
+
+static inline bool rtp_check_padding(const uint8_t *p_rtp)
+{
+ return !!(p_rtp[0] & 0x20);
+}
+
static inline void rtp_set_extension(uint8_t *p_rtp)
{
p_rtp[0] |= 0x10;
@@ -193,6 +203,16 @@ static inline uint8_t *rtp_payload(uint8_t *p_rtp)
return p_rtp + i_size;
}
+static inline size_t rtp_payload_size(uint8_t *p_rtp, size_t i_rtp_size)
+{
+ size_t i_payload_size = i_rtp_size - (rtp_payload(p_rtp) - p_rtp);
+ uint8_t i_padding_size = 0;
+ if (rtp_check_padding(p_rtp))
+ i_padding_size = p_rtp[i_rtp_size - 1];
+
+ return i_payload_size - i_padding_size;
+}
+
#ifdef __cplusplus
}
#endif
=====================================
ietf/rtp3551.h
=====================================
--- a/ietf/rtp3551.h
+++ b/ietf/rtp3551.h
@@ -80,7 +80,8 @@ extern "C"
/* Unassigned 35-71 */
/* Reserved 72-76 */
/* Unassigned 77-95 */
-/* Dynamic 96-127 */
+#define RTP_TYPE_DYNAMIC_FIRST 96
+#define RTP_TYPE_DYNAMIC_LAST 127
static inline uint32_t rtp_3551_get_clock_rate(uint8_t i_type)
{
=====================================
ietf/rtp6184.h
=====================================
--- a/ietf/rtp6184.h
+++ b/ietf/rtp6184.h
@@ -1,9 +1,89 @@
+/*****************************************************************************
+ * rtp6184.h: RTP Payload Format for H.264 Video
+ *****************************************************************************
+ * Copyright (c) 2015 Arnaud de Turckheim <quarium at gmail.com>
+ * Copyright (C) 2017 VideoLAN
+ *
+ * Authors: Arnaud de Turckheim
+ * Christophe Massiot
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject
+ * to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *****************************************************************************/
+
/*
- * RTP Payload Format for H.264 Video
+ * Normative references:
+ * - IETF RFC 6184 RTP Payload Format for H.264 Video (May 2011)
*/
+
#ifndef __BITSTREAM_IETF_RTP6184_H__
# define __BITSTREAM_IETF_RTP6184_H__
-#define RTP_6184_CLOCKRATE 90000
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#define RTP_6184_CLOCKRATE 90000
+
+#define RTP_6184_STAP_A 24
+#define RTP_6184_STAP_B 25
+#define RTP_6184_MTAP16 26
+#define RTP_6184_MTAP24 27
+#define RTP_6184_FU_A 28
+#define RTP_6184_FU_B 29
+
+#define RTP_6184_STAP_HEADER_SIZE 2
+
+static inline void rtp_6184_stap_set_size(uint8_t *header, uint16_t size)
+{
+ header[0] = size >> 8;
+ header[1] = size & 0xff;
+}
+
+static inline uint16_t rtp_6184_stap_get_size(const uint8_t *header)
+{
+ return (header[0] << 8) | header[1];
+}
+
+static inline void rtp_6184_fu_set_start(uint8_t *header)
+{
+ header[0] |= 0x80;
+}
+
+static inline bool rtp_6184_fu_check_start(uint8_t header)
+{
+ return header & 0x80;
+}
+
+static inline void rtp_6184_fu_set_end(uint8_t *header)
+{
+ header[0] |= 0x40;
+}
+
+static inline bool rtp_6184_fu_check_end(uint8_t header)
+{
+ return header & 0x40;
+}
+
+#ifdef __cplusplus
+}
+#endif
#endif /* !__BITSTREAM_IETF_RTP6184_H__ */
=====================================
mpeg/h264.h
=====================================
--- a/mpeg/h264.h
+++ b/mpeg/h264.h
@@ -92,11 +92,28 @@ static inline uint8_t h264nal_get_type(const uint8_t *p_h264nal)
return p_h264nal[3] & 0x1f;
}
+static inline void h264nalst_init(uint8_t *p_start)
+{
+ p_start[0] = 0;
+}
+
+static inline void h264nalst_set_ref(uint8_t *p_start, uint8_t ref)
+{
+ p_start[0] &= 0x1f;
+ p_start[0] |= ref << 5;
+}
+
static inline uint8_t h264nalst_get_ref(uint8_t start)
{
return (start & 0x60) >> 5;
}
+static inline void h264nalst_set_type(uint8_t *p_start, uint8_t type)
+{
+ p_start[0] &= 0xe0;
+ p_start[0] |= type;
+}
+
static inline uint8_t h264nalst_get_type(uint8_t start)
{
return start & 0x1f;
View it on GitLab: https://code.videolan.org/videolan/bitstream/compare/ad64f58a380567f66027027bdf9a93343ec55f0a...fe4e1b8991e34a934bef9e20da2392b760b45c08
---
View it on GitLab: https://code.videolan.org/videolan/bitstream/compare/ad64f58a380567f66027027bdf9a93343ec55f0a...fe4e1b8991e34a934bef9e20da2392b760b45c08
You're receiving this email because of your account on code.videolan.org.
More information about the biTStream-devel
mailing list