mirror of https://git.ffmpeg.org/ffmpeg.git
lavf: pass options from AVFormatContext to avio.
This commit is contained in:
parent
9d77a8faf9
commit
32caa7b13c
|
@ -18,6 +18,7 @@
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
#include "avformat.h"
|
#include "avformat.h"
|
||||||
|
#include "avio_internal.h"
|
||||||
#include "libavutil/opt.h"
|
#include "libavutil/opt.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -40,6 +41,10 @@ static void *format_child_next(void *obj, void *prev)
|
||||||
((s->iformat && s->iformat->priv_class) ||
|
((s->iformat && s->iformat->priv_class) ||
|
||||||
s->oformat && s->oformat->priv_class))
|
s->oformat && s->oformat->priv_class))
|
||||||
return s->priv_data;
|
return s->priv_data;
|
||||||
|
#if !FF_API_OLD_AVIO
|
||||||
|
if (s->pb && s->pb->av_class && prev != s->pb)
|
||||||
|
return s->pb;
|
||||||
|
#endif
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,10 +64,16 @@ static const AVClass *format_child_class_next(const AVClass *prev)
|
||||||
while (prev && (ofmt = av_oformat_next(ofmt)))
|
while (prev && (ofmt = av_oformat_next(ofmt)))
|
||||||
if (ofmt->priv_class == prev)
|
if (ofmt->priv_class == prev)
|
||||||
break;
|
break;
|
||||||
|
if ((prev && ofmt) || (!prev))
|
||||||
while (ofmt = av_oformat_next(ofmt))
|
while (ofmt = av_oformat_next(ofmt))
|
||||||
if (ofmt->priv_class)
|
if (ofmt->priv_class)
|
||||||
return ofmt->priv_class;
|
return ofmt->priv_class;
|
||||||
|
|
||||||
|
#if !FF_API_OLD_AVIO
|
||||||
|
if (prev != &ffio_url_class)
|
||||||
|
return &ffio_url_class;
|
||||||
|
#endif
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -575,7 +575,7 @@ int av_open_input_file(AVFormatContext **ic_ptr, const char *filename,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* open input file and probe the format if necessary */
|
/* open input file and probe the format if necessary */
|
||||||
static int init_input(AVFormatContext *s, const char *filename)
|
static int init_input(AVFormatContext *s, const char *filename, AVDictionary **options)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
AVProbeData pd = {filename, NULL, 0};
|
AVProbeData pd = {filename, NULL, 0};
|
||||||
|
@ -594,7 +594,7 @@ static int init_input(AVFormatContext *s, const char *filename)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if ((ret = avio_open2(&s->pb, filename, AVIO_FLAG_READ,
|
if ((ret = avio_open2(&s->pb, filename, AVIO_FLAG_READ,
|
||||||
&s->interrupt_callback, NULL)) < 0)
|
&s->interrupt_callback, options)) < 0)
|
||||||
return ret;
|
return ret;
|
||||||
if (s->iformat)
|
if (s->iformat)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -619,7 +619,7 @@ int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputForma
|
||||||
if ((ret = av_opt_set_dict(s, &tmp)) < 0)
|
if ((ret = av_opt_set_dict(s, &tmp)) < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
if ((ret = init_input(s, filename)) < 0)
|
if ((ret = init_input(s, filename, &tmp)) < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
/* check filename in case an image number is expected */
|
/* check filename in case an image number is expected */
|
||||||
|
|
Loading…
Reference in New Issue