mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avformat: add callback for opening further files
Previous version reviewed-by: wm4 <nfxjfg@googlemail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
0382c94f13
commit
541d75f9a0
@ -15,6 +15,9 @@ libavutil: 2014-08-09
|
|||||||
|
|
||||||
API changes, most recent first:
|
API changes, most recent first:
|
||||||
|
|
||||||
|
2015-05-11 - XXXXXXX - lavf 56.33.100 - avformat.h
|
||||||
|
Add AVOpenCallback AVFormatContext.open_cb
|
||||||
|
|
||||||
2015-05-07 - a7dd933 - 56.38.100 - avcodec.h
|
2015-05-07 - a7dd933 - 56.38.100 - avcodec.h
|
||||||
Add av_packet_side_data_name().
|
Add av_packet_side_data_name().
|
||||||
|
|
||||||
|
@ -1237,6 +1237,8 @@ typedef struct AVChapter {
|
|||||||
typedef int (*av_format_control_message)(struct AVFormatContext *s, int type,
|
typedef int (*av_format_control_message)(struct AVFormatContext *s, int type,
|
||||||
void *data, size_t data_size);
|
void *data, size_t data_size);
|
||||||
|
|
||||||
|
typedef int (*AVOpenCallback)(struct AVFormatContext *s, AVIOContext **pb, const char *url, int flags,
|
||||||
|
const AVIOInterruptCB *int_cb, AVDictionary **options);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The duration of a video can be estimated through various ways, and this enum can be used
|
* The duration of a video can be estimated through various ways, and this enum can be used
|
||||||
@ -1780,6 +1782,23 @@ typedef struct AVFormatContext {
|
|||||||
* Demuxing: Set by user.
|
* Demuxing: Set by user.
|
||||||
*/
|
*/
|
||||||
enum AVCodecID data_codec_id;
|
enum AVCodecID data_codec_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called to open further IO contexts when needed for demuxing.
|
||||||
|
*
|
||||||
|
* This can be set by the user application to perform security checks on
|
||||||
|
* the URLs before opening them.
|
||||||
|
* The function should behave like avio_open2(), AVFormatContext is provided
|
||||||
|
* as contextual information and to reach AVFormatContext.opaque.
|
||||||
|
*
|
||||||
|
* If NULL then avio_open2() is used.
|
||||||
|
*
|
||||||
|
* Must not be accessed directly from outside avformat.
|
||||||
|
* @See av_format_set_open_cb()
|
||||||
|
*
|
||||||
|
* Demuxing: Set by user.
|
||||||
|
*/
|
||||||
|
int (*open_cb)(struct AVFormatContext *s, AVIOContext **p, const char *url, int flags, const AVIOInterruptCB *int_cb, AVDictionary **options);
|
||||||
} AVFormatContext;
|
} AVFormatContext;
|
||||||
|
|
||||||
int av_format_get_probe_score(const AVFormatContext *s);
|
int av_format_get_probe_score(const AVFormatContext *s);
|
||||||
@ -1797,6 +1816,8 @@ void * av_format_get_opaque(const AVFormatContext *s);
|
|||||||
void av_format_set_opaque(AVFormatContext *s, void *opaque);
|
void av_format_set_opaque(AVFormatContext *s, void *opaque);
|
||||||
av_format_control_message av_format_get_control_message_cb(const AVFormatContext *s);
|
av_format_control_message av_format_get_control_message_cb(const AVFormatContext *s);
|
||||||
void av_format_set_control_message_cb(AVFormatContext *s, av_format_control_message callback);
|
void av_format_set_control_message_cb(AVFormatContext *s, av_format_control_message callback);
|
||||||
|
AVOpenCallback av_format_get_open_cb(const AVFormatContext *s);
|
||||||
|
void av_format_set_open_cb(AVFormatContext *s, AVOpenCallback callback);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function will cause global side data to be injected in the next packet
|
* This function will cause global side data to be injected in the next packet
|
||||||
|
@ -157,4 +157,7 @@ int ffio_close_null_buf(AVIOContext *s);
|
|||||||
*/
|
*/
|
||||||
void ffio_free_dyn_buf(AVIOContext **s);
|
void ffio_free_dyn_buf(AVIOContext **s);
|
||||||
|
|
||||||
|
int ffio_open2_wrapper(struct AVFormatContext *s, AVIOContext **pb, const char *url, int flags,
|
||||||
|
const AVIOInterruptCB *int_cb, AVDictionary **options);
|
||||||
|
|
||||||
#endif /* AVFORMAT_AVIO_INTERNAL_H */
|
#endif /* AVFORMAT_AVIO_INTERNAL_H */
|
||||||
|
@ -918,6 +918,12 @@ int avio_open2(AVIOContext **s, const char *filename, int flags,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ffio_open2_wrapper(struct AVFormatContext *s, AVIOContext **pb, const char *url, int flags,
|
||||||
|
const AVIOInterruptCB *int_cb, AVDictionary **options)
|
||||||
|
{
|
||||||
|
return avio_open2(pb, url, flags, int_cb, options);
|
||||||
|
}
|
||||||
|
|
||||||
int avio_close(AVIOContext *s)
|
int avio_close(AVIOContext *s)
|
||||||
{
|
{
|
||||||
URLContext *h;
|
URLContext *h;
|
||||||
|
@ -112,6 +112,7 @@ MAKE_ACCESSORS(AVFormatContext, format, AVCodec *, data_codec)
|
|||||||
MAKE_ACCESSORS(AVFormatContext, format, int, metadata_header_padding)
|
MAKE_ACCESSORS(AVFormatContext, format, int, metadata_header_padding)
|
||||||
MAKE_ACCESSORS(AVFormatContext, format, void *, opaque)
|
MAKE_ACCESSORS(AVFormatContext, format, void *, opaque)
|
||||||
MAKE_ACCESSORS(AVFormatContext, format, av_format_control_message, control_message_cb)
|
MAKE_ACCESSORS(AVFormatContext, format, av_format_control_message, control_message_cb)
|
||||||
|
MAKE_ACCESSORS(AVFormatContext, format, AVOpenCallback, open_cb)
|
||||||
|
|
||||||
int64_t av_stream_get_end_pts(const AVStream *st)
|
int64_t av_stream_get_end_pts(const AVStream *st)
|
||||||
{
|
{
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
#include "libavutil/version.h"
|
#include "libavutil/version.h"
|
||||||
|
|
||||||
#define LIBAVFORMAT_VERSION_MAJOR 56
|
#define LIBAVFORMAT_VERSION_MAJOR 56
|
||||||
#define LIBAVFORMAT_VERSION_MINOR 32
|
#define LIBAVFORMAT_VERSION_MINOR 33
|
||||||
#define LIBAVFORMAT_VERSION_MICRO 100
|
#define LIBAVFORMAT_VERSION_MICRO 100
|
||||||
|
|
||||||
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
||||||
|
Loading…
Reference in New Issue
Block a user