diff options
Diffstat (limited to 'libavformat/rtpenc_chain.c')
-rw-r--r-- | libavformat/rtpenc_chain.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/libavformat/rtpenc_chain.c b/libavformat/rtpenc_chain.c index 3b5ea6c586..3742099314 100644 --- a/libavformat/rtpenc_chain.c +++ b/libavformat/rtpenc_chain.c @@ -25,8 +25,8 @@ #include "avio_internal.h" #include "libavutil/opt.h" -AVFormatContext *ff_rtp_chain_mux_open(AVFormatContext *s, AVStream *st, - URLContext *handle, int packet_size) +int ff_rtp_chain_mux_open(AVFormatContext **out, AVFormatContext *s, + AVStream *st, URLContext *handle, int packet_size) { AVFormatContext *rtpctx = NULL; int ret; @@ -34,17 +34,23 @@ AVFormatContext *ff_rtp_chain_mux_open(AVFormatContext *s, AVStream *st, uint8_t *rtpflags; AVDictionary *opts = NULL; - if (!rtp_format) + if (!rtp_format) { + ret = AVERROR(ENOSYS); goto fail; + } /* Allocate an AVFormatContext for each output stream */ rtpctx = avformat_alloc_context(); - if (!rtpctx) + if (!rtpctx) { + ret = AVERROR(ENOMEM); goto fail; + } rtpctx->oformat = rtp_format; - if (!avformat_new_stream(rtpctx, NULL)) + if (!avformat_new_stream(rtpctx, NULL)) { + ret = AVERROR(ENOMEM); goto fail; + } /* Pass the interrupt callback on */ rtpctx->interrupt_callback = s->interrupt_callback; /* Copy the max delay setting; the rtp muxer reads this. */ @@ -76,14 +82,15 @@ AVFormatContext *ff_rtp_chain_mux_open(AVFormatContext *s, AVStream *st, av_free(ptr); } avformat_free_context(rtpctx); - return NULL; + return ret; } - return rtpctx; + *out = rtpctx; + return 0; fail: av_free(rtpctx); if (handle) ffurl_close(handle); - return NULL; + return ret; } |