From: Jan Sebechlebsky <sebechlebsky...@gmail.com> Add custom item name function for bsf list, which will construct string description of filter chain. This is done using lazy-initialization, so there is no overhead if item name is never accessed.
Signed-off-by: Jan Sebechlebsky <sebechlebsky...@gmail.com> --- No changes from last version, just rebased because of the changes in previous patch. libavcodec/bsf.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/libavcodec/bsf.c b/libavcodec/bsf.c index dcdc1d3..2462e62 100644 --- a/libavcodec/bsf.c +++ b/libavcodec/bsf.c @@ -248,6 +248,7 @@ typedef struct BSFListContext { unsigned idx; // index of currently processed BSF unsigned flushed_idx; // index of BSF being flushed + char * item_name; } BSFListContext; @@ -348,9 +349,34 @@ static void bsf_list_close(AVBSFContext *bsf) av_freep(&lst->item_name); } +static const char *bsf_list_item_name(void *ctx) +{ + static const char *null_filter_name = "null"; + AVBSFContext *bsf_ctx = ctx; + BSFListContext *lst = bsf_ctx->priv_data; + + if (!lst->nb_bsfs) + return null_filter_name; + + if (!lst->item_name) { + int i; + AVBPrint bp; + av_bprint_init(&bp, 16, 128); + + av_bprintf(&bp, "bsf_list("); + for (i = 0; i < lst->nb_bsfs; i++) + av_bprintf(&bp, i ? ",%s" : "%s", lst->bsfs[i]->filter->name); + av_bprintf(&bp, ")"); + + av_bprint_finalize(&bp, &lst->item_name); + } + + return lst->item_name; +} + static const AVClass bsf_list_class = { .class_name = "bsf_list", - .item_name = av_default_item_name, + .item_name = bsf_list_item_name, .version = LIBAVUTIL_VERSION_INT, }; -- 1.9.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel