# HG changeset patch # User rbultje # Date 1239715360 0 # Node ID 5370b0c1653c5328f44b44addff8aac59f095404 # Parent 1800b33b2c1538781535fa8cecccb67aed9a5542 Increase the SDP buffer size (again!) and also increase the temporary buffer size of the fmtp parameter buffer. For Vorbis RT(S)P, these contain full Vorbis headers, which can be up to 12kb each, formatted in base64, so 16kb total. Patch required for proper Vorbis/RTP playback, submitted as GSoC qualification task in the thread "RTP/Vorbis payload implementation (GSoC qual task)" by Colin McQuillan m.niloc googlemail com. diff -r 1800b33b2c15 -r 5370b0c1653c rtsp.c --- a/rtsp.c Mon Apr 13 16:59:38 2009 +0000 +++ b/rtsp.c Tue Apr 14 13:22:40 2009 +0000 @@ -261,7 +261,9 @@ static void sdp_parse_fmtp(AVStream *st, const char *p) { char attr[256]; - char value[4096]; + /* Vorbis setup headers can be up to 12KB and are sent base64 + * encoded, giving a 12KB * (4/3) = 16KB FMTP line. */ + char value[16384]; int i; RTSPStream *rtsp_st = st->priv_data; @@ -512,8 +514,10 @@ * contain long SDP lines containing complete ASF Headers (several * kB) or arrays of MDPR (RM stream descriptor) headers plus * "rulebooks" describing their properties. Therefore, the SDP line - * buffer is large. */ - char buf[8192], *q; + * buffer is large. + * + * The Vorbis FMTP line can be up to 16KB - see sdp_parse_fmtp. */ + char buf[16384], *q; SDPParseState sdp_parse_state, *s1 = &sdp_parse_state; memset(s1, 0, sizeof(SDPParseState));