avformat/utils: Add ff_format_output_open() function

Add ff_format_output_open utility function to wrap
io_open callback of AVFormatContext structure.

Signed-off-by: Jan Sebechlebsky <sebechlebskyjan@gmail.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
Jan Sebechlebsky 2016-07-04 16:45:13 +02:00 committed by Marton Balint
parent e144b86fa4
commit 6a3515a5a4
2 changed files with 20 additions and 0 deletions

View File

@ -572,6 +572,16 @@ int ffio_open2_wrapper(struct AVFormatContext *s, AVIOContext **pb, const char *
*/
#define FFERROR_REDO FFERRTAG('R','E','D','O')
/**
* Utility function to open IO stream of output format.
*
* @param s AVFormatContext
* @param url URL or file name to open for writing
* @options optional options which will be passed to io_open callback
* @return >=0 on success, negative AVERROR in case of failure
*/
int ff_format_output_open(AVFormatContext *s, const char *url, AVDictionary **options);
/*
* A wrapper around AVFormatContext.io_close that should be used
* instead of calling the pointer directly.

View File

@ -5169,6 +5169,16 @@ int av_apply_bitstream_filters(AVCodecContext *codec, AVPacket *pkt,
FF_ENABLE_DEPRECATION_WARNINGS
#endif
int ff_format_output_open(AVFormatContext *s, const char *url, AVDictionary **options)
{
if (!s->oformat)
return AVERROR(EINVAL);
if (!(s->oformat->flags & AVFMT_NOFILE))
return s->io_open(s, &s->pb, url, AVIO_FLAG_WRITE, options);
return 0;
}
void ff_format_io_close(AVFormatContext *s, AVIOContext **pb)
{
if (*pb)