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
e31db621
Commit
e31db621
authored
Aug 08, 2013
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avformat: export probe score
Signed-off-by:
Michael Niedermayer
<
michaelni@gmx.at
>
parent
90411f7e
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
45 additions
and
7 deletions
+45
-7
formats.texi
doc/formats.texi
+4
-0
avformat.h
libavformat/avformat.h
+20
-1
utils.c
libavformat/utils.c
+19
-4
version.h
libavformat/version.h
+2
-2
No files found.
doc/formats.texi
View file @
e31db621
...
...
@@ -137,6 +137,10 @@ non-monotonic negative timestamps.
Flush the underlying I/O stream after each packet. Default 1 enables it, and
has the effect of reducing the latency; 0 disables it and may slightly
increase performance in some cases.
@item probe_score @var{integer} (@emph{input})
This field is only accessible programatically, its value represents the score
by which the format was detected.
@end table
@c man end FORMAT OPTIONS
...
...
libavformat/avformat.h
View file @
e31db621
...
...
@@ -1237,6 +1237,15 @@ typedef struct AVFormatContext {
*/
int
flush_packets
;
/**
* format probing score.
* The maximal score is AVPROBE_SCORE_MAX, its set when the demuxer probes
* the format.
* - encoding: unused
* - decoding: set by avformat, read by user via av_format_get_probe_score() (NO direct access)
*/
int
probe_score
;
/*****************************************************************
* All fields below this line are not part of the public API. They
* may not be used outside of libavformat and can be changed and
...
...
@@ -1296,6 +1305,8 @@ typedef struct AVFormatContext {
int
io_repositioned
;
}
AVFormatContext
;
int
av_format_get_probe_score
(
const
AVFormatContext
*
s
);
/**
* Returns the method used to set ctx->duration.
*
...
...
@@ -1504,9 +1515,17 @@ AVInputFormat *av_probe_input_format3(AVProbeData *pd, int is_opened, int *score
* @param logctx the log context
* @param offset the offset within the bytestream to probe from
* @param max_probe_size the maximum probe buffer size (zero for default)
* @return 0 in case of success, a negative value corresponding to an
* @return the score in case of success, a negative value corresponding to an
* the maximal score is AVPROBE_SCORE_MAX
* AVERROR code otherwise
*/
int
av_probe_input_buffer2
(
AVIOContext
*
pb
,
AVInputFormat
**
fmt
,
const
char
*
filename
,
void
*
logctx
,
unsigned
int
offset
,
unsigned
int
max_probe_size
);
/**
* Like av_probe_input_buffer2() but returns 0 on success
*/
int
av_probe_input_buffer
(
AVIOContext
*
pb
,
AVInputFormat
**
fmt
,
const
char
*
filename
,
void
*
logctx
,
unsigned
int
offset
,
unsigned
int
max_probe_size
);
...
...
libavformat/utils.c
View file @
e31db621
...
...
@@ -100,6 +100,11 @@ static int64_t wrap_timestamp(AVStream *st, int64_t timestamp)
MAKE_ACCESSORS
(
AVStream
,
stream
,
AVRational
,
r_frame_rate
)
int
av_format_get_probe_score
(
const
AVFormatContext
*
s
)
{
return
s
->
probe_score
;
}
/* an arbitrarily chosen "sane" max packet size -- 50M */
#define SANE_CHUNK_SIZE (50000000)
...
...
@@ -309,7 +314,7 @@ int av_demuxer_open(AVFormatContext *ic){
}
int
av_probe_input_buffer
(
AVIOContext
*
pb
,
AVInputFormat
**
fmt
,
int
av_probe_input_buffer
2
(
AVIOContext
*
pb
,
AVInputFormat
**
fmt
,
const
char
*
filename
,
void
*
logctx
,
unsigned
int
offset
,
unsigned
int
max_probe_size
)
{
...
...
@@ -390,6 +395,15 @@ int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt,
return
ret
;
}
int
av_probe_input_buffer
(
AVIOContext
*
pb
,
AVInputFormat
**
fmt
,
const
char
*
filename
,
void
*
logctx
,
unsigned
int
offset
,
unsigned
int
max_probe_size
)
{
int
ret
=
av_probe_input_buffer2
(
pb
,
fmt
,
filename
,
logctx
,
offset
,
max_probe_size
);
return
ret
<
0
?
ret
:
0
;
}
/* open input file and probe the format if necessary */
static
int
init_input
(
AVFormatContext
*
s
,
const
char
*
filename
,
AVDictionary
**
options
)
{
...
...
@@ -400,7 +414,7 @@ static int init_input(AVFormatContext *s, const char *filename, AVDictionary **o
if
(
s
->
pb
)
{
s
->
flags
|=
AVFMT_FLAG_CUSTOM_IO
;
if
(
!
s
->
iformat
)
return
av_probe_input_buffer
(
s
->
pb
,
&
s
->
iformat
,
filename
,
s
,
0
,
s
->
probesize
);
return
av_probe_input_buffer
2
(
s
->
pb
,
&
s
->
iformat
,
filename
,
s
,
0
,
s
->
probesize
);
else
if
(
s
->
iformat
->
flags
&
AVFMT_NOFILE
)
av_log
(
s
,
AV_LOG_WARNING
,
"Custom AVIOContext makes no sense and "
"will be ignored with AVFMT_NOFILE format.
\n
"
);
...
...
@@ -409,14 +423,14 @@ static int init_input(AVFormatContext *s, const char *filename, AVDictionary **o
if
(
(
s
->
iformat
&&
s
->
iformat
->
flags
&
AVFMT_NOFILE
)
||
(
!
s
->
iformat
&&
(
s
->
iformat
=
av_probe_input_format2
(
&
pd
,
0
,
&
score
))))
return
0
;
return
score
;
if
((
ret
=
avio_open2
(
&
s
->
pb
,
filename
,
AVIO_FLAG_READ
|
s
->
avio_flags
,
&
s
->
interrupt_callback
,
options
))
<
0
)
return
ret
;
if
(
s
->
iformat
)
return
0
;
return
av_probe_input_buffer
(
s
->
pb
,
&
s
->
iformat
,
filename
,
s
,
0
,
s
->
probesize
);
return
av_probe_input_buffer
2
(
s
->
pb
,
&
s
->
iformat
,
filename
,
s
,
0
,
s
->
probesize
);
}
static
AVPacket
*
add_to_pktbuf
(
AVPacketList
**
packet_buffer
,
AVPacket
*
pkt
,
...
...
@@ -476,6 +490,7 @@ int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputForma
if
((
ret
=
init_input
(
s
,
filename
,
&
tmp
))
<
0
)
goto
fail
;
s
->
probe_score
=
ret
;
avio_skip
(
s
->
pb
,
s
->
skip_initial_bytes
);
/* check filename in case an image number is expected */
...
...
libavformat/version.h
View file @
e31db621
...
...
@@ -30,8 +30,8 @@
#include "libavutil/avutil.h"
#define LIBAVFORMAT_VERSION_MAJOR 55
#define LIBAVFORMAT_VERSION_MINOR 1
4
#define LIBAVFORMAT_VERSION_MICRO 10
2
#define LIBAVFORMAT_VERSION_MINOR 1
5
#define LIBAVFORMAT_VERSION_MICRO 10
0
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
LIBAVFORMAT_VERSION_MINOR, \
...
...
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