From 1e515c4280acb70c615e8fe562fa6b463f1d8bed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Sun, 5 Dec 2010 19:39:50 +0000 Subject: [PATCH] rtpdec: Add functions for finding depacketizers by name or payload id Originally committed as revision 25891 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/rtpdec.c | 25 +++++++++++++++++++++++++ libavformat/rtpdec.h | 4 ++++ 2 files changed, 29 insertions(+) diff --git a/libavformat/rtpdec.c b/libavformat/rtpdec.c index 25241393fc..c9cf855a59 100644 --- a/libavformat/rtpdec.c +++ b/libavformat/rtpdec.c @@ -27,6 +27,7 @@ #include "mpegts.h" #include +#include #include "network.h" #include "rtpdec.h" @@ -78,6 +79,30 @@ void av_register_rtp_dynamic_payload_handlers(void) ff_register_dynamic_payload_handler(&ff_quicktime_rtp_vid_handler); } +RTPDynamicProtocolHandler *ff_rtp_handler_find_by_name(const char *name, + enum AVMediaType codec_type) +{ + RTPDynamicProtocolHandler *handler; + for (handler = RTPFirstDynamicPayloadHandler; + handler; handler = handler->next) + if (!strcasecmp(name, handler->enc_name) && + codec_type == handler->codec_type) + return handler; + return NULL; +} + +RTPDynamicProtocolHandler *ff_rtp_handler_find_by_id(int id, + enum AVMediaType codec_type) +{ + RTPDynamicProtocolHandler *handler; + for (handler = RTPFirstDynamicPayloadHandler; + handler; handler = handler->next) + if (handler->static_payload_id && handler->static_payload_id == id && + codec_type == handler->codec_type) + return handler; + return NULL; +} + static int rtcp_parse_packet(RTPDemuxContext *s, const unsigned char *buf, int len) { int payload_len; diff --git a/libavformat/rtpdec.h b/libavformat/rtpdec.h index 390071e91e..778ca92984 100644 --- a/libavformat/rtpdec.h +++ b/libavformat/rtpdec.h @@ -190,6 +190,10 @@ struct RTPDemuxContext { extern RTPDynamicProtocolHandler *RTPFirstDynamicPayloadHandler; void ff_register_dynamic_payload_handler(RTPDynamicProtocolHandler *handler); +RTPDynamicProtocolHandler *ff_rtp_handler_find_by_name(const char *name, + enum AVMediaType codec_type); +RTPDynamicProtocolHandler *ff_rtp_handler_find_by_id(int id, + 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.