On Sun, 12 Jun 2016, Rodger Combs wrote:
This allows a consumer to run the muxer's init function without actually
writing the header, which is useful in chained muxers that support
automatic bitstream filtering.
---
libavformat/avformat.h | 34 +++++++++++++++++++++++++--
libavformat/internal.h | 10 ++++++++
libavformat/mux.c | 64 +++++++++++++++++++++++++++++++++++++++-----------
libavformat/version.h | 4 ++--
4 files changed, 94 insertions(+), 18 deletions(-)
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index d659ee4..d6b0b26 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -616,6 +616,8 @@ typedef struct AVOutputFormat {
* AVStream parameters that need to be set before packets are sent.
* This method must not write output.
*
+ * Return 0 if streams were fully configured, 1 if not, negative AVERROR
on failure
+ *
* Any allocations made here must be freed in deinit().
*/
int (*init)(struct AVFormatContext *);
@@ -2363,6 +2365,10 @@ void avformat_close_input(AVFormatContext **s);
* @addtogroup lavf_encoding
* @{
*/
+
+#define AVSTREAM_INIT_IN_WRITE_HEADER 0 ///< stream parameters initialized in
avformat_write_header
+#define AVSTREAM_INIT_IN_INIT_OUTPUT 1 ///< stream parameters initialized in
avformat_init_output
+
/**
* Allocate the stream private data and write the stream header to
* an output media file.
@@ -2374,14 +2380,38 @@ void avformat_close_input(AVFormatContext **s);
* On return this parameter will be destroyed and replaced with
a dict containing
* options that were not found. May be NULL.
*
- * @return 0 on success, negative AVERROR on failure.
+ * @return AVSTREAM_INIT_IN_WRITE_HEADER on success if the codec had not
already been fully initialized in avformat_init,
+ * AVSTREAM_INIT_IN_INIT_OUTPUT on success if the codec had already
been fully initialized in avformat_init,
+ * negative AVERROR on failure.
*
- * @see av_opt_find, av_dict_set, avio_open, av_oformat_next.
+ * @see av_opt_find, av_dict_set, avio_open, av_oformat_next,
avformat_init_output.
*/
av_warn_unused_result
int avformat_write_header(AVFormatContext *s, AVDictionary **options);
I don't see why you want to change avformat_write_header API. After a
successful call to avformat_write_header, codecs/streams are always
initialzied, aren't they? Who cares anymore if it was done in init or
write_header?
Regards,
Marton
_______________________________________________
ffmpeg-devel mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel