@ -27,6 +27,7 @@
# include <libavutil/base64.h>
# include <libavutil/base64.h>
# include <libavutil/avstring.h>
# include <libavutil/avstring.h>
# include "rtp.h"
# include "rtp_asf.h"
# include "rtp_asf.h"
# include "rtsp.h"
# include "rtsp.h"
# include "asf.h"
# include "asf.h"
@ -50,3 +51,41 @@ void ff_wms_parse_sdp_a_line(AVFormatContext *s, const char *p)
rt - > asf_ctx - > pb = NULL ;
rt - > asf_ctx - > pb = NULL ;
}
}
}
}
static int
asfrtp_parse_sdp_line ( AVFormatContext * s , int stream_index ,
PayloadContext * asf , const char * line )
{
if ( av_strstart ( line , " stream: " , & line ) ) {
RTSPState * rt = s - > priv_data ;
s - > streams [ stream_index ] - > id = strtol ( line , NULL , 10 ) ;
if ( rt - > asf_ctx ) {
int i ;
for ( i = 0 ; i < rt - > asf_ctx - > nb_streams ; i + + ) {
if ( s - > streams [ stream_index ] - > id = = rt - > asf_ctx - > streams [ i ] - > id ) {
* s - > streams [ stream_index ] - > codec =
* rt - > asf_ctx - > streams [ i ] - > codec ;
rt - > asf_ctx - > streams [ i ] - > codec - > extradata_size = 0 ;
rt - > asf_ctx - > streams [ i ] - > codec - > extradata = NULL ;
av_set_pts_info ( s - > streams [ stream_index ] , 32 , 1 , 1000 ) ;
}
}
}
}
return 0 ;
}
# define RTP_ASF_HANDLER(n, s, t) \
RTPDynamicProtocolHandler ff_ms_rtp_ # # n # # _handler = { \
s , \
t , \
CODEC_ID_NONE , \
asfrtp_parse_sdp_line , \
} ;
RTP_ASF_HANDLER ( asf_pfv , " x-asf-pf " , CODEC_TYPE_VIDEO ) ;
RTP_ASF_HANDLER ( asf_pfa , " x-asf-pf " , CODEC_TYPE_AUDIO ) ;