Andreas Rheinhardt: > Besides avoiding allocations this also fixes a design defect of > ff_rtp_send_punch_packets: It did not return an error in case of > these allocations failed. > > Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@gmail.com> > --- > libavformat/rtpdec.c | 38 +++++++++++++------------------------- > 1 file changed, 13 insertions(+), 25 deletions(-) > > diff --git a/libavformat/rtpdec.c b/libavformat/rtpdec.c > index f40c020c33..d592e34893 100644 > --- a/libavformat/rtpdec.c > +++ b/libavformat/rtpdec.c > @@ -404,38 +404,26 @@ int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, > URLContext *fd, > > void ff_rtp_send_punch_packets(URLContext *rtp_handle) > { > - AVIOContext *pb; > - uint8_t *buf; > - int len; > + uint8_t buf[RTP_MIN_PACKET_LENGTH], *ptr = buf; > > /* Send a small RTP packet */ > - if (avio_open_dyn_buf(&pb) < 0) > - return; > > - avio_w8(pb, (RTP_VERSION << 6)); > - avio_w8(pb, 0); /* Payload type */ > - avio_wb16(pb, 0); /* Seq */ > - avio_wb32(pb, 0); /* Timestamp */ > - avio_wb32(pb, 0); /* SSRC */ > + bytestream_put_byte(&ptr, (RTP_VERSION << 6)); > + bytestream_put_byte(&ptr, 0); /* Payload type */ > + bytestream_put_be16(&ptr, 0); /* Seq */ > + bytestream_put_be32(&ptr, 0); /* Timestamp */ > + bytestream_put_be32(&ptr, 0); /* SSRC */ > > - len = avio_close_dyn_buf(pb, &buf); > - if ((len > 0) && buf) > - ffurl_write(rtp_handle, buf, len); > - av_free(buf); > + ffurl_write(rtp_handle, buf, ptr - buf); > > /* Send a minimal RTCP RR */ > - if (avio_open_dyn_buf(&pb) < 0) > - return; > + ptr = buf; > + bytestream_put_byte(&ptr, (RTP_VERSION << 6)); > + bytestream_put_byte(&ptr, RTCP_RR); /* receiver report */ > + bytestream_put_be16(&ptr, 1); /* length in words - 1 */ > + bytestream_put_be32(&ptr, 0); /* our own SSRC */ > > - avio_w8(pb, (RTP_VERSION << 6)); > - avio_w8(pb, RTCP_RR); /* receiver report */ > - avio_wb16(pb, 1); /* length in words - 1 */ > - avio_wb32(pb, 0); /* our own SSRC */ > - > - len = avio_close_dyn_buf(pb, &buf); > - if ((len > 0) && buf) > - ffurl_write(rtp_handle, buf, len); > - av_free(buf); > + ffurl_write(rtp_handle, buf, ptr - buf); > } > > static int find_missing_packets(RTPDemuxContext *s, uint16_t *first_missing, > Will apply tomorrow unless there are objections.
- Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".