From: "softworkz ." <softworkz-at-hotmail.com@ffmpeg.org>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] [PATCH 2/9] fftools/textformat: Quality improvements
Date: Wed, 16 Apr 2025 09:52:00 +0000
Message-ID: <DM8P223MB036508AA0F812B05544A091CBABD2@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <GV1P250MB073708D33D46AB881810F1728FB22@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM>
> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of
> Andreas Rheinhardt
> Sent: Dienstag, 15. April 2025 03:06
> To: ffmpeg-devel@ffmpeg.org
> Subject: Re: [FFmpeg-devel] [PATCH 2/9] fftools/textformat: Quality
> improvements
>
> softworkz:
> > From: softworkz <softworkz@hotmail.com>
> >
> > Signed-off-by: softworkz <softworkz@hotmail.com>
> > ---
> > fftools/textformat/avtextformat.c | 121 +++++++++++++++++++--------
> ---
> > fftools/textformat/avtextformat.h | 6 +-
> > fftools/textformat/tf_default.c | 8 +-
> > fftools/textformat/tf_ini.c | 2 +-
> > fftools/textformat/tf_json.c | 8 +-
> > fftools/textformat/tf_xml.c | 3 -
> > fftools/textformat/tw_avio.c | 9 ++-
> > 7 files changed, 101 insertions(+), 56 deletions(-)
> >
> > diff --git a/fftools/textformat/avtextformat.c
> b/fftools/textformat/avtextformat.c
> > index 1ce51d11e2..406025d19d 100644
> > --- a/fftools/textformat/avtextformat.c
> > +++ b/fftools/textformat/avtextformat.c
> > @@ -93,9 +93,8 @@ static const AVClass textcontext_class = {
> >
> > static void bprint_bytes(AVBPrint *bp, const uint8_t *ubuf, size_t
> ubuf_size)
> > {
> > - int i;
> > av_bprintf(bp, "0X");
> > - for (i = 0; i < ubuf_size; i++)
> > + for (unsigned i = 0; i < ubuf_size; i++)
>
> Why not size_t?
>
> > av_bprintf(bp, "%02X", ubuf[i]);
> > }
> >
> > @@ -110,8 +109,6 @@ int avtext_context_close(AVTextFormatContext
> **ptctx)
> >
> > av_hash_freep(&tctx->hash);
> >
> > - av_hash_freep(&tctx->hash);
> > -
> > if (tctx->formatter->uninit)
> > tctx->formatter->uninit(tctx);
> > for (i = 0; i < SECTION_MAX_NB_LEVELS; i++)
> > @@ -141,12 +138,18 @@ int avtext_context_open(AVTextFormatContext
> **ptctx,
> > AVTextFormatContext *tctx;
> > int i, ret = 0;
> >
> > - if (!(tctx = av_mallocz(sizeof(AVTextFormatContext)))) {
> > + if (!ptctx || !formatter)
> > + return AVERROR(EINVAL);
>
> Can this happen?
>
> > +
> > + if (!formatter->priv_size && formatter->priv_class)
> > + return AVERROR(EINVAL);
>
> Stuff like this should never happen and should not be checked (or
> actually: the proper place to check stuff like this is in test tools
> like lavc/tests/avcodec.c, but I don't think it is worth it for
> fftools).
>
> > +
> > + if (!((tctx = av_mallocz(sizeof(AVTextFormatContext))))) {
> > ret = AVERROR(ENOMEM);
> > goto fail;
> > }
> >
> > - if (!(tctx->priv = av_mallocz(formatter->priv_size))) {
> > + if (formatter->priv_size && !((tctx->priv =
> av_mallocz(formatter->priv_size)))) {
> > ret = AVERROR(ENOMEM);
> > goto fail;
> > }
> > @@ -215,15 +218,15 @@ int avtext_context_open(AVTextFormatContext
> **ptctx,
> >
> > /* validate replace string */
> > {
> > - const uint8_t *p = tctx->string_validation_replacement;
> > - const uint8_t *endp = p + strlen(p);
> > + const uint8_t *p = (uint8_t *)tctx-
> >string_validation_replacement;
> > + const uint8_t *endp = p + strlen((const char *)p);
> > while (*p) {
> > const uint8_t *p0 = p;
> > int32_t code;
> > ret = av_utf8_decode(&code, &p, endp, tctx-
> >string_validation_utf8_flags);
> > if (ret < 0) {
> > AVBPrint bp;
> > - av_bprint_init(&bp, 0, AV_BPRINT_SIZE_AUTOMATIC);
> > + av_bprint_init(&bp, 0, AV_BPRINT_SIZE_UNLIMITED);
>
> This adds a memleak on data where it makes a difference.
>
> > bprint_bytes(&bp, p0, p - p0),
> > av_log(tctx, AV_LOG_ERROR,
> > "Invalid UTF8 sequence %s found in
> string validation replace '%s'\n",
> > @@ -259,6 +262,9 @@ static const char unit_bit_per_second_str[] =
> "bit/s";
> >
> > void avtext_print_section_header(AVTextFormatContext *tctx, const
> void *data, int section_id)
> > {
> > + if (!tctx || section_id < 0 || section_id >= tctx->nb_sections)
> > + return;
>
> Can this happen?
>
> > +
> > tctx->level++;
> > av_assert0(tctx->level < SECTION_MAX_NB_LEVELS);
> >
> > @@ -272,6 +278,9 @@ void
> avtext_print_section_header(AVTextFormatContext *tctx, const void
> *data, in
> >
> > void avtext_print_section_footer(AVTextFormatContext *tctx)
> > {
> > + if (!tctx || tctx->level < 0 || tctx->level >=
> SECTION_MAX_NB_LEVELS)
> > + return;
>
> Can this happen?
>
> > +
> > int section_id = tctx->section[tctx->level]->id;
> > int parent_section_id = tctx->level
> > ? tctx->section[tctx->level - 1]->id
> > @@ -289,7 +298,12 @@ void
> avtext_print_section_footer(AVTextFormatContext *tctx)
> >
> > void avtext_print_integer(AVTextFormatContext *tctx, const char
> *key, int64_t val)
> > {
> > - const struct AVTextFormatSection *section = tctx->section[tctx-
> >level];
> > + const AVTextFormatSection *section;
> > +
> > + if (!tctx || !key || tctx->level < 0 || tctx->level >=
> SECTION_MAX_NB_LEVELS)
> > + return;
>
> Can this happen?
>
> > +
> > + section = tctx->section[tctx->level];
> >
> > if (section->show_all_entries || av_dict_get(section-
> >entries_to_show, key, NULL, 0)) {
> > tctx->formatter->print_integer(tctx, key, val);
> > @@ -299,24 +313,28 @@ void avtext_print_integer(AVTextFormatContext
> *tctx, const char *key, int64_t va
> >
> > static inline int validate_string(AVTextFormatContext *tctx, char
> **dstp, const char *src)
> > {
> > - const uint8_t *p, *endp;
> > + const uint8_t *p, *endp, *srcp = (const uint8_t *)src;
> > AVBPrint dstbuf;
> > + AVBPrint bp;
> > int invalid_chars_nb = 0, ret = 0;
> >
> > + if (!tctx || !dstp || !src)
> > + return AVERROR(EINVAL);
> > +
>
> Can this happen?
>
> > + *dstp = NULL;
> > av_bprint_init(&dstbuf, 0, AV_BPRINT_SIZE_UNLIMITED);
> > + av_bprint_init(&bp, 0, AV_BPRINT_SIZE_UNLIMITED);
> >
> > - endp = src + strlen(src);
> > - for (p = src; *p;) {
> > - uint32_t code;
> > + endp = srcp + strlen(src);
> > + for (p = srcp; *p;) {
> > + int32_t code;
> > int invalid = 0;
> > const uint8_t *p0 = p;
> >
> > if (av_utf8_decode(&code, &p, endp, tctx-
> >string_validation_utf8_flags) < 0) {
> > - AVBPrint bp;
> > - av_bprint_init(&bp, 0, AV_BPRINT_SIZE_AUTOMATIC);
> > - bprint_bytes(&bp, p0, p-p0);
> > - av_log(tctx, AV_LOG_DEBUG,
> > - "Invalid UTF-8 sequence %s found in string
> '%s'\n", bp.str, src);
> > + av_bprint_clear(&bp);
> > + bprint_bytes(&bp, p0, p - p0);
> > + av_log(tctx, AV_LOG_DEBUG, "Invalid UTF-8 sequence %s
> found in string '%s'\n", bp.str, src);
> > invalid = 1;
> > }
> >
> > @@ -336,7 +354,7 @@ static inline int
> validate_string(AVTextFormatContext *tctx, char **dstp, const
> > }
> >
> > if (!invalid || tctx->string_validation ==
> AV_TEXTFORMAT_STRING_VALIDATION_IGNORE)
> > - av_bprint_append_data(&dstbuf, p0, p-p0);
> > + av_bprint_append_data(&dstbuf, (const char *)p0, p -
> p0);
> > }
> >
> > if (invalid_chars_nb && tctx->string_validation ==
> AV_TEXTFORMAT_STRING_VALIDATION_REPLACE)
> > @@ -346,6 +364,7 @@ static inline int
> validate_string(AVTextFormatContext *tctx, char **dstp, const
> >
> > end:
> > av_bprint_finalize(&dstbuf, dstp);
> > + av_bprint_finalize(&bp, NULL);
> > return ret;
> > }
> >
> > @@ -358,17 +377,18 @@ struct unit_value {
> > const char *unit;
> > };
> >
> > -static char *value_string(AVTextFormatContext *tctx, char *buf, int
> buf_size, struct unit_value uv)
> > +static char *value_string(const AVTextFormatContext *tctx, char
> *buf, int buf_size, struct unit_value uv)
> > {
> > double vald;
> > - int64_t vali;
> > + int64_t vali = 0;
> > int show_float = 0;
> >
> > if (uv.unit == unit_second_str) {
> > vald = uv.val.d;
> > show_float = 1;
> > } else {
> > - vald = vali = uv.val.i;
> > + vald = (double)uv.val.i;
> > + vali = uv.val.i;
> > }
> >
> > if (uv.unit == unit_second_str && tctx-
> >use_value_sexagesimal_format) {
> > @@ -387,17 +407,17 @@ static char *value_string(AVTextFormatContext
> *tctx, char *buf, int buf_size, st
> > int64_t index;
> >
> > if (uv.unit == unit_byte_str && tctx-
> >use_byte_value_binary_prefix) {
> > - index = (int64_t) (log2(vald)) / 10;
> > - index = av_clip(index, 0,
> FF_ARRAY_ELEMS(si_prefixes) - 1);
> > + index = (int64_t)(log2(vald) / 10);
> > + index = av_clip64(index, 0,
> FF_ARRAY_ELEMS(si_prefixes) - 1);
> > vald /= si_prefixes[index].bin_val;
> > prefix_string = si_prefixes[index].bin_str;
> > } else {
> > - index = (int64_t) (log10(vald)) / 3;
> > - index = av_clip(index, 0,
> FF_ARRAY_ELEMS(si_prefixes) - 1);
> > + index = (int64_t)(log10(vald) / 3);
> > + index = av_clip64(index, 0,
> FF_ARRAY_ELEMS(si_prefixes) - 1);
> > vald /= si_prefixes[index].dec_val;
> > prefix_string = si_prefixes[index].dec_str;
> > }
> > - vali = vald;
> > + vali = (int64_t)vald;
> > }
> >
> > if (show_float || (tctx->use_value_prefix && vald !=
> (int64_t)vald))
> > @@ -425,9 +445,14 @@ void avtext_print_unit_int(AVTextFormatContext
> *tctx, const char *key, int value
> >
> > int avtext_print_string(AVTextFormatContext *tctx, const char *key,
> const char *val, int flags)
> > {
> > - const struct AVTextFormatSection *section = tctx->section[tctx-
> >level];
> > + const AVTextFormatSection *section;
> > int ret = 0;
> >
> > + if (!tctx || !key || !val || tctx->level < 0 || tctx->level >=
> SECTION_MAX_NB_LEVELS)
> > + return AVERROR(EINVAL);
>
> Can this happen?
>
> > +
> > + section = tctx->section[tctx->level];
> > +
> > if (tctx->show_optional_fields == SHOW_OPTIONAL_FIELDS_NEVER ||
> > (tctx->show_optional_fields == SHOW_OPTIONAL_FIELDS_AUTO
> > && (flags & AV_TEXTFORMAT_PRINT_STRING_OPTIONAL)
> > @@ -462,7 +487,7 @@ int avtext_print_string(AVTextFormatContext
> *tctx, const char *key, const char *
> > void avtext_print_rational(AVTextFormatContext *tctx, const char
> *key, AVRational q, char sep)
> > {
> > AVBPrint buf;
> > - av_bprint_init(&buf, 0, AV_BPRINT_SIZE_AUTOMATIC);
> > + av_bprint_init(&buf, 0, AV_BPRINT_SIZE_UNLIMITED);
>
> This is strictly worse than what was here before: With UNLIMITED you
> would have a memleak in case the internal buffer wouldn't suffice.
> (But anyway, this should use snprintf. I just sent a patch for this.)
>
> > av_bprintf(&buf, "%d%c%d", q.num, sep, q.den);
> > avtext_print_string(tctx, key, buf.str, 0);
> > }
> > @@ -470,12 +495,11 @@ void avtext_print_rational(AVTextFormatContext
> *tctx, const char *key, AVRationa
> > void avtext_print_time(AVTextFormatContext *tctx, const char *key,
> > int64_t ts, const AVRational *time_base, int
> is_duration)
> > {
> > - char buf[128];
> > -
> > if ((!is_duration && ts == AV_NOPTS_VALUE) || (is_duration &&
> ts == 0)) {
> > avtext_print_string(tctx, key, "N/A",
> AV_TEXTFORMAT_PRINT_STRING_OPTIONAL);
> > } else {
> > - double d = ts * av_q2d(*time_base);
> > + char buf[128];
> > + double d = av_q2d(*time_base) * (double)ts;
>
> We actually try to avoid explicit casts where possible.
>
> > struct unit_value uv;
> > uv.val.d = d;
> > uv.unit = unit_second_str;
> > @@ -496,7 +520,8 @@ void avtext_print_data(AVTextFormatContext
> *tctx, const char *name,
> > const uint8_t *data, int size)
> > {
> > AVBPrint bp;
> > - int offset = 0, l, i;
> > + unsigned offset = 0;
> > + int l, i;
> >
> > av_bprint_init(&bp, 0, AV_BPRINT_SIZE_UNLIMITED);
> > av_bprintf(&bp, "\n");
> > @@ -523,25 +548,29 @@ void avtext_print_data(AVTextFormatContext
> *tctx, const char *name,
> > void avtext_print_data_hash(AVTextFormatContext *tctx, const char
> *name,
> > const uint8_t *data, int size)
> > {
> > - char *p, buf[AV_HASH_MAX_SIZE * 2 + 64] = { 0 };
> > + char buf[AV_HASH_MAX_SIZE * 2 + 64] = { 0 };
> > + int len;
> >
> > if (!tctx->hash)
> > return;
> >
> > av_hash_init(tctx->hash);
> > av_hash_update(tctx->hash, data, size);
> > - snprintf(buf, sizeof(buf), "%s:", av_hash_get_name(tctx-
> >hash));
> > - p = buf + strlen(buf);
> > - av_hash_final_hex(tctx->hash, p, buf + sizeof(buf) - p);
> > + len = snprintf(buf, sizeof(buf), "%s:", av_hash_get_name(tctx-
> >hash));
> > + av_hash_final_hex(tctx->hash, (uint8_t *)&buf[len],
> (int)sizeof(buf) - len);
>
> Is it guaranteed that the output of snprintf() is not truncated?
>
> > avtext_print_string(tctx, name, buf, 0);
> > }
> >
> > void avtext_print_integers(AVTextFormatContext *tctx, const char
> *name,
> > - uint8_t *data, int size, const
> char *format,
> > - int columns, int bytes, int
> offset_add)
> > + uint8_t *data, int size, const char
> *format,
> > + int columns, int bytes, int offset_add)
> > {
> > AVBPrint bp;
> > - int offset = 0, l, i;
> > + unsigned offset = 0;
> > + int l, i;
> > +
> > + if (!name || !data || !format || columns <= 0 || bytes <= 0)
> > + return;
>
> Can this happen?
>
> >
> > av_bprint_init(&bp, 0, AV_BPRINT_SIZE_UNLIMITED);
> > av_bprintf(&bp, "\n");
> > @@ -607,12 +636,18 @@ int
> avtextwriter_context_open(AVTextWriterContext **pwctx, const
> AVTextWriter *w
> > AVTextWriterContext *wctx;
> > int ret = 0;
> >
> > - if (!(wctx = av_mallocz(sizeof(AVTextWriterContext)))) {
> > + if (!pwctx || !writer)
> > + return AVERROR(EINVAL);
> > +
> > + if (!writer->priv_size && writer->priv_class)
>
> Stuff like this should never happen and should therefore not be
> checked.
>
> > + return AVERROR(EINVAL);
> > +
> > + if (!((wctx = av_mallocz(sizeof(AVTextWriterContext))))) {
> > ret = AVERROR(ENOMEM);
> > goto fail;
> > }
> >
> > - if (!(wctx->priv = av_mallocz(writer->priv_size))) {
> > + if (writer->priv_size && !((wctx->priv = av_mallocz(writer-
> >priv_size)))) {
> > ret = AVERROR(ENOMEM);
> > goto fail;
> > }
> > diff --git a/fftools/textformat/avtextformat.h
> b/fftools/textformat/avtextformat.h
> > index 03564d14a7..e519094f4f 100644
> > --- a/fftools/textformat/avtextformat.h
> > +++ b/fftools/textformat/avtextformat.h
> > @@ -21,9 +21,7 @@
> > #ifndef FFTOOLS_TEXTFORMAT_AVTEXTFORMAT_H
> > #define FFTOOLS_TEXTFORMAT_AVTEXTFORMAT_H
> >
> > -#include <stddef.h>
> > #include <stdint.h>
> > -#include "libavutil/attributes.h"
> > #include "libavutil/dict.h"
> > #include "libavformat/avio.h"
> > #include "libavutil/bprint.h"
> > @@ -103,7 +101,7 @@ struct AVTextFormatContext {
> > unsigned int
> nb_item_type[SECTION_MAX_NB_LEVELS][SECTION_MAX_NB_SECTIONS];
> >
> > /** section per each level */
> > - const struct AVTextFormatSection
> *section[SECTION_MAX_NB_LEVELS];
> > + const AVTextFormatSection *section[SECTION_MAX_NB_LEVELS];
> > AVBPrint section_pbuf[SECTION_MAX_NB_LEVELS]; ///< generic
> print buffer dedicated to each section,
> > /// used by
> various formatters
> >
> > @@ -124,7 +122,7 @@ struct AVTextFormatContext {
> > #define AV_TEXTFORMAT_PRINT_STRING_VALIDATE 2
> >
> > int avtext_context_open(AVTextFormatContext **ptctx, const
> AVTextFormatter *formatter, AVTextWriterContext *writer_context, const
> char *args,
> > - const struct AVTextFormatSection *sections,
> int nb_sections,
> > + const AVTextFormatSection *sections, int
> nb_sections,
> > int show_value_unit,
> > int use_value_prefix,
> > int use_byte_value_binary_prefix,
> > diff --git a/fftools/textformat/tf_default.c
> b/fftools/textformat/tf_default.c
> > index 14ef9fe8f9..3b05d25f36 100644
> > --- a/fftools/textformat/tf_default.c
> > +++ b/fftools/textformat/tf_default.c
> > @@ -70,9 +70,10 @@ DEFINE_FORMATTER_CLASS(default);
> > /* lame uppercasing routine, assumes the string is lower case ASCII
> */
> > static inline char *upcase_string(char *dst, size_t dst_size, const
> char *src)
> > {
> > - int i;
> > + unsigned i;
> > +
>
> Why not size_t?
>
> > for (i = 0; src[i] && i < dst_size - 1; i++)
> > - dst[i] = av_toupper(src[i]);
> > + dst[i] = (char)av_toupper(src[i]);
> > dst[i] = 0;
> > return dst;
> > }
> > @@ -108,6 +109,9 @@ static void
> default_print_section_footer(AVTextFormatContext *wctx)
> > const struct AVTextFormatSection *section = wctx->section[wctx-
> >level];
> > char buf[32];
> >
> > + if (!section)
> > + return;
>
> Can this happen?
>
> > +
> > if (def->noprint_wrappers || def->nested_section[wctx->level])
> > return;
> >
> > diff --git a/fftools/textformat/tf_ini.c
> b/fftools/textformat/tf_ini.c
> > index 9e1aa60e09..ec471fd480 100644
> > --- a/fftools/textformat/tf_ini.c
> > +++ b/fftools/textformat/tf_ini.c
> > @@ -92,7 +92,7 @@ static char *ini_escape_str(AVBPrint *dst, const
> char *src)
> > /* fallthrough */
> > default:
> > if ((unsigned char)c < 32)
> > - av_bprintf(dst, "\\x00%02x", c & 0xff);
> > + av_bprintf(dst, "\\x00%02x", (unsigned char)c);
> > else
> > av_bprint_chars(dst, c, 1);
> > break;
> > diff --git a/fftools/textformat/tf_json.c
> b/fftools/textformat/tf_json.c
> > index 24838b35ec..f286838d3c 100644
> > --- a/fftools/textformat/tf_json.c
> > +++ b/fftools/textformat/tf_json.c
> > @@ -82,13 +82,18 @@ static const char *json_escape_str(AVBPrint
> *dst, const char *src, void *log_ctx
> > static const char json_subst[] = { '"', '\\', 'b', 'f',
> 'n', 'r', 't', 0 };
> > const char *p;
> >
> > + if (!src) {
> > + av_log(log_ctx, AV_LOG_ERROR, "json_escape_str: NULL source
> string\n");
> > + return NULL;
> > + }
>
> Can this even happen?
>
> > +
> > for (p = src; *p; p++) {
> > char *s = strchr(json_escape, *p);
> > if (s) {
> > av_bprint_chars(dst, '\\', 1);
> > av_bprint_chars(dst, json_subst[s - json_escape], 1);
> > } else if ((unsigned char)*p < 32) {
> > - av_bprintf(dst, "\\u00%02x", *p & 0xff);
> > + av_bprintf(dst, "\\u00%02x", (unsigned char)*p);
> > } else {
> > av_bprint_chars(dst, *p, 1);
> > }
> > @@ -107,6 +112,7 @@ static void
> json_print_section_header(AVTextFormatContext *wctx, const void *dat
> > wctx->section[wctx->level-1] : NULL;
> >
> > if (wctx->level && wctx->nb_item[wctx->level-1])
> > + if (wctx->level && wctx->nb_item[wctx->level - 1])
> > writer_put_str(wctx, ",\n");
> >
> > if (section->flags & AV_TEXTFORMAT_SECTION_FLAG_IS_WRAPPER) {
> > diff --git a/fftools/textformat/tf_xml.c
> b/fftools/textformat/tf_xml.c
> > index 76271dbaa6..eceeda81e5 100644
> > --- a/fftools/textformat/tf_xml.c
> > +++ b/fftools/textformat/tf_xml.c
> > @@ -18,10 +18,7 @@
> > * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> 02110-1301 USA
> > */
> >
> > -#include <limits.h>
> > -#include <stdarg.h>
> > #include <stdint.h>
> > -#include <stdio.h>
> > #include <string.h>
> >
> > #include "avtextformat.h"
> > diff --git a/fftools/textformat/tw_avio.c
> b/fftools/textformat/tw_avio.c
> > index d335d35a56..3c7492aa06 100644
> > --- a/fftools/textformat/tw_avio.c
> > +++ b/fftools/textformat/tw_avio.c
> > @@ -63,7 +63,7 @@ static void io_w8(AVTextWriterContext *wctx, int
> b)
> > static void io_put_str(AVTextWriterContext *wctx, const char *str)
> > {
> > IOWriterContext *ctx = wctx->priv;
> > - avio_write(ctx->avio_context, str, strlen(str));
> > + avio_write(ctx->avio_context, (const unsigned char *)str,
> (int)strlen(str));
> > }
> >
> > static void io_printf(AVTextWriterContext *wctx, const char *fmt,
> ...)
> > @@ -89,10 +89,12 @@ const AVTextWriter avtextwriter_avio = {
> >
> > int avtextwriter_create_file(AVTextWriterContext **pwctx, const
> char *output_filename, int close_on_uninit)
> > {
> > + if (!pwctx || !output_filename || !output_filename[0])
> > + return AVERROR(EINVAL);
>
> Can this happen?
>
> > +
> > IOWriterContext *ctx;
> > int ret;
> >
> > -
> > ret = avtextwriter_context_open(pwctx, &avtextwriter_avio);
> > if (ret < 0)
> > return ret;
> > @@ -114,6 +116,9 @@ int avtextwriter_create_file(AVTextWriterContext
> **pwctx, const char *output_fil
> >
> > int avtextwriter_create_avio(AVTextWriterContext **pwctx,
> AVIOContext *avio_ctx, int close_on_uninit)
> > {
> > + if (!pwctx || !avio_ctx)
> > + return AVERROR(EINVAL);
> > +
> > IOWriterContext *ctx;
> > int ret;
> >
Hi Andreas,
I have removed all the "impossible" checks and the checks for the
context. Also applied the other changes.
Not sure whether it's helpful but here's a branch where the
changes from the review are in a single commit:
https://github.com/softworkz/FFmpeg/tree/execution_graph_printing_review1
https://github.com/softworkz/FFmpeg/commit/17b3cd7f881cd127020ab6fe55d6a955aa51e45f
The new patchset is coming in a few minutes (with squashed changes).
Thanks,
sw
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2025-04-16 9:52 UTC|newest]
Thread overview: 240+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-14 12:46 [FFmpeg-devel] [PATCH 0/9] Execution Graph Printing ffmpegagent
2025-04-14 12:46 ` [FFmpeg-devel] [PATCH 1/9] fftools/textformat: Formatting and whitespace changes softworkz
2025-04-21 16:52 ` Stefano Sabatini
2025-04-21 17:12 ` softworkz .
2025-04-14 12:46 ` [FFmpeg-devel] [PATCH 2/9] fftools/textformat: Quality improvements softworkz
2025-04-15 1:05 ` Andreas Rheinhardt
2025-04-15 3:19 ` softworkz .
2025-04-16 4:50 ` Andreas Rheinhardt
2025-04-16 6:27 ` softworkz .
2025-04-16 9:52 ` softworkz . [this message]
2025-04-14 12:47 ` [FFmpeg-devel] [PATCH 3/9] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-04-14 12:47 ` [FFmpeg-devel] [PATCH 4/9] fftools/textformat: Add function avtext_print_integer_flags() softworkz
2025-04-14 12:47 ` [FFmpeg-devel] [PATCH 5/9] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-04-14 12:47 ` [FFmpeg-devel] [PATCH 6/9] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-04-14 12:47 ` [FFmpeg-devel] [PATCH 7/9] fftools/resources: Add resource manager files softworkz
2025-04-14 12:47 ` [FFmpeg-devel] [PATCH 8/9] fftools/graphprint: Add execution graph printing softworkz
2025-04-14 12:47 ` [FFmpeg-devel] [PATCH 9/9] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-04-16 10:12 ` [FFmpeg-devel] [PATCH v2 00/10] Execution Graph Printing ffmpegagent
2025-04-16 10:12 ` [FFmpeg-devel] [PATCH v2 01/10] fftools/textformat: Formatting and whitespace changes softworkz
2025-04-16 10:12 ` [FFmpeg-devel] [PATCH v2 02/10] fftools/textformat: Quality improvements softworkz
2025-04-16 10:49 ` Andreas Rheinhardt
2025-04-16 11:33 ` softworkz .
2025-04-18 2:48 ` softworkz .
2025-04-18 5:41 ` softworkz .
2025-04-16 10:12 ` [FFmpeg-devel] [PATCH v2 03/10] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-04-16 10:12 ` [FFmpeg-devel] [PATCH v2 04/10] fftools/tf_internal: Use ac_default_item_name softworkz
2025-04-16 10:50 ` Andreas Rheinhardt
2025-04-16 11:11 ` softworkz .
2025-04-16 10:12 ` [FFmpeg-devel] [PATCH v2 05/10] fftools/textformat: Add function avtext_print_integer_flags() softworkz
2025-04-16 10:12 ` [FFmpeg-devel] [PATCH v2 06/10] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-04-16 10:12 ` [FFmpeg-devel] [PATCH v2 07/10] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-04-16 10:12 ` [FFmpeg-devel] [PATCH v2 08/10] fftools/resources: Add resource manager files softworkz
2025-04-16 10:12 ` [FFmpeg-devel] [PATCH v2 09/10] fftools/graphprint: Add execution graph printing softworkz
2025-04-17 18:41 ` Michael Niedermayer
2025-04-18 2:45 ` softworkz .
2025-04-16 10:12 ` [FFmpeg-devel] [PATCH v2 10/10] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-04-16 10:21 ` [FFmpeg-devel] [PATCH v2 00/10] Execution Graph Printing softworkz .
2025-04-18 2:56 ` [FFmpeg-devel] [PATCH v3 00/11] " ffmpegagent
2025-04-18 2:56 ` [FFmpeg-devel] [PATCH v3 01/11] fftools/textformat: Formatting and whitespace changes softworkz
2025-04-18 2:56 ` [FFmpeg-devel] [PATCH v3 02/11] fftools/textformat: Quality improvements softworkz
2025-04-18 2:56 ` [FFmpeg-devel] [PATCH v3 03/11] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-04-18 2:56 ` [FFmpeg-devel] [PATCH v3 04/11] fftools/tf_internal: Use ac_default_item_name softworkz
2025-04-18 2:56 ` [FFmpeg-devel] [PATCH v3 05/11] fftools/textformat: Add function avtext_print_integer_flags() softworkz
2025-04-18 2:56 ` [FFmpeg-devel] [PATCH v3 06/11] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-04-18 2:57 ` [FFmpeg-devel] [PATCH v3 07/11] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-04-18 2:57 ` [FFmpeg-devel] [PATCH v3 08/11] fftools/resources: Add resource manager files softworkz
2025-04-18 2:57 ` [FFmpeg-devel] [PATCH v3 09/11] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-04-18 2:57 ` [FFmpeg-devel] [PATCH v3 10/11] fftools/graphprint: Add execution graph printing softworkz
2025-04-18 2:57 ` [FFmpeg-devel] [PATCH v3 11/11] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-04-20 10:11 ` Michael Niedermayer
2025-04-20 22:59 ` [FFmpeg-devel] [PATCH v4 00/11] Execution Graph Printing ffmpegagent
2025-04-20 22:59 ` [FFmpeg-devel] [PATCH v4 01/11] fftools/textformat: Formatting and whitespace changes softworkz
2025-04-20 22:59 ` [FFmpeg-devel] [PATCH v4 02/11] fftools/textformat: Quality improvements softworkz
2025-04-21 17:16 ` Stefano Sabatini
2025-04-21 17:21 ` Nicolas George
2025-04-21 17:40 ` softworkz .
2025-04-21 17:29 ` softworkz .
2025-04-20 22:59 ` [FFmpeg-devel] [PATCH v4 03/11] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-04-21 17:28 ` Stefano Sabatini
2025-04-21 17:31 ` softworkz .
2025-04-20 22:59 ` [FFmpeg-devel] [PATCH v4 04/11] fftools/tf_internal: Use ac_default_item_name softworkz
2025-04-21 17:31 ` Stefano Sabatini
2025-04-22 21:10 ` softworkz .
2025-04-23 22:36 ` softworkz .
2025-04-20 22:59 ` [FFmpeg-devel] [PATCH v4 05/11] fftools/textformat: Add function avtext_print_integer_flags() softworkz
2025-04-23 22:56 ` Stefano Sabatini
2025-04-20 22:59 ` [FFmpeg-devel] [PATCH v4 06/11] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-04-20 22:59 ` [FFmpeg-devel] [PATCH v4 07/11] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-04-20 22:59 ` [FFmpeg-devel] [PATCH v4 08/11] fftools/resources: Add resource manager files softworkz
2025-04-20 22:59 ` [FFmpeg-devel] [PATCH v4 09/11] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-04-20 22:59 ` [FFmpeg-devel] [PATCH v4 10/11] fftools/graphprint: Add execution graph printing softworkz
2025-04-20 22:59 ` [FFmpeg-devel] [PATCH v4 11/11] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-04-22 21:55 ` [FFmpeg-devel] [PATCH v5 00/14] Execution Graph Printing ffmpegagent
2025-04-22 21:55 ` [FFmpeg-devel] [PATCH v5 01/14] fftools/textformat: Formatting and whitespace changes softworkz
2025-04-23 22:08 ` Stefano Sabatini
2025-04-22 21:55 ` [FFmpeg-devel] [PATCH v5 02/14] fftools/textformat: Apply quality improvements softworkz
2025-04-23 22:34 ` Stefano Sabatini
2025-04-23 22:53 ` softworkz .
2025-04-23 22:56 ` Nicolas George
2025-04-23 23:04 ` softworkz .
2025-04-23 23:16 ` softworkz .
2025-04-23 23:54 ` softworkz .
2025-04-22 21:55 ` [FFmpeg-devel] [PATCH v5 03/14] fftools/avtextformat: Re-use BPrint in loop softworkz
2025-04-23 22:45 ` Stefano Sabatini
2025-04-22 21:55 ` [FFmpeg-devel] [PATCH v5 04/14] fftools/textformat: Introduce AVTextFormatOptions for avtext_context_open() softworkz
2025-04-23 22:48 ` Stefano Sabatini
2025-04-23 22:55 ` softworkz .
2025-04-22 21:55 ` [FFmpeg-devel] [PATCH v5 05/14] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-04-23 22:49 ` Stefano Sabatini
2025-04-22 21:55 ` [FFmpeg-devel] [PATCH v5 06/14] fftools/textformat: AVTextWriter change writer_printf signature softworkz
2025-04-23 23:07 ` Stefano Sabatini
2025-04-22 21:55 ` [FFmpeg-devel] [PATCH v5 07/14] fftools/tf_internal: Use av_default_item_name softworkz
2025-04-23 22:57 ` Stefano Sabatini
2025-04-22 21:55 ` [FFmpeg-devel] [PATCH v5 08/14] fftools/textformat: Add function avtext_print_integer_flags() softworkz
2025-04-22 21:55 ` [FFmpeg-devel] [PATCH v5 09/14] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-04-22 21:55 ` [FFmpeg-devel] [PATCH v5 10/14] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-04-22 21:55 ` [FFmpeg-devel] [PATCH v5 11/14] fftools/resources: Add resource manager files softworkz
2025-04-22 21:55 ` [FFmpeg-devel] [PATCH v5 12/14] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-04-22 21:55 ` [FFmpeg-devel] [PATCH v5 13/14] fftools/graphprint: Add execution graph printing softworkz
2025-04-22 21:55 ` [FFmpeg-devel] [PATCH v5 14/14] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-04-24 1:12 ` [FFmpeg-devel] [PATCH v6 00/13] Execution Graph Printing ffmpegagent
2025-04-24 1:12 ` [FFmpeg-devel] [PATCH v6 01/13] fftools/textformat: Formatting and whitespace changes softworkz
2025-04-24 1:13 ` [FFmpeg-devel] [PATCH v6 02/13] fftools/textformat: Apply quality improvements softworkz
2025-04-24 1:13 ` [FFmpeg-devel] [PATCH v6 03/13] fftools/avtextformat: Re-use BPrint in loop softworkz
2025-04-24 1:13 ` [FFmpeg-devel] [PATCH v6 04/13] fftools/textformat: Introduce AVTextFormatOptions for avtext_context_open() softworkz
2025-04-24 1:13 ` [FFmpeg-devel] [PATCH v6 05/13] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-04-24 1:13 ` [FFmpeg-devel] [PATCH v6 06/13] fftools/tf_internal: Use av_default_item_name softworkz
2025-04-24 1:13 ` [FFmpeg-devel] [PATCH v6 07/13] fftools/textformat: Add function avtext_print_integer_flags() softworkz
2025-04-24 1:13 ` [FFmpeg-devel] [PATCH v6 08/13] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-04-24 1:13 ` [FFmpeg-devel] [PATCH v6 09/13] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-04-24 1:13 ` [FFmpeg-devel] [PATCH v6 10/13] fftools/resources: Add resource manager files softworkz
2025-04-24 1:13 ` [FFmpeg-devel] [PATCH v6 11/13] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-04-24 1:13 ` [FFmpeg-devel] [PATCH v6 12/13] fftools/graphprint: Add execution graph printing softworkz
2025-04-25 22:26 ` Michael Niedermayer
2025-04-25 23:17 ` softworkz .
2025-04-24 1:13 ` [FFmpeg-devel] [PATCH v6 13/13] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-04-25 23:30 ` [FFmpeg-devel] [PATCH v7 00/13] Execution Graph Printing ffmpegagent
2025-04-25 23:30 ` [FFmpeg-devel] [PATCH v7 01/13] fftools/textformat: Formatting and whitespace changes softworkz
2025-04-27 10:47 ` Stefano Sabatini
2025-04-25 23:30 ` [FFmpeg-devel] [PATCH v7 02/13] fftools/textformat: Apply quality improvements softworkz
2025-04-28 19:56 ` Stefano Sabatini
2025-04-28 20:05 ` softworkz .
2025-04-28 20:24 ` Stefano Sabatini
2025-04-28 20:40 ` softworkz .
2025-04-28 21:47 ` Stefano Sabatini
2025-04-28 22:49 ` softworkz .
2025-04-25 23:30 ` [FFmpeg-devel] [PATCH v7 03/13] fftools/avtextformat: Re-use BPrint in loop softworkz
2025-04-25 23:30 ` [FFmpeg-devel] [PATCH v7 04/13] fftools/textformat: Introduce AVTextFormatOptions for avtext_context_open() softworkz
2025-04-25 23:31 ` [FFmpeg-devel] [PATCH v7 05/13] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-04-25 23:31 ` [FFmpeg-devel] [PATCH v7 06/13] fftools/tf_internal: Use av_default_item_name softworkz
2025-04-25 23:31 ` [FFmpeg-devel] [PATCH v7 07/13] fftools/textformat: Add function avtext_print_integer_flags() softworkz
2025-04-25 23:31 ` [FFmpeg-devel] [PATCH v7 08/13] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-04-25 23:31 ` [FFmpeg-devel] [PATCH v7 09/13] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-04-25 23:31 ` [FFmpeg-devel] [PATCH v7 10/13] fftools/resources: Add resource manager files softworkz
2025-04-25 23:31 ` [FFmpeg-devel] [PATCH v7 11/13] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-04-25 23:31 ` [FFmpeg-devel] [PATCH v7 12/13] fftools/graphprint: Add execution graph printing softworkz
2025-04-25 23:31 ` [FFmpeg-devel] [PATCH v7 13/13] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-04-29 0:59 ` [FFmpeg-devel] [PATCH v8 00/15] Execution Graph Printing ffmpegagent
2025-04-29 0:59 ` [FFmpeg-devel] [PATCH v8 01/15] fftools/textformat: Formatting and whitespace changes softworkz
2025-04-29 0:59 ` [FFmpeg-devel] [PATCH v8 02/15] fftools/textformat: Apply quality improvements softworkz
2025-04-29 0:59 ` [FFmpeg-devel] [PATCH v8 03/15] fftools/textformat: Remove unused print_rational() pointer from AVTextFormatter softworkz
2025-04-29 0:59 ` [FFmpeg-devel] [PATCH v8 04/15] fftools/textformat: Rename name param to key for API consistency softworkz
2025-04-29 0:59 ` [FFmpeg-devel] [PATCH v8 05/15] fftools/avtextformat: Re-use BPrint in loop softworkz
2025-04-29 0:59 ` [FFmpeg-devel] [PATCH v8 06/15] fftools/textformat: Introduce AVTextFormatOptions for avtext_context_open() softworkz
2025-04-29 0:59 ` [FFmpeg-devel] [PATCH v8 07/15] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-04-29 0:59 ` [FFmpeg-devel] [PATCH v8 08/15] fftools/tf_internal: Use av_default_item_name softworkz
2025-04-29 0:59 ` [FFmpeg-devel] [PATCH v8 09/15] fftools/textformat: Add flags param to function avtext_print_integer() softworkz
2025-04-29 0:59 ` [FFmpeg-devel] [PATCH v8 10/15] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-04-29 1:00 ` [FFmpeg-devel] [PATCH v8 11/15] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-04-29 1:00 ` [FFmpeg-devel] [PATCH v8 12/15] fftools/resources: Add resource manager files softworkz
2025-04-29 1:00 ` [FFmpeg-devel] [PATCH v8 13/15] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-04-29 20:25 ` Michael Niedermayer
2025-04-29 1:00 ` [FFmpeg-devel] [PATCH v8 14/15] fftools/graphprint: Add execution graph printing softworkz
2025-04-29 19:35 ` Michael Niedermayer
2025-04-29 20:33 ` softworkz .
2025-05-02 0:11 ` Michael Niedermayer
2025-05-02 0:48 ` softworkz .
2025-05-03 5:08 ` softworkz .
2025-04-29 1:00 ` [FFmpeg-devel] [PATCH v8 15/15] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-05-03 8:22 ` [FFmpeg-devel] [PATCH v9 00/15] Execution Graph Printing ffmpegagent
2025-05-03 8:22 ` [FFmpeg-devel] [PATCH v9 01/15] fftools/textformat: Formatting and whitespace changes softworkz
2025-05-03 8:22 ` [FFmpeg-devel] [PATCH v9 02/15] fftools/textformat: Apply quality improvements softworkz
2025-05-03 8:22 ` [FFmpeg-devel] [PATCH v9 03/15] fftools/textformat: Remove unused print_rational() pointer from AVTextFormatter softworkz
2025-05-03 8:22 ` [FFmpeg-devel] [PATCH v9 04/15] fftools/textformat: Rename name param to key for API consistency softworkz
2025-05-03 8:22 ` [FFmpeg-devel] [PATCH v9 05/15] fftools/avtextformat: Re-use BPrint in loop softworkz
2025-05-03 8:22 ` [FFmpeg-devel] [PATCH v9 06/15] fftools/textformat: Introduce AVTextFormatOptions for avtext_context_open() softworkz
2025-05-03 8:22 ` [FFmpeg-devel] [PATCH v9 07/15] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-05-03 8:22 ` [FFmpeg-devel] [PATCH v9 08/15] fftools/tf_internal: Use av_default_item_name softworkz
2025-05-03 8:22 ` [FFmpeg-devel] [PATCH v9 09/15] fftools/textformat: Add flags param to function avtext_print_integer() softworkz
2025-05-03 8:22 ` [FFmpeg-devel] [PATCH v9 10/15] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-05-03 8:22 ` [FFmpeg-devel] [PATCH v9 11/15] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-05-03 8:22 ` [FFmpeg-devel] [PATCH v9 12/15] fftools/resources: Add resource manager files with build-time compression softworkz
2025-05-03 8:22 ` [FFmpeg-devel] [PATCH v9 13/15] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-05-03 8:22 ` [FFmpeg-devel] [PATCH v9 14/15] fftools/graphprint: Add execution graph printing softworkz
2025-05-03 23:57 ` Michael Niedermayer
2025-05-04 2:55 ` softworkz .
2025-05-03 8:22 ` [FFmpeg-devel] [PATCH v9 15/15] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-05-04 2:57 ` [FFmpeg-devel] [PATCH v10 00/15] Execution Graph Printing ffmpegagent
2025-05-04 2:57 ` [FFmpeg-devel] [PATCH v10 01/15] fftools/textformat: Formatting and whitespace changes softworkz
2025-05-07 23:44 ` Stefano Sabatini
2025-05-07 23:59 ` softworkz .
2025-05-08 0:14 ` Stefano Sabatini
2025-05-08 0:20 ` softworkz .
2025-05-07 23:47 ` Stefano Sabatini
2025-05-04 2:57 ` [FFmpeg-devel] [PATCH v10 02/15] fftools/textformat: Apply quality improvements softworkz
2025-05-04 2:57 ` [FFmpeg-devel] [PATCH v10 03/15] fftools/textformat: Remove unused print_rational() pointer from AVTextFormatter softworkz
2025-05-07 23:49 ` Stefano Sabatini
2025-05-04 2:57 ` [FFmpeg-devel] [PATCH v10 04/15] fftools/textformat: Rename name param to key for API consistency softworkz
2025-05-07 23:50 ` Stefano Sabatini
2025-05-04 2:57 ` [FFmpeg-devel] [PATCH v10 05/15] fftools/avtextformat: Re-use BPrint in loop softworkz
2025-05-07 23:58 ` Stefano Sabatini
2025-05-04 2:57 ` [FFmpeg-devel] [PATCH v10 06/15] fftools/textformat: Introduce AVTextFormatOptions for avtext_context_open() softworkz
2025-05-08 0:05 ` Stefano Sabatini
2025-05-08 0:25 ` softworkz .
2025-05-08 21:38 ` Stefano Sabatini
2025-05-09 11:31 ` softworkz .
2025-05-04 2:57 ` [FFmpeg-devel] [PATCH v10 07/15] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-05-04 2:57 ` [FFmpeg-devel] [PATCH v10 08/15] fftools/tf_internal: Use av_default_item_name softworkz
2025-05-04 2:57 ` [FFmpeg-devel] [PATCH v10 09/15] fftools/textformat: Add flags param to function avtext_print_integer() softworkz
2025-05-04 2:57 ` [FFmpeg-devel] [PATCH v10 10/15] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-05-04 2:57 ` [FFmpeg-devel] [PATCH v10 11/15] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-05-04 2:57 ` [FFmpeg-devel] [PATCH v10 12/15] fftools/resources: Add resource manager files with build-time compression softworkz
2025-05-04 2:57 ` [FFmpeg-devel] [PATCH v10 13/15] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-05-04 2:57 ` [FFmpeg-devel] [PATCH v10 14/15] fftools/graphprint: Add execution graph printing softworkz
2025-05-04 2:57 ` [FFmpeg-devel] [PATCH v10 15/15] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-05-04 22:34 ` [FFmpeg-devel] [PATCH v11 00/15] Execution Graph Printing ffmpegagent
2025-05-04 22:34 ` [FFmpeg-devel] [PATCH v11 01/15] fftools/textformat: Formatting and whitespace changes softworkz
2025-05-04 22:34 ` [FFmpeg-devel] [PATCH v11 02/15] fftools/textformat: Apply quality improvements softworkz
2025-05-04 22:34 ` [FFmpeg-devel] [PATCH v11 03/15] fftools/textformat: Remove unused print_rational() pointer from AVTextFormatter softworkz
2025-05-04 22:34 ` [FFmpeg-devel] [PATCH v11 04/15] fftools/textformat: Rename name param to key for API consistency softworkz
2025-05-04 22:34 ` [FFmpeg-devel] [PATCH v11 05/15] fftools/avtextformat: Re-use BPrint in loop softworkz
2025-05-04 22:34 ` [FFmpeg-devel] [PATCH v11 06/15] fftools/textformat: Introduce AVTextFormatOptions for avtext_context_open() softworkz
2025-05-04 22:34 ` [FFmpeg-devel] [PATCH v11 07/15] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-05-04 22:34 ` [FFmpeg-devel] [PATCH v11 08/15] fftools/tf_internal: Use av_default_item_name softworkz
2025-05-04 22:34 ` [FFmpeg-devel] [PATCH v11 09/15] fftools/textformat: Add flags param to function avtext_print_integer() softworkz
2025-05-04 22:34 ` [FFmpeg-devel] [PATCH v11 10/15] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-05-04 22:35 ` [FFmpeg-devel] [PATCH v11 11/15] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-05-04 22:35 ` [FFmpeg-devel] [PATCH v11 12/15] fftools/resources: Add resource manager files with build-time compression softworkz
2025-05-04 22:35 ` [FFmpeg-devel] [PATCH v11 13/15] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-05-04 22:35 ` [FFmpeg-devel] [PATCH v11 14/15] fftools/graphprint: Add execution graph printing softworkz
2025-05-04 22:35 ` [FFmpeg-devel] [PATCH v11 15/15] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-05-07 2:06 ` [FFmpeg-devel] [PATCH v11 00/15] Execution Graph Printing softworkz .
2025-05-08 1:36 ` [FFmpeg-devel] [PATCH v12 " ffmpegagent
2025-05-08 1:36 ` [FFmpeg-devel] [PATCH v12 01/15] fftools/textformat: Apply formatting and whitespace changes softworkz
2025-05-08 1:36 ` [FFmpeg-devel] [PATCH v12 02/15] fftools/textformat: Apply quality improvements softworkz
2025-05-08 1:36 ` [FFmpeg-devel] [PATCH v12 03/15] fftools/textformat: Remove unused print_rational() pointer from AVTextFormatter softworkz
2025-05-08 1:36 ` [FFmpeg-devel] [PATCH v12 04/15] fftools/textformat: Rename name param to key for API consistency softworkz
2025-05-08 1:36 ` [FFmpeg-devel] [PATCH v12 05/15] fftools/avtextformat: Re-use BPrint in loop softworkz
2025-05-08 1:36 ` [FFmpeg-devel] [PATCH v12 06/15] fftools/textformat: Introduce AVTextFormatOptions for avtext_context_open() softworkz
2025-05-08 1:36 ` [FFmpeg-devel] [PATCH v12 07/15] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-05-08 1:36 ` [FFmpeg-devel] [PATCH v12 08/15] fftools/tf_internal: Use av_default_item_name softworkz
2025-05-08 1:36 ` [FFmpeg-devel] [PATCH v12 09/15] fftools/textformat: Add flags param to function avtext_print_integer() softworkz
2025-05-08 1:36 ` [FFmpeg-devel] [PATCH v12 10/15] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-05-08 1:36 ` [FFmpeg-devel] [PATCH v12 11/15] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-05-08 1:36 ` [FFmpeg-devel] [PATCH v12 12/15] fftools/resources: Add resource manager files with build-time compression softworkz
2025-05-08 1:36 ` [FFmpeg-devel] [PATCH v12 13/15] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-05-08 1:36 ` [FFmpeg-devel] [PATCH v12 14/15] fftools/graphprint: Add execution graph printing softworkz
2025-05-08 1:36 ` [FFmpeg-devel] [PATCH v12 15/15] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-05-13 14:03 ` [FFmpeg-devel] [PATCH v12 00/15] Execution Graph Printing softworkz .
2025-05-15 21:46 ` softworkz .
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DM8P223MB036508AA0F812B05544A091CBABD2@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM \
--to=softworkz-at-hotmail.com@ffmpeg.org \
--cc=ffmpeg-devel@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git