> -----Original Message----- > From: ffmpeg-devel <ffmpeg-devel-boun...@ffmpeg.org> On Behalf Of > Nicolas George > Sent: Wednesday, August 24, 2022 5:18 PM > To: ffmpeg-devel@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 <geo...@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 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".