mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-04-11 03:32:39 +00:00
ffprobe: add multiple_sections field to WriterContext
Move the field "multiple_entries" from the JSON writer private context to WriterContext, and rename it "multiple_sections". This allows to factorize the code with the pending INI format patch.
This commit is contained in:
parent
c365cdf202
commit
fa6cb2fdff
14
ffprobe.c
14
ffprobe.c
@ -179,6 +179,7 @@ struct WriterContext {
|
|||||||
unsigned int nb_section; ///< number of the section printed in the given section sequence, starting at 0
|
unsigned int nb_section; ///< number of the section printed in the given section sequence, starting at 0
|
||||||
unsigned int nb_chapter; ///< number of the chapter, starting at 0
|
unsigned int nb_chapter; ///< number of the chapter, starting at 0
|
||||||
|
|
||||||
|
int multiple_sections; ///< tells if the current chapter can contain multiple sections
|
||||||
int is_fmt_chapter; ///< tells if the current chapter is "format", required by the print_format_entry option
|
int is_fmt_chapter; ///< tells if the current chapter is "format", required by the print_format_entry option
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -255,6 +256,9 @@ static inline void writer_print_chapter_header(WriterContext *wctx,
|
|||||||
wctx->writer->print_chapter_header(wctx, chapter);
|
wctx->writer->print_chapter_header(wctx, chapter);
|
||||||
wctx->nb_section = 0;
|
wctx->nb_section = 0;
|
||||||
|
|
||||||
|
wctx->multiple_sections = !strcmp(chapter, "packets") || !strcmp(chapter, "frames" ) ||
|
||||||
|
!strcmp(chapter, "packets_and_frames") ||
|
||||||
|
!strcmp(chapter, "streams") || !strcmp(chapter, "library_versions");
|
||||||
wctx->is_fmt_chapter = !strcmp(chapter, "format");
|
wctx->is_fmt_chapter = !strcmp(chapter, "format");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -713,7 +717,6 @@ static const Writer csv_writer = {
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const AVClass *class;
|
const AVClass *class;
|
||||||
int multiple_entries; ///< tells if the given chapter requires multiple entries
|
|
||||||
int print_packets_and_frames;
|
int print_packets_and_frames;
|
||||||
int indent_level;
|
int indent_level;
|
||||||
int compact;
|
int compact;
|
||||||
@ -804,10 +807,7 @@ static void json_print_chapter_header(WriterContext *wctx, const char *chapter)
|
|||||||
if (wctx->nb_chapter)
|
if (wctx->nb_chapter)
|
||||||
printf(",");
|
printf(",");
|
||||||
printf("\n");
|
printf("\n");
|
||||||
json->multiple_entries = !strcmp(chapter, "packets") || !strcmp(chapter, "frames" ) ||
|
if (wctx->multiple_sections) {
|
||||||
!strcmp(chapter, "packets_and_frames") ||
|
|
||||||
!strcmp(chapter, "streams") || !strcmp(chapter, "library_versions");
|
|
||||||
if (json->multiple_entries) {
|
|
||||||
JSON_INDENT();
|
JSON_INDENT();
|
||||||
av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
|
av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
|
||||||
printf("\"%s\": [\n", json_escape_str(&buf, chapter, wctx));
|
printf("\"%s\": [\n", json_escape_str(&buf, chapter, wctx));
|
||||||
@ -821,7 +821,7 @@ static void json_print_chapter_footer(WriterContext *wctx, const char *chapter)
|
|||||||
{
|
{
|
||||||
JSONContext *json = wctx->priv;
|
JSONContext *json = wctx->priv;
|
||||||
|
|
||||||
if (json->multiple_entries) {
|
if (wctx->multiple_sections) {
|
||||||
printf("\n");
|
printf("\n");
|
||||||
json->indent_level--;
|
json->indent_level--;
|
||||||
JSON_INDENT();
|
JSON_INDENT();
|
||||||
@ -836,7 +836,7 @@ static void json_print_section_header(WriterContext *wctx, const char *section)
|
|||||||
if (wctx->nb_section)
|
if (wctx->nb_section)
|
||||||
printf(",\n");
|
printf(",\n");
|
||||||
JSON_INDENT();
|
JSON_INDENT();
|
||||||
if (!json->multiple_entries)
|
if (!wctx->multiple_sections)
|
||||||
printf("\"%s\": ", section);
|
printf("\"%s\": ", section);
|
||||||
printf("{%s", json->item_start_end);
|
printf("{%s", json->item_start_end);
|
||||||
json->indent_level++;
|
json->indent_level++;
|
||||||
|
Loading…
Reference in New Issue
Block a user