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
4f3e2f10
Commit
4f3e2f10
authored
Apr 21, 2014
by
Nicolas George
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ffprobe: add -show_data_hash option.
parent
32c712f1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
45 additions
and
0 deletions
+45
-0
ffprobe.texi
doc/ffprobe.texi
+4
-0
ffprobe.xsd
doc/ffprobe.xsd
+2
-0
ffprobe.c
ffprobe.c
+39
-0
No files found.
doc/ffprobe.texi
View file @
4f3e2f10
...
...
@@ -119,6 +119,10 @@ Show payload data, as a hexadecimal and ASCII dump. Coupled with
The dump is printed as the "data" field. It may contain newlines.
@item -show
_
data
_
hash @var
{
algorithm
}
Show a hash of payload data, for packets with @option
{
-show
_
packets
}
and for
codec extradata with @option
{
-show
_
streams
}
.
@item -show
_
error
Show information about the error found when trying to probe the input.
...
...
doc/ffprobe.xsd
View file @
4f3e2f10
...
...
@@ -50,6 +50,7 @@
<xsd:attribute
name=
"pos"
type=
"xsd:long"
/>
<xsd:attribute
name=
"flags"
type=
"xsd:string"
use=
"required"
/>
<xsd:attribute
name=
"data"
type=
"xsd:string"
/>
<xsd:attribute
name=
"data_hash"
type=
"xsd:string"
/>
</xsd:complexType>
<xsd:complexType
name=
"frameType"
>
...
...
@@ -153,6 +154,7 @@
<xsd:attribute
name=
"codec_tag"
type=
"xsd:string"
use=
"required"
/>
<xsd:attribute
name=
"codec_tag_string"
type=
"xsd:string"
use=
"required"
/>
<xsd:attribute
name=
"extradata"
type=
"xsd:string"
/>
<xsd:attribute
name=
"extradata_hash"
type=
"xsd:string"
/>
<!-- video attributes -->
<xsd:attribute
name=
"width"
type=
"xsd:int"
/>
...
...
ffprobe.c
View file @
4f3e2f10
...
...
@@ -33,6 +33,7 @@
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/bprint.h"
#include "libavutil/hash.h"
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "libavutil/dict.h"
...
...
@@ -80,6 +81,7 @@ static int show_private_data = 1;
static
char
*
print_format
;
static
char
*
stream_specifier
;
static
char
*
show_data_hash
;
typedef
struct
{
int
id
;
///< identifier
...
...
@@ -187,6 +189,8 @@ static const OptionDef *options;
static
const
char
*
input_filename
;
static
AVInputFormat
*
iformat
=
NULL
;
static
struct
AVHashContext
*
hash
;
static
const
char
*
const
binary_unit_prefixes
[]
=
{
""
,
"Ki"
,
"Mi"
,
"Gi"
,
"Ti"
,
"Pi"
};
static
const
char
*
const
decimal_unit_prefixes
[]
=
{
""
,
"K"
,
"M"
,
"G"
,
"T"
,
"P"
};
...
...
@@ -685,6 +689,21 @@ static void writer_print_data(WriterContext *wctx, const char *name,
av_bprint_finalize
(
&
bp
,
NULL
);
}
static
void
writer_print_data_hash
(
WriterContext
*
wctx
,
const
char
*
name
,
uint8_t
*
data
,
int
size
)
{
char
*
p
,
buf
[
AV_HASH_MAX_SIZE
*
2
+
64
]
=
{
0
};
if
(
!
hash
)
return
;
av_hash_init
(
hash
);
av_hash_update
(
hash
,
data
,
size
);
snprintf
(
buf
,
sizeof
(
buf
),
"%s:"
,
av_hash_get_name
(
hash
));
p
=
buf
+
strlen
(
buf
);
av_hash_final_hex
(
hash
,
p
,
buf
+
sizeof
(
buf
)
-
p
);
writer_print_string
(
wctx
,
name
,
buf
,
0
);
}
#define MAX_REGISTERED_WRITERS_NB 64
static
const
Writer
*
registered_writers
[
MAX_REGISTERED_WRITERS_NB
+
1
];
...
...
@@ -1692,6 +1711,7 @@ static void show_packet(WriterContext *w, AVFormatContext *fmt_ctx, AVPacket *pk
print_fmt
(
"flags"
,
"%c"
,
pkt
->
flags
&
AV_PKT_FLAG_KEY
?
'K'
:
'_'
);
if
(
do_show_data
)
writer_print_data
(
w
,
"data"
,
pkt
->
data
,
pkt
->
size
);
writer_print_data_hash
(
w
,
"data_hash"
,
pkt
->
data
,
pkt
->
size
);
writer_print_section_footer
(
w
);
av_bprint_finalize
(
&
pbuf
,
NULL
);
...
...
@@ -2159,6 +2179,8 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
if
(
do_show_data
)
writer_print_data
(
w
,
"extradata"
,
dec_ctx
->
extradata
,
dec_ctx
->
extradata_size
);
writer_print_data_hash
(
w
,
"extradata_hash"
,
dec_ctx
->
extradata
,
dec_ctx
->
extradata_size
);
/* Print disposition information */
#define PRINT_DISPOSITION(flagname, name) do { \
...
...
@@ -2887,6 +2909,7 @@ static const OptionDef real_options[] = {
{
"select_streams"
,
OPT_STRING
|
HAS_ARG
,
{(
void
*
)
&
stream_specifier
},
"select the specified streams"
,
"stream_specifier"
},
{
"sections"
,
OPT_EXIT
,
{.
func_arg
=
opt_sections
},
"print sections structure and section information, and exit"
},
{
"show_data"
,
OPT_BOOL
,
{(
void
*
)
&
do_show_data
},
"show packets data"
},
{
"show_data_hash"
,
OPT_STRING
|
HAS_ARG
,
{(
void
*
)
&
show_data_hash
},
"show packets data hash"
},
{
"show_error"
,
0
,
{(
void
*
)
&
opt_show_error
},
"show probing error"
},
{
"show_format"
,
0
,
{(
void
*
)
&
opt_show_format
},
"show format/container info"
},
{
"show_frames"
,
0
,
{(
void
*
)
&
opt_show_frames
},
"show frames info"
},
...
...
@@ -2990,6 +3013,21 @@ int main(int argc, char **argv)
w_name
=
av_strtok
(
print_format
,
"="
,
&
buf
);
w_args
=
buf
;
if
(
show_data_hash
)
{
if
((
ret
=
av_hash_alloc
(
&
hash
,
show_data_hash
))
<
0
)
{
if
(
ret
==
AVERROR
(
EINVAL
))
{
const
char
*
n
;
av_log
(
NULL
,
AV_LOG_ERROR
,
"Unknown hash algorithm '%s'
\n
Known algorithms:"
,
show_data_hash
);
for
(
i
=
0
;
(
n
=
av_hash_names
(
i
));
i
++
)
av_log
(
NULL
,
AV_LOG_ERROR
,
" %s"
,
n
);
av_log
(
NULL
,
AV_LOG_ERROR
,
"
\n
"
);
}
goto
end
;
}
}
w
=
writer_get_by_name
(
w_name
);
if
(
!
w
)
{
av_log
(
NULL
,
AV_LOG_ERROR
,
"Unknown output format with name '%s'
\n
"
,
w_name
);
...
...
@@ -3029,6 +3067,7 @@ int main(int argc, char **argv)
end:
av_freep
(
&
print_format
);
av_freep
(
&
read_intervals
);
av_hash_freep
(
&
hash
);
uninit_opts
();
for
(
i
=
0
;
i
<
FF_ARRAY_ELEMS
(
sections
);
i
++
)
...
...
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