Mercurial > libavformat.hg
diff rtpenc.c @ 4836:bf87d9ffb3ae libavformat
Add support for AMR audio in the RTP muxer
patch by Martin Storsj (martin AT martin DOT st)
author | lucabe |
---|---|
date | Wed, 08 Apr 2009 07:16:14 +0000 |
parents | 730b214077ca |
children | 304a0ea063f0 |
line wrap: on
line diff
--- a/rtpenc.c Wed Apr 08 03:38:59 2009 +0000 +++ b/rtpenc.c Wed Apr 08 07:16:14 2009 +0000 @@ -60,6 +60,8 @@ case CODEC_ID_PCM_U16LE: case CODEC_ID_PCM_U8: case CODEC_ID_MPEG2TS: + case CODEC_ID_AMR_NB: + case CODEC_ID_AMR_WB: return 1; default: return 0; @@ -134,6 +136,23 @@ s->max_payload_size = n * TS_PACKET_SIZE; s->buf_ptr = s->buf; break; + case CODEC_ID_AMR_NB: + case CODEC_ID_AMR_WB: + if (!s->max_frames_per_packet) + s->max_frames_per_packet = 12; + if (st->codec->codec_id == CODEC_ID_AMR_NB) + n = 31; + else + n = 61; + /* max_header_toc_size + the largest AMR payload must fit */ + if (1 + s->max_frames_per_packet + n > s->max_payload_size) { + av_log(s1, AV_LOG_ERROR, "RTP max payload size too small for AMR\n"); + return -1; + } + if (st->codec->channels != 1) { + av_log(s1, AV_LOG_ERROR, "Only mono is supported\n"); + return -1; + } case CODEC_ID_AAC: s->num_frames = 0; default: @@ -366,6 +385,10 @@ case CODEC_ID_AAC: ff_rtp_send_aac(s1, buf1, size); break; + case CODEC_ID_AMR_NB: + case CODEC_ID_AMR_WB: + ff_rtp_send_amr(s1, buf1, size); + break; case CODEC_ID_MPEG2TS: rtp_send_mpegts_raw(s1, buf1, size); break;