mirror of https://git.ffmpeg.org/ffmpeg.git
Merge commit 'f3f60dcbdd6ff2201526a603fe28293975bb7667'
* commit 'f3f60dcbdd6ff2201526a603fe28293975bb7667': rtpdec_mpeg4: Cosmetic cleanup rtpdec: Cosmetic cleanup of the header rtpdec: Get rid of a useless _s suffix on a struct name Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
2e5e2bf935
|
@ -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 @@
|
||||||
#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;
|
||||||
#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 {
|
||||||
* @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_s {
|
struct RTPDynamicProtocolHandler {
|
||||||
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 {
|
||||||
* 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 */
|
||||||
|
DynamicPayloadPacketHandlerProc parse_packet;
|
||||||
|
|
||||||
struct RTPDynamicProtocolHandler_s *next;
|
struct RTPDynamicProtocolHandler *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct RTPPacket {
|
typedef struct RTPPacket {
|
||||||
|
@ -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,
|
||||||
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 @@
|
||||||
#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 {
|
||||||
/* 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)
|
||||||
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)
|
||||||
|
|
||||||
|
|
||||||
/* 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))
|
||||||
|
|
Loading…
Reference in New Issue