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
f5326039
Commit
f5326039
authored
Jan 15, 2015
by
Clément Bœsch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avfilter: add showpalette filter
parent
72c61c27
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
464 additions
and
2 deletions
+464
-2
Changelog
Changelog
+1
-0
filters.texi
doc/filters.texi
+13
-0
Makefile
libavfilter/Makefile
+1
-0
allfilters.c
libavfilter/allfilters.c
+1
-0
version.h
libavfilter/version.h
+2
-2
vf_showpalette.c
libavfilter/vf_showpalette.c
+127
-0
filter-video.mak
tests/fate/filter-video.mak
+3
-0
filter-showpalette
tests/ref/fate/filter-showpalette
+316
-0
No files found.
Changelog
View file @
f5326039
...
...
@@ -15,6 +15,7 @@ version <next>:
- VOC seeking support
- Closed caption Decoder
- fspp, uspp, pp7 MPlayer postprocessing filters ported to native filters
- showpalette filter
version 2.5:
...
...
doc/filters.texi
View file @
f5326039
...
...
@@ -6885,6 +6885,19 @@ pad="2*iw:2*ih:ow-iw:oh-ih"
@end example
@end itemize
@section showpalette
Displays the 256 colors palette of each frame. This filter is only relevant for
@var{pal8} pixel format frames.
It accepts the following option:
@table @option
@item s
Set the size of the box used to represent one palette color entry. Default is
@code{30} (for a @code{30x30} pixel box).
@end table
@section perspective
Correct perspective of video not recorded perpendicular to the screen.
...
...
libavfilter/Makefile
View file @
f5326039
...
...
@@ -181,6 +181,7 @@ OBJS-$(CONFIG_SETPTS_FILTER) += setpts.o
OBJS-$(CONFIG_SETSAR_FILTER)
+=
vf_aspect.o
OBJS-$(CONFIG_SETTB_FILTER)
+=
settb.o
OBJS-$(CONFIG_SHOWINFO_FILTER)
+=
vf_showinfo.o
OBJS-$(CONFIG_SHOWPALETTE_FILTER)
+=
vf_showpalette.o
OBJS-$(CONFIG_SHUFFLEPLANES_FILTER)
+=
vf_shuffleplanes.o
OBJS-$(CONFIG_SIGNALSTATS_FILTER)
+=
vf_signalstats.o
OBJS-$(CONFIG_SMARTBLUR_FILTER)
+=
vf_smartblur.o
...
...
libavfilter/allfilters.c
View file @
f5326039
...
...
@@ -196,6 +196,7 @@ void avfilter_register_all(void)
REGISTER_FILTER
(
SETSAR
,
setsar
,
vf
);
REGISTER_FILTER
(
SETTB
,
settb
,
vf
);
REGISTER_FILTER
(
SHOWINFO
,
showinfo
,
vf
);
REGISTER_FILTER
(
SHOWPALETTE
,
showpalette
,
vf
);
REGISTER_FILTER
(
SHUFFLEPLANES
,
shuffleplanes
,
vf
);
REGISTER_FILTER
(
SIGNALSTATS
,
signalstats
,
vf
);
REGISTER_FILTER
(
SMARTBLUR
,
smartblur
,
vf
);
...
...
libavfilter/version.h
View file @
f5326039
...
...
@@ -30,8 +30,8 @@
#include "libavutil/version.h"
#define LIBAVFILTER_VERSION_MAJOR 5
#define LIBAVFILTER_VERSION_MINOR
7
#define LIBAVFILTER_VERSION_MICRO 10
1
#define LIBAVFILTER_VERSION_MINOR
8
#define LIBAVFILTER_VERSION_MICRO 10
0
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
LIBAVFILTER_VERSION_MINOR, \
...
...
libavfilter/vf_showpalette.c
0 → 100644
View file @
f5326039
/*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* @file
* Display frame palette (AV_PIX_FMT_PAL8)
*/
#include "libavutil/avassert.h"
#include "libavutil/opt.h"
#include "avfilter.h"
#include "formats.h"
#include "internal.h"
#include "video.h"
typedef
struct
{
const
AVClass
*
class
;
int
size
;
}
ShowPaletteContext
;
#define OFFSET(x) offsetof(ShowPaletteContext, x)
#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
static
const
AVOption
showpalette_options
[]
=
{
{
"s"
,
"set pixel box size"
,
OFFSET
(
size
),
AV_OPT_TYPE_INT
,
{.
i64
=
30
},
1
,
100
,
FLAGS
},
{
NULL
}
};
AVFILTER_DEFINE_CLASS
(
showpalette
);
static
int
query_formats
(
AVFilterContext
*
ctx
)
{
static
const
enum
AVPixelFormat
in_fmts
[]
=
{
AV_PIX_FMT_PAL8
,
AV_PIX_FMT_NONE
};
static
const
enum
AVPixelFormat
out_fmts
[]
=
{
AV_PIX_FMT_RGB32
,
AV_PIX_FMT_NONE
};
AVFilterFormats
*
in
=
ff_make_format_list
(
in_fmts
);
AVFilterFormats
*
out
=
ff_make_format_list
(
out_fmts
);
if
(
!
in
||
!
out
)
return
AVERROR
(
ENOMEM
);
ff_formats_ref
(
in
,
&
ctx
->
inputs
[
0
]
->
out_formats
);
ff_formats_ref
(
out
,
&
ctx
->
outputs
[
0
]
->
in_formats
);
return
0
;
}
static
int
config_output
(
AVFilterLink
*
outlink
)
{
AVFilterContext
*
ctx
=
outlink
->
src
;
const
ShowPaletteContext
*
s
=
ctx
->
priv
;
outlink
->
w
=
outlink
->
h
=
16
*
s
->
size
;
return
0
;
}
static
int
disp_palette
(
AVFrame
*
out
,
const
AVFrame
*
in
,
int
size
)
{
int
x
,
y
,
i
,
j
;
uint32_t
*
dst
=
(
uint32_t
*
)
out
->
data
[
0
];
const
int
dst_linesize
=
out
->
linesize
[
0
]
>>
2
;
const
uint32_t
*
pal
=
(
uint32_t
*
)
in
->
data
[
1
];
for
(
y
=
0
;
y
<
16
;
y
++
)
for
(
x
=
0
;
x
<
16
;
x
++
)
for
(
j
=
0
;
j
<
size
;
j
++
)
for
(
i
=
0
;
i
<
size
;
i
++
)
dst
[(
y
*
dst_linesize
+
x
)
*
size
+
j
*
dst_linesize
+
i
]
=
pal
[
y
*
16
+
x
];
return
0
;
}
static
int
filter_frame
(
AVFilterLink
*
inlink
,
AVFrame
*
in
)
{
int
ret
;
AVFrame
*
out
;
AVFilterContext
*
ctx
=
inlink
->
dst
;
const
ShowPaletteContext
*
s
=
ctx
->
priv
;
AVFilterLink
*
outlink
=
ctx
->
outputs
[
0
];
out
=
ff_get_video_buffer
(
outlink
,
outlink
->
w
,
outlink
->
h
);
if
(
!
out
)
{
av_frame_free
(
&
in
);
return
AVERROR
(
ENOMEM
);
}
av_frame_copy_props
(
out
,
in
);
ret
=
disp_palette
(
out
,
in
,
s
->
size
);
av_frame_free
(
&
in
);
return
ret
<
0
?
ret
:
ff_filter_frame
(
outlink
,
out
);
}
static
const
AVFilterPad
showpalette_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
filter_frame
=
filter_frame
,
},
{
NULL
}
};
static
const
AVFilterPad
showpalette_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
config_props
=
config_output
,
},
{
NULL
}
};
AVFilter
ff_vf_showpalette
=
{
.
name
=
"showpalette"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Display frame palette"
),
.
priv_size
=
sizeof
(
ShowPaletteContext
),
.
query_formats
=
query_formats
,
.
inputs
=
showpalette_inputs
,
.
outputs
=
showpalette_outputs
,
.
priv_class
=
&
showpalette_class
,
.
flags
=
AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC
,
};
tests/fate/filter-video.mak
View file @
f5326039
...
...
@@ -26,6 +26,9 @@ FATE_FILTER-$(call ALLYES, MCDEINT_FILTER, MPEGTS_DEMUXER, MPEG2VIDEO_DECODER SN
FATE_FILTER-$(call ALLYES, CODECVIEW_FILTER RM_DEMUXER RV40_DECODER) += fate-filter-codecview-mvs
fate-filter-codecview-mvs: CMD = framecrc -flags2 +export_mvs -i $(TARGET_SAMPLES)/real/spygames-2MB.rmvb -vf codecview=mv=pf+bf+bb -vframes 60 -an
FATE_FILTER-$(call ALLYES, SHOWPALETTE_FILTER FLIC_DEMUXER FLIC_DECODER) += fate-filter-showpalette
fate-filter-showpalette: CMD = framecrc -i $(TARGET_SAMPLES)/fli/fli-engines.fli -vf showpalette=3 -pix_fmt bgra
FATE_SAMPLES_AVCONV += $(FATE_FILTER-yes)
FATE_FILTER-$(call ALLYES, AVDEVICE LIFE_FILTER) += fate-filter-lavd-life
...
...
tests/ref/fate/filter-showpalette
0 → 100644
View file @
f5326039
This diff is collapsed.
Click to expand it.
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