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
5a6a9e78
Commit
5a6a9e78
authored
Mar 04, 2008
by
Aurelien Jacobs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
move draw_edges() into dsputil
Originally committed as revision 12309 to
svn://svn.ffmpeg.org/ffmpeg/trunk
parent
ce7f71a2
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
129 additions
and
128 deletions
+129
-128
dsputil.c
libavcodec/dsputil.c
+31
-0
dsputil.h
libavcodec/dsputil.h
+2
-0
dsputil_mmx.c
libavcodec/i386/dsputil_mmx.c
+90
-0
mpegvideo_mmx.c
libavcodec/i386/mpegvideo_mmx.c
+0
-90
mpegvideo.c
libavcodec/mpegvideo.c
+3
-35
snow.c
libavcodec/snow.c
+3
-3
No files found.
libavcodec/dsputil.c
View file @
5a6a9e78
...
@@ -404,6 +404,35 @@ int w97_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h){
...
@@ -404,6 +404,35 @@ int w97_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h){
}
}
#endif
#endif
/* draw the edges of width 'w' of an image of size width, height */
//FIXME check that this is ok for mpeg4 interlaced
static
void
draw_edges_c
(
uint8_t
*
buf
,
int
wrap
,
int
width
,
int
height
,
int
w
)
{
uint8_t
*
ptr
,
*
last_line
;
int
i
;
last_line
=
buf
+
(
height
-
1
)
*
wrap
;
for
(
i
=
0
;
i
<
w
;
i
++
)
{
/* top and bottom */
memcpy
(
buf
-
(
i
+
1
)
*
wrap
,
buf
,
width
);
memcpy
(
last_line
+
(
i
+
1
)
*
wrap
,
last_line
,
width
);
}
/* left and right */
ptr
=
buf
;
for
(
i
=
0
;
i
<
height
;
i
++
)
{
memset
(
ptr
-
w
,
ptr
[
0
],
w
);
memset
(
ptr
+
width
,
ptr
[
width
-
1
],
w
);
ptr
+=
wrap
;
}
/* corners */
for
(
i
=
0
;
i
<
w
;
i
++
)
{
memset
(
buf
-
(
i
+
1
)
*
wrap
-
w
,
buf
[
0
],
w
);
/* top left */
memset
(
buf
-
(
i
+
1
)
*
wrap
+
width
,
buf
[
width
-
1
],
w
);
/* top right */
memset
(
last_line
+
(
i
+
1
)
*
wrap
-
w
,
last_line
[
0
],
w
);
/* top left */
memset
(
last_line
+
(
i
+
1
)
*
wrap
+
width
,
last_line
[
width
-
1
],
w
);
/* top right */
}
}
static
void
get_pixels_c
(
DCTELEM
*
restrict
block
,
const
uint8_t
*
pixels
,
int
line_size
)
static
void
get_pixels_c
(
DCTELEM
*
restrict
block
,
const
uint8_t
*
pixels
,
int
line_size
)
{
{
int
i
;
int
i
;
...
@@ -4203,6 +4232,8 @@ void dsputil_init(DSPContext* c, AVCodecContext *avctx)
...
@@ -4203,6 +4232,8 @@ void dsputil_init(DSPContext* c, AVCodecContext *avctx)
c
->
biweight_h264_pixels_tab
[
8
]
=
biweight_h264_pixels2x4_c
;
c
->
biweight_h264_pixels_tab
[
8
]
=
biweight_h264_pixels2x4_c
;
c
->
biweight_h264_pixels_tab
[
9
]
=
biweight_h264_pixels2x2_c
;
c
->
biweight_h264_pixels_tab
[
9
]
=
biweight_h264_pixels2x2_c
;
c
->
draw_edges
=
draw_edges_c
;
#ifdef CONFIG_CAVS_DECODER
#ifdef CONFIG_CAVS_DECODER
ff_cavsdsp_init
(
c
,
avctx
);
ff_cavsdsp_init
(
c
,
avctx
);
#endif
#endif
...
...
libavcodec/dsputil.h
View file @
5a6a9e78
...
@@ -392,6 +392,8 @@ typedef struct DSPContext {
...
@@ -392,6 +392,8 @@ typedef struct DSPContext {
#define BASIS_SHIFT 16
#define BASIS_SHIFT 16
#define RECON_SHIFT 6
#define RECON_SHIFT 6
void
(
*
draw_edges
)(
uint8_t
*
buf
,
int
wrap
,
int
width
,
int
height
,
int
w
);
/* h264 functions */
/* h264 functions */
void
(
*
h264_idct_add
)(
uint8_t
*
dst
,
DCTELEM
*
block
,
int
stride
);
void
(
*
h264_idct_add
)(
uint8_t
*
dst
,
DCTELEM
*
block
,
int
stride
);
void
(
*
h264_idct8_add
)(
uint8_t
*
dst
,
DCTELEM
*
block
,
int
stride
);
void
(
*
h264_idct8_add
)(
uint8_t
*
dst
,
DCTELEM
*
block
,
int
stride
);
...
...
libavcodec/i386/dsputil_mmx.c
View file @
5a6a9e78
...
@@ -696,6 +696,94 @@ static void h263_h_loop_filter_mmx(uint8_t *src, int stride, int qscale){
...
@@ -696,6 +696,94 @@ static void h263_h_loop_filter_mmx(uint8_t *src, int stride, int qscale){
}
}
}
}
/* draw the edges of width 'w' of an image of size width, height
this mmx version can only handle w==8 || w==16 */
static
void
draw_edges_mmx
(
uint8_t
*
buf
,
int
wrap
,
int
width
,
int
height
,
int
w
)
{
uint8_t
*
ptr
,
*
last_line
;
int
i
;
last_line
=
buf
+
(
height
-
1
)
*
wrap
;
/* left and right */
ptr
=
buf
;
if
(
w
==
8
)
{
asm
volatile
(
"1:
\n\t
"
"movd (%0), %%mm0
\n\t
"
"punpcklbw %%mm0, %%mm0
\n\t
"
"punpcklwd %%mm0, %%mm0
\n\t
"
"punpckldq %%mm0, %%mm0
\n\t
"
"movq %%mm0, -8(%0)
\n\t
"
"movq -8(%0, %2), %%mm1
\n\t
"
"punpckhbw %%mm1, %%mm1
\n\t
"
"punpckhwd %%mm1, %%mm1
\n\t
"
"punpckhdq %%mm1, %%mm1
\n\t
"
"movq %%mm1, (%0, %2)
\n\t
"
"add %1, %0
\n\t
"
"cmp %3, %0
\n\t
"
" jb 1b
\n\t
"
:
"+r"
(
ptr
)
:
"r"
((
long
)
wrap
),
"r"
((
long
)
width
),
"r"
(
ptr
+
wrap
*
height
)
);
}
else
{
asm
volatile
(
"1:
\n\t
"
"movd (%0), %%mm0
\n\t
"
"punpcklbw %%mm0, %%mm0
\n\t
"
"punpcklwd %%mm0, %%mm0
\n\t
"
"punpckldq %%mm0, %%mm0
\n\t
"
"movq %%mm0, -8(%0)
\n\t
"
"movq %%mm0, -16(%0)
\n\t
"
"movq -8(%0, %2), %%mm1
\n\t
"
"punpckhbw %%mm1, %%mm1
\n\t
"
"punpckhwd %%mm1, %%mm1
\n\t
"
"punpckhdq %%mm1, %%mm1
\n\t
"
"movq %%mm1, (%0, %2)
\n\t
"
"movq %%mm1, 8(%0, %2)
\n\t
"
"add %1, %0
\n\t
"
"cmp %3, %0
\n\t
"
" jb 1b
\n\t
"
:
"+r"
(
ptr
)
:
"r"
((
long
)
wrap
),
"r"
((
long
)
width
),
"r"
(
ptr
+
wrap
*
height
)
);
}
for
(
i
=
0
;
i
<
w
;
i
+=
4
)
{
/* top and bottom (and hopefully also the corners) */
ptr
=
buf
-
(
i
+
1
)
*
wrap
-
w
;
asm
volatile
(
"1:
\n\t
"
"movq (%1, %0), %%mm0
\n\t
"
"movq %%mm0, (%0)
\n\t
"
"movq %%mm0, (%0, %2)
\n\t
"
"movq %%mm0, (%0, %2, 2)
\n\t
"
"movq %%mm0, (%0, %3)
\n\t
"
"add $8, %0
\n\t
"
"cmp %4, %0
\n\t
"
" jb 1b
\n\t
"
:
"+r"
(
ptr
)
:
"r"
((
long
)
buf
-
(
long
)
ptr
-
w
),
"r"
((
long
)
-
wrap
),
"r"
((
long
)
-
wrap
*
3
),
"r"
(
ptr
+
width
+
2
*
w
)
);
ptr
=
last_line
+
(
i
+
1
)
*
wrap
-
w
;
asm
volatile
(
"1:
\n\t
"
"movq (%1, %0), %%mm0
\n\t
"
"movq %%mm0, (%0)
\n\t
"
"movq %%mm0, (%0, %2)
\n\t
"
"movq %%mm0, (%0, %2, 2)
\n\t
"
"movq %%mm0, (%0, %3)
\n\t
"
"add $8, %0
\n\t
"
"cmp %4, %0
\n\t
"
" jb 1b
\n\t
"
:
"+r"
(
ptr
)
:
"r"
((
long
)
last_line
-
(
long
)
ptr
-
w
),
"r"
((
long
)
wrap
),
"r"
((
long
)
wrap
*
3
),
"r"
(
ptr
+
width
+
2
*
w
)
);
}
}
#define PAETH(cpu, abs3)\
#define PAETH(cpu, abs3)\
void add_png_paeth_prediction_##cpu(uint8_t *dst, uint8_t *src, uint8_t *top, int w, int bpp)\
void add_png_paeth_prediction_##cpu(uint8_t *dst, uint8_t *src, uint8_t *top, int w, int bpp)\
{\
{\
...
@@ -2075,6 +2163,8 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx)
...
@@ -2075,6 +2163,8 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx)
c
->
add_bytes
=
add_bytes_mmx
;
c
->
add_bytes
=
add_bytes_mmx
;
c
->
add_bytes_l2
=
add_bytes_l2_mmx
;
c
->
add_bytes_l2
=
add_bytes_l2_mmx
;
c
->
draw_edges
=
draw_edges_mmx
;
if
(
ENABLE_ANY_H263
)
{
if
(
ENABLE_ANY_H263
)
{
c
->
h263_v_loop_filter
=
h263_v_loop_filter_mmx
;
c
->
h263_v_loop_filter
=
h263_v_loop_filter_mmx
;
c
->
h263_h_loop_filter
=
h263_h_loop_filter_mmx
;
c
->
h263_h_loop_filter
=
h263_h_loop_filter_mmx
;
...
...
libavcodec/i386/mpegvideo_mmx.c
View file @
5a6a9e78
...
@@ -475,94 +475,6 @@ asm volatile(
...
@@ -475,94 +475,6 @@ asm volatile(
);
);
}
}
/* draw the edges of width 'w' of an image of size width, height
this mmx version can only handle w==8 || w==16 */
static
void
draw_edges_mmx
(
uint8_t
*
buf
,
int
wrap
,
int
width
,
int
height
,
int
w
)
{
uint8_t
*
ptr
,
*
last_line
;
int
i
;
last_line
=
buf
+
(
height
-
1
)
*
wrap
;
/* left and right */
ptr
=
buf
;
if
(
w
==
8
)
{
asm
volatile
(
"1:
\n\t
"
"movd (%0), %%mm0
\n\t
"
"punpcklbw %%mm0, %%mm0
\n\t
"
"punpcklwd %%mm0, %%mm0
\n\t
"
"punpckldq %%mm0, %%mm0
\n\t
"
"movq %%mm0, -8(%0)
\n\t
"
"movq -8(%0, %2), %%mm1
\n\t
"
"punpckhbw %%mm1, %%mm1
\n\t
"
"punpckhwd %%mm1, %%mm1
\n\t
"
"punpckhdq %%mm1, %%mm1
\n\t
"
"movq %%mm1, (%0, %2)
\n\t
"
"add %1, %0
\n\t
"
"cmp %3, %0
\n\t
"
" jb 1b
\n\t
"
:
"+r"
(
ptr
)
:
"r"
((
long
)
wrap
),
"r"
((
long
)
width
),
"r"
(
ptr
+
wrap
*
height
)
);
}
else
{
asm
volatile
(
"1:
\n\t
"
"movd (%0), %%mm0
\n\t
"
"punpcklbw %%mm0, %%mm0
\n\t
"
"punpcklwd %%mm0, %%mm0
\n\t
"
"punpckldq %%mm0, %%mm0
\n\t
"
"movq %%mm0, -8(%0)
\n\t
"
"movq %%mm0, -16(%0)
\n\t
"
"movq -8(%0, %2), %%mm1
\n\t
"
"punpckhbw %%mm1, %%mm1
\n\t
"
"punpckhwd %%mm1, %%mm1
\n\t
"
"punpckhdq %%mm1, %%mm1
\n\t
"
"movq %%mm1, (%0, %2)
\n\t
"
"movq %%mm1, 8(%0, %2)
\n\t
"
"add %1, %0
\n\t
"
"cmp %3, %0
\n\t
"
" jb 1b
\n\t
"
:
"+r"
(
ptr
)
:
"r"
((
long
)
wrap
),
"r"
((
long
)
width
),
"r"
(
ptr
+
wrap
*
height
)
);
}
for
(
i
=
0
;
i
<
w
;
i
+=
4
)
{
/* top and bottom (and hopefully also the corners) */
ptr
=
buf
-
(
i
+
1
)
*
wrap
-
w
;
asm
volatile
(
"1:
\n\t
"
"movq (%1, %0), %%mm0
\n\t
"
"movq %%mm0, (%0)
\n\t
"
"movq %%mm0, (%0, %2)
\n\t
"
"movq %%mm0, (%0, %2, 2)
\n\t
"
"movq %%mm0, (%0, %3)
\n\t
"
"add $8, %0
\n\t
"
"cmp %4, %0
\n\t
"
" jb 1b
\n\t
"
:
"+r"
(
ptr
)
:
"r"
((
long
)
buf
-
(
long
)
ptr
-
w
),
"r"
((
long
)
-
wrap
),
"r"
((
long
)
-
wrap
*
3
),
"r"
(
ptr
+
width
+
2
*
w
)
);
ptr
=
last_line
+
(
i
+
1
)
*
wrap
-
w
;
asm
volatile
(
"1:
\n\t
"
"movq (%1, %0), %%mm0
\n\t
"
"movq %%mm0, (%0)
\n\t
"
"movq %%mm0, (%0, %2)
\n\t
"
"movq %%mm0, (%0, %2, 2)
\n\t
"
"movq %%mm0, (%0, %3)
\n\t
"
"add $8, %0
\n\t
"
"cmp %4, %0
\n\t
"
" jb 1b
\n\t
"
:
"+r"
(
ptr
)
:
"r"
((
long
)
last_line
-
(
long
)
ptr
-
w
),
"r"
((
long
)
wrap
),
"r"
((
long
)
wrap
*
3
),
"r"
(
ptr
+
width
+
2
*
w
)
);
}
}
static
void
denoise_dct_mmx
(
MpegEncContext
*
s
,
DCTELEM
*
block
){
static
void
denoise_dct_mmx
(
MpegEncContext
*
s
,
DCTELEM
*
block
){
const
int
intra
=
s
->
mb_intra
;
const
int
intra
=
s
->
mb_intra
;
int
*
sum
=
s
->
dct_error_sum
[
intra
];
int
*
sum
=
s
->
dct_error_sum
[
intra
];
...
@@ -718,8 +630,6 @@ void MPV_common_init_mmx(MpegEncContext *s)
...
@@ -718,8 +630,6 @@ void MPV_common_init_mmx(MpegEncContext *s)
s
->
dct_unquantize_mpeg2_intra
=
dct_unquantize_mpeg2_intra_mmx
;
s
->
dct_unquantize_mpeg2_intra
=
dct_unquantize_mpeg2_intra_mmx
;
s
->
dct_unquantize_mpeg2_inter
=
dct_unquantize_mpeg2_inter_mmx
;
s
->
dct_unquantize_mpeg2_inter
=
dct_unquantize_mpeg2_inter_mmx
;
draw_edges
=
draw_edges_mmx
;
if
(
mm_flags
&
MM_SSE2
)
{
if
(
mm_flags
&
MM_SSE2
)
{
s
->
denoise_dct
=
denoise_dct_sse2
;
s
->
denoise_dct
=
denoise_dct_sse2
;
}
else
{
}
else
{
...
...
libavcodec/mpegvideo.c
View file @
5a6a9e78
...
@@ -53,14 +53,11 @@ static void dct_unquantize_h263_intra_c(MpegEncContext *s,
...
@@ -53,14 +53,11 @@ static void dct_unquantize_h263_intra_c(MpegEncContext *s,
DCTELEM
*
block
,
int
n
,
int
qscale
);
DCTELEM
*
block
,
int
n
,
int
qscale
);
static
void
dct_unquantize_h263_inter_c
(
MpegEncContext
*
s
,
static
void
dct_unquantize_h263_inter_c
(
MpegEncContext
*
s
,
DCTELEM
*
block
,
int
n
,
int
qscale
);
DCTELEM
*
block
,
int
n
,
int
qscale
);
static
void
draw_edges_c
(
uint8_t
*
buf
,
int
wrap
,
int
width
,
int
height
,
int
w
);
extern
int
XVMC_field_start
(
MpegEncContext
*
s
,
AVCodecContext
*
avctx
);
extern
int
XVMC_field_start
(
MpegEncContext
*
s
,
AVCodecContext
*
avctx
);
extern
void
XVMC_field_end
(
MpegEncContext
*
s
);
extern
void
XVMC_field_end
(
MpegEncContext
*
s
);
extern
void
XVMC_decode_mb
(
MpegEncContext
*
s
);
extern
void
XVMC_decode_mb
(
MpegEncContext
*
s
);
void
(
*
draw_edges
)(
uint8_t
*
buf
,
int
wrap
,
int
width
,
int
height
,
int
w
)
=
draw_edges_c
;
/* enable all paranoid tests for rounding, overflows, etc... */
/* enable all paranoid tests for rounding, overflows, etc... */
//#define PARANOID
//#define PARANOID
...
@@ -793,35 +790,6 @@ void init_vlc_rl(RLTable *rl, int use_static)
...
@@ -793,35 +790,6 @@ void init_vlc_rl(RLTable *rl, int use_static)
}
}
}
}
/* draw the edges of width 'w' of an image of size width, height */
//FIXME check that this is ok for mpeg4 interlaced
static
void
draw_edges_c
(
uint8_t
*
buf
,
int
wrap
,
int
width
,
int
height
,
int
w
)
{
uint8_t
*
ptr
,
*
last_line
;
int
i
;
last_line
=
buf
+
(
height
-
1
)
*
wrap
;
for
(
i
=
0
;
i
<
w
;
i
++
)
{
/* top and bottom */
memcpy
(
buf
-
(
i
+
1
)
*
wrap
,
buf
,
width
);
memcpy
(
last_line
+
(
i
+
1
)
*
wrap
,
last_line
,
width
);
}
/* left and right */
ptr
=
buf
;
for
(
i
=
0
;
i
<
height
;
i
++
)
{
memset
(
ptr
-
w
,
ptr
[
0
],
w
);
memset
(
ptr
+
width
,
ptr
[
width
-
1
],
w
);
ptr
+=
wrap
;
}
/* corners */
for
(
i
=
0
;
i
<
w
;
i
++
)
{
memset
(
buf
-
(
i
+
1
)
*
wrap
-
w
,
buf
[
0
],
w
);
/* top left */
memset
(
buf
-
(
i
+
1
)
*
wrap
+
width
,
buf
[
width
-
1
],
w
);
/* top right */
memset
(
last_line
+
(
i
+
1
)
*
wrap
-
w
,
last_line
[
0
],
w
);
/* top left */
memset
(
last_line
+
(
i
+
1
)
*
wrap
+
width
,
last_line
[
width
-
1
],
w
);
/* top right */
}
}
int
ff_find_unused_picture
(
MpegEncContext
*
s
,
int
shared
){
int
ff_find_unused_picture
(
MpegEncContext
*
s
,
int
shared
){
int
i
;
int
i
;
...
@@ -1015,9 +983,9 @@ void MPV_frame_end(MpegEncContext *s)
...
@@ -1015,9 +983,9 @@ void MPV_frame_end(MpegEncContext *s)
}
else
}
else
#endif
#endif
if
(
s
->
unrestricted_mv
&&
s
->
current_picture
.
reference
&&
!
s
->
intra_only
&&
!
(
s
->
flags
&
CODEC_FLAG_EMU_EDGE
))
{
if
(
s
->
unrestricted_mv
&&
s
->
current_picture
.
reference
&&
!
s
->
intra_only
&&
!
(
s
->
flags
&
CODEC_FLAG_EMU_EDGE
))
{
draw_edges
(
s
->
current_picture
.
data
[
0
],
s
->
linesize
,
s
->
h_edge_pos
,
s
->
v_edge_pos
,
EDGE_WIDTH
);
s
->
dsp
.
draw_edges
(
s
->
current_picture
.
data
[
0
],
s
->
linesize
,
s
->
h_edge_pos
,
s
->
v_edge_pos
,
EDGE_WIDTH
);
draw_edges
(
s
->
current_picture
.
data
[
1
],
s
->
uvlinesize
,
s
->
h_edge_pos
>>
1
,
s
->
v_edge_pos
>>
1
,
EDGE_WIDTH
/
2
);
s
->
dsp
.
draw_edges
(
s
->
current_picture
.
data
[
1
],
s
->
uvlinesize
,
s
->
h_edge_pos
>>
1
,
s
->
v_edge_pos
>>
1
,
EDGE_WIDTH
/
2
);
draw_edges
(
s
->
current_picture
.
data
[
2
],
s
->
uvlinesize
,
s
->
h_edge_pos
>>
1
,
s
->
v_edge_pos
>>
1
,
EDGE_WIDTH
/
2
);
s
->
dsp
.
draw_edges
(
s
->
current_picture
.
data
[
2
],
s
->
uvlinesize
,
s
->
h_edge_pos
>>
1
,
s
->
v_edge_pos
>>
1
,
EDGE_WIDTH
/
2
);
}
}
emms_c
();
emms_c
();
...
...
libavcodec/snow.c
View file @
5a6a9e78
...
@@ -4120,9 +4120,9 @@ static int frame_start(SnowContext *s){
...
@@ -4120,9 +4120,9 @@ static int frame_start(SnowContext *s){
int
h
=
s
->
avctx
->
height
;
int
h
=
s
->
avctx
->
height
;
if
(
s
->
current_picture
.
data
[
0
]){
if
(
s
->
current_picture
.
data
[
0
]){
draw_edges
(
s
->
current_picture
.
data
[
0
],
s
->
current_picture
.
linesize
[
0
],
w
,
h
,
EDGE_WIDTH
);
s
->
dsp
.
draw_edges
(
s
->
current_picture
.
data
[
0
],
s
->
current_picture
.
linesize
[
0
],
w
,
h
,
EDGE_WIDTH
);
draw_edges
(
s
->
current_picture
.
data
[
1
],
s
->
current_picture
.
linesize
[
1
],
w
>>
1
,
h
>>
1
,
EDGE_WIDTH
/
2
);
s
->
dsp
.
draw_edges
(
s
->
current_picture
.
data
[
1
],
s
->
current_picture
.
linesize
[
1
],
w
>>
1
,
h
>>
1
,
EDGE_WIDTH
/
2
);
draw_edges
(
s
->
current_picture
.
data
[
2
],
s
->
current_picture
.
linesize
[
2
],
w
>>
1
,
h
>>
1
,
EDGE_WIDTH
/
2
);
s
->
dsp
.
draw_edges
(
s
->
current_picture
.
data
[
2
],
s
->
current_picture
.
linesize
[
2
],
w
>>
1
,
h
>>
1
,
EDGE_WIDTH
/
2
);
}
}
tmp
=
s
->
last_picture
[
s
->
max_ref_frames
-
1
];
tmp
=
s
->
last_picture
[
s
->
max_ref_frames
-
1
];
...
...
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