int idx)
{
AVFormatContext *rtpctx = NULL;
- int ret, pt;
+ int ret;
AVOutputFormat *rtp_format = av_guess_format("rtp", NULL, NULL);
uint8_t *rtpflags;
AVDictionary *opts = NULL;
/* Get the payload type from the codec */
if (st->id < RTP_PT_PRIVATE)
rtpctx->streams[0]->id =
- ff_rtp_get_payload_type(rtpctx, st->codec, idx);
+ ff_rtp_get_payload_type(s, st->codec, idx);
else
rtpctx->streams[0]->id = st->id;
rtpctx->start_time_realtime = s->start_time_realtime;
avcodec_copy_context(rtpctx->streams[0]->codec, st->codec);
+ rtpctx->streams[0]->time_base = st->time_base;
if (handle) {
- ffio_fdopen(&rtpctx->pb, handle);
+ ret = ffio_fdopen(&rtpctx->pb, handle);
+ if (ret < 0)
+ ffurl_close(handle);
} else
- ffio_open_dyn_packet_buf(&rtpctx->pb, packet_size);
- ret = avformat_write_header(rtpctx, &opts);
+ ret = ffio_open_dyn_packet_buf(&rtpctx->pb, packet_size);
+ if (!ret)
+ ret = avformat_write_header(rtpctx, &opts);
av_dict_free(&opts);
if (ret) {
- if (handle) {
+ if (handle && rtpctx->pb) {
avio_close(rtpctx->pb);
- } else {
+ } else if (rtpctx->pb) {
uint8_t *ptr;
avio_close_dyn_buf(rtpctx->pb, &ptr);
av_free(ptr);