]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/rtpenc_chain.c
Merge remote-tracking branch 'newdev/master'
[ffmpeg] / libavformat / rtpenc_chain.c
index 19ea98f643bfa3f9ce9fb56f1047be38139f6b5d..84611e690d211b2db94638e5ff1737b604a87ecc 100644 (file)
@@ -50,11 +50,7 @@ AVFormatContext *ff_rtp_chain_mux_open(AVFormatContext *s, AVStream *st,
     /* 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);
@@ -64,20 +60,16 @@ AVFormatContext *ff_rtp_chain_mux_open(AVFormatContext *s, AVStream *st,
 
     if (ret) {
         if (handle) {
-            url_fclose(rtpctx->pb);
+            avio_close(rtpctx->pb);
         } else {
             uint8_t *ptr;
             url_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;
 }