(someone please add doxy) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>tags/n0.8
@@ -423,6 +423,8 @@ typedef struct AVInputFormat { | |||||
const AVMetadataConv *metadata_conv; | const AVMetadataConv *metadata_conv; | ||||
#endif | #endif | ||||
const AVClass *priv_class; ///< AVClass for the private context | |||||
/* private fields */ | /* private fields */ | ||||
struct AVInputFormat *next; | struct AVInputFormat *next; | ||||
} AVInputFormat; | } AVInputFormat; | ||||
@@ -726,6 +728,7 @@ typedef struct AVFormatContext { | |||||
#define AVFMT_FLAG_NOPARSE 0x0020 ///< Do not use AVParsers, you also must set AVFMT_FLAG_NOFILLIN as the fillin code works on frames and no parsing -> no frames. Also seeking to frames can not work if parsing to find frame boundaries has been disabled | #define AVFMT_FLAG_NOPARSE 0x0020 ///< Do not use AVParsers, you also must set AVFMT_FLAG_NOFILLIN as the fillin code works on frames and no parsing -> no frames. Also seeking to frames can not work if parsing to find frame boundaries has been disabled | ||||
#define AVFMT_FLAG_RTP_HINT 0x0040 ///< Add RTP hinting to the output file | #define AVFMT_FLAG_RTP_HINT 0x0040 ///< Add RTP hinting to the output file | ||||
#define AVFMT_FLAG_SORT_DTS 0x10000 ///< try to interleave outputted packets by dts (using this flag can slow demuxing down) | #define AVFMT_FLAG_SORT_DTS 0x10000 ///< try to interleave outputted packets by dts (using this flag can slow demuxing down) | ||||
#define AVFMT_FLAG_PRIV_OPT 0x20000 ///< Enable use of private options by delaying codec open (this could be made default once all code is converted) | |||||
int loop_input; | int loop_input; | ||||
@@ -1040,6 +1043,8 @@ int av_open_input_file(AVFormatContext **ic_ptr, const char *filename, | |||||
int buf_size, | int buf_size, | ||||
AVFormatParameters *ap); | AVFormatParameters *ap); | ||||
int av_demuxer_open(AVFormatContext *ic, AVFormatParameters *ap); | |||||
/** | /** | ||||
* Allocate an AVFormatContext. | * Allocate an AVFormatContext. | ||||
* avformat_free_context() can be used to free the context and everything | * avformat_free_context() can be used to free the context and everything | ||||
@@ -429,6 +429,10 @@ int av_open_input_stream(AVFormatContext **ic_ptr, | |||||
err = AVERROR(ENOMEM); | err = AVERROR(ENOMEM); | ||||
goto fail; | goto fail; | ||||
} | } | ||||
if (fmt->priv_class) { | |||||
*(const AVClass**)ic->priv_data= fmt->priv_class; | |||||
av_opt_set_defaults(ic->priv_data); | |||||
} | |||||
} else { | } else { | ||||
ic->priv_data = NULL; | ic->priv_data = NULL; | ||||
} | } | ||||
@@ -437,13 +441,13 @@ int av_open_input_stream(AVFormatContext **ic_ptr, | |||||
if (ic->pb) | if (ic->pb) | ||||
ff_id3v2_read(ic, ID3v2_DEFAULT_MAGIC); | ff_id3v2_read(ic, ID3v2_DEFAULT_MAGIC); | ||||
if (ic->iformat->read_header) { | |||||
if (!(ic->flags&AVFMT_FLAG_PRIV_OPT) && ic->iformat->read_header) { | |||||
err = ic->iformat->read_header(ic, ap); | err = ic->iformat->read_header(ic, ap); | ||||
if (err < 0) | if (err < 0) | ||||
goto fail; | goto fail; | ||||
} | } | ||||
if (pb && !ic->data_offset) | |||||
if (!(ic->flags&AVFMT_FLAG_PRIV_OPT) && pb && !ic->data_offset) | |||||
ic->data_offset = avio_tell(ic->pb); | ic->data_offset = avio_tell(ic->pb); | ||||
ic->raw_packet_buffer_remaining_size = RAW_PACKET_BUFFER_SIZE; | ic->raw_packet_buffer_remaining_size = RAW_PACKET_BUFFER_SIZE; | ||||
@@ -470,6 +474,22 @@ int av_open_input_stream(AVFormatContext **ic_ptr, | |||||
return err; | return err; | ||||
} | } | ||||
int av_demuxer_open(AVFormatContext *ic, AVFormatParameters *ap){ | |||||
int err; | |||||
if (ic->iformat->read_header) { | |||||
err = ic->iformat->read_header(ic, ap); | |||||
if (err < 0) | |||||
return err; | |||||
} | |||||
if (ic->pb && !ic->data_offset) | |||||
ic->data_offset = avio_tell(ic->pb); | |||||
return 0; | |||||
} | |||||
/** size of probe buffer, for guessing file type from file contents */ | /** size of probe buffer, for guessing file type from file contents */ | ||||
#define PROBE_BUF_MIN 2048 | #define PROBE_BUF_MIN 2048 | ||||
#define PROBE_BUF_MAX (1<<20) | #define PROBE_BUF_MAX (1<<20) | ||||