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
5451be50
Commit
5451be50
authored
Mar 06, 2016
by
Paul B Mahol
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avfilter/vf_waveform: use nonsubsampled yuv output format for lowpass filter
Signed-off-by:
Paul B Mahol
<
onemda@gmail.com
>
parent
247fe3e4
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
370 additions
and
288 deletions
+370
-288
vf_waveform.c
libavfilter/vf_waveform.c
+170
-88
filter-waveform_column
tests/ref/fate/filter-waveform_column
+50
-50
filter-waveform_envelope
tests/ref/fate/filter-waveform_envelope
+50
-50
filter-waveform_row
tests/ref/fate/filter-waveform_row
+50
-50
filter-waveform_uv
tests/ref/fate/filter-waveform_uv
+50
-50
No files found.
libavfilter/vf_waveform.c
View file @
5451be50
...
...
@@ -109,7 +109,7 @@ static const AVOption waveform_options[] = {
AVFILTER_DEFINE_CLASS
(
waveform
);
static
const
enum
AVPixelFormat
lowpass_pix_fmts
[]
=
{
static
const
enum
AVPixelFormat
in_
lowpass_pix_fmts
[]
=
{
AV_PIX_FMT_GBRP
,
AV_PIX_FMT_GBRAP
,
AV_PIX_FMT_GBRP9
,
AV_PIX_FMT_GBRP10
,
AV_PIX_FMT_GBRP12
,
AV_PIX_FMT_YUV422P
,
AV_PIX_FMT_YUV420P
,
...
...
@@ -127,6 +127,51 @@ static const enum AVPixelFormat lowpass_pix_fmts[] = {
AV_PIX_FMT_NONE
};
static
const
enum
AVPixelFormat
out_rgb8_lowpass_pix_fmts
[]
=
{
AV_PIX_FMT_GBRP
,
AV_PIX_FMT_GBRAP
,
AV_PIX_FMT_NONE
};
static
const
enum
AVPixelFormat
out_rgb9_lowpass_pix_fmts
[]
=
{
AV_PIX_FMT_GBRP9
,
AV_PIX_FMT_NONE
};
static
const
enum
AVPixelFormat
out_rgb10_lowpass_pix_fmts
[]
=
{
AV_PIX_FMT_GBRP10
,
AV_PIX_FMT_NONE
};
static
const
enum
AVPixelFormat
out_rgb12_lowpass_pix_fmts
[]
=
{
AV_PIX_FMT_GBRP12
,
AV_PIX_FMT_NONE
};
static
const
enum
AVPixelFormat
out_yuv8_lowpass_pix_fmts
[]
=
{
AV_PIX_FMT_YUV444P
,
AV_PIX_FMT_YUVJ444P
,
AV_PIX_FMT_YUVA444P
,
AV_PIX_FMT_NONE
};
static
const
enum
AVPixelFormat
out_yuv9_lowpass_pix_fmts
[]
=
{
AV_PIX_FMT_YUV444P9
,
AV_PIX_FMT_YUVA444P9
,
AV_PIX_FMT_NONE
};
static
const
enum
AVPixelFormat
out_yuv10_lowpass_pix_fmts
[]
=
{
AV_PIX_FMT_YUV444P10
,
AV_PIX_FMT_YUVA444P10
,
AV_PIX_FMT_NONE
};
static
const
enum
AVPixelFormat
out_yuv12_lowpass_pix_fmts
[]
=
{
AV_PIX_FMT_YUV444P12
,
AV_PIX_FMT_NONE
};
static
const
enum
AVPixelFormat
out_gray8_lowpass_pix_fmts
[]
=
{
AV_PIX_FMT_GRAY8
,
AV_PIX_FMT_NONE
};
static
const
enum
AVPixelFormat
flat_pix_fmts
[]
=
{
AV_PIX_FMT_YUV444P
,
AV_PIX_FMT_YUVJ444P
,
AV_PIX_FMT_NONE
};
...
...
@@ -144,21 +189,73 @@ static int query_formats(AVFilterContext *ctx)
{
WaveformContext
*
s
=
ctx
->
priv
;
AVFilterFormats
*
fmts_list
;
const
enum
AVPixelFormat
*
out_pix_fmts
;
const
enum
AVPixelFormat
*
pix_fmts
;
const
AVPixFmtDescriptor
*
desc
;
AVFilterFormats
*
avff
;
int
depth
,
rgb
,
i
,
ret
,
ncomp
;
if
(
s
->
filter
!=
LOWPASS
)
{
switch
(
s
->
filter
)
{
case
FLAT
:
case
AFLAT
:
case
CHROMA
:
case
ACHROMA
:
pix_fmts
=
flat_pix_fmts
;
break
;
case
COLOR
:
pix_fmts
=
color_pix_fmts
;
break
;
}
switch
(
s
->
filter
)
{
case
LOWPASS
:
pix_fmts
=
lowpass_pix_fmts
;
break
;
case
FLAT
:
case
AFLAT
:
case
CHROMA
:
case
ACHROMA
:
pix_fmts
=
flat_pix_fmts
;
break
;
case
COLOR
:
pix_fmts
=
color_pix_fmts
;
break
;
fmts_list
=
ff_make_format_list
(
pix_fmts
);
if
(
!
fmts_list
)
return
AVERROR
(
ENOMEM
);
return
ff_set_common_formats
(
ctx
,
fmts_list
);
}
fmts_list
=
ff_make_format_list
(
pix_fmts
);
if
(
!
fmts_list
)
return
AVERROR
(
ENOMEM
);
return
ff_set_common_formats
(
ctx
,
fmts_list
);
if
(
!
ctx
->
inputs
[
0
]
->
in_formats
||
!
ctx
->
inputs
[
0
]
->
in_formats
->
nb_formats
)
{
return
AVERROR
(
EAGAIN
);
}
if
(
!
ctx
->
inputs
[
0
]
->
out_formats
)
{
if
((
ret
=
ff_formats_ref
(
ff_make_format_list
(
in_lowpass_pix_fmts
),
&
ctx
->
inputs
[
0
]
->
out_formats
))
<
0
)
return
ret
;
}
avff
=
ctx
->
inputs
[
0
]
->
in_formats
;
desc
=
av_pix_fmt_desc_get
(
avff
->
formats
[
0
]);
ncomp
=
desc
->
nb_components
;
rgb
=
desc
->
flags
&
AV_PIX_FMT_FLAG_RGB
;
depth
=
desc
->
comp
[
0
].
depth
;
for
(
i
=
1
;
i
<
avff
->
nb_formats
;
i
++
)
{
desc
=
av_pix_fmt_desc_get
(
avff
->
formats
[
i
]);
if
(
rgb
!=
(
desc
->
flags
&
AV_PIX_FMT_FLAG_RGB
)
||
depth
!=
desc
->
comp
[
0
].
depth
)
return
AVERROR
(
EAGAIN
);
}
if
(
ncomp
==
1
&&
depth
==
8
)
out_pix_fmts
=
out_gray8_lowpass_pix_fmts
;
else
if
(
rgb
&&
depth
==
8
&&
ncomp
>
2
)
out_pix_fmts
=
out_rgb8_lowpass_pix_fmts
;
else
if
(
rgb
&&
depth
==
9
&&
ncomp
>
2
)
out_pix_fmts
=
out_rgb9_lowpass_pix_fmts
;
else
if
(
rgb
&&
depth
==
10
&&
ncomp
>
2
)
out_pix_fmts
=
out_rgb10_lowpass_pix_fmts
;
else
if
(
rgb
&&
depth
==
12
&&
ncomp
>
2
)
out_pix_fmts
=
out_rgb12_lowpass_pix_fmts
;
else
if
(
depth
==
8
&&
ncomp
>
2
)
out_pix_fmts
=
out_yuv8_lowpass_pix_fmts
;
else
if
(
depth
==
9
&&
ncomp
>
2
)
out_pix_fmts
=
out_yuv9_lowpass_pix_fmts
;
else
if
(
depth
==
10
&&
ncomp
>
2
)
out_pix_fmts
=
out_yuv10_lowpass_pix_fmts
;
else
if
(
depth
==
12
&&
ncomp
>
2
)
out_pix_fmts
=
out_yuv12_lowpass_pix_fmts
;
else
return
AVERROR
(
EAGAIN
);
if
((
ret
=
ff_formats_ref
(
ff_make_format_list
(
out_pix_fmts
),
&
ctx
->
outputs
[
0
]
->
in_formats
))
<
0
)
return
ret
;
return
0
;
}
static
void
envelope_instant16
(
WaveformContext
*
s
,
AVFrame
*
out
,
int
plane
,
int
component
)
...
...
@@ -166,11 +263,8 @@ static void envelope_instant16(WaveformContext *s, AVFrame *out, int plane, int
const
int
dst_linesize
=
out
->
linesize
[
component
]
/
2
;
const
int
bg
=
s
->
bg_color
[
component
]
*
(
s
->
max
/
256
);
const
int
limit
=
s
->
max
-
1
;
const
int
is_chroma
=
(
component
==
1
||
component
==
2
);
const
int
shift_w
=
(
is_chroma
?
s
->
desc
->
log2_chroma_w
:
0
);
const
int
shift_h
=
(
is_chroma
?
s
->
desc
->
log2_chroma_h
:
0
);
const
int
dst_h
=
AV_CEIL_RSHIFT
(
out
->
height
,
shift_h
);
const
int
dst_w
=
AV_CEIL_RSHIFT
(
out
->
width
,
shift_w
);
const
int
dst_h
=
out
->
height
;
const
int
dst_w
=
out
->
width
;
const
int
start
=
s
->
estart
[
plane
];
const
int
end
=
s
->
eend
[
plane
];
uint16_t
*
dst
;
...
...
@@ -216,11 +310,8 @@ static void envelope_instant(WaveformContext *s, AVFrame *out, int plane, int co
{
const
int
dst_linesize
=
out
->
linesize
[
component
];
const
uint8_t
bg
=
s
->
bg_color
[
component
];
const
int
is_chroma
=
(
component
==
1
||
component
==
2
);
const
int
shift_w
=
(
is_chroma
?
s
->
desc
->
log2_chroma_w
:
0
);
const
int
shift_h
=
(
is_chroma
?
s
->
desc
->
log2_chroma_h
:
0
);
const
int
dst_h
=
AV_CEIL_RSHIFT
(
out
->
height
,
shift_h
);
const
int
dst_w
=
AV_CEIL_RSHIFT
(
out
->
width
,
shift_w
);
const
int
dst_h
=
out
->
height
;
const
int
dst_w
=
out
->
width
;
const
int
start
=
s
->
estart
[
plane
];
const
int
end
=
s
->
eend
[
plane
];
uint8_t
*
dst
;
...
...
@@ -267,11 +358,8 @@ static void envelope_peak16(WaveformContext *s, AVFrame *out, int plane, int com
const
int
dst_linesize
=
out
->
linesize
[
component
]
/
2
;
const
int
bg
=
s
->
bg_color
[
component
]
*
(
s
->
max
/
256
);
const
int
limit
=
s
->
max
-
1
;
const
int
is_chroma
=
(
component
==
1
||
component
==
2
);
const
int
shift_w
=
(
is_chroma
?
s
->
desc
->
log2_chroma_w
:
0
);
const
int
shift_h
=
(
is_chroma
?
s
->
desc
->
log2_chroma_h
:
0
);
const
int
dst_h
=
AV_CEIL_RSHIFT
(
out
->
height
,
shift_h
);
const
int
dst_w
=
AV_CEIL_RSHIFT
(
out
->
width
,
shift_w
);
const
int
dst_h
=
out
->
height
;
const
int
dst_w
=
out
->
width
;
const
int
start
=
s
->
estart
[
plane
];
const
int
end
=
s
->
eend
[
plane
];
int
*
emax
=
s
->
emax
[
plane
][
component
];
...
...
@@ -339,11 +427,8 @@ static void envelope_peak(WaveformContext *s, AVFrame *out, int plane, int compo
{
const
int
dst_linesize
=
out
->
linesize
[
component
];
const
int
bg
=
s
->
bg_color
[
component
];
const
int
is_chroma
=
(
component
==
1
||
component
==
2
);
const
int
shift_w
=
(
is_chroma
?
s
->
desc
->
log2_chroma_w
:
0
);
const
int
shift_h
=
(
is_chroma
?
s
->
desc
->
log2_chroma_h
:
0
);
const
int
dst_h
=
AV_CEIL_RSHIFT
(
out
->
height
,
shift_h
);
const
int
dst_w
=
AV_CEIL_RSHIFT
(
out
->
width
,
shift_w
);
const
int
dst_h
=
out
->
height
;
const
int
dst_w
=
out
->
width
;
const
int
start
=
s
->
estart
[
plane
];
const
int
end
=
s
->
eend
[
plane
];
int
*
emax
=
s
->
emax
[
plane
][
component
];
...
...
@@ -461,14 +546,15 @@ static void lowpass16(WaveformContext *s, AVFrame *in, AVFrame *out,
const
int
src_h
=
AV_CEIL_RSHIFT
(
in
->
height
,
shift_h
);
const
int
src_w
=
AV_CEIL_RSHIFT
(
in
->
width
,
shift_w
);
const
uint16_t
*
src_data
=
(
const
uint16_t
*
)
in
->
data
[
plane
];
uint16_t
*
dst_data
=
(
uint16_t
*
)
out
->
data
[
plane
]
+
(
column
?
(
offset
>>
shift_h
)
*
dst_linesize
:
offset
>>
shift_w
);
uint16_t
*
const
dst_bottom_line
=
dst_data
+
dst_linesize
*
(
(
s
->
size
>>
shift_h
)
-
1
);
uint16_t
*
dst_data
=
(
uint16_t
*
)
out
->
data
[
plane
]
+
(
column
?
offset
*
dst_linesize
:
offset
);
uint16_t
*
const
dst_bottom_line
=
dst_data
+
dst_linesize
*
(
s
->
size
-
1
);
uint16_t
*
const
dst_line
=
(
mirror
?
dst_bottom_line
:
dst_data
);
const
int
step
=
column
?
1
<<
shift_w
:
1
<<
shift_h
;
const
uint16_t
*
p
;
int
y
;
if
(
!
column
&&
mirror
)
dst_data
+=
s
->
size
>>
shift_w
;
dst_data
+=
s
->
size
;
for
(
y
=
0
;
y
<
src_h
;
y
++
)
{
const
uint16_t
*
src_data_end
=
src_data
+
src_w
;
...
...
@@ -476,20 +562,27 @@ static void lowpass16(WaveformContext *s, AVFrame *in, AVFrame *out,
for
(
p
=
src_data
;
p
<
src_data_end
;
p
++
)
{
uint16_t
*
target
;
int
v
=
FFMIN
(
*
p
,
limit
);
int
i
=
0
,
v
=
FFMIN
(
*
p
,
limit
);
if
(
column
)
{
target
=
dst
++
+
dst_signed_linesize
*
(
v
>>
shift_h
);
do
{
target
=
dst
++
+
dst_signed_linesize
*
v
;
update16
(
target
,
max
,
intensity
,
limit
);
}
while
(
++
i
<
step
);
}
else
{
if
(
mirror
)
target
=
dst_data
-
(
v
>>
shift_w
)
-
1
;
else
target
=
dst_data
+
(
v
>>
shift_w
);
uint16_t
*
row
=
dst_data
;
do
{
if
(
mirror
)
target
=
row
-
v
-
1
;
else
target
=
row
+
v
;
update16
(
target
,
max
,
intensity
,
limit
);
row
+=
dst_linesize
;
}
while
(
++
i
<
step
);
}
update16
(
target
,
max
,
intensity
,
limit
);
}
src_data
+=
src_linesize
;
dst_data
+=
dst_linesize
;
dst_data
+=
dst_linesize
*
step
;
}
envelope16
(
s
,
out
,
plane
,
plane
);
...
...
@@ -510,33 +603,42 @@ static void lowpass(WaveformContext *s, AVFrame *in, AVFrame *out,
const
int
src_h
=
AV_CEIL_RSHIFT
(
in
->
height
,
shift_h
);
const
int
src_w
=
AV_CEIL_RSHIFT
(
in
->
width
,
shift_w
);
const
uint8_t
*
src_data
=
in
->
data
[
plane
];
uint8_t
*
dst_data
=
out
->
data
[
plane
]
+
(
column
?
(
offset
>>
shift_h
)
*
dst_linesize
:
offset
>>
shift_w
);
uint8_t
*
const
dst_bottom_line
=
dst_data
+
dst_linesize
*
(
(
s
->
size
>>
shift_h
)
-
1
);
uint8_t
*
dst_data
=
out
->
data
[
plane
]
+
(
column
?
offset
*
dst_linesize
:
offset
);
uint8_t
*
const
dst_bottom_line
=
dst_data
+
dst_linesize
*
(
s
->
size
-
1
);
uint8_t
*
const
dst_line
=
(
mirror
?
dst_bottom_line
:
dst_data
);
const
int
step
=
column
?
1
<<
shift_w
:
1
<<
shift_h
;
const
uint8_t
*
p
;
int
y
;
if
(
!
column
&&
mirror
)
dst_data
+=
s
->
size
>>
shift_w
;
dst_data
+=
s
->
size
;
for
(
y
=
0
;
y
<
src_h
;
y
++
)
{
const
uint8_t
*
src_data_end
=
src_data
+
src_w
;
uint8_t
*
dst
=
dst_line
;
for
(
p
=
src_data
;
p
<
src_data_end
;
p
++
)
{
int
i
=
0
;
uint8_t
*
target
;
if
(
column
)
{
target
=
dst
++
+
dst_signed_linesize
*
(
*
p
>>
shift_h
);
do
{
target
=
dst
++
+
dst_signed_linesize
*
*
p
;
update
(
target
,
max
,
intensity
);
}
while
(
++
i
<
step
);
}
else
{
if
(
mirror
)
target
=
dst_data
-
(
*
p
>>
shift_w
)
-
1
;
else
target
=
dst_data
+
(
*
p
>>
shift_w
);
uint8_t
*
row
=
dst_data
;
do
{
if
(
mirror
)
target
=
row
-
*
p
-
1
;
else
target
=
row
+
*
p
;
update
(
target
,
max
,
intensity
);
row
+=
dst_linesize
;
}
while
(
++
i
<
step
);
}
update
(
target
,
max
,
intensity
);
}
src_data
+=
src_linesize
;
dst_data
+=
dst_linesize
;
dst_data
+=
dst_linesize
*
step
;
}
envelope
(
s
,
out
,
plane
,
plane
);
...
...
@@ -1149,15 +1251,12 @@ static void graticule_green_row(WaveformContext *s, AVFrame *out)
continue
;
for
(
p
=
0
;
p
<
s
->
ncomp
;
p
++
)
{
const
int
is_chroma
=
(
p
==
1
||
p
==
2
);
const
int
shift_w
=
(
is_chroma
?
s
->
desc
->
log2_chroma_w
:
0
);
const
int
shift_h
=
(
is_chroma
?
s
->
desc
->
log2_chroma_h
:
0
);
const
int
v
=
green_yuva_color
[
p
];
for
(
l
=
0
;
l
<
FF_ARRAY_ELEMS
(
lines
[
0
]);
l
++
)
{
int
x
=
offset
+
(
s
->
mirror
?
255
-
lines
[
c
][
l
]
:
lines
[
c
][
l
]);
uint8_t
*
dst
=
out
->
data
[
p
]
+
(
x
>>
shift_w
)
;
uint8_t
*
dst
=
out
->
data
[
p
]
+
x
;
blend_vline
(
dst
,
out
->
height
>>
shift_h
,
out
->
linesize
[
p
],
o1
,
o2
,
v
);
blend_vline
(
dst
,
out
->
height
,
out
->
linesize
[
p
],
o1
,
o2
,
v
);
}
}
...
...
@@ -1177,15 +1276,12 @@ static void graticule16_green_row(WaveformContext *s, AVFrame *out)
continue
;
for
(
p
=
0
;
p
<
s
->
ncomp
;
p
++
)
{
const
int
is_chroma
=
(
p
==
1
||
p
==
2
);
const
int
shift_w
=
(
is_chroma
?
s
->
desc
->
log2_chroma_w
:
0
);
const
int
shift_h
=
(
is_chroma
?
s
->
desc
->
log2_chroma_h
:
0
);
const
int
v
=
green_yuva_color
[
p
]
*
mult
;
for
(
l
=
0
;
l
<
FF_ARRAY_ELEMS
(
lines
[
0
]);
l
++
)
{
int
x
=
offset
+
(
s
->
mirror
?
255
-
lines
[
c
][
l
]
:
lines
[
c
][
l
])
*
mult
;
uint16_t
*
dst
=
(
uint16_t
*
)(
out
->
data
[
p
])
+
(
x
>>
shift_w
)
;
uint16_t
*
dst
=
(
uint16_t
*
)(
out
->
data
[
p
])
+
x
;
blend_vline16
(
dst
,
out
->
height
>>
shift_h
,
out
->
linesize
[
p
],
o1
,
o2
,
v
);
blend_vline16
(
dst
,
out
->
height
,
out
->
linesize
[
p
],
o1
,
o2
,
v
);
}
}
...
...
@@ -1204,15 +1300,12 @@ static void graticule_green_column(WaveformContext *s, AVFrame *out)
continue
;
for
(
p
=
0
;
p
<
s
->
ncomp
;
p
++
)
{
const
int
is_chroma
=
(
p
==
1
||
p
==
2
);
const
int
shift_w
=
(
is_chroma
?
s
->
desc
->
log2_chroma_w
:
0
);
const
int
shift_h
=
(
is_chroma
?
s
->
desc
->
log2_chroma_h
:
0
);
const
int
v
=
green_yuva_color
[
p
];
for
(
l
=
0
;
l
<
FF_ARRAY_ELEMS
(
lines
[
0
]);
l
++
)
{
int
y
=
offset
+
(
s
->
mirror
?
255
-
lines
[
c
][
l
]
:
lines
[
c
][
l
]);
uint8_t
*
dst
=
out
->
data
[
p
]
+
(
y
>>
shift_h
)
*
out
->
linesize
[
p
];
uint8_t
*
dst
=
out
->
data
[
p
]
+
y
*
out
->
linesize
[
p
];
blend_hline
(
dst
,
out
->
width
>>
shift_w
,
o1
,
o2
,
v
);
blend_hline
(
dst
,
out
->
width
,
o1
,
o2
,
v
);
}
}
...
...
@@ -1232,15 +1325,12 @@ static void graticule16_green_column(WaveformContext *s, AVFrame *out)
continue
;
for
(
p
=
0
;
p
<
s
->
ncomp
;
p
++
)
{
const
int
is_chroma
=
(
p
==
1
||
p
==
2
);
const
int
shift_w
=
(
is_chroma
?
s
->
desc
->
log2_chroma_w
:
0
);
const
int
shift_h
=
(
is_chroma
?
s
->
desc
->
log2_chroma_h
:
0
);
const
int
v
=
green_yuva_color
[
p
]
*
mult
;
for
(
l
=
0
;
l
<
FF_ARRAY_ELEMS
(
lines
[
0
]);
l
++
)
{
int
y
=
offset
+
(
s
->
mirror
?
255
-
lines
[
c
][
l
]
:
lines
[
c
][
l
])
*
mult
;
uint16_t
*
dst
=
(
uint16_t
*
)(
out
->
data
[
p
]
+
(
y
>>
shift_h
)
*
out
->
linesize
[
p
]);
uint16_t
*
dst
=
(
uint16_t
*
)(
out
->
data
[
p
]
+
y
*
out
->
linesize
[
p
]);
blend_hline16
(
dst
,
out
->
width
>>
shift_w
,
o1
,
o2
,
v
);
blend_hline16
(
dst
,
out
->
width
,
o1
,
o2
,
v
);
}
}
...
...
@@ -1309,7 +1399,7 @@ static int config_output(AVFilterLink *outlink)
AVFilterContext
*
ctx
=
outlink
->
src
;
AVFilterLink
*
inlink
=
ctx
->
inputs
[
0
];
WaveformContext
*
s
=
ctx
->
priv
;
int
comp
=
0
,
i
,
j
=
0
,
k
,
p
,
size
,
shift
;
int
comp
=
0
,
i
,
j
=
0
,
k
,
p
,
size
;
for
(
i
=
0
;
i
<
s
->
ncomp
;
i
++
)
{
if
((
1
<<
i
)
&
s
->
pcomp
)
...
...
@@ -1331,25 +1421,20 @@ static int config_output(AVFilterLink *outlink)
return
AVERROR
(
ENOMEM
);
for
(
p
=
0
;
p
<
s
->
ncomp
;
p
++
)
{
const
int
is_chroma
=
(
p
==
1
||
p
==
2
);
const
int
shift_w
=
(
is_chroma
?
s
->
desc
->
log2_chroma_w
:
0
);
const
int
shift_h
=
(
is_chroma
?
s
->
desc
->
log2_chroma_h
:
0
);
const
int
plane
=
s
->
desc
->
comp
[
p
].
plane
;
int
offset
;
if
(
!
((
1
<<
p
)
&
s
->
pcomp
))
continue
;
shift
=
s
->
mode
?
shift_h
:
shift_w
;
for
(
k
=
0
;
k
<
4
;
k
++
)
{
s
->
emax
[
plane
][
k
]
=
s
->
peak
+
size
*
(
plane
*
4
+
k
+
0
);
s
->
emin
[
plane
][
k
]
=
s
->
peak
+
size
*
(
plane
*
4
+
k
+
16
);
}
offset
=
j
++
*
s
->
size
*
s
->
display
;
s
->
estart
[
plane
]
=
offset
>>
shift
;
s
->
eend
[
plane
]
=
(
offset
+
s
->
size
-
1
)
>>
shift
;
s
->
estart
[
plane
]
=
offset
;
s
->
eend
[
plane
]
=
(
offset
+
s
->
size
-
1
);
for
(
i
=
0
;
i
<
size
;
i
++
)
{
for
(
k
=
0
;
k
<
4
;
k
++
)
{
s
->
emax
[
plane
][
k
][
i
]
=
s
->
estart
[
plane
];
...
...
@@ -1379,20 +1464,17 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
out
->
pts
=
in
->
pts
;
for
(
k
=
0
;
k
<
s
->
ncomp
;
k
++
)
{
const
int
is_chroma
=
(
k
==
1
||
k
==
2
);
const
int
dst_h
=
AV_CEIL_RSHIFT
(
outlink
->
h
,
(
is_chroma
?
s
->
desc
->
log2_chroma_h
:
0
));
const
int
dst_w
=
AV_CEIL_RSHIFT
(
outlink
->
w
,
(
is_chroma
?
s
->
desc
->
log2_chroma_w
:
0
));
if
(
s
->
bits
<=
8
)
{
for
(
i
=
0
;
i
<
dst_
h
;
i
++
)
for
(
i
=
0
;
i
<
outlink
->
h
;
i
++
)
memset
(
out
->
data
[
s
->
desc
->
comp
[
k
].
plane
]
+
i
*
out
->
linesize
[
s
->
desc
->
comp
[
k
].
plane
],
s
->
bg_color
[
k
],
dst_
w
);
s
->
bg_color
[
k
],
outlink
->
w
);
}
else
{
const
int
mult
=
s
->
size
/
256
;
uint16_t
*
dst
=
(
uint16_t
*
)
out
->
data
[
s
->
desc
->
comp
[
k
].
plane
];
for
(
i
=
0
;
i
<
dst_
h
;
i
++
)
{
for
(
j
=
0
;
j
<
dst_
w
;
j
++
)
for
(
i
=
0
;
i
<
outlink
->
h
;
i
++
)
{
for
(
j
=
0
;
j
<
outlink
->
w
;
j
++
)
dst
[
j
]
=
s
->
bg_color
[
k
]
*
mult
;
dst
+=
out
->
linesize
[
s
->
desc
->
comp
[
k
].
plane
]
/
2
;
}
...
...
tests/ref/fate/filter-waveform_column
View file @
5451be50
#tb 0: 1/25
0, 0, 0, 1,
135168, 0xef68cdfa
0, 1, 1, 1,
135168, 0x3db0cdfa
0, 2, 2, 1,
135168, 0xd5e6cdfa
0, 3, 3, 1,
135168, 0x7f71cdfa
0, 4, 4, 1,
135168, 0x9df7cdfa
0, 5, 5, 1,
135168, 0xff48cdfa
0, 6, 6, 1,
135168, 0xb46acdfa
0, 7, 7, 1,
135168, 0x485acdfa
0, 8, 8, 1,
135168, 0x8be2cdfa
0, 9, 9, 1,
135168, 0x86dbcdfa
0, 10, 10, 1,
135168, 0xdecacdfa
0, 11, 11, 1,
135168, 0x29a3cdfa
0, 12, 12, 1,
135168, 0x04c5cdfa
0, 13, 13, 1,
135168, 0x5f2ccdfa
0, 14, 14, 1,
135168, 0x9680cdfa
0, 15, 15, 1,
135168, 0xe397cdfa
0, 16, 16, 1,
135168, 0xa40ecdfa
0, 17, 17, 1,
135168, 0x5f35cdfa
0, 18, 18, 1,
135168, 0x32fbcdfa
0, 19, 19, 1,
135168, 0x983dcdfa
0, 20, 20, 1,
135168, 0xb67dcdfa
0, 21, 21, 1,
135168, 0x5d41cdfa
0, 22, 22, 1,
135168, 0x35cecdfa
0, 23, 23, 1,
135168, 0xee17cdfa
0, 24, 24, 1,
135168, 0x6599cdfa
0, 25, 25, 1,
135168, 0x918bcdfa
0, 26, 26, 1,
135168, 0xbd30cdfa
0, 27, 27, 1,
135168, 0xc2a6cdfa
0, 28, 28, 1,
135168, 0x688fcdfa
0, 29, 29, 1,
135168, 0xb11bcdfa
0, 30, 30, 1,
135168, 0x8316cdfa
0, 31, 31, 1,
135168, 0x8073cdfa
0, 32, 32, 1,
135168, 0x3bc1cdfa
0, 33, 33, 1,
135168, 0xb581cdfa
0, 34, 34, 1,
135168, 0xdf90cdfa
0, 35, 35, 1,
135168, 0x6297cdfa
0, 36, 36, 1,
135168, 0xe8e8cdfa
0, 37, 37, 1,
135168, 0xa238cdfa
0, 38, 38, 1,
135168, 0xdc68cdfa
0, 39, 39, 1,
135168, 0x7545cdfa
0, 40, 40, 1,
135168, 0xa29dcdfa
0, 41, 41, 1,
135168, 0x874bcdfa
0, 42, 42, 1,
135168, 0x7dfacdfa
0, 43, 43, 1,
135168, 0x7fdfcdfa
0, 44, 44, 1,
135168, 0xebb4cdfa
0, 45, 45, 1,
135168, 0x7295cdfa
0, 46, 46, 1,
135168, 0x54eecdfa
0, 47, 47, 1,
135168, 0x18c4cdfa
0, 48, 48, 1,
135168, 0xaa8fcdfa
0, 49, 49, 1,
135168, 0x99edcdfa
0, 0, 0, 1,
270336, 0x3af3cd54
0, 1, 1, 1,
270336, 0x892ccd54
0, 2, 2, 1,
270336, 0x2171cd54
0, 3, 3, 1,
270336, 0xcaedcd54
0, 4, 4, 1,
270336, 0xe973cd54
0, 5, 5, 1,
270336, 0x4ad3cd54
0, 6, 6, 1,
270336, 0xffe6cd54
0, 7, 7, 1,
270336, 0x93d6cd54
0, 8, 8, 1,
270336, 0xd75ecd54
0, 9, 9, 1,
270336, 0xd257cd54
0, 10, 10, 1,
270336, 0x2a55cd54
0, 11, 11, 1,
270336, 0x751fcd54
0, 12, 12, 1,
270336, 0x5041cd54
0, 13, 13, 1,
270336, 0xaaa8cd54
0, 14, 14, 1,
270336, 0xe1fccd54
0, 15, 15, 1,
270336, 0x2f22cd54
0, 16, 16, 1,
270336, 0xef8acd54
0, 17, 17, 1,
270336, 0xaab1cd54
0, 18, 18, 1,
270336, 0x7e77cd54
0, 19, 19, 1,
270336, 0xe3b9cd54
0, 20, 20, 1,
270336, 0x0208cd54
0, 21, 21, 1,
270336, 0xa8bdcd54
0, 22, 22, 1,
270336, 0x814acd54
0, 23, 23, 1,
270336, 0x39a2cd54
0, 24, 24, 1,
270336, 0xb115cd54
0, 25, 25, 1,
270336, 0xdd07cd54
0, 26, 26, 1,
270336, 0x08bbcd54
0, 27, 27, 1,
270336, 0x0e31cd54
0, 28, 28, 1,
270336, 0xb40bcd54
0, 29, 29, 1,
270336, 0xfc97cd54
0, 30, 30, 1,
270336, 0xce92cd54
0, 31, 31, 1,
270336, 0xcbefcd54
0, 32, 32, 1,
270336, 0x873dcd54
0, 33, 33, 1,
270336, 0x010ccd54
0, 34, 34, 1,
270336, 0x2b1bcd54
0, 35, 35, 1,
270336, 0xae13cd54
0, 36, 36, 1,
270336, 0x3473cd54
0, 37, 37, 1,
270336, 0xedb4cd54
0, 38, 38, 1,
270336, 0x27f3cd54
0, 39, 39, 1,
270336, 0xc0c1cd54
0, 40, 40, 1,
270336, 0xee19cd54
0, 41, 41, 1,
270336, 0xd2c7cd54
0, 42, 42, 1,
270336, 0xc976cd54
0, 43, 43, 1,
270336, 0xcb5bcd54
0, 44, 44, 1,
270336, 0x373fcd54
0, 45, 45, 1,
270336, 0xbe11cd54
0, 46, 46, 1,
270336, 0xa06acd54
0, 47, 47, 1,
270336, 0x6440cd54
0, 48, 48, 1,
270336, 0xf60bcd54
0, 49, 49, 1,
270336, 0xe569cd54
tests/ref/fate/filter-waveform_envelope
View file @
5451be50
#tb 0: 1/25
0, 0, 0, 1,
135168, 0x60746d0d
0, 1, 1, 1,
135168, 0x3a19788d
0, 2, 2, 1,
135168, 0x18e0d247
0, 3, 3, 1,
135168, 0x8b4c177f
0, 4, 4, 1,
135168, 0xc4b34d26
0, 5, 5, 1,
135168, 0xba364556
0, 6, 6, 1,
135168, 0xfcab7319
0, 7, 7, 1,
135168, 0x363d77ce
0, 8, 8, 1,
135168, 0x04367b07
0, 9, 9, 1,
135168, 0x6e5b55a0
0, 10, 10, 1,
135168, 0x33918421
0, 11, 11, 1,
135168, 0x05ba7ff3
0, 12, 12, 1,
135168, 0xcae09d62
0, 13, 13, 1,
135168, 0xca78c5cb
0, 14, 14, 1,
135168, 0x1542db51
0, 15, 15, 1,
135168, 0xe013f307
0, 16, 16, 1,
135168, 0x064008dd
0, 17, 17, 1,
135168, 0xeb7010d5
0, 18, 18, 1,
135168, 0x0cd313e1
0, 19, 19, 1,
135168, 0xaf1b135f
0, 20, 20, 1,
135168, 0x1b3c02c0
0, 21, 21, 1,
135168, 0x50940658
0, 22, 22, 1,
135168, 0x83a2046e
0, 23, 23, 1,
135168, 0x1edf0a54
0, 24, 24, 1,
135168, 0x37141206
0, 25, 25, 1,
135168, 0x7832163e
0, 26, 26, 1,
135168, 0xd4ba13dc
0, 27, 27, 1,
135168, 0x9ba710a3
0, 28, 28, 1,
135168, 0x434a108f
0, 29, 29, 1,
135168, 0x86b01071
0, 30, 30, 1,
135168, 0x7bd91c8d
0, 31, 31, 1,
135168, 0x7a4c179c
0, 32, 32, 1,
135168, 0x023f15b2
0, 33, 33, 1,
135168, 0xe8901b20
0, 34, 34, 1,
135168, 0x49d3157b
0, 35, 35, 1,
135168, 0xdc990af9
0, 36, 36, 1,
135168, 0x1ff707a2
0, 37, 37, 1,
135168, 0xe6610022
0, 38, 38, 1,
135168, 0x6fc3f168
0, 39, 39, 1,
135168, 0x719809ff
0, 40, 40, 1,
135168, 0xd1d9144f
0, 41, 41, 1,
135168, 0x2f801797
0, 42, 42, 1,
135168, 0x111c1eae
0, 43, 43, 1,
135168, 0x23c11c4c
0, 44, 44, 1,
135168, 0x07351d23
0, 45, 45, 1,
135168, 0x04f1173d
0, 46, 46, 1,
135168, 0xb2b71c10
0, 47, 47, 1,
135168, 0x58c01a53
0, 48, 48, 1,
135168, 0xadd11b7a
0, 49, 49, 1,
135168, 0x924123c2
0, 0, 0, 1,
270336, 0x24a46c67
0, 1, 1, 1,
270336, 0x622077e7
0, 2, 2, 1,
270336, 0xb96dd1a1
0, 3, 3, 1,
270336, 0x180b16d9
0, 4, 4, 1,
270336, 0x3db34c80
0, 5, 5, 1,
270336, 0x417444b0
0, 6, 6, 1,
270336, 0x3c017273
0, 7, 7, 1,
270336, 0x572e7728
0, 8, 8, 1,
270336, 0x18e17a61
0, 9, 9, 1,
270336, 0x8d9f54fa
0, 10, 10, 1,
270336, 0x01e5837b
0, 11, 11, 1,
270336, 0x72ae7f4d
0, 12, 12, 1,
270336, 0xb6ab9cbc
0, 13, 13, 1,
270336, 0x28c5c525
0, 14, 14, 1,
270336, 0x6d89daab
0, 15, 15, 1,
270336, 0x761ff261
0, 16, 16, 1,
270336, 0xae200837
0, 17, 17, 1,
270336, 0x09fe102f
0, 18, 18, 1,
270336, 0x4999133b
0, 19, 19, 1,
270336, 0xbc2d12b9
0, 20, 20, 1,
270336, 0x35f8021a
0, 21, 21, 1,
270336, 0x5a8605b2
0, 22, 22, 1,
270336, 0xb25703c8
0, 23, 23, 1,
270336, 0x641909ae
0, 24, 24, 1,
270336, 0x8a6e1160
0, 25, 25, 1,
270336, 0xce181598
0, 26, 26, 1,
270336, 0xc0ea1336
0, 27, 27, 1,
270336, 0x941d0ffd
0, 28, 28, 1,
270336, 0xf94a0fe9
0, 29, 29, 1,
270336, 0x591d0fcb
0, 30, 30, 1,
270336, 0x84fb1be7
0, 31, 31, 1,
270336, 0xda8016f6
0, 32, 32, 1,
270336, 0x8736150c
0, 33, 33, 1,
270336, 0xf5931a7a
0, 34, 34, 1,
270336, 0x582b14d5
0, 35, 35, 1,
270336, 0x85ce0a53
0, 36, 36, 1,
270336, 0xf1c106fc
0, 37, 37, 1,
270336, 0xd023ff6d
0, 38, 38, 1,
270336, 0xe398f0c2
0, 39, 39, 1,
270336, 0x5c910959
0, 40, 40, 1,
270336, 0xfbec13a9
0, 41, 41, 1,
270336, 0x3f1e16f1
0, 42, 42, 1,
270336, 0x6c1a1e08
0, 43, 43, 1,
270336, 0x15091ba6
0, 44, 44, 1,
270336, 0x82721c7d
0, 45, 45, 1,
270336, 0x69a91697
0, 46, 46, 1,
270336, 0xdcbb1b6a
0, 47, 47, 1,
270336, 0x7cfa19ad
0, 48, 48, 1,
270336, 0x65ba1ad4
0, 49, 49, 1,
270336, 0xca65231c
tests/ref/fate/filter-waveform_row
View file @
5451be50
#tb 0: 1/25
0, 0, 0, 1,
110592, 0xa6deed0a
0, 1, 1, 1,
110592, 0xe659ed0a
0, 2, 2, 1,
110592, 0x1ca5ed0a
0, 3, 3, 1,
110592, 0xc2e8ed0a
0, 4, 4, 1,
110592, 0x78d4ed0a
0, 5, 5, 1,
110592, 0xbe2eed0a
0, 6, 6, 1,
110592, 0x482ded0a
0, 7, 7, 1,
110592, 0x994eed0a
0, 8, 8, 1,
110592, 0x93aeed0a
0, 9, 9, 1,
110592, 0xbba8ed0a
0, 10, 10, 1,
110592, 0xeb2bed0a
0, 11, 11, 1,
110592, 0xe41ced0a
0, 12, 12, 1,
110592, 0xb404ed0a
0, 13, 13, 1,
110592, 0xbad1ed0a
0, 14, 14, 1,
110592, 0x952aed0a
0, 15, 15, 1,
110592, 0xbed4ed0a
0, 16, 16, 1,
110592, 0x5c7ded0a
0, 17, 17, 1,
110592, 0xbfe8ed0a
0, 18, 18, 1,
110592, 0xbb6bed0a
0, 19, 19, 1,
110592, 0x7473ed0a
0, 20, 20, 1,
110592, 0x7489ed0a
0, 21, 21, 1,
110592, 0x88a4ed0a
0, 22, 22, 1,
110592, 0xff0ced0a
0, 23, 23, 1,
110592, 0x04b8ed0a
0, 24, 24, 1,
110592, 0xeb8ded0a
0, 25, 25, 1,
110592, 0xc752ed0a
0, 26, 26, 1,
110592, 0x5b1bed0a
0, 27, 27, 1,
110592, 0x1c97ed0a
0, 28, 28, 1,
110592, 0x0a28ed0a
0, 29, 29, 1,
110592, 0x302ced0a
0, 30, 30, 1,
110592, 0x280bed0a
0, 31, 31, 1,
110592, 0xaa30ed0a
0, 32, 32, 1,
110592, 0xce59ed0a
0, 33, 33, 1,
110592, 0xe5f6ed0a
0, 34, 34, 1,
110592, 0x5b34ed0a
0, 35, 35, 1,
110592, 0x1b97ed0a
0, 36, 36, 1,
110592, 0x3283ed0a
0, 37, 37, 1,
110592, 0xe0d1ed0a
0, 38, 38, 1,
110592, 0x03f1ed0a
0, 39, 39, 1,
110592, 0x5744ed0a
0, 40, 40, 1,
110592, 0x8bbfed0a
0, 41, 41, 1,
110592, 0xde8fed0a
0, 42, 42, 1,
110592, 0x9975ed0a
0, 43, 43, 1,
110592, 0x72eded0a
0, 44, 44, 1,
110592, 0xe3efed0a
0, 45, 45, 1,
110592, 0xee7fed0a
0, 46, 46, 1,
110592, 0x44ffed0a
0, 47, 47, 1,
110592, 0x91e6ed0a
0, 48, 48, 1,
110592, 0x0a58ed0a
0, 49, 49, 1,
110592, 0x68d2ed0a
0, 0, 0, 1,
221184, 0x2a1149a3
0, 1, 1, 1,
221184, 0x698c49a3
0, 2, 2, 1,
221184, 0x9fc949a3
0, 3, 3, 1,
221184, 0x461b49a3
0, 4, 4, 1,
221184, 0xfbf849a3
0, 5, 5, 1,
221184, 0x416149a3
0, 6, 6, 1,
221184, 0xcb5149a3
0, 7, 7, 1,
221184, 0x1c8149a3
0, 8, 8, 1,
221184, 0x16e149a3
0, 9, 9, 1,
221184, 0x3edb49a3
0, 10, 10, 1,
221184, 0x6e5e49a3
0, 11, 11, 1,
221184, 0x674f49a3
0, 12, 12, 1,
221184, 0x373749a3
0, 13, 13, 1,
221184, 0x3e0449a3
0, 14, 14, 1,
221184, 0x185d49a3
0, 15, 15, 1,
221184, 0x420749a3
0, 16, 16, 1,
221184, 0xdfa149a3
0, 17, 17, 1,
221184, 0x431b49a3
0, 18, 18, 1,
221184, 0x3e9e49a3
0, 19, 19, 1,
221184, 0xf79749a3
0, 20, 20, 1,
221184, 0xf7ad49a3
0, 21, 21, 1,
221184, 0x0bd749a3
0, 22, 22, 1,
221184, 0x823f49a3
0, 23, 23, 1,
221184, 0x87dc49a3
0, 24, 24, 1,
221184, 0x6ec049a3
0, 25, 25, 1,
221184, 0x4a8549a3
0, 26, 26, 1,
221184, 0xde3f49a3
0, 27, 27, 1,
221184, 0x9fbb49a3
0, 28, 28, 1,
221184, 0x8d4c49a3
0, 29, 29, 1,
221184, 0xb35049a3
0, 30, 30, 1,
221184, 0xab2f49a3
0, 31, 31, 1,
221184, 0x2d6349a3
0, 32, 32, 1,
221184, 0x518c49a3
0, 33, 33, 1,
221184, 0x692949a3
0, 34, 34, 1,
221184, 0xde5849a3
0, 35, 35, 1,
221184, 0x9ebb49a3
0, 36, 36, 1,
221184, 0xb5a749a3
0, 37, 37, 1,
221184, 0x640449a3
0, 38, 38, 1,
221184, 0x871549a3
0, 39, 39, 1,
221184, 0xda6849a3
0, 40, 40, 1,
221184, 0x0ef249a3
0, 41, 41, 1,
221184, 0x61c249a3
0, 42, 42, 1,
221184, 0x1ca849a3
0, 43, 43, 1,
221184, 0xf61149a3
0, 44, 44, 1,
221184, 0x672249a3
0, 45, 45, 1,
221184, 0x71b249a3
0, 46, 46, 1,
221184, 0xc82349a3
0, 47, 47, 1,
221184, 0x151949a3
0, 48, 48, 1,
221184, 0x8d7c49a3
0, 49, 49, 1,
221184, 0xebf649a3
tests/ref/fate/filter-waveform_uv
View file @
5451be50
#tb 0: 1/25
0, 0, 0, 1,
270336, 0x7be065a8
0, 1, 1, 1,
270336, 0xa4e56622
0, 2, 2, 1,
270336, 0xae4a662a
0, 3, 3, 1,
270336, 0x367e6678
0, 4, 4, 1,
270336, 0x970f667c
0, 5, 5, 1,
270336, 0xdf7565f
6
0, 6, 6, 1,
270336, 0xc4a36652
0, 7, 7, 1,
270336, 0x2f426630
0, 8, 8, 1,
270336, 0xc095662c
0, 9, 9, 1,
270336, 0x75fa662
6
0, 10, 10, 1,
270336, 0x95616592
0, 11, 11, 1,
270336, 0x78916608
0, 12, 12, 1,
270336, 0x118c65bc
0, 13, 13, 1,
270336, 0x75446604
0, 14, 14, 1,
270336, 0xe5fb6612
0, 15, 15, 1,
270336, 0x3b8f6618
0, 16, 16, 1,
270336, 0xdeee664
6
0, 17, 17, 1,
270336, 0xede4660
6
0, 18, 18, 1,
270336, 0x6433660
6
0, 19, 19, 1,
270336, 0xfc50663a
0, 20, 20, 1,
270336, 0xe5fc660a
0, 21, 21, 1,
270336, 0x6ecb6612
0, 22, 22, 1,
270336, 0x06a4662a
0, 23, 23, 1,
270336, 0xc7b6665
6
0, 24, 24, 1,
270336, 0x033e663
6
0, 25, 25, 1,
270336, 0xc14f6650
0, 26, 26, 1,
270336, 0x7462662c
0, 27, 27, 1,
270336, 0xf8cb65e4
0, 28, 28, 1,
270336, 0x6351665e
0, 29, 29, 1,
270336, 0x44e6666e
0, 30, 30, 1,
270336, 0x1d5f660e
0, 31, 31, 1,
270336, 0xc248662e
0, 32, 32, 1,
270336, 0x36256642
0, 33, 33, 1,
270336, 0xe4426598
0, 34, 34, 1,
270336, 0xde81665a
0, 35, 35, 1,
270336, 0xaeab6622
0, 36, 36, 1,
270336, 0x134e6668
0, 37, 37, 1,
270336, 0x6c6e665e
0, 38, 38, 1,
270336, 0x500b6670
0, 39, 39, 1,
270336, 0x2c4c6648
0, 40, 40, 1,
270336, 0xe4ae664c
0, 41, 41, 1,
270336, 0x9b7e664c
0, 42, 42, 1,
270336, 0xfefb6570
0, 43, 43, 1,
270336, 0x04e96600
0, 44, 44, 1,
270336, 0xcbba6670
0, 45, 45, 1,
270336, 0x9f9666a
6
0, 46, 46, 1,
270336, 0x85b76642
0, 47, 47, 1,
270336, 0x1a0e667c
0, 48, 48, 1,
270336, 0x92c9662a
0, 49, 49, 1,
270336, 0x9ed76682
0, 0, 0, 1,
540672, 0x8a2521d6
0, 1, 1, 1,
540672, 0xb9a321d6
0, 2, 2, 1,
540672, 0x325421d6
0, 3, 3, 1,
540672, 0xafee21d2
0, 4, 4, 1,
540672, 0x172121d6
0, 5, 5, 1,
540672, 0x24d121d
6
0, 6, 6, 1,
540672, 0x7fec21d6
0, 7, 7, 1,
540672, 0xa8a021d6
0, 8, 8, 1,
540672, 0x29fd21d6
0, 9, 9, 1,
540672, 0x6dfe21d
6
0, 10, 10, 1,
540672, 0xe39821d6
0, 11, 11, 1,
540672, 0x83f521d6
0, 12, 12, 1,
540672, 0x57aa21d6
0, 13, 13, 1,
540672, 0x67b221d6
0, 14, 14, 1,
540672, 0x535821d6
0, 15, 15, 1,
540672, 0xb8ac21d6
0, 16, 16, 1,
540672, 0x27f621d
6
0, 17, 17, 1,
540672, 0x775221d
6
0, 18, 18, 1,
540672, 0x8e6621d
6
0, 19, 19, 1,
540672, 0x74c921d6
0, 20, 20, 1,
540672, 0x04cd21d6
0, 21, 21, 1,
540672, 0xccd421d6
0, 22, 22, 1,
540672, 0x317221d6
0, 23, 23, 1,
540672, 0xd79321d
6
0, 24, 24, 1,
540672, 0xa2ac21d
6
0, 25, 25, 1,
540672, 0x7f0a21d6
0, 26, 26, 1,
540672, 0x483521d6
0, 27, 27, 1,
540672, 0xb65721d6
0, 28, 28, 1,
540672, 0xb77021d6
0, 29, 29, 1,
540672, 0x9fd521d6
0, 30, 30, 1,
540672, 0xb72121d6
0, 31, 31, 1,
540672, 0x540221d6
0, 32, 32, 1,
540672, 0xa34121d6
0, 33, 33, 1,
540672, 0xe01421d6
0, 34, 34, 1,
540672, 0x6fc721d6
0, 35, 35, 1,
540672, 0x7fa621d6
0, 36, 36, 1,
540672, 0xc48c21d6
0, 37, 37, 1,
540672, 0x40f021d6
0, 38, 38, 1,
540672, 0xdf3f21d6
0, 39, 39, 1,
540672, 0xb04321d6
0, 40, 40, 1,
540672, 0x222821d6
0, 41, 41, 1,
540672, 0x2a5521d6
0, 42, 42, 1,
540672, 0x6a4621be
0, 43, 43, 1,
540672, 0xed7f21d6
0, 44, 44, 1,
540672, 0xb16521d6
0, 45, 45, 1,
540672, 0x9f5621d
6
0, 46, 46, 1,
540672, 0x204321d6
0, 47, 47, 1,
540672, 0xc26e21d6
0, 48, 48, 1,
540672, 0x3e8321d6
0, 49, 49, 1,
540672, 0xaaee21d6
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