Mercurial > libavformat.hg
changeset 2587:d751acab2622 libavformat
Allow to set the maximum number of frames per RTP packet (and add support for
this in the AAC packetizer)
author | lucabe |
---|---|
date | Tue, 02 Oct 2007 14:48:08 +0000 |
parents | 1813683cc888 |
children | 577c8b1dafcc |
files | rtp.c rtp_aac.c rtp_internal.h |
diffstat | 3 files changed, 17 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/rtp.c Mon Oct 01 22:11:10 2007 +0000 +++ b/rtp.c Tue Oct 02 14:48:08 2007 +0000 @@ -747,6 +747,21 @@ return AVERROR(EIO); s->max_payload_size = max_packet_size - 12; + s->max_frames_per_packet = 0; + if (s1->max_delay) { + if (st->codec->codec_type == CODEC_TYPE_AUDIO) { + if (st->codec->frame_size == 0) { + av_log(s1, AV_LOG_ERROR, "Cannot respect max delay: frame size = 0\n"); + } else { + s->max_frames_per_packet = av_rescale_rnd(s1->max_delay, st->codec->sample_rate, AV_TIME_BASE * st->codec->frame_size, AV_ROUND_DOWN); + } + } + if (st->codec->codec_type == CODEC_TYPE_VIDEO) { + /* FIXME: We should round down here... */ + s->max_frames_per_packet = av_rescale_q(s1->max_delay, AV_TIME_BASE_Q, st->codec->time_base); + } + } + av_set_pts_info(st, 32, 1, 90000); switch(st->codec->codec_id) { case CODEC_ID_MP2:
--- a/rtp_aac.c Mon Oct 01 22:11:10 2007 +0000 +++ b/rtp_aac.c Tue Oct 02 14:48:08 2007 +0000 @@ -22,7 +22,7 @@ #include "rtp_aac.h" #include "rtp_internal.h" -#define MAX_FRAMES_PER_PACKET 5 +#define MAX_FRAMES_PER_PACKET (s->max_frames_per_packet ? s->max_frames_per_packet : 5) #define MAX_AU_HEADERS_SIZE (2 + 2 * MAX_FRAMES_PER_PACKET) void ff_rtp_send_aac(AVFormatContext *s1, const uint8_t *buff, int size)
--- a/rtp_internal.h Mon Oct 01 22:11:10 2007 +0000 +++ b/rtp_internal.h Tue Oct 02 14:48:08 2007 +0000 @@ -105,6 +105,7 @@ /* dynamic payload stuff */ DynamicPayloadPacketHandlerProc parse_packet; ///< This is also copied from the dynamic protocol handler structure void *dynamic_protocol_context; ///< This is a copy from the values setup from the sdp parsing, in rtsp.c don't free me. + int max_frames_per_packet; }; extern RTPDynamicProtocolHandler *RTPFirstDynamicPayloadHandler;