Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
6cf53927
Commit
6cf53927
authored
Feb 01, 2012
by
Nicolas George
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
graphdump: use av_bprintf API.
parent
b75c67dc
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
52 additions
and
59 deletions
+52
-59
graphdump.c
libavfilter/graphdump.c
+52
-59
No files found.
libavfilter/graphdump.c
View file @
6cf53927
...
...
@@ -21,27 +21,22 @@
#include <string.h>
#include "libavutil/bprint.h"
#include "libavutil/pixdesc.h"
#include "avfilter.h"
#include "avfiltergraph.h"
#define BPRINTF(...) \
cur += snprintf(cur, buf_end - FFMIN(cur, buf_end), __VA_ARGS__)
#define BPAD(c, l) \
do { \
if (cur < buf_end) memset(cur, c, FFMIN(l, buf_end - cur)); cur += l; \
} while (0)
static
int
snprint_link_prop
(
char
*
buf
,
char
*
buf_end
,
AVFilterLink
*
link
)
static
int
print_link_prop
(
AVBPrint
*
buf
,
AVFilterLink
*
link
)
{
char
*
cur
=
buf
,
*
format
;
char
*
format
;
char
layout
[
64
];
if
(
!
buf
)
buf
=
&
(
AVBPrint
){
0
};
/* dummy buffer */
switch
(
link
->
type
)
{
case
AVMEDIA_TYPE_VIDEO
:
format
=
av_x_if_null
(
av_get_pix_fmt_name
(
link
->
format
),
"?"
);
BPRINTF
(
"[%dx%d %d:%d %s]"
,
link
->
w
,
link
->
h
,
av_bprintf
(
buf
,
"[%dx%d %d:%d %s]"
,
link
->
w
,
link
->
h
,
link
->
sample_aspect_ratio
.
num
,
link
->
sample_aspect_ratio
.
den
,
format
);
...
...
@@ -51,23 +46,21 @@ static int snprint_link_prop(char *buf, char *buf_end, AVFilterLink *link)
av_get_channel_layout_string
(
layout
,
sizeof
(
layout
),
-
1
,
link
->
channel_layout
);
format
=
av_x_if_null
(
av_get_sample_fmt_name
(
link
->
format
),
"?"
);
BPRINTF
(
"[%dHz %s:%s:%s]"
,
av_bprintf
(
buf
,
"[%dHz %s:%s:%s]"
,
(
int
)
link
->
sample_rate
,
format
,
layout
,
link
->
planar
?
"planar"
:
"packed"
);
break
;
default:
BPRINTF
(
"?"
);
av_bprintf
(
buf
,
"?"
);
break
;
}
return
cur
-
buf
;
return
buf
->
len
;
}
static
size_t
avfilter_graph_dump_to_buf
(
AVFilterGraph
*
graph
,
char
*
buf
,
char
*
buf_end
)
static
void
avfilter_graph_dump_to_buf
(
AVBPrint
*
buf
,
AVFilterGraph
*
graph
)
{
char
*
cur
=
buf
,
*
e
;
unsigned
i
,
j
,
x
;
unsigned
i
,
j
,
x
,
e
;
for
(
i
=
0
;
i
<
graph
->
filter_count
;
i
++
)
{
AVFilterContext
*
filter
=
graph
->
filters
[
i
];
...
...
@@ -83,23 +76,23 @@ static size_t avfilter_graph_dump_to_buf(AVFilterGraph *graph,
unsigned
ln
=
strlen
(
l
->
src
->
name
)
+
1
+
strlen
(
l
->
srcpad
->
name
);
max_src_name
=
FFMAX
(
max_src_name
,
ln
);
max_in_name
=
FFMAX
(
max_in_name
,
strlen
(
l
->
dstpad
->
name
));
max_in_fmt
=
FFMAX
(
max_in_fmt
,
snprint_link_prop
(
NULL
,
NULL
,
l
));
max_in_fmt
=
FFMAX
(
max_in_fmt
,
print_link_prop
(
NULL
,
l
));
}
for
(
j
=
0
;
j
<
filter
->
output_count
;
j
++
)
{
AVFilterLink
*
l
=
filter
->
outputs
[
j
];
unsigned
ln
=
strlen
(
l
->
dst
->
name
)
+
1
+
strlen
(
l
->
dstpad
->
name
);
max_dst_name
=
FFMAX
(
max_dst_name
,
ln
);
max_out_name
=
FFMAX
(
max_out_name
,
strlen
(
l
->
srcpad
->
name
));
max_out_fmt
=
FFMAX
(
max_out_fmt
,
snprint_link_prop
(
NULL
,
NULL
,
l
));
max_out_fmt
=
FFMAX
(
max_out_fmt
,
print_link_prop
(
NULL
,
l
));
}
in_indent
=
max_src_name
+
max_in_name
+
max_in_fmt
;
in_indent
+=
in_indent
?
4
:
0
;
width
=
FFMAX
(
lname
+
2
,
ltype
+
4
);
height
=
FFMAX3
(
2
,
filter
->
input_count
,
filter
->
output_count
);
BPAD
(
' '
,
in_indent
);
BPRINTF
(
"+"
);
BPAD
(
'-'
,
width
);
BPRINTF
(
"+
\n
"
);
av_bprint_chars
(
buf
,
' '
,
in_indent
);
av_bprintf
(
buf
,
"+"
);
av_bprint_chars
(
buf
,
'-'
,
width
);
av_bprintf
(
buf
,
"+
\n
"
);
for
(
j
=
0
;
j
<
height
;
j
++
)
{
unsigned
in_no
=
j
-
(
height
-
filter
->
input_count
)
/
2
;
unsigned
out_no
=
j
-
(
height
-
filter
->
output_count
)
/
2
;
...
...
@@ -107,65 +100,65 @@ static size_t avfilter_graph_dump_to_buf(AVFilterGraph *graph,
/* Input link */
if
(
in_no
<
filter
->
input_count
)
{
AVFilterLink
*
l
=
filter
->
inputs
[
in_no
];
e
=
cur
+
max_src_name
+
2
;
BPRINTF
(
"%s:%s"
,
l
->
src
->
name
,
l
->
srcpad
->
name
);
BPAD
(
'-'
,
e
-
cur
);
e
=
cur
+
max_in_fmt
+
2
+
e
=
buf
->
len
+
max_src_name
+
2
;
av_bprintf
(
buf
,
"%s:%s"
,
l
->
src
->
name
,
l
->
srcpad
->
name
);
av_bprint_chars
(
buf
,
'-'
,
e
-
buf
->
len
);
e
=
buf
->
len
+
max_in_fmt
+
2
+
max_in_name
-
strlen
(
l
->
dstpad
->
name
);
cur
+=
snprint_link_prop
(
cur
,
buf_end
,
l
);
BPAD
(
'-'
,
e
-
cur
);
BPRINTF
(
"%s"
,
l
->
dstpad
->
name
);
print_link_prop
(
buf
,
l
);
av_bprint_chars
(
buf
,
'-'
,
e
-
buf
->
len
);
av_bprintf
(
buf
,
"%s"
,
l
->
dstpad
->
name
);
}
else
{
BPAD
(
' '
,
in_indent
);
av_bprint_chars
(
buf
,
' '
,
in_indent
);
}
/* Filter */
BPRINTF
(
"|"
);
av_bprintf
(
buf
,
"|"
);
if
(
j
==
(
height
-
2
)
/
2
)
{
x
=
(
width
-
lname
)
/
2
;
BPRINTF
(
"%*s%-*s"
,
x
,
""
,
width
-
x
,
filter
->
name
);
av_bprintf
(
buf
,
"%*s%-*s"
,
x
,
""
,
width
-
x
,
filter
->
name
);
}
else
if
(
j
==
(
height
-
2
)
/
2
+
1
)
{
x
=
(
width
-
ltype
-
2
)
/
2
;
BPRINTF
(
"%*s(%s)%*s"
,
x
,
""
,
filter
->
filter
->
name
,
av_bprintf
(
buf
,
"%*s(%s)%*s"
,
x
,
""
,
filter
->
filter
->
name
,
width
-
ltype
-
2
-
x
,
""
);
}
else
{
BPAD
(
' '
,
width
);
av_bprint_chars
(
buf
,
' '
,
width
);
}
BPRINTF
(
"|"
);
av_bprintf
(
buf
,
"|"
);
/* Output link */
if
(
out_no
<
filter
->
output_count
)
{
AVFilterLink
*
l
=
filter
->
outputs
[
out_no
];
unsigned
ln
=
strlen
(
l
->
dst
->
name
)
+
1
+
strlen
(
l
->
dstpad
->
name
);
e
=
cur
+
max_out_name
+
2
;
BPRINTF
(
"%s"
,
l
->
srcpad
->
name
);
BPAD
(
'-'
,
e
-
cur
);
e
=
cur
+
max_out_fmt
+
2
+
e
=
buf
->
len
+
max_out_name
+
2
;
av_bprintf
(
buf
,
"%s"
,
l
->
srcpad
->
name
);
av_bprint_chars
(
buf
,
'-'
,
e
-
buf
->
len
);
e
=
buf
->
len
+
max_out_fmt
+
2
+
max_dst_name
-
ln
;
cur
+=
snprint_link_prop
(
cur
,
buf_end
,
l
);
BPAD
(
'-'
,
e
-
cur
);
BPRINTF
(
"%s:%s"
,
l
->
dst
->
name
,
l
->
dstpad
->
name
);
print_link_prop
(
buf
,
l
);
av_bprint_chars
(
buf
,
'-'
,
e
-
buf
->
len
);
av_bprintf
(
buf
,
"%s:%s"
,
l
->
dst
->
name
,
l
->
dstpad
->
name
);
}
BPRINTF
(
"
\n
"
);
av_bprintf
(
buf
,
"
\n
"
);
}
BPAD
(
' '
,
in_indent
);
BPRINTF
(
"+"
);
BPAD
(
'-'
,
width
);
BPRINTF
(
"+
\n
"
);
BPRINTF
(
"
\n
"
);
av_bprint_chars
(
buf
,
' '
,
in_indent
);
av_bprintf
(
buf
,
"+"
);
av_bprint_chars
(
buf
,
'-'
,
width
);
av_bprintf
(
buf
,
"+
\n
"
);
av_bprintf
(
buf
,
"
\n
"
);
}
if
(
cur
<
buf_end
)
*
(
cur
++
)
=
0
;
return
cur
-
buf
;
}
char
*
avfilter_graph_dump
(
AVFilterGraph
*
graph
,
const
char
*
options
)
{
size_t
buf_size
=
avfilter_graph_dump_to_buf
(
graph
,
NULL
,
NULL
);
char
*
buf
=
av_malloc
(
buf_size
);
if
(
!
buf
)
return
NULL
;
avfilter_graph_dump_to_buf
(
graph
,
buf
,
buf
+
buf_size
);
return
buf
;
AVBPrint
buf
;
char
*
dump
;
av_bprint_init
(
&
buf
,
0
,
0
);
avfilter_graph_dump_to_buf
(
&
buf
,
graph
);
av_bprint_init
(
&
buf
,
buf
.
len
+
1
,
buf
.
len
+
1
);
avfilter_graph_dump_to_buf
(
&
buf
,
graph
);
av_bprint_finalize
(
&
buf
,
&
dump
);
return
dump
;
}
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