Commit 2e5e2bf9 authored by Michael Niedermayer's avatar Michael Niedermayer

Merge commit 'f3f60dcb'

* commit 'f3f60dcb':
  rtpdec_mpeg4: Cosmetic cleanup
  rtpdec: Cosmetic cleanup of the header
  rtpdec: Get rid of a useless _s suffix on a struct name
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents de7c95d5 f3f60dcb
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
* License along with FFmpeg; if not, write to the Free Software * License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/ */
#ifndef AVFORMAT_RTPDEC_H #ifndef AVFORMAT_RTPDEC_H
#define AVFORMAT_RTPDEC_H #define AVFORMAT_RTPDEC_H
...@@ -28,7 +29,7 @@ ...@@ -28,7 +29,7 @@
#include "url.h" #include "url.h"
typedef struct PayloadContext PayloadContext; typedef struct PayloadContext PayloadContext;
typedef struct RTPDynamicProtocolHandler_s RTPDynamicProtocolHandler; typedef struct RTPDynamicProtocolHandler RTPDynamicProtocolHandler;
#define RTP_MIN_PACKET_LENGTH 12 #define RTP_MIN_PACKET_LENGTH 12
#define RTP_MAX_PACKET_LENGTH 1500 #define RTP_MAX_PACKET_LENGTH 1500
...@@ -38,7 +39,9 @@ typedef struct RTPDynamicProtocolHandler_s RTPDynamicProtocolHandler; ...@@ -38,7 +39,9 @@ typedef struct RTPDynamicProtocolHandler_s RTPDynamicProtocolHandler;
#define RTP_NOTS_VALUE ((uint32_t)-1) #define RTP_NOTS_VALUE ((uint32_t)-1)
typedef struct RTPDemuxContext RTPDemuxContext; typedef struct RTPDemuxContext RTPDemuxContext;
RTPDemuxContext *ff_rtp_parse_open(AVFormatContext *s1, AVStream *st, URLContext *rtpc, int payload_type, int queue_size); RTPDemuxContext *ff_rtp_parse_open(AVFormatContext *s1, AVStream *st,
URLContext *rtpc, int payload_type,
int queue_size);
void ff_rtp_parse_set_dynamic_protocol(RTPDemuxContext *s, PayloadContext *ctx, void ff_rtp_parse_set_dynamic_protocol(RTPDemuxContext *s, PayloadContext *ctx,
RTPDynamicProtocolHandler *handler); RTPDynamicProtocolHandler *handler);
int ff_rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt, int ff_rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt,
...@@ -100,15 +103,14 @@ typedef struct RTPStatistics { ...@@ -100,15 +103,14 @@ typedef struct RTPStatistics {
* @param len length of buf * @param len length of buf
* @param flags flags from the RTP packet header (RTP_FLAG_*) * @param flags flags from the RTP packet header (RTP_FLAG_*)
*/ */
typedef int (*DynamicPayloadPacketHandlerProc) (AVFormatContext *ctx, typedef int (*DynamicPayloadPacketHandlerProc)(AVFormatContext *ctx,
PayloadContext *s, PayloadContext *s,
AVStream *st, AVStream *st, AVPacket *pkt,
AVPacket * pkt, uint32_t *timestamp,
uint32_t *timestamp, const uint8_t * buf,
const uint8_t * buf, int len, int flags);
int len, int flags);
struct RTPDynamicProtocolHandler {
struct RTPDynamicProtocolHandler_s {
const char enc_name[50]; const char enc_name[50];
enum AVMediaType codec_type; enum AVMediaType codec_type;
enum AVCodecID codec_id; enum AVCodecID codec_id;
...@@ -116,17 +118,19 @@ struct RTPDynamicProtocolHandler_s { ...@@ -116,17 +118,19 @@ struct RTPDynamicProtocolHandler_s {
* payload ID (PCMU), too, but that format doesn't * payload ID (PCMU), too, but that format doesn't
* require any custom depacketization code. */ * require any custom depacketization code. */
// may be null /** Initialize dynamic protocol handler, called after the full rtpmap line is parsed, may be null */
int (*init)(AVFormatContext *s, int st_index, PayloadContext *priv_data); ///< Initialize dynamic protocol handler, called after the full rtpmap line is parsed int (*init)(AVFormatContext *s, int st_index, PayloadContext *priv_data);
int (*parse_sdp_a_line) (AVFormatContext *s, /** Parse the a= line from the sdp field */
int st_index, int (*parse_sdp_a_line)(AVFormatContext *s, int st_index,
PayloadContext *priv_data, PayloadContext *priv_data, const char *line);
const char *line); ///< Parse the a= line from the sdp field /** Allocate any data needed by the rtp parsing for this dynamic data. */
PayloadContext *(*alloc) (void); ///< allocate any data needed by the rtp parsing for this dynamic data. PayloadContext *(*alloc)(void);
void (*free)(PayloadContext *protocol_data); ///< free any data needed by the rtp parsing for this dynamic data. /** Free any data needed by the rtp parsing for this dynamic data. */
DynamicPayloadPacketHandlerProc parse_packet; ///< parse handler for this dynamic packet. void (*free)(PayloadContext *protocol_data);
/** Parse handler for this dynamic packet */
struct RTPDynamicProtocolHandler_s *next; DynamicPayloadPacketHandlerProc parse_packet;
struct RTPDynamicProtocolHandler *next;
}; };
typedef struct RTPPacket { typedef struct RTPPacket {
...@@ -156,7 +160,8 @@ struct RTPDemuxContext { ...@@ -156,7 +160,8 @@ struct RTPDemuxContext {
URLContext *rtp_ctx; URLContext *rtp_ctx;
char hostname[256]; char hostname[256];
RTPStatistics statistics; ///< Statistics for this stream (used by RTCP receiver reports) /** Statistics for this stream (used by RTCP receiver reports) */
RTPStatistics statistics;
/** Fields for packet reordering @{ */ /** Fields for packet reordering @{ */
int prev_ret; ///< The return value of the actual parsing of the previous packet int prev_ret; ///< The return value of the actual parsing of the previous packet
...@@ -189,7 +194,9 @@ RTPDynamicProtocolHandler *ff_rtp_handler_find_by_name(const char *name, ...@@ -189,7 +194,9 @@ RTPDynamicProtocolHandler *ff_rtp_handler_find_by_name(const char *name,
RTPDynamicProtocolHandler *ff_rtp_handler_find_by_id(int id, RTPDynamicProtocolHandler *ff_rtp_handler_find_by_id(int id,
enum AVMediaType codec_type); enum AVMediaType codec_type);
int ff_rtsp_next_attr_and_value(const char **p, char *attr, int attr_size, char *value, int value_size); ///< from rtsp.c, but used by rtp dynamic protocol handlers. /* from rtsp.c, but used by rtp dynamic protocol handlers. */
int ff_rtsp_next_attr_and_value(const char **p, char *attr, int attr_size,
char *value, int value_size);
int ff_parse_fmtp(AVStream *stream, PayloadContext *data, const char *p, int ff_parse_fmtp(AVStream *stream, PayloadContext *data, const char *p,
int (*parse_fmtp)(AVStream *stream, int (*parse_fmtp)(AVStream *stream,
......
...@@ -32,9 +32,8 @@ ...@@ -32,9 +32,8 @@
#include "libavutil/avstring.h" #include "libavutil/avstring.h"
#include "libavcodec/get_bits.h" #include "libavcodec/get_bits.h"
/** Structure listing useful vars to parse RTP packet payload*/ /** Structure listing useful vars to parse RTP packet payload */
struct PayloadContext struct PayloadContext {
{
int sizelength; int sizelength;
int indexlength; int indexlength;
int indexdeltalength; int indexdeltalength;
...@@ -69,8 +68,7 @@ typedef struct { ...@@ -69,8 +68,7 @@ typedef struct {
/* All known fmtp parameters and the corresponding RTPAttrTypeEnum */ /* All known fmtp parameters and the corresponding RTPAttrTypeEnum */
#define ATTR_NAME_TYPE_INT 0 #define ATTR_NAME_TYPE_INT 0
#define ATTR_NAME_TYPE_STR 1 #define ATTR_NAME_TYPE_STR 1
static const AttrNameMap attr_names[]= static const AttrNameMap attr_names[] = {
{
{ "SizeLength", ATTR_NAME_TYPE_INT, { "SizeLength", ATTR_NAME_TYPE_INT,
offsetof(PayloadContext, sizelength) }, offsetof(PayloadContext, sizelength) },
{ "IndexLength", ATTR_NAME_TYPE_INT, { "IndexLength", ATTR_NAME_TYPE_INT,
...@@ -91,14 +89,14 @@ static PayloadContext *new_context(void) ...@@ -91,14 +89,14 @@ static PayloadContext *new_context(void)
return av_mallocz(sizeof(PayloadContext)); return av_mallocz(sizeof(PayloadContext));
} }
static void free_context(PayloadContext * data) static void free_context(PayloadContext *data)
{ {
av_free(data->au_headers); av_free(data->au_headers);
av_free(data->mode); av_free(data->mode);
av_free(data); av_free(data);
} }
static int parse_fmtp_config(AVCodecContext * codec, char *value) static int parse_fmtp_config(AVCodecContext *codec, char *value)
{ {
/* decode the hexa encoded parameter */ /* decode the hexa encoded parameter */
int len = ff_hex_to_data(NULL, value); int len = ff_hex_to_data(NULL, value);
...@@ -159,11 +157,8 @@ static int rtp_parse_mp4_au(PayloadContext *data, const uint8_t *buf) ...@@ -159,11 +157,8 @@ static int rtp_parse_mp4_au(PayloadContext *data, const uint8_t *buf)
/* Follows RFC 3640 */ /* Follows RFC 3640 */
static int aac_parse_packet(AVFormatContext *ctx, static int aac_parse_packet(AVFormatContext *ctx, PayloadContext *data,
PayloadContext *data, AVStream *st, AVPacket *pkt, uint32_t *timestamp,
AVStream *st,
AVPacket *pkt,
uint32_t *timestamp,
const uint8_t *buf, int len, int flags) const uint8_t *buf, int len, int flags)
{ {
if (rtp_parse_mp4_au(data, buf)) if (rtp_parse_mp4_au(data, buf))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment