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
a2a1e20f
Commit
a2a1e20f
authored
Feb 20, 2013
by
Stefano Sabatini
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavfi/decimate: use named options
parent
49c8fe30
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
40 additions
and
32 deletions
+40
-32
filters.texi
doc/filters.texi
+14
-9
version.h
libavfilter/version.h
+1
-1
vf_decimate.c
libavfilter/vf_decimate.c
+25
-22
No files found.
doc/filters.texi
View file @
a2a1e20f
...
...
@@ -2069,11 +2069,14 @@ for very-low-bitrate encoding (e.g. streaming over dialup modem), but
it could in theory be used for fixing movies that were
inverse-telecined incorrectly.
It accepts the following parameters:
@var{max}:@var{hi}:@var{lo}:@var{frac}.
The filter accepts parameters as a list of @var{key}=@var{value}
pairs, separated by ":". If the key of the first options is omitted,
the arguments are interpreted according to the syntax:
@option{max}:@option{hi}:@option{lo}:@option{frac}.
@table @option
A description of the accepted options follows.
@table @option
@item max
Set the maximum number of consecutive frames which can be dropped (if
positive), or the minimum interval between dropped frames (if
...
...
@@ -2082,20 +2085,22 @@ number of previous sequentially dropped frames.
Default value is 0.
@item hi, lo, frac
@item hi
@item lo
@item frac
Set the dropping threshold values.
Values for @
var{hi} and @var
{lo} are for 8x8 pixel blocks and
Values for @
option{hi} and @option
{lo} are for 8x8 pixel blocks and
represent actual pixel value differences, so a threshold of 64
corresponds to 1 unit of difference for each pixel, or the same spread
out differently over the block.
A frame is a candidate for dropping if no 8x8 blocks differ by more
than a threshold of @
var{hi}, and if no more than @var
{frac} blocks (1
meaning the whole image) differ by more than a threshold of @
var
{lo}.
than a threshold of @
option{hi}, and if no more than @option
{frac} blocks (1
meaning the whole image) differ by more than a threshold of @
option
{lo}.
Default value for @
var{hi} is 64*12, default value for @var
{lo} is
64*5, and default value for @
var
{frac} is 0.33.
Default value for @
option{hi} is 64*12, default value for @option
{lo} is
64*5, and default value for @
option
{frac} is 0.33.
@end table
@section delogo
...
...
libavfilter/version.h
View file @
a2a1e20f
...
...
@@ -30,7 +30,7 @@
#define LIBAVFILTER_VERSION_MAJOR 3
#define LIBAVFILTER_VERSION_MINOR 38
#define LIBAVFILTER_VERSION_MICRO 10
3
#define LIBAVFILTER_VERSION_MICRO 10
4
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
LIBAVFILTER_VERSION_MINOR, \
...
...
libavfilter/vf_decimate.c
View file @
a2a1e20f
...
...
@@ -24,6 +24,7 @@
* Rich Felker.
*/
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "libavutil/timestamp.h"
#include "libavcodec/dsputil.h"
...
...
@@ -33,6 +34,7 @@
#include "video.h"
typedef
struct
{
const
AVClass
*
class
;
int
lo
,
hi
;
///< lower and higher threshold number of differences
///< values for 8x8 blocks
...
...
@@ -50,6 +52,20 @@ typedef struct {
AVCodecContext
*
avctx
;
///< codec context required for the DSPContext
}
DecimateContext
;
#define OFFSET(x) offsetof(DecimateContext, x)
#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
static
const
AVOption
decimate_options
[]
=
{
{
"max"
,
"set the maximum number of consecutive dropped frames (positive), or the minimum interval between dropped frames (negative)"
,
OFFSET
(
max_drop_count
),
AV_OPT_TYPE_INT
,
{.
i64
=
0
},
INT_MIN
,
INT_MAX
,
FLAGS
},
{
"hi"
,
"set high dropping threshold"
,
OFFSET
(
hi
),
AV_OPT_TYPE_INT
,
{.
i64
=
64
*
12
},
INT_MIN
,
INT_MAX
,
FLAGS
},
{
"lo"
,
"set low dropping threshold"
,
OFFSET
(
lo
),
AV_OPT_TYPE_INT
,
{.
i64
=
64
*
5
},
INT_MIN
,
INT_MAX
,
FLAGS
},
{
"frac"
,
"set fraction dropping threshold"
,
OFFSET
(
frac
),
AV_OPT_TYPE_FLOAT
,
{.
dbl
=
0
.
33
},
0
,
1
,
FLAGS
},
{
NULL
}
};
AVFILTER_DEFINE_CLASS
(
decimate
);
/**
* Return 1 if the two planes are different, 0 otherwise.
*/
...
...
@@ -116,29 +132,14 @@ static int decimate_frame(AVFilterContext *ctx,
static
av_cold
int
init
(
AVFilterContext
*
ctx
,
const
char
*
args
)
{
DecimateContext
*
decimate
=
ctx
->
priv
;
static
const
char
*
shorthand
[]
=
{
"max"
,
"hi"
,
"lo"
,
"frac"
,
NULL
};
int
ret
;
/* set default values */
decimate
->
drop_count
=
decimate
->
max_drop_count
=
0
;
decimate
->
lo
=
64
*
5
;
decimate
->
hi
=
64
*
12
;
decimate
->
frac
=
0
.
33
;
if
(
args
)
{
char
c1
,
c2
,
c3
,
c4
;
int
n
=
sscanf
(
args
,
"%d%c%d%c%d%c%f%c"
,
&
decimate
->
max_drop_count
,
&
c1
,
&
decimate
->
hi
,
&
c2
,
&
decimate
->
lo
,
&
c3
,
&
decimate
->
frac
,
&
c4
);
if
(
n
!=
1
&&
(
n
!=
3
||
c1
!=
':'
)
&&
(
n
!=
5
||
c1
!=
':'
||
c2
!=
':'
)
&&
(
n
!=
7
||
c1
!=
':'
||
c2
!=
':'
||
c3
!=
':'
))
{
av_log
(
ctx
,
AV_LOG_ERROR
,
"Invalid syntax for argument '%s': "
"must be in the form 'max:hi:lo:frac'
\n
"
,
args
);
return
AVERROR
(
EINVAL
);
}
}
decimate
->
class
=
&
decimate_class
;
av_opt_set_defaults
(
decimate
);
if
((
ret
=
av_opt_set_from_string
(
decimate
,
args
,
shorthand
,
"="
,
":"
))
<
0
)
return
ret
;
av_log
(
ctx
,
AV_LOG_VERBOSE
,
"max_drop_count:%d hi:%d lo:%d frac:%f
\n
"
,
decimate
->
max_drop_count
,
decimate
->
hi
,
decimate
->
lo
,
decimate
->
frac
);
...
...
@@ -156,6 +157,7 @@ static av_cold void uninit(AVFilterContext *ctx)
DecimateContext
*
decimate
=
ctx
->
priv
;
avfilter_unref_bufferp
(
&
decimate
->
ref
);
avcodec_close
(
decimate
->
avctx
);
av_opt_free
(
decimate
);
av_freep
(
&
decimate
->
avctx
);
}
...
...
@@ -260,4 +262,5 @@ AVFilter avfilter_vf_decimate = {
.
query_formats
=
query_formats
,
.
inputs
=
decimate_inputs
,
.
outputs
=
decimate_outputs
,
.
priv_class
=
&
decimate_class
,
};
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