Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
749ddc14
Commit
749ddc14
authored
Sep 11, 2012
by
Stefano Sabatini
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ffprobe: add priv_class field to Writer, and factorize writer options initialization
parent
34b5b735
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
63 deletions
+20
-63
ffprobe.c
ffprobe.c
+20
-63
No files found.
ffprobe.c
View file @
749ddc14
...
...
@@ -152,6 +152,7 @@ typedef struct WriterContext WriterContext;
#define WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER 2
typedef
struct
Writer
{
const
AVClass
*
priv_class
;
///< private class of the writer, if any
int
priv_size
;
///< private size for the writer context
const
char
*
name
;
...
...
@@ -209,6 +210,8 @@ static void writer_close(WriterContext **wctx)
if
((
*
wctx
)
->
writer
->
uninit
)
(
*
wctx
)
->
writer
->
uninit
(
*
wctx
);
if
((
*
wctx
)
->
writer
->
priv_class
)
av_opt_free
((
*
wctx
)
->
priv
);
av_freep
(
&
((
*
wctx
)
->
priv
));
av_freep
(
wctx
);
}
...
...
@@ -230,6 +233,16 @@ static int writer_open(WriterContext **wctx, const Writer *writer,
(
*
wctx
)
->
class
=
&
writer_class
;
(
*
wctx
)
->
writer
=
writer
;
if
(
writer
->
priv_class
)
{
void
*
priv_ctx
=
(
*
wctx
)
->
priv
;
*
((
const
AVClass
**
)
priv_ctx
)
=
writer
->
priv_class
;
av_opt_set_defaults
(
priv_ctx
);
if
(
args
&&
(
ret
=
av_set_options_string
(
priv_ctx
,
args
,
"="
,
":"
))
<
0
)
goto
fail
;
}
if
((
*
wctx
)
->
writer
->
init
)
ret
=
(
*
wctx
)
->
writer
->
init
(
*
wctx
,
args
,
opaque
);
if
(
ret
<
0
)
...
...
@@ -450,21 +463,6 @@ static const AVOption default_options[] = {
DEFINE_WRITER_CLASS
(
default
);
static
av_cold
int
default_init
(
WriterContext
*
wctx
,
const
char
*
args
,
void
*
opaque
)
{
DefaultContext
*
def
=
wctx
->
priv
;
int
err
;
def
->
class
=
&
default_class
;
av_opt_set_defaults
(
def
);
if
(
args
&&
(
err
=
(
av_set_options_string
(
def
,
args
,
"="
,
":"
)))
<
0
)
return
err
;
return
0
;
}
/* lame uppercasing routine, assumes the string is lower case ASCII */
static
inline
char
*
upcase_string
(
char
*
dst
,
size_t
dst_size
,
const
char
*
src
)
{
...
...
@@ -523,13 +521,13 @@ static void default_show_tags(WriterContext *wctx, AVDictionary *dict)
static
const
Writer
default_writer
=
{
.
name
=
"default"
,
.
priv_size
=
sizeof
(
DefaultContext
),
.
init
=
default_init
,
.
print_section_header
=
default_print_section_header
,
.
print_section_footer
=
default_print_section_footer
,
.
print_integer
=
default_print_int
,
.
print_string
=
default_print_str
,
.
show_tags
=
default_show_tags
,
.
flags
=
WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS
,
.
priv_class
=
&
default_class
,
};
/* Compact output */
...
...
@@ -618,14 +616,7 @@ DEFINE_WRITER_CLASS(compact);
static
av_cold
int
compact_init
(
WriterContext
*
wctx
,
const
char
*
args
,
void
*
opaque
)
{
CompactContext
*
compact
=
wctx
->
priv
;
int
err
;
compact
->
class
=
&
compact_class
;
av_opt_set_defaults
(
compact
);
if
(
args
&&
(
err
=
(
av_set_options_string
(
compact
,
args
,
"="
,
":"
)))
<
0
)
return
err
;
if
(
strlen
(
compact
->
item_sep_str
)
!=
1
)
{
av_log
(
wctx
,
AV_LOG_ERROR
,
"Item separator '%s' specified, but must contain a single character
\n
"
,
compact
->
item_sep_str
);
...
...
@@ -644,14 +635,6 @@ static av_cold int compact_init(WriterContext *wctx, const char *args, void *opa
return
0
;
}
static
av_cold
void
compact_uninit
(
WriterContext
*
wctx
)
{
CompactContext
*
compact
=
wctx
->
priv
;
av_freep
(
&
compact
->
item_sep_str
);
av_freep
(
&
compact
->
escape_mode_str
);
}
static
void
compact_print_section_header
(
WriterContext
*
wctx
,
const
char
*
section
)
{
CompactContext
*
compact
=
wctx
->
priv
;
...
...
@@ -711,13 +694,13 @@ static const Writer compact_writer = {
.
name
=
"compact"
,
.
priv_size
=
sizeof
(
CompactContext
),
.
init
=
compact_init
,
.
uninit
=
compact_uninit
,
.
print_section_header
=
compact_print_section_header
,
.
print_section_footer
=
compact_print_section_footer
,
.
print_integer
=
compact_print_int
,
.
print_string
=
compact_print_str
,
.
show_tags
=
compact_show_tags
,
.
flags
=
WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS
,
.
priv_class
=
&
compact_class
,
};
/* CSV output */
...
...
@@ -731,13 +714,13 @@ static const Writer csv_writer = {
.
name
=
"csv"
,
.
priv_size
=
sizeof
(
CompactContext
),
.
init
=
csv_init
,
.
uninit
=
compact_uninit
,
.
print_section_header
=
compact_print_section_header
,
.
print_section_footer
=
compact_print_section_footer
,
.
print_integer
=
compact_print_int
,
.
print_string
=
compact_print_str
,
.
show_tags
=
compact_show_tags
,
.
flags
=
WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS
,
.
priv_class
=
&
compact_class
,
};
/* Flat output */
...
...
@@ -766,14 +749,7 @@ DEFINE_WRITER_CLASS(flat);
static
av_cold
int
flat_init
(
WriterContext
*
wctx
,
const
char
*
args
,
void
*
opaque
)
{
FlatContext
*
flat
=
wctx
->
priv
;
int
err
;
flat
->
class
=
&
flat_class
;
av_opt_set_defaults
(
flat
);
if
(
args
&&
(
err
=
(
av_set_options_string
(
flat
,
args
,
"="
,
":"
)))
<
0
)
return
err
;
if
(
strlen
(
flat
->
sep_str
)
!=
1
)
{
av_log
(
wctx
,
AV_LOG_ERROR
,
"Item separator '%s' specified, but must contain a single character
\n
"
,
flat
->
sep_str
);
...
...
@@ -887,6 +863,7 @@ static const Writer flat_writer = {
.
print_string
=
flat_print_str
,
.
show_tags
=
flat_show_tags
,
.
flags
=
WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS
|
WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER
,
.
priv_class
=
&
flat_class
,
};
/* INI format output */
...
...
@@ -911,17 +888,10 @@ DEFINE_WRITER_CLASS(ini);
static
av_cold
int
ini_init
(
WriterContext
*
wctx
,
const
char
*
args
,
void
*
opaque
)
{
INIContext
*
ini
=
wctx
->
priv
;
int
err
;
av_bprint_init
(
&
ini
->
chapter_name
,
1
,
AV_BPRINT_SIZE_UNLIMITED
);
av_bprint_init
(
&
ini
->
section_name
,
1
,
AV_BPRINT_SIZE_UNLIMITED
);
ini
->
class
=
&
ini_class
;
av_opt_set_defaults
(
ini
);
if
(
args
&&
(
err
=
av_set_options_string
(
ini
,
args
,
"="
,
":"
))
<
0
)
return
err
;
return
0
;
}
...
...
@@ -1036,6 +1006,7 @@ static const Writer ini_writer = {
.
print_string
=
ini_print_str
,
.
show_tags
=
ini_show_tags
,
.
flags
=
WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS
|
WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER
,
.
priv_class
=
&
ini_class
,
};
/* JSON output */
...
...
@@ -1061,14 +1032,6 @@ DEFINE_WRITER_CLASS(json);
static
av_cold
int
json_init
(
WriterContext
*
wctx
,
const
char
*
args
,
void
*
opaque
)
{
JSONContext
*
json
=
wctx
->
priv
;
int
err
;
json
->
class
=
&
json_class
;
av_opt_set_defaults
(
json
);
if
(
args
&&
(
err
=
(
av_set_options_string
(
json
,
args
,
"="
,
":"
)))
<
0
)
return
err
;
json
->
item_sep
=
json
->
compact
?
", "
:
",
\n
"
;
json
->
item_start_end
=
json
->
compact
?
" "
:
"
\n
"
;
...
...
@@ -1247,6 +1210,7 @@ static const Writer json_writer = {
.
print_string
=
json_print_str
,
.
show_tags
=
json_show_tags
,
.
flags
=
WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER
,
.
priv_class
=
&
json_class
,
};
/* XML output */
...
...
@@ -1275,14 +1239,6 @@ DEFINE_WRITER_CLASS(xml);
static
av_cold
int
xml_init
(
WriterContext
*
wctx
,
const
char
*
args
,
void
*
opaque
)
{
XMLContext
*
xml
=
wctx
->
priv
;
int
err
;
xml
->
class
=
&
xml_class
;
av_opt_set_defaults
(
xml
);
if
(
args
&&
(
err
=
(
av_set_options_string
(
xml
,
args
,
"="
,
":"
)))
<
0
)
return
err
;
if
(
xml
->
xsd_strict
)
{
xml
->
fully_qualified
=
1
;
...
...
@@ -1451,6 +1407,7 @@ static Writer xml_writer = {
.
print_string
=
xml_print_str
,
.
show_tags
=
xml_show_tags
,
.
flags
=
WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER
,
.
priv_class
=
&
xml_class
,
};
static
void
writer_register_all
(
void
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment