ffprobe: reduce the number of AVBPrint resets.
This commit is contained in:
23
ffprobe.c
23
ffprobe.c
@@ -662,19 +662,17 @@ static void compact_show_tags(WriterContext *wctx, AVDictionary *dict)
|
|||||||
AVDictionaryEntry *tag = NULL;
|
AVDictionaryEntry *tag = NULL;
|
||||||
AVBPrint buf;
|
AVBPrint buf;
|
||||||
|
|
||||||
|
av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
|
||||||
while ((tag = av_dict_get(dict, "", tag, AV_DICT_IGNORE_SUFFIX))) {
|
while ((tag = av_dict_get(dict, "", tag, AV_DICT_IGNORE_SUFFIX))) {
|
||||||
if (wctx->nb_item) printf("%c", compact->item_sep);
|
if (wctx->nb_item) printf("%c", compact->item_sep);
|
||||||
|
|
||||||
if (!compact->nokey) {
|
if (!compact->nokey) {
|
||||||
av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
|
av_bprint_clear(&buf);
|
||||||
printf("tag:%s=", compact->escape_str(&buf, tag->key, compact->item_sep, wctx));
|
printf("tag:%s=", compact->escape_str(&buf, tag->key, compact->item_sep, wctx));
|
||||||
av_bprint_finalize(&buf, NULL);
|
|
||||||
}
|
}
|
||||||
|
av_bprint_clear(&buf);
|
||||||
av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
|
|
||||||
printf("%s", compact->escape_str(&buf, tag->value, compact->item_sep, wctx));
|
printf("%s", compact->escape_str(&buf, tag->value, compact->item_sep, wctx));
|
||||||
av_bprint_finalize(&buf, NULL);
|
|
||||||
}
|
}
|
||||||
|
av_bprint_finalize(&buf, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const Writer compact_writer = {
|
static const Writer compact_writer = {
|
||||||
@@ -867,9 +865,7 @@ static inline void json_print_item_str(WriterContext *wctx,
|
|||||||
|
|
||||||
av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
|
av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
|
||||||
printf("\"%s\":", json_escape_str(&buf, key, wctx));
|
printf("\"%s\":", json_escape_str(&buf, key, wctx));
|
||||||
av_bprint_finalize(&buf, NULL);
|
av_bprint_clear(&buf);
|
||||||
|
|
||||||
av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
|
|
||||||
printf(" \"%s\"", json_escape_str(&buf, value, wctx));
|
printf(" \"%s\"", json_escape_str(&buf, value, wctx));
|
||||||
av_bprint_finalize(&buf, NULL);
|
av_bprint_finalize(&buf, NULL);
|
||||||
}
|
}
|
||||||
@@ -1124,6 +1120,7 @@ static void xml_show_tags(WriterContext *wctx, AVDictionary *dict)
|
|||||||
int is_first = 1;
|
int is_first = 1;
|
||||||
AVBPrint buf;
|
AVBPrint buf;
|
||||||
|
|
||||||
|
av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
|
||||||
xml->indent_level++;
|
xml->indent_level++;
|
||||||
while ((tag = av_dict_get(dict, "", tag, AV_DICT_IGNORE_SUFFIX))) {
|
while ((tag = av_dict_get(dict, "", tag, AV_DICT_IGNORE_SUFFIX))) {
|
||||||
if (is_first) {
|
if (is_first) {
|
||||||
@@ -1134,14 +1131,12 @@ static void xml_show_tags(WriterContext *wctx, AVDictionary *dict)
|
|||||||
}
|
}
|
||||||
XML_INDENT();
|
XML_INDENT();
|
||||||
|
|
||||||
av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
|
av_bprint_clear(&buf);
|
||||||
printf("<tag key=\"%s\"", xml_escape_str(&buf, tag->key, wctx));
|
printf("<tag key=\"%s\"", xml_escape_str(&buf, tag->key, wctx));
|
||||||
av_bprint_finalize(&buf, NULL);
|
av_bprint_clear(&buf);
|
||||||
|
|
||||||
av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
|
|
||||||
printf(" value=\"%s\"/>\n", xml_escape_str(&buf, tag->value, wctx));
|
printf(" value=\"%s\"/>\n", xml_escape_str(&buf, tag->value, wctx));
|
||||||
av_bprint_finalize(&buf, NULL);
|
|
||||||
}
|
}
|
||||||
|
av_bprint_finalize(&buf, NULL);
|
||||||
xml->indent_level--;
|
xml->indent_level--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user