*/
#include "avformat.h"
+#include "avio_internal.h"
#include "rtpenc_chain.h"
+#include "avio_internal.h"
AVFormatContext *ff_rtp_chain_mux_open(AVFormatContext *s, AVStream *st,
URLContext *handle, int packet_size)
/* Set the synchronized start time. */
rtpctx->start_time_realtime = s->start_time_realtime;
- /* Remove the local codec, link to the original codec
- * context instead, to give the rtp muxer access to
- * codec parameters. */
- av_free(rtpctx->streams[0]->codec);
- rtpctx->streams[0]->codec = st->codec;
+ avcodec_copy_context(rtpctx->streams[0]->codec, st->codec);
if (handle) {
- url_fdopen(&rtpctx->pb, handle);
+ ffio_fdopen(&rtpctx->pb, handle);
} else
- url_open_dyn_packet_buf(&rtpctx->pb, packet_size);
+ ffio_open_dyn_packet_buf(&rtpctx->pb, packet_size);
ret = av_write_header(rtpctx);
if (ret) {
if (handle) {
- url_fclose(rtpctx->pb);
+ avio_close(rtpctx->pb);
} else {
uint8_t *ptr;
- url_close_dyn_buf(rtpctx->pb, &ptr);
+ avio_close_dyn_buf(rtpctx->pb, &ptr);
av_free(ptr);
}
- av_free(rtpctx->streams[0]->info);
- av_free(rtpctx->streams[0]);
- av_free(rtpctx);
+ avformat_free_context(rtpctx);
return NULL;
}
- /* Copy the RTP AVStream timebase back to the original AVStream */
- st->time_base = rtpctx->streams[0]->time_base;
return rtpctx;
}