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
...
@@ -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
it could in theory be used for fixing movies that were
inverse-telecined incorrectly.
inverse-telecined incorrectly.
It accepts the following parameters:
The filter accepts parameters as a list of @var{key}=@var{value}
@var{max}:@var{hi}:@var{lo}:@var{frac}.
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
@item max
Set the maximum number of consecutive frames which can be dropped (if
Set the maximum number of consecutive frames which can be dropped (if
positive), or the minimum interval between dropped frames (if
positive), or the minimum interval between dropped frames (if
...
@@ -2082,20 +2085,22 @@ number of previous sequentially dropped frames.
...
@@ -2082,20 +2085,22 @@ number of previous sequentially dropped frames.
Default value is 0.
Default value is 0.
@item hi, lo, frac
@item hi
@item lo
@item frac
Set the dropping threshold values.
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
represent actual pixel value differences, so a threshold of 64
corresponds to 1 unit of difference for each pixel, or the same spread
corresponds to 1 unit of difference for each pixel, or the same spread
out differently over the block.
out differently over the block.
A frame is a candidate for dropping if no 8x8 blocks differ by more
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
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 @
var
{lo}.
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
Default value for @
option{hi} is 64*12, default value for @option
{lo} is
64*5, and default value for @
var
{frac} is 0.33.
64*5, and default value for @
option
{frac} is 0.33.
@end table
@end table
@section delogo
@section delogo
...
...
libavfilter/version.h
View file @
a2a1e20f
...
@@ -30,7 +30,7 @@
...
@@ -30,7 +30,7 @@
#define LIBAVFILTER_VERSION_MAJOR 3
#define LIBAVFILTER_VERSION_MAJOR 3
#define LIBAVFILTER_VERSION_MINOR 38
#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, \
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
LIBAVFILTER_VERSION_MINOR, \
LIBAVFILTER_VERSION_MINOR, \
...
...
libavfilter/vf_decimate.c
View file @
a2a1e20f
...
@@ -24,6 +24,7 @@
...
@@ -24,6 +24,7 @@
* Rich Felker.
* Rich Felker.
*/
*/
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "libavutil/pixdesc.h"
#include "libavutil/timestamp.h"
#include "libavutil/timestamp.h"
#include "libavcodec/dsputil.h"
#include "libavcodec/dsputil.h"
...
@@ -33,6 +34,7 @@
...
@@ -33,6 +34,7 @@
#include "video.h"
#include "video.h"
typedef
struct
{
typedef
struct
{
const
AVClass
*
class
;
int
lo
,
hi
;
///< lower and higher threshold number of differences
int
lo
,
hi
;
///< lower and higher threshold number of differences
///< values for 8x8 blocks
///< values for 8x8 blocks
...
@@ -50,6 +52,20 @@ typedef struct {
...
@@ -50,6 +52,20 @@ typedef struct {
AVCodecContext
*
avctx
;
///< codec context required for the DSPContext
AVCodecContext
*
avctx
;
///< codec context required for the DSPContext
}
DecimateContext
;
}
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.
* Return 1 if the two planes are different, 0 otherwise.
*/
*/
...
@@ -116,29 +132,14 @@ static int decimate_frame(AVFilterContext *ctx,
...
@@ -116,29 +132,14 @@ static int decimate_frame(AVFilterContext *ctx,
static
av_cold
int
init
(
AVFilterContext
*
ctx
,
const
char
*
args
)
static
av_cold
int
init
(
AVFilterContext
*
ctx
,
const
char
*
args
)
{
{
DecimateContext
*
decimate
=
ctx
->
priv
;
DecimateContext
*
decimate
=
ctx
->
priv
;
static
const
char
*
shorthand
[]
=
{
"max"
,
"hi"
,
"lo"
,
"frac"
,
NULL
};
int
ret
;
/* set default values */
decimate
->
class
=
&
decimate_class
;
decimate
->
drop_count
=
decimate
->
max_drop_count
=
0
;
av_opt_set_defaults
(
decimate
);
decimate
->
lo
=
64
*
5
;
decimate
->
hi
=
64
*
12
;
if
((
ret
=
av_opt_set_from_string
(
decimate
,
args
,
shorthand
,
"="
,
":"
))
<
0
)
decimate
->
frac
=
0
.
33
;
return
ret
;
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
);
}
}
av_log
(
ctx
,
AV_LOG_VERBOSE
,
"max_drop_count:%d hi:%d lo:%d frac:%f
\n
"
,
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
);
decimate
->
max_drop_count
,
decimate
->
hi
,
decimate
->
lo
,
decimate
->
frac
);
...
@@ -156,6 +157,7 @@ static av_cold void uninit(AVFilterContext *ctx)
...
@@ -156,6 +157,7 @@ static av_cold void uninit(AVFilterContext *ctx)
DecimateContext
*
decimate
=
ctx
->
priv
;
DecimateContext
*
decimate
=
ctx
->
priv
;
avfilter_unref_bufferp
(
&
decimate
->
ref
);
avfilter_unref_bufferp
(
&
decimate
->
ref
);
avcodec_close
(
decimate
->
avctx
);
avcodec_close
(
decimate
->
avctx
);
av_opt_free
(
decimate
);
av_freep
(
&
decimate
->
avctx
);
av_freep
(
&
decimate
->
avctx
);
}
}
...
@@ -260,4 +262,5 @@ AVFilter avfilter_vf_decimate = {
...
@@ -260,4 +262,5 @@ AVFilter avfilter_vf_decimate = {
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
inputs
=
decimate_inputs
,
.
inputs
=
decimate_inputs
,
.
outputs
=
decimate_outputs
,
.
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