# HG changeset patch # User mstorsjo # Date 1277724252 0 # Node ID c4c35a9d4ab522c4366b4655b49847e48bb62593 # Parent 83978c1b97397ec575ecf4e0d4a3c227540e0eda rtpdec: Add generic function for iterating over FMTP configuration lines This will be used for cleaning up code that is common among RTP depacketizers. Patch by Josh Allmann, joshua dot allmann at gmail diff -r 83978c1b9739 -r c4c35a9d4ab5 rtpdec.c --- a/rtpdec.c Mon Jun 28 11:21:34 2010 +0000 +++ b/rtpdec.c Mon Jun 28 11:24:12 2010 +0000 @@ -531,3 +531,28 @@ } av_free(s); } + +int ff_parse_fmtp(AVStream *stream, PayloadContext *data, const char *p, + int (*parse_fmtp)(AVStream *stream, + PayloadContext *data, + char *attr, char *value)) +{ + char attr[256]; + char value[4096]; + int res; + + // remove protocol identifier + while (*p && *p == ' ') p++; // strip spaces + while (*p && *p != ' ') p++; // eat protocol identifier + while (*p && *p == ' ') p++; // strip trailing spaces + + while (ff_rtsp_next_attr_and_value(&p, + attr, sizeof(attr), + value, sizeof(value))) { + + res = parse_fmtp(stream, data, attr, value); + if (res < 0) + return res; + } + return 0; +} diff -r 83978c1b9739 -r c4c35a9d4ab5 rtpdec.h --- a/rtpdec.h Mon Jun 28 11:21:34 2010 +0000 +++ b/rtpdec.h Mon Jun 28 11:24:12 2010 +0000 @@ -172,6 +172,11 @@ 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. +int ff_parse_fmtp(AVStream *stream, PayloadContext *data, const char *p, + int (*parse_fmtp)(AVStream *stream, + PayloadContext *data, + char *attr, char *value)); + void av_register_rtp_dynamic_payload_handlers(void); #endif /* AVFORMAT_RTPDEC_H */