[FFmpeg-devel] [PATCH] lavu: header and documentation for AVWriter
Soft Works
softworkz at hotmail.com
Wed Aug 24 18:45:29 EEST 2022
> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces at ffmpeg.org> On Behalf Of
> Nicolas George
> Sent: Wednesday, August 24, 2022 5:18 PM
> To: ffmpeg-devel at ffmpeg.org
> Subject: [FFmpeg-devel] [PATCH] lavu: header and documentation for
> AVWriter
>
> The actual implementation, tests and uses in the rest of
> FFmpeg code will be committed separately once the API is
> settled.
>
> Signed-off-by: Nicolas George <george at nsup.org>
> ---
> doc/avwriter_intro.md | 109 ++++++++++
> libavutil/writer.h | 484
> ++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 593 insertions(+)
> create mode 100644 doc/avwriter_intro.md
> create mode 100644 libavutil/writer.h
>
>
> As suggested by JB, here is the header and documentation for
> AVWriter,
> to discuss the principle before investing time in polishing the
> implementation. I expect to discuss the API and if no blockign
> objections are raised push it then spend time on the implementation.
>
> This API is a nicer and much more powerful version of BPrint. It can
> be
> used to simplify existing code where BPrint could help, plus places
> where BPrint could not help.
>
> It also is the prerequisite for more ambitious projects, expecially
> universal serialization of FFmpeg objects (side data and such) into
> standardized formats.
>
> The implementation is in most part done, and I am sure I can deliver.
> What remains is the boring part of integrating the tests in FATE,
> polishing various parts, updating the parts where I changed my mind
> midway, etc.
>
> Note: FF_NEW_SZ is a macro defined elsewhere; it is really part of
> the
> implementation more than the API.
>
>
> diff --git a/doc/avwriter_intro.md b/doc/avwriter_intro.md
> new file mode 100644
> index 0000000000..4fd8a5a4ad
> --- /dev/null
> +++ b/doc/avwriter_intro.md
> @@ -0,0 +1,109 @@
> +# Quick start guide for AVWriter
> +
> +AVWriter is an API to unify functions returning strings (or any
> arbitrary
> +binary buffer) and to make building strings from parts easier. Here
> is a
> +quick introduction with pairs of “what I would do without AVWriter”
> /
> +“how to do it with AVWriter” of example code.
> +
> +## I want a `char*` buffer, the function wants an AVWriter
> +
> +Old-style code:
> +
> +```
> + char *buf;
> + ret = av_something_to_string(&buf, something);
> + if (ret < 0)
> + die("Failed");
> + use_string(buf);
> + av_freep(&buf);
> +```
> +
> +Equivalent code with AVWriter:
> +
> +```
> + AVWriter wr = av_dynbuf_writer();
> + av_something_write(wr, something, 0);
> + if (av_writer_get_error(wr, 0) < 0)
> + die("Failed");
Will it be possible to do:
av_something_write(wr, something1, 0);
av_something_write(wr, something2, 0);
av_something_write(wr, something3, 0);
if (av_writer_get_error(wr, 0) < 0)
die("Failed");
or would av_writer_get_error() need to be called after each av_something_write()?
Thanks,
softworkz
More information about the ffmpeg-devel
mailing list