Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
F
FFmpeg
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
libremedia
Tethys
FFmpeg
Commits
2248db94
Commit
2248db94
authored
12 years ago
by
Clément Bœsch
Browse files
Options
Downloads
Patches
Plain Diff
ffprobe: move packets_and_frames work to writer context.
parent
7980a260
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
ffprobe.c
+19
-15
19 additions, 15 deletions
ffprobe.c
with
19 additions
and
15 deletions
ffprobe.c
+
19
−
15
View file @
2248db94
...
@@ -177,10 +177,14 @@ struct WriterContext {
...
@@ -177,10 +177,14 @@ struct WriterContext {
void
*
priv
;
///< private data for use by the filter
void
*
priv
;
///< private data for use by the filter
unsigned
int
nb_item
;
///< number of the item printed in the given section, starting at 0
unsigned
int
nb_item
;
///< number of the item printed in the given section, starting at 0
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_section_packet
;
///< number of the packet section in case we are in "packets_and_frames" section
unsigned
int
nb_section_frame
;
///< number of the frame section in case we are in "packets_and_frames" section
unsigned
int
nb_section_packet_frame
;
///< nb_section_packet or nb_section_frame according if is_packets_and_frames
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
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
int
is_packets_and_frames
;
///< tells if the current section is "packets_and_frames"
};
};
static
const
char
*
writer_get_name
(
void
*
p
)
static
const
char
*
writer_get_name
(
void
*
p
)
...
@@ -252,9 +256,12 @@ static inline void writer_print_footer(WriterContext *wctx)
...
@@ -252,9 +256,12 @@ static inline void writer_print_footer(WriterContext *wctx)
static
inline
void
writer_print_chapter_header
(
WriterContext
*
wctx
,
static
inline
void
writer_print_chapter_header
(
WriterContext
*
wctx
,
const
char
*
chapter
)
const
char
*
chapter
)
{
{
wctx
->
nb_section
=
0
;
wctx
->
nb_section
=
wctx
->
nb_section_packet
=
wctx
->
nb_section_frame
=
wctx
->
nb_section_packet_frame
=
0
;
wctx
->
is_packets_and_frames
=
!
strcmp
(
chapter
,
"packets_and_frames"
);
wctx
->
multiple_sections
=
!
strcmp
(
chapter
,
"packets"
)
||
!
strcmp
(
chapter
,
"frames"
)
||
wctx
->
multiple_sections
=
!
strcmp
(
chapter
,
"packets"
)
||
!
strcmp
(
chapter
,
"frames"
)
||
!
strcmp
(
chapter
,
"
packets_and_frames
"
)
||
wctx
->
is_
packets_and_frames
||
!
strcmp
(
chapter
,
"streams"
)
||
!
strcmp
(
chapter
,
"library_versions"
);
!
strcmp
(
chapter
,
"streams"
)
||
!
strcmp
(
chapter
,
"library_versions"
);
wctx
->
is_fmt_chapter
=
!
strcmp
(
chapter
,
"format"
);
wctx
->
is_fmt_chapter
=
!
strcmp
(
chapter
,
"format"
);
...
@@ -273,6 +280,9 @@ static inline void writer_print_chapter_footer(WriterContext *wctx,
...
@@ -273,6 +280,9 @@ static inline void writer_print_chapter_footer(WriterContext *wctx,
static
inline
void
writer_print_section_header
(
WriterContext
*
wctx
,
static
inline
void
writer_print_section_header
(
WriterContext
*
wctx
,
const
char
*
section
)
const
char
*
section
)
{
{
if
(
wctx
->
is_packets_and_frames
)
wctx
->
nb_section_packet_frame
=
!
strcmp
(
section
,
"packet"
)
?
wctx
->
nb_section_packet
:
wctx
->
nb_section_frame
;
if
(
wctx
->
writer
->
print_section_header
)
if
(
wctx
->
writer
->
print_section_header
)
wctx
->
writer
->
print_section_header
(
wctx
,
section
);
wctx
->
writer
->
print_section_header
(
wctx
,
section
);
wctx
->
nb_item
=
0
;
wctx
->
nb_item
=
0
;
...
@@ -283,6 +293,10 @@ static inline void writer_print_section_footer(WriterContext *wctx,
...
@@ -283,6 +293,10 @@ static inline void writer_print_section_footer(WriterContext *wctx,
{
{
if
(
wctx
->
writer
->
print_section_footer
)
if
(
wctx
->
writer
->
print_section_footer
)
wctx
->
writer
->
print_section_footer
(
wctx
,
section
);
wctx
->
writer
->
print_section_footer
(
wctx
,
section
);
if
(
wctx
->
is_packets_and_frames
)
{
if
(
!
strcmp
(
section
,
"packet"
))
wctx
->
nb_section_packet
++
;
else
wctx
->
nb_section_frame
++
;
}
wctx
->
nb_section
++
;
wctx
->
nb_section
++
;
}
}
...
@@ -718,9 +732,6 @@ static const Writer csv_writer = {
...
@@ -718,9 +732,6 @@ static const Writer csv_writer = {
typedef
struct
{
typedef
struct
{
const
AVClass
*
class
;
const
AVClass
*
class
;
AVBPrint
chapter_name
,
section_name
;
AVBPrint
chapter_name
,
section_name
;
int
print_packets_and_frames
;
int
nb_frame
;
int
nb_packet
;
int
hierarchical
;
int
hierarchical
;
}
INIContext
;
}
INIContext
;
...
@@ -751,7 +762,6 @@ static av_cold int ini_init(WriterContext *wctx, const char *args, void *opaque)
...
@@ -751,7 +762,6 @@ static av_cold int ini_init(WriterContext *wctx, const char *args, void *opaque)
av_bprint_init
(
&
ini
->
chapter_name
,
1
,
AV_BPRINT_SIZE_UNLIMITED
);
av_bprint_init
(
&
ini
->
chapter_name
,
1
,
AV_BPRINT_SIZE_UNLIMITED
);
av_bprint_init
(
&
ini
->
section_name
,
1
,
AV_BPRINT_SIZE_UNLIMITED
);
av_bprint_init
(
&
ini
->
section_name
,
1
,
AV_BPRINT_SIZE_UNLIMITED
);
ini
->
nb_frame
=
ini
->
nb_packet
=
0
;
ini
->
class
=
&
ini_class
;
ini
->
class
=
&
ini_class
;
av_opt_set_defaults
(
ini
);
av_opt_set_defaults
(
ini
);
...
@@ -812,13 +822,13 @@ static void ini_print_chapter_header(WriterContext *wctx, const char *chapter)
...
@@ -812,13 +822,13 @@ static void ini_print_chapter_header(WriterContext *wctx, const char *chapter)
if
(
wctx
->
nb_chapter
)
if
(
wctx
->
nb_chapter
)
printf
(
"
\n
"
);
printf
(
"
\n
"
);
ini
->
print_packets_and_frames
=
!
strcmp
(
"packets_and_frames"
,
chapter
);
}
}
static
void
ini_print_section_header
(
WriterContext
*
wctx
,
const
char
*
section
)
static
void
ini_print_section_header
(
WriterContext
*
wctx
,
const
char
*
section
)
{
{
INIContext
*
ini
=
wctx
->
priv
;
INIContext
*
ini
=
wctx
->
priv
;
int
n
;
int
n
=
wctx
->
is_packets_and_frames
?
wctx
->
nb_section_packet_frame
:
wctx
->
nb_section
;
if
(
wctx
->
nb_section
)
if
(
wctx
->
nb_section
)
printf
(
"
\n
"
);
printf
(
"
\n
"
);
av_bprint_clear
(
&
ini
->
section_name
);
av_bprint_clear
(
&
ini
->
section_name
);
...
@@ -827,10 +837,6 @@ static void ini_print_section_header(WriterContext *wctx, const char *section)
...
@@ -827,10 +837,6 @@ static void ini_print_section_header(WriterContext *wctx, const char *section)
av_bprintf
(
&
ini
->
section_name
,
"%s."
,
ini
->
chapter_name
.
str
);
av_bprintf
(
&
ini
->
section_name
,
"%s."
,
ini
->
chapter_name
.
str
);
av_bprintf
(
&
ini
->
section_name
,
"%s"
,
section
);
av_bprintf
(
&
ini
->
section_name
,
"%s"
,
section
);
if
(
ini
->
print_packets_and_frames
)
n
=
!
strcmp
(
section
,
"packet"
)
?
ini
->
nb_packet
++
:
ini
->
nb_frame
++
;
else
n
=
wctx
->
nb_section
;
if
(
wctx
->
multiple_sections
)
if
(
wctx
->
multiple_sections
)
av_bprintf
(
&
ini
->
section_name
,
".%d"
,
n
);
av_bprintf
(
&
ini
->
section_name
,
".%d"
,
n
);
printf
(
"[%s]
\n
"
,
ini
->
section_name
.
str
);
printf
(
"[%s]
\n
"
,
ini
->
section_name
.
str
);
...
@@ -885,7 +891,6 @@ static const Writer ini_writer = {
...
@@ -885,7 +891,6 @@ static const Writer ini_writer = {
typedef
struct
{
typedef
struct
{
const
AVClass
*
class
;
const
AVClass
*
class
;
int
print_packets_and_frames
;
int
indent_level
;
int
indent_level
;
int
compact
;
int
compact
;
const
char
*
item_sep
,
*
item_start_end
;
const
char
*
item_sep
,
*
item_start_end
;
...
@@ -980,7 +985,6 @@ static void json_print_chapter_header(WriterContext *wctx, const char *chapter)
...
@@ -980,7 +985,6 @@ static void json_print_chapter_header(WriterContext *wctx, const char *chapter)
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
));
av_bprint_finalize
(
&
buf
,
NULL
);
av_bprint_finalize
(
&
buf
,
NULL
);
json
->
print_packets_and_frames
=
!
strcmp
(
chapter
,
"packets_and_frames"
);
json
->
indent_level
++
;
json
->
indent_level
++
;
}
}
}
}
...
@@ -1009,7 +1013,7 @@ static void json_print_section_header(WriterContext *wctx, const char *section)
...
@@ -1009,7 +1013,7 @@ static void json_print_section_header(WriterContext *wctx, const char *section)
printf
(
"{%s"
,
json
->
item_start_end
);
printf
(
"{%s"
,
json
->
item_start_end
);
json
->
indent_level
++
;
json
->
indent_level
++
;
/* this is required so the parser can distinguish between packets and frames */
/* this is required so the parser can distinguish between packets and frames */
if
(
json
->
print
_packets_and_frames
)
{
if
(
wctx
->
is
_packets_and_frames
)
{
if
(
!
json
->
compact
)
if
(
!
json
->
compact
)
JSON_INDENT
();
JSON_INDENT
();
printf
(
"
\"
type
\"
:
\"
%s
\"
%s"
,
section
,
json
->
item_sep
);
printf
(
"
\"
type
\"
:
\"
%s
\"
%s"
,
section
,
json
->
item_sep
);
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment