Mercurial > libavformat.hg
changeset 4796:f48c56ac46c2 libavformat
Make rtp_write_header() fail in case of unsupported payload type
author | lucabe |
---|---|
date | Fri, 27 Mar 2009 21:36:44 +0000 |
parents | 788145d0bc7e |
children | 9145790397e6 |
files | rtpenc.c |
diffstat | 1 files changed, 30 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/rtpenc.c Fri Mar 27 17:06:39 2009 +0000 +++ b/rtpenc.c Fri Mar 27 21:36:44 2009 +0000 @@ -39,6 +39,31 @@ return (av_gettime() / 1000) * 1000 + NTP_OFFSET_US; } +static int is_supported(enum CodecID id) +{ + switch(id) { + case CODEC_ID_H264: + case CODEC_ID_MPEG1VIDEO: + case CODEC_ID_MPEG2VIDEO: + case CODEC_ID_MPEG4: + case CODEC_ID_AAC: + case CODEC_ID_MP2: + case CODEC_ID_MP3: + case CODEC_ID_PCM_ALAW: + case CODEC_ID_PCM_MULAW: + case CODEC_ID_PCM_S8: + case CODEC_ID_PCM_S16BE: + case CODEC_ID_PCM_S16LE: + case CODEC_ID_PCM_U16BE: + case CODEC_ID_PCM_U16LE: + case CODEC_ID_PCM_U8: + case CODEC_ID_MPEG2TS: + return 1; + default: + return 0; + } +} + static int rtp_write_header(AVFormatContext *s1) { RTPMuxContext *s = s1->priv_data; @@ -48,6 +73,11 @@ if (s1->nb_streams != 1) return -1; st = s1->streams[0]; + if (!is_supported(st->codec->codec_id)) { + av_log(s1, AV_LOG_ERROR, "Unsupported codec %x\n", st->codec->codec_id); + + return -1; + } payload_type = ff_rtp_get_payload_type(st->codec); if (payload_type < 0)