Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Releases
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
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Stefan Westerfeld
ffmpeg
Commits
11926c4b
Commit
11926c4b
authored
Dec 27, 2022
by
Clément Bœsch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avfilter/palette{gen,use}: misc for-loop cosmetics
parent
1340fe7c
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
18 additions
and
23 deletions
+18
-23
vf_palettegen.c
libavfilter/vf_palettegen.c
+9
-10
vf_paletteuse.c
libavfilter/vf_paletteuse.c
+9
-13
No files found.
libavfilter/vf_palettegen.c
View file @
11926c4b
...
@@ -209,13 +209,13 @@ static void compute_box_stats(PaletteGenContext *s, struct range_box *box)
...
@@ -209,13 +209,13 @@ static void compute_box_stats(PaletteGenContext *s, struct range_box *box)
*/
*/
static
int
get_next_box_id_to_split
(
PaletteGenContext
*
s
)
static
int
get_next_box_id_to_split
(
PaletteGenContext
*
s
)
{
{
int
b
ox_id
,
b
est_box_id
=
-
1
;
int
best_box_id
=
-
1
;
int64_t
max_score
=
-
1
;
int64_t
max_score
=
-
1
;
if
(
s
->
nb_boxes
==
s
->
max_colors
-
s
->
reserve_transparent
)
if
(
s
->
nb_boxes
==
s
->
max_colors
-
s
->
reserve_transparent
)
return
-
1
;
return
-
1
;
for
(
box_id
=
0
;
box_id
<
s
->
nb_boxes
;
box_id
++
)
{
for
(
int
box_id
=
0
;
box_id
<
s
->
nb_boxes
;
box_id
++
)
{
const
struct
range_box
*
box
=
&
s
->
boxes
[
box_id
];
const
struct
range_box
*
box
=
&
s
->
boxes
[
box_id
];
if
(
s
->
boxes
[
box_id
].
len
>=
2
&&
box
->
cut_score
>
max_score
)
{
if
(
s
->
boxes
[
box_id
].
len
>=
2
&&
box
->
cut_score
>
max_score
)
{
best_box_id
=
box_id
;
best_box_id
=
box_id
;
...
@@ -250,13 +250,13 @@ static void split_box(PaletteGenContext *s, struct range_box *box, int n)
...
@@ -250,13 +250,13 @@ static void split_box(PaletteGenContext *s, struct range_box *box, int n)
static
void
write_palette
(
AVFilterContext
*
ctx
,
AVFrame
*
out
)
static
void
write_palette
(
AVFilterContext
*
ctx
,
AVFrame
*
out
)
{
{
const
PaletteGenContext
*
s
=
ctx
->
priv
;
const
PaletteGenContext
*
s
=
ctx
->
priv
;
int
x
,
y
,
box_id
=
0
;
int
box_id
=
0
;
uint32_t
*
pal
=
(
uint32_t
*
)
out
->
data
[
0
];
uint32_t
*
pal
=
(
uint32_t
*
)
out
->
data
[
0
];
const
int
pal_linesize
=
out
->
linesize
[
0
]
>>
2
;
const
int
pal_linesize
=
out
->
linesize
[
0
]
>>
2
;
uint32_t
last_color
=
0
;
uint32_t
last_color
=
0
;
for
(
y
=
0
;
y
<
out
->
height
;
y
++
)
{
for
(
int
y
=
0
;
y
<
out
->
height
;
y
++
)
{
for
(
x
=
0
;
x
<
out
->
width
;
x
++
)
{
for
(
int
x
=
0
;
x
<
out
->
width
;
x
++
)
{
if
(
box_id
<
s
->
nb_boxes
)
{
if
(
box_id
<
s
->
nb_boxes
)
{
pal
[
x
]
=
s
->
boxes
[
box_id
++
].
color
;
pal
[
x
]
=
s
->
boxes
[
box_id
++
].
color
;
if
((
x
||
y
)
&&
pal
[
x
]
==
last_color
)
if
((
x
||
y
)
&&
pal
[
x
]
==
last_color
)
...
@@ -282,16 +282,16 @@ static void write_palette(AVFilterContext *ctx, AVFrame *out)
...
@@ -282,16 +282,16 @@ static void write_palette(AVFilterContext *ctx, AVFrame *out)
*/
*/
static
struct
color_ref
**
load_color_refs
(
const
struct
hist_node
*
hist
,
int
nb_refs
)
static
struct
color_ref
**
load_color_refs
(
const
struct
hist_node
*
hist
,
int
nb_refs
)
{
{
int
i
,
j
,
k
=
0
;
int
k
=
0
;
struct
color_ref
**
refs
=
av_malloc_array
(
nb_refs
,
sizeof
(
*
refs
));
struct
color_ref
**
refs
=
av_malloc_array
(
nb_refs
,
sizeof
(
*
refs
));
if
(
!
refs
)
if
(
!
refs
)
return
NULL
;
return
NULL
;
for
(
j
=
0
;
j
<
HIST_SIZE
;
j
++
)
{
for
(
int
j
=
0
;
j
<
HIST_SIZE
;
j
++
)
{
const
struct
hist_node
*
node
=
&
hist
[
j
];
const
struct
hist_node
*
node
=
&
hist
[
j
];
for
(
i
=
0
;
i
<
node
->
nb_entries
;
i
++
)
for
(
i
nt
i
=
0
;
i
<
node
->
nb_entries
;
i
++
)
refs
[
k
++
]
=
&
node
->
entries
[
i
];
refs
[
k
++
]
=
&
node
->
entries
[
i
];
}
}
...
@@ -391,12 +391,11 @@ static AVFrame *get_palette_frame(AVFilterContext *ctx)
...
@@ -391,12 +391,11 @@ static AVFrame *get_palette_frame(AVFilterContext *ctx)
*/
*/
static
int
color_inc
(
struct
hist_node
*
hist
,
uint32_t
color
)
static
int
color_inc
(
struct
hist_node
*
hist
,
uint32_t
color
)
{
{
int
i
;
const
uint32_t
hash
=
ff_lowbias32
(
color
)
&
(
HIST_SIZE
-
1
);
const
uint32_t
hash
=
ff_lowbias32
(
color
)
&
(
HIST_SIZE
-
1
);
struct
hist_node
*
node
=
&
hist
[
hash
];
struct
hist_node
*
node
=
&
hist
[
hash
];
struct
color_ref
*
e
;
struct
color_ref
*
e
;
for
(
i
=
0
;
i
<
node
->
nb_entries
;
i
++
)
{
for
(
i
nt
i
=
0
;
i
<
node
->
nb_entries
;
i
++
)
{
e
=
&
node
->
entries
[
i
];
e
=
&
node
->
entries
[
i
];
if
(
e
->
color
==
color
)
{
if
(
e
->
color
==
color
)
{
e
->
count
++
;
e
->
count
++
;
...
...
libavfilter/vf_paletteuse.c
View file @
11926c4b
...
@@ -231,7 +231,6 @@ struct stack_node {
...
@@ -231,7 +231,6 @@ struct stack_node {
*/
*/
static
av_always_inline
int
color_get
(
PaletteUseContext
*
s
,
uint32_t
color
)
static
av_always_inline
int
color_get
(
PaletteUseContext
*
s
,
uint32_t
color
)
{
{
int
i
;
struct
color_info
clrinfo
;
struct
color_info
clrinfo
;
const
uint32_t
hash
=
ff_lowbias32
(
color
)
&
(
CACHE_SIZE
-
1
);
const
uint32_t
hash
=
ff_lowbias32
(
color
)
&
(
CACHE_SIZE
-
1
);
struct
cache_node
*
node
=
&
s
->
cache
[
hash
];
struct
cache_node
*
node
=
&
s
->
cache
[
hash
];
...
@@ -242,7 +241,7 @@ static av_always_inline int color_get(PaletteUseContext *s, uint32_t color)
...
@@ -242,7 +241,7 @@ static av_always_inline int color_get(PaletteUseContext *s, uint32_t color)
return
s
->
transparency_index
;
return
s
->
transparency_index
;
}
}
for
(
i
=
0
;
i
<
node
->
nb_entries
;
i
++
)
{
for
(
i
nt
i
=
0
;
i
<
node
->
nb_entries
;
i
++
)
{
e
=
&
node
->
entries
[
i
];
e
=
&
node
->
entries
[
i
];
if
(
e
->
color
==
color
)
if
(
e
->
color
==
color
)
return
e
->
pal_entry
;
return
e
->
pal_entry
;
...
@@ -284,7 +283,6 @@ static av_always_inline int set_frame(PaletteUseContext *s, AVFrame *out, AVFram
...
@@ -284,7 +283,6 @@ static av_always_inline int set_frame(PaletteUseContext *s, AVFrame *out, AVFram
int
x_start
,
int
y_start
,
int
w
,
int
h
,
int
x_start
,
int
y_start
,
int
w
,
int
h
,
enum
dithering_mode
dither
)
enum
dithering_mode
dither
)
{
{
int
x
,
y
;
const
int
src_linesize
=
in
->
linesize
[
0
]
>>
2
;
const
int
src_linesize
=
in
->
linesize
[
0
]
>>
2
;
const
int
dst_linesize
=
out
->
linesize
[
0
];
const
int
dst_linesize
=
out
->
linesize
[
0
];
uint32_t
*
src
=
((
uint32_t
*
)
in
->
data
[
0
])
+
y_start
*
src_linesize
;
uint32_t
*
src
=
((
uint32_t
*
)
in
->
data
[
0
])
+
y_start
*
src_linesize
;
...
@@ -293,8 +291,8 @@ static av_always_inline int set_frame(PaletteUseContext *s, AVFrame *out, AVFram
...
@@ -293,8 +291,8 @@ static av_always_inline int set_frame(PaletteUseContext *s, AVFrame *out, AVFram
w
+=
x_start
;
w
+=
x_start
;
h
+=
y_start
;
h
+=
y_start
;
for
(
y
=
y_start
;
y
<
h
;
y
++
)
{
for
(
int
y
=
y_start
;
y
<
h
;
y
++
)
{
for
(
x
=
x_start
;
x
<
w
;
x
++
)
{
for
(
int
x
=
x_start
;
x
<
w
;
x
++
)
{
int
er
,
eg
,
eb
;
int
er
,
eg
,
eb
;
if
(
dither
==
DITHERING_BAYER
)
{
if
(
dither
==
DITHERING_BAYER
)
{
...
@@ -467,7 +465,7 @@ static int get_next_color(const uint8_t *color_used, const uint32_t *palette,
...
@@ -467,7 +465,7 @@ static int get_next_color(const uint8_t *color_used, const uint32_t *palette,
int
*
component
,
const
struct
color_rect
*
box
)
int
*
component
,
const
struct
color_rect
*
box
)
{
{
int
wL
,
wa
,
wb
;
int
wL
,
wa
,
wb
;
int
i
,
longest
=
0
;
int
longest
=
0
;
unsigned
nb_color
=
0
;
unsigned
nb_color
=
0
;
struct
color_rect
ranges
;
struct
color_rect
ranges
;
struct
color
tmp_pal
[
256
];
struct
color
tmp_pal
[
256
];
...
@@ -476,7 +474,7 @@ static int get_next_color(const uint8_t *color_used, const uint32_t *palette,
...
@@ -476,7 +474,7 @@ static int get_next_color(const uint8_t *color_used, const uint32_t *palette,
ranges
.
min
[
0
]
=
ranges
.
min
[
1
]
=
ranges
.
min
[
2
]
=
0xffff
;
ranges
.
min
[
0
]
=
ranges
.
min
[
1
]
=
ranges
.
min
[
2
]
=
0xffff
;
ranges
.
max
[
0
]
=
ranges
.
max
[
1
]
=
ranges
.
max
[
2
]
=
-
0xffff
;
ranges
.
max
[
0
]
=
ranges
.
max
[
1
]
=
ranges
.
max
[
2
]
=
-
0xffff
;
for
(
i
=
0
;
i
<
AVPALETTE_COUNT
;
i
++
)
{
for
(
i
nt
i
=
0
;
i
<
AVPALETTE_COUNT
;
i
++
)
{
const
uint32_t
c
=
palette
[
i
];
const
uint32_t
c
=
palette
[
i
];
const
uint8_t
a
=
c
>>
24
;
const
uint8_t
a
=
c
>>
24
;
const
struct
Lab
lab
=
ff_srgb_u8_to_oklab_int
(
c
);
const
struct
Lab
lab
=
ff_srgb_u8_to_oklab_int
(
c
);
...
@@ -571,7 +569,7 @@ static int cmp_pal_entry(const void *a, const void *b)
...
@@ -571,7 +569,7 @@ static int cmp_pal_entry(const void *a, const void *b)
static
void
load_colormap
(
PaletteUseContext
*
s
)
static
void
load_colormap
(
PaletteUseContext
*
s
)
{
{
int
i
,
nb_used
=
0
;
int
nb_used
=
0
;
uint8_t
color_used
[
AVPALETTE_COUNT
]
=
{
0
};
uint8_t
color_used
[
AVPALETTE_COUNT
]
=
{
0
};
uint32_t
last_color
=
0
;
uint32_t
last_color
=
0
;
struct
color_rect
box
;
struct
color_rect
box
;
...
@@ -583,7 +581,7 @@ static void load_colormap(PaletteUseContext *s)
...
@@ -583,7 +581,7 @@ static void load_colormap(PaletteUseContext *s)
/* disable transparent colors and dups */
/* disable transparent colors and dups */
qsort
(
s
->
palette
,
AVPALETTE_COUNT
-
(
s
->
transparency_index
>=
0
),
sizeof
(
*
s
->
palette
),
cmp_pal_entry
);
qsort
(
s
->
palette
,
AVPALETTE_COUNT
-
(
s
->
transparency_index
>=
0
),
sizeof
(
*
s
->
palette
),
cmp_pal_entry
);
for
(
i
=
0
;
i
<
AVPALETTE_COUNT
;
i
++
)
{
for
(
i
nt
i
=
0
;
i
<
AVPALETTE_COUNT
;
i
++
)
{
const
uint32_t
c
=
s
->
palette
[
i
];
const
uint32_t
c
=
s
->
palette
[
i
];
if
(
i
!=
0
&&
c
==
last_color
)
{
if
(
i
!=
0
&&
c
==
last_color
)
{
color_used
[
i
]
=
1
;
color_used
[
i
]
=
1
;
...
@@ -874,10 +872,9 @@ static av_cold int init(AVFilterContext *ctx)
...
@@ -874,10 +872,9 @@ static av_cold int init(AVFilterContext *ctx)
s
->
set_frame
=
set_frame_lut
[
s
->
dither
];
s
->
set_frame
=
set_frame_lut
[
s
->
dither
];
if
(
s
->
dither
==
DITHERING_BAYER
)
{
if
(
s
->
dither
==
DITHERING_BAYER
)
{
int
i
;
const
int
delta
=
1
<<
(
5
-
s
->
bayer_scale
);
// to avoid too much luma
const
int
delta
=
1
<<
(
5
-
s
->
bayer_scale
);
// to avoid too much luma
for
(
i
=
0
;
i
<
FF_ARRAY_ELEMS
(
s
->
ordered_dither
);
i
++
)
for
(
i
nt
i
=
0
;
i
<
FF_ARRAY_ELEMS
(
s
->
ordered_dither
);
i
++
)
s
->
ordered_dither
[
i
]
=
(
dither_value
(
i
)
>>
s
->
bayer_scale
)
-
delta
;
s
->
ordered_dither
[
i
]
=
(
dither_value
(
i
)
>>
s
->
bayer_scale
)
-
delta
;
}
}
...
@@ -892,11 +889,10 @@ static int activate(AVFilterContext *ctx)
...
@@ -892,11 +889,10 @@ static int activate(AVFilterContext *ctx)
static
av_cold
void
uninit
(
AVFilterContext
*
ctx
)
static
av_cold
void
uninit
(
AVFilterContext
*
ctx
)
{
{
int
i
;
PaletteUseContext
*
s
=
ctx
->
priv
;
PaletteUseContext
*
s
=
ctx
->
priv
;
ff_framesync_uninit
(
&
s
->
fs
);
ff_framesync_uninit
(
&
s
->
fs
);
for
(
i
=
0
;
i
<
CACHE_SIZE
;
i
++
)
for
(
i
nt
i
=
0
;
i
<
CACHE_SIZE
;
i
++
)
av_freep
(
&
s
->
cache
[
i
].
entries
);
av_freep
(
&
s
->
cache
[
i
].
entries
);
av_frame_free
(
&
s
->
last_in
);
av_frame_free
(
&
s
->
last_in
);
av_frame_free
(
&
s
->
last_out
);
av_frame_free
(
&
s
->
last_out
);
...
...
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