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
0338c396
Commit
0338c396
authored
Nov 05, 2013
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dsputil: Split off H.263 bits into their own H263DSPContext
parent
86f91080
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
210 additions
and
118 deletions
+210
-118
configure
configure
+5
-4
Makefile
libavcodec/Makefile
+1
-0
dsputil.c
libavcodec/dsputil.c
+0
-79
dsputil.h
libavcodec/dsputil.h
+0
-3
h263.c
libavcodec/h263.c
+16
-16
h263data.h
libavcodec/h263data.h
+0
-5
h263dec.c
libavcodec/h263dec.c
+1
-0
h263dsp.c
libavcodec/h263dsp.c
+108
-0
h263dsp.h
libavcodec/h263dsp.h
+34
-0
mpegvideo.h
libavcodec/mpegvideo.h
+2
-1
mpegvideo_enc.c
libavcodec/mpegvideo_enc.c
+1
-0
rv10.c
libavcodec/rv10.c
+1
-0
Makefile
libavcodec/x86/Makefile
+2
-2
dsputil_init.c
libavcodec/x86/dsputil_init.c
+0
-8
h263dsp_init.c
libavcodec/x86/h263dsp_init.c
+39
-0
No files found.
configure
View file @
0338c396
...
@@ -1384,6 +1384,7 @@ CONFIG_EXTRA="
...
@@ -1384,6 +1384,7 @@ CONFIG_EXTRA="
gcrypt
gcrypt
golomb
golomb
gplv3
gplv3
h263dsp
h264chroma
h264chroma
h264dsp
h264dsp
h264pred
h264pred
...
@@ -1598,8 +1599,8 @@ g2m_decoder_deps="zlib"
...
@@ -1598,8 +1599,8 @@ g2m_decoder_deps="zlib"
g2m_decoder_select
=
"dsputil"
g2m_decoder_select
=
"dsputil"
h261_decoder_select
=
"error_resilience mpegvideo"
h261_decoder_select
=
"error_resilience mpegvideo"
h261_encoder_select
=
"aandcttables mpegvideoenc"
h261_encoder_select
=
"aandcttables mpegvideoenc"
h263_decoder_select
=
"error_resilience h263_parser mpegvideo"
h263_decoder_select
=
"error_resilience h263_parser
h263dsp
mpegvideo"
h263_encoder_select
=
"aandcttables mpegvideoenc"
h263_encoder_select
=
"aandcttables
h263dsp
mpegvideoenc"
h263i_decoder_select
=
"h263_decoder"
h263i_decoder_select
=
"h263_decoder"
h263p_encoder_select
=
"h263_encoder"
h263p_encoder_select
=
"h263_encoder"
h264_decoder_select
=
"golomb h264chroma h264dsp h264pred h264qpel videodsp"
h264_decoder_select
=
"golomb h264chroma h264dsp h264pred h264qpel videodsp"
...
@@ -1665,9 +1666,9 @@ qcelp_decoder_select="lsp"
...
@@ -1665,9 +1666,9 @@ qcelp_decoder_select="lsp"
qdm2_decoder_select
=
"mdct rdft mpegaudiodsp"
qdm2_decoder_select
=
"mdct rdft mpegaudiodsp"
ra_144_encoder_select
=
"audio_frame_queue lpc"
ra_144_encoder_select
=
"audio_frame_queue lpc"
ralf_decoder_select
=
"golomb"
ralf_decoder_select
=
"golomb"
rv10_decoder_select
=
"error_resilience h263_decoder"
rv10_decoder_select
=
"error_resilience h263_decoder
h263dsp
"
rv10_encoder_select
=
"h263_encoder"
rv10_encoder_select
=
"h263_encoder"
rv20_decoder_select
=
"error_resilience h263_decoder"
rv20_decoder_select
=
"error_resilience h263_decoder
h263dsp
"
rv20_encoder_select
=
"h263_encoder"
rv20_encoder_select
=
"h263_encoder"
rv30_decoder_select
=
"error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
rv30_decoder_select
=
"error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
rv40_decoder_select
=
"error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
rv40_decoder_select
=
"error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
...
...
libavcodec/Makefile
View file @
0338c396
...
@@ -41,6 +41,7 @@ FFT-OBJS-$(CONFIG_HARDCODED_TABLES) += cos_tables.o cos_fixed_tables.o
...
@@ -41,6 +41,7 @@ FFT-OBJS-$(CONFIG_HARDCODED_TABLES) += cos_tables.o cos_fixed_tables.o
OBJS-$(CONFIG_FFT)
+=
avfft.o
fft_fixed.o
fft_float.o
\
OBJS-$(CONFIG_FFT)
+=
avfft.o
fft_fixed.o
fft_float.o
\
$(FFT-OBJS-yes)
$(FFT-OBJS-yes)
OBJS-$(CONFIG_GOLOMB)
+=
golomb.o
OBJS-$(CONFIG_GOLOMB)
+=
golomb.o
OBJS-$(CONFIG_H263DSP)
+=
h263dsp.o
OBJS-$(CONFIG_H264CHROMA)
+=
h264chroma.o
OBJS-$(CONFIG_H264CHROMA)
+=
h264chroma.o
OBJS-$(CONFIG_H264DSP)
+=
h264dsp.o
h264idct.o
OBJS-$(CONFIG_H264DSP)
+=
h264dsp.o
h264idct.o
OBJS-$(CONFIG_H264PRED)
+=
h264pred.o
OBJS-$(CONFIG_H264PRED)
+=
h264pred.o
...
...
libavcodec/dsputil.c
View file @
0338c396
...
@@ -1409,80 +1409,6 @@ static void put_mspel8_mc22_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride)
...
@@ -1409,80 +1409,6 @@ static void put_mspel8_mc22_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride)
wmv2_mspel8_v_lowpass
(
dst
,
halfH
+
8
,
stride
,
8
,
8
);
wmv2_mspel8_v_lowpass
(
dst
,
halfH
+
8
,
stride
,
8
,
8
);
}
}
static
void
h263_v_loop_filter_c
(
uint8_t
*
src
,
int
stride
,
int
qscale
){
if
(
CONFIG_H263_DECODER
||
CONFIG_H263_ENCODER
)
{
int
x
;
const
int
strength
=
ff_h263_loop_filter_strength
[
qscale
];
for
(
x
=
0
;
x
<
8
;
x
++
){
int
d1
,
d2
,
ad1
;
int
p0
=
src
[
x
-
2
*
stride
];
int
p1
=
src
[
x
-
1
*
stride
];
int
p2
=
src
[
x
+
0
*
stride
];
int
p3
=
src
[
x
+
1
*
stride
];
int
d
=
(
p0
-
p3
+
4
*
(
p2
-
p1
))
/
8
;
if
(
d
<-
2
*
strength
)
d1
=
0
;
else
if
(
d
<-
strength
)
d1
=-
2
*
strength
-
d
;
else
if
(
d
<
strength
)
d1
=
d
;
else
if
(
d
<
2
*
strength
)
d1
=
2
*
strength
-
d
;
else
d1
=
0
;
p1
+=
d1
;
p2
-=
d1
;
if
(
p1
&
256
)
p1
=
~
(
p1
>>
31
);
if
(
p2
&
256
)
p2
=
~
(
p2
>>
31
);
src
[
x
-
1
*
stride
]
=
p1
;
src
[
x
+
0
*
stride
]
=
p2
;
ad1
=
FFABS
(
d1
)
>>
1
;
d2
=
av_clip
((
p0
-
p3
)
/
4
,
-
ad1
,
ad1
);
src
[
x
-
2
*
stride
]
=
p0
-
d2
;
src
[
x
+
stride
]
=
p3
+
d2
;
}
}
}
static
void
h263_h_loop_filter_c
(
uint8_t
*
src
,
int
stride
,
int
qscale
){
if
(
CONFIG_H263_DECODER
||
CONFIG_H263_ENCODER
)
{
int
y
;
const
int
strength
=
ff_h263_loop_filter_strength
[
qscale
];
for
(
y
=
0
;
y
<
8
;
y
++
){
int
d1
,
d2
,
ad1
;
int
p0
=
src
[
y
*
stride
-
2
];
int
p1
=
src
[
y
*
stride
-
1
];
int
p2
=
src
[
y
*
stride
+
0
];
int
p3
=
src
[
y
*
stride
+
1
];
int
d
=
(
p0
-
p3
+
4
*
(
p2
-
p1
))
/
8
;
if
(
d
<-
2
*
strength
)
d1
=
0
;
else
if
(
d
<-
strength
)
d1
=-
2
*
strength
-
d
;
else
if
(
d
<
strength
)
d1
=
d
;
else
if
(
d
<
2
*
strength
)
d1
=
2
*
strength
-
d
;
else
d1
=
0
;
p1
+=
d1
;
p2
-=
d1
;
if
(
p1
&
256
)
p1
=
~
(
p1
>>
31
);
if
(
p2
&
256
)
p2
=
~
(
p2
>>
31
);
src
[
y
*
stride
-
1
]
=
p1
;
src
[
y
*
stride
+
0
]
=
p2
;
ad1
=
FFABS
(
d1
)
>>
1
;
d2
=
av_clip
((
p0
-
p3
)
/
4
,
-
ad1
,
ad1
);
src
[
y
*
stride
-
2
]
=
p0
-
d2
;
src
[
y
*
stride
+
1
]
=
p3
+
d2
;
}
}
}
static
inline
int
pix_abs16_c
(
void
*
v
,
uint8_t
*
pix1
,
uint8_t
*
pix2
,
int
line_size
,
int
h
)
static
inline
int
pix_abs16_c
(
void
*
v
,
uint8_t
*
pix1
,
uint8_t
*
pix2
,
int
line_size
,
int
h
)
{
{
int
s
,
i
;
int
s
,
i
;
...
@@ -2701,11 +2627,6 @@ av_cold void ff_dsputil_init(DSPContext* c, AVCodecContext *avctx)
...
@@ -2701,11 +2627,6 @@ av_cold void ff_dsputil_init(DSPContext* c, AVCodecContext *avctx)
c
->
bswap_buf
=
bswap_buf
;
c
->
bswap_buf
=
bswap_buf
;
c
->
bswap16_buf
=
bswap16_buf
;
c
->
bswap16_buf
=
bswap16_buf
;
if
(
CONFIG_H263_DECODER
||
CONFIG_H263_ENCODER
)
{
c
->
h263_h_loop_filter
=
h263_h_loop_filter_c
;
c
->
h263_v_loop_filter
=
h263_v_loop_filter_c
;
}
c
->
try_8x8basis
=
try_8x8basis_c
;
c
->
try_8x8basis
=
try_8x8basis_c
;
c
->
add_8x8basis
=
add_8x8basis_c
;
c
->
add_8x8basis
=
add_8x8basis_c
;
...
...
libavcodec/dsputil.h
View file @
0338c396
...
@@ -202,9 +202,6 @@ typedef struct DSPContext {
...
@@ -202,9 +202,6 @@ typedef struct DSPContext {
void
(
*
bswap_buf
)(
uint32_t
*
dst
,
const
uint32_t
*
src
,
int
w
);
void
(
*
bswap_buf
)(
uint32_t
*
dst
,
const
uint32_t
*
src
,
int
w
);
void
(
*
bswap16_buf
)(
uint16_t
*
dst
,
const
uint16_t
*
src
,
int
len
);
void
(
*
bswap16_buf
)(
uint16_t
*
dst
,
const
uint16_t
*
src
,
int
len
);
void
(
*
h263_v_loop_filter
)(
uint8_t
*
src
,
int
stride
,
int
qscale
);
void
(
*
h263_h_loop_filter
)(
uint8_t
*
src
,
int
stride
,
int
qscale
);
/* assume len is a multiple of 8, and arrays are 16-byte aligned */
/* assume len is a multiple of 8, and arrays are 16-byte aligned */
void
(
*
vector_clipf
)(
float
*
dst
/* align 16 */
,
const
float
*
src
/* align 16 */
,
float
min
,
float
max
,
int
len
/* align 16 */
);
void
(
*
vector_clipf
)(
float
*
dst
/* align 16 */
,
const
float
*
src
/* align 16 */
,
float
min
,
float
max
,
int
len
/* align 16 */
);
...
...
libavcodec/h263.c
View file @
0338c396
...
@@ -152,8 +152,8 @@ void ff_h263_loop_filter(MpegEncContext * s){
...
@@ -152,8 +152,8 @@ void ff_h263_loop_filter(MpegEncContext * s){
*/
*/
if
(
!
IS_SKIP
(
s
->
current_picture
.
mb_type
[
xy
]))
{
if
(
!
IS_SKIP
(
s
->
current_picture
.
mb_type
[
xy
]))
{
qp_c
=
s
->
qscale
;
qp_c
=
s
->
qscale
;
s
->
dsp
.
h263_v_loop_filter
(
dest_y
+
8
*
linesize
,
linesize
,
qp_c
);
s
->
h263dsp
.
h263_v_loop_filter
(
dest_y
+
8
*
linesize
,
linesize
,
qp_c
);
s
->
dsp
.
h263_v_loop_filter
(
dest_y
+
8
*
linesize
+
8
,
linesize
,
qp_c
);
s
->
h263dsp
.
h263_v_loop_filter
(
dest_y
+
8
*
linesize
+
8
,
linesize
,
qp_c
);
}
else
}
else
qp_c
=
0
;
qp_c
=
0
;
...
@@ -172,15 +172,15 @@ void ff_h263_loop_filter(MpegEncContext * s){
...
@@ -172,15 +172,15 @@ void ff_h263_loop_filter(MpegEncContext * s){
if
(
qp_tc
){
if
(
qp_tc
){
const
int
chroma_qp
=
s
->
chroma_qscale_table
[
qp_tc
];
const
int
chroma_qp
=
s
->
chroma_qscale_table
[
qp_tc
];
s
->
dsp
.
h263_v_loop_filter
(
dest_y
,
linesize
,
qp_tc
);
s
->
h263dsp
.
h263_v_loop_filter
(
dest_y
,
linesize
,
qp_tc
);
s
->
dsp
.
h263_v_loop_filter
(
dest_y
+
8
,
linesize
,
qp_tc
);
s
->
h263dsp
.
h263_v_loop_filter
(
dest_y
+
8
,
linesize
,
qp_tc
);
s
->
dsp
.
h263_v_loop_filter
(
dest_cb
,
uvlinesize
,
chroma_qp
);
s
->
h263dsp
.
h263_v_loop_filter
(
dest_cb
,
uvlinesize
,
chroma_qp
);
s
->
dsp
.
h263_v_loop_filter
(
dest_cr
,
uvlinesize
,
chroma_qp
);
s
->
h263dsp
.
h263_v_loop_filter
(
dest_cr
,
uvlinesize
,
chroma_qp
);
}
}
if
(
qp_tt
)
if
(
qp_tt
)
s
->
dsp
.
h263_h_loop_filter
(
dest_y
-
8
*
linesize
+
8
,
linesize
,
qp_tt
);
s
->
h263dsp
.
h263_h_loop_filter
(
dest_y
-
8
*
linesize
+
8
,
linesize
,
qp_tt
);
if
(
s
->
mb_x
){
if
(
s
->
mb_x
){
if
(
qp_tt
||
IS_SKIP
(
s
->
current_picture
.
mb_type
[
xy
-
1
-
s
->
mb_stride
]))
if
(
qp_tt
||
IS_SKIP
(
s
->
current_picture
.
mb_type
[
xy
-
1
-
s
->
mb_stride
]))
...
@@ -190,17 +190,17 @@ void ff_h263_loop_filter(MpegEncContext * s){
...
@@ -190,17 +190,17 @@ void ff_h263_loop_filter(MpegEncContext * s){
if
(
qp_dt
){
if
(
qp_dt
){
const
int
chroma_qp
=
s
->
chroma_qscale_table
[
qp_dt
];
const
int
chroma_qp
=
s
->
chroma_qscale_table
[
qp_dt
];
s
->
dsp
.
h263_h_loop_filter
(
dest_y
-
8
*
linesize
,
linesize
,
qp_dt
);
s
->
h263dsp
.
h263_h_loop_filter
(
dest_y
-
8
*
linesize
,
linesize
,
qp_dt
);
s
->
dsp
.
h263_h_loop_filter
(
dest_cb
-
8
*
uvlinesize
,
uvlinesize
,
chroma_qp
);
s
->
h263dsp
.
h263_h_loop_filter
(
dest_cb
-
8
*
uvlinesize
,
uvlinesize
,
chroma_qp
);
s
->
dsp
.
h263_h_loop_filter
(
dest_cr
-
8
*
uvlinesize
,
uvlinesize
,
chroma_qp
);
s
->
h263dsp
.
h263_h_loop_filter
(
dest_cr
-
8
*
uvlinesize
,
uvlinesize
,
chroma_qp
);
}
}
}
}
}
}
if
(
qp_c
){
if
(
qp_c
){
s
->
dsp
.
h263_h_loop_filter
(
dest_y
+
8
,
linesize
,
qp_c
);
s
->
h263dsp
.
h263_h_loop_filter
(
dest_y
+
8
,
linesize
,
qp_c
);
if
(
s
->
mb_y
+
1
==
s
->
mb_height
)
if
(
s
->
mb_y
+
1
==
s
->
mb_height
)
s
->
dsp
.
h263_h_loop_filter
(
dest_y
+
8
*
linesize
+
8
,
linesize
,
qp_c
);
s
->
h263dsp
.
h263_h_loop_filter
(
dest_y
+
8
*
linesize
+
8
,
linesize
,
qp_c
);
}
}
if
(
s
->
mb_x
){
if
(
s
->
mb_x
){
...
@@ -211,12 +211,12 @@ void ff_h263_loop_filter(MpegEncContext * s){
...
@@ -211,12 +211,12 @@ void ff_h263_loop_filter(MpegEncContext * s){
qp_lc
=
s
->
current_picture
.
qscale_table
[
xy
-
1
];
qp_lc
=
s
->
current_picture
.
qscale_table
[
xy
-
1
];
if
(
qp_lc
){
if
(
qp_lc
){
s
->
dsp
.
h263_h_loop_filter
(
dest_y
,
linesize
,
qp_lc
);
s
->
h263dsp
.
h263_h_loop_filter
(
dest_y
,
linesize
,
qp_lc
);
if
(
s
->
mb_y
+
1
==
s
->
mb_height
){
if
(
s
->
mb_y
+
1
==
s
->
mb_height
){
const
int
chroma_qp
=
s
->
chroma_qscale_table
[
qp_lc
];
const
int
chroma_qp
=
s
->
chroma_qscale_table
[
qp_lc
];
s
->
dsp
.
h263_h_loop_filter
(
dest_y
+
8
*
linesize
,
linesize
,
qp_lc
);
s
->
h263dsp
.
h263_h_loop_filter
(
dest_y
+
8
*
linesize
,
linesize
,
qp_lc
);
s
->
dsp
.
h263_h_loop_filter
(
dest_cb
,
uvlinesize
,
chroma_qp
);
s
->
h263dsp
.
h263_h_loop_filter
(
dest_cb
,
uvlinesize
,
chroma_qp
);
s
->
dsp
.
h263_h_loop_filter
(
dest_cr
,
uvlinesize
,
chroma_qp
);
s
->
h263dsp
.
h263_h_loop_filter
(
dest_cr
,
uvlinesize
,
chroma_qp
);
}
}
}
}
}
}
...
...
libavcodec/h263data.h
View file @
0338c396
...
@@ -272,11 +272,6 @@ uint8_t ff_mba_length[7]={
...
@@ -272,11 +272,6 @@ uint8_t ff_mba_length[7]={
6
,
7
,
9
,
11
,
13
,
14
,
14
6
,
7
,
9
,
11
,
13
,
14
,
14
};
};
const
uint8_t
ff_h263_loop_filter_strength
[
32
]
=
{
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0
,
1
,
1
,
2
,
2
,
3
,
3
,
4
,
4
,
4
,
5
,
5
,
6
,
6
,
7
,
7
,
7
,
8
,
8
,
8
,
9
,
9
,
9
,
10
,
10
,
10
,
11
,
11
,
11
,
12
,
12
,
12
};
const
AVRational
ff_h263_pixel_aspect
[
16
]
=
{
const
AVRational
ff_h263_pixel_aspect
[
16
]
=
{
{
0
,
1
},
{
0
,
1
},
{
1
,
1
},
{
1
,
1
},
...
...
libavcodec/h263dec.c
View file @
0338c396
...
@@ -116,6 +116,7 @@ av_cold int ff_h263_decode_init(AVCodecContext *avctx)
...
@@ -116,6 +116,7 @@ av_cold int ff_h263_decode_init(AVCodecContext *avctx)
if
((
ret
=
ff_MPV_common_init
(
s
))
<
0
)
if
((
ret
=
ff_MPV_common_init
(
s
))
<
0
)
return
ret
;
return
ret
;
ff_h263dsp_init
(
&
s
->
h263dsp
);
ff_h263_decode_init_vlc
();
ff_h263_decode_init_vlc
();
return
0
;
return
0
;
...
...
libavcodec/h263dsp.c
0 → 100644
View file @
0338c396
/*
* This file is part of Libav.
*
* Libav 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.
*
* Libav 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 Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <stdint.h>
#include "libavutil/attributes.h"
#include "libavutil/common.h"
#include "config.h"
#include "h263dsp.h"
const
uint8_t
ff_h263_loop_filter_strength
[
32
]
=
{
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0
,
1
,
1
,
2
,
2
,
3
,
3
,
4
,
4
,
4
,
5
,
5
,
6
,
6
,
7
,
7
,
7
,
8
,
8
,
8
,
9
,
9
,
9
,
10
,
10
,
10
,
11
,
11
,
11
,
12
,
12
,
12
};
static
void
h263_h_loop_filter_c
(
uint8_t
*
src
,
int
stride
,
int
qscale
){
int
y
;
const
int
strength
=
ff_h263_loop_filter_strength
[
qscale
];
for
(
y
=
0
;
y
<
8
;
y
++
){
int
d1
,
d2
,
ad1
;
int
p0
=
src
[
y
*
stride
-
2
];
int
p1
=
src
[
y
*
stride
-
1
];
int
p2
=
src
[
y
*
stride
+
0
];
int
p3
=
src
[
y
*
stride
+
1
];
int
d
=
(
p0
-
p3
+
4
*
(
p2
-
p1
))
/
8
;
if
(
d
<-
2
*
strength
)
d1
=
0
;
else
if
(
d
<-
strength
)
d1
=-
2
*
strength
-
d
;
else
if
(
d
<
strength
)
d1
=
d
;
else
if
(
d
<
2
*
strength
)
d1
=
2
*
strength
-
d
;
else
d1
=
0
;
p1
+=
d1
;
p2
-=
d1
;
if
(
p1
&
256
)
p1
=
~
(
p1
>>
31
);
if
(
p2
&
256
)
p2
=
~
(
p2
>>
31
);
src
[
y
*
stride
-
1
]
=
p1
;
src
[
y
*
stride
+
0
]
=
p2
;
ad1
=
FFABS
(
d1
)
>>
1
;
d2
=
av_clip
((
p0
-
p3
)
/
4
,
-
ad1
,
ad1
);
src
[
y
*
stride
-
2
]
=
p0
-
d2
;
src
[
y
*
stride
+
1
]
=
p3
+
d2
;
}
}
static
void
h263_v_loop_filter_c
(
uint8_t
*
src
,
int
stride
,
int
qscale
){
int
x
;
const
int
strength
=
ff_h263_loop_filter_strength
[
qscale
];
for
(
x
=
0
;
x
<
8
;
x
++
){
int
d1
,
d2
,
ad1
;
int
p0
=
src
[
x
-
2
*
stride
];
int
p1
=
src
[
x
-
1
*
stride
];
int
p2
=
src
[
x
+
0
*
stride
];
int
p3
=
src
[
x
+
1
*
stride
];
int
d
=
(
p0
-
p3
+
4
*
(
p2
-
p1
))
/
8
;
if
(
d
<-
2
*
strength
)
d1
=
0
;
else
if
(
d
<-
strength
)
d1
=-
2
*
strength
-
d
;
else
if
(
d
<
strength
)
d1
=
d
;
else
if
(
d
<
2
*
strength
)
d1
=
2
*
strength
-
d
;
else
d1
=
0
;
p1
+=
d1
;
p2
-=
d1
;
if
(
p1
&
256
)
p1
=
~
(
p1
>>
31
);
if
(
p2
&
256
)
p2
=
~
(
p2
>>
31
);
src
[
x
-
1
*
stride
]
=
p1
;
src
[
x
+
0
*
stride
]
=
p2
;
ad1
=
FFABS
(
d1
)
>>
1
;
d2
=
av_clip
((
p0
-
p3
)
/
4
,
-
ad1
,
ad1
);
src
[
x
-
2
*
stride
]
=
p0
-
d2
;
src
[
x
+
stride
]
=
p3
+
d2
;
}
}
av_cold
void
ff_h263dsp_init
(
H263DSPContext
*
ctx
)
{
ctx
->
h263_h_loop_filter
=
h263_h_loop_filter_c
;
ctx
->
h263_v_loop_filter
=
h263_v_loop_filter_c
;
if
(
ARCH_X86
)
ff_h263dsp_init_x86
(
ctx
);
}
libavcodec/h263dsp.h
0 → 100644
View file @
0338c396
/*
* This file is part of Libav.
*
* Libav 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.
*
* Libav 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 Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef AVCODEC_H263DSP_H
#define AVCODEC_H263DSP_H
#include <stdint.h>
extern
const
uint8_t
ff_h263_loop_filter_strength
[
32
];
typedef
struct
H263DSPContext
{
void
(
*
h263_h_loop_filter
)(
uint8_t
*
src
,
int
stride
,
int
qscale
);
void
(
*
h263_v_loop_filter
)(
uint8_t
*
src
,
int
stride
,
int
qscale
);
}
H263DSPContext
;
void
ff_h263dsp_init
(
H263DSPContext
*
ctx
);
void
ff_h263dsp_init_x86
(
H263DSPContext
*
ctx
);
#endif
/* AVCODEC_H263DSP_H */
libavcodec/mpegvideo.h
View file @
0338c396
...
@@ -32,6 +32,7 @@
...
@@ -32,6 +32,7 @@
#include "dsputil.h"
#include "dsputil.h"
#include "error_resilience.h"
#include "error_resilience.h"
#include "get_bits.h"
#include "get_bits.h"
#include "h263dsp.h"
#include "hpeldsp.h"
#include "hpeldsp.h"
#include "put_bits.h"
#include "put_bits.h"
#include "ratecontrol.h"
#include "ratecontrol.h"
...
@@ -384,6 +385,7 @@ typedef struct MpegEncContext {
...
@@ -384,6 +385,7 @@ typedef struct MpegEncContext {
DSPContext
dsp
;
///< pointers for accelerated dsp functions
DSPContext
dsp
;
///< pointers for accelerated dsp functions
HpelDSPContext
hdsp
;
HpelDSPContext
hdsp
;
VideoDSPContext
vdsp
;
VideoDSPContext
vdsp
;
H263DSPContext
h263dsp
;
int
f_code
;
///< forward MV resolution
int
f_code
;
///< forward MV resolution
int
b_code
;
///< backward MV resolution for B Frames (mpeg4)
int
b_code
;
///< backward MV resolution for B Frames (mpeg4)
int16_t
(
*
p_mv_table_base
)[
2
];
int16_t
(
*
p_mv_table_base
)[
2
];
...
@@ -896,7 +898,6 @@ void ff_mpeg1_encode_slice_header(MpegEncContext *s);
...
@@ -896,7 +898,6 @@ void ff_mpeg1_encode_slice_header(MpegEncContext *s);
extern
const
uint8_t
ff_aic_dc_scale_table
[
32
];
extern
const
uint8_t
ff_aic_dc_scale_table
[
32
];
extern
const
uint8_t
ff_h263_chroma_qscale_table
[
32
];
extern
const
uint8_t
ff_h263_chroma_qscale_table
[
32
];
extern
const
uint8_t
ff_h263_loop_filter_strength
[
32
];
/* rv10.c */
/* rv10.c */
void
ff_rv10_encode_picture_header
(
MpegEncContext
*
s
,
int
picture_number
);
void
ff_rv10_encode_picture_header
(
MpegEncContext
*
s
,
int
picture_number
);
...
...
libavcodec/mpegvideo_enc.c
View file @
0338c396
...
@@ -707,6 +707,7 @@ av_cold int ff_MPV_encode_init(AVCodecContext *avctx)
...
@@ -707,6 +707,7 @@ av_cold int ff_MPV_encode_init(AVCodecContext *avctx)
if
(
ARCH_X86
)
if
(
ARCH_X86
)
ff_MPV_encode_init_x86
(
s
);
ff_MPV_encode_init_x86
(
s
);
ff_h263dsp_init
(
&
s
->
h263dsp
);
if
(
!
s
->
dct_quantize
)
if
(
!
s
->
dct_quantize
)
s
->
dct_quantize
=
ff_dct_quantize_c
;
s
->
dct_quantize
=
ff_dct_quantize_c
;
if
(
!
s
->
denoise_dct
)
if
(
!
s
->
denoise_dct
)
...
...
libavcodec/rv10.c
View file @
0338c396
...
@@ -484,6 +484,7 @@ static av_cold int rv10_decode_init(AVCodecContext *avctx)
...
@@ -484,6 +484,7 @@ static av_cold int rv10_decode_init(AVCodecContext *avctx)
if
((
ret
=
ff_MPV_common_init
(
s
))
<
0
)
if
((
ret
=
ff_MPV_common_init
(
s
))
<
0
)
return
ret
;
return
ret
;
ff_h263dsp_init
(
&
s
->
h263dsp
);
ff_h263_decode_init_vlc
();
ff_h263_decode_init_vlc
();
/* init rv vlc */
/* init rv vlc */
...
...
libavcodec/x86/Makefile
View file @
0338c396
...
@@ -12,6 +12,7 @@ OBJS-$(CONFIG_ENCODERS) += x86/dsputilenc_mmx.o \
...
@@ -12,6 +12,7 @@ OBJS-$(CONFIG_ENCODERS) += x86/dsputilenc_mmx.o \
x86/fdct.o
\
x86/fdct.o
\
x86/motion_est.o
x86/motion_est.o
OBJS-$(CONFIG_FFT)
+=
x86/fft_init.o
OBJS-$(CONFIG_FFT)
+=
x86/fft_init.o
OBJS-$(CONFIG_H263DSP)
+=
x86/h263dsp_init.o
OBJS-$(CONFIG_H264CHROMA)
+=
x86/h264chroma_init.o
OBJS-$(CONFIG_H264CHROMA)
+=
x86/h264chroma_init.o
OBJS-$(CONFIG_H264DSP)
+=
x86/h264dsp_init.o
OBJS-$(CONFIG_H264DSP)
+=
x86/h264dsp_init.o
OBJS-$(CONFIG_H264PRED)
+=
x86/h264_intrapred_init.o
OBJS-$(CONFIG_H264PRED)
+=
x86/h264_intrapred_init.o
...
@@ -59,8 +60,7 @@ YASM-OBJS-$(CONFIG_DSPUTIL) += x86/dsputil.o \
...
@@ -59,8 +60,7 @@ YASM-OBJS-$(CONFIG_DSPUTIL) += x86/dsputil.o \
x86/qpel.o
x86/qpel.o
YASM-OBJS-$(CONFIG_ENCODERS)
+=
x86/dsputilenc.o
YASM-OBJS-$(CONFIG_ENCODERS)
+=
x86/dsputilenc.o
YASM-OBJS-$(CONFIG_FFT)
+=
x86/fft.o
YASM-OBJS-$(CONFIG_FFT)
+=
x86/fft.o
YASM-OBJS-$(CONFIG_H263_DECODER)
+=
x86/h263_loopfilter.o
YASM-OBJS-$(CONFIG_H263DSP)
+=
x86/h263_loopfilter.o
YASM-OBJS-$(CONFIG_H263_ENCODER)
+=
x86/h263_loopfilter.o
YASM-OBJS-$(CONFIG_H264CHROMA)
+=
x86/h264_chromamc.o
\
YASM-OBJS-$(CONFIG_H264CHROMA)
+=
x86/h264_chromamc.o
\
x86/h264_chromamc_10bit.o
x86/h264_chromamc_10bit.o
YASM-OBJS-$(CONFIG_H264DSP)
+=
x86/h264_deblock.o
\
YASM-OBJS-$(CONFIG_H264DSP)
+=
x86/h264_deblock.o
\
...
...
libavcodec/x86/dsputil_init.c
View file @
0338c396
...
@@ -68,9 +68,6 @@ void ff_put_no_rnd_mpeg4_qpel8_v_lowpass_mmxext(uint8_t *dst, uint8_t *src,
...
@@ -68,9 +68,6 @@ void ff_put_no_rnd_mpeg4_qpel8_v_lowpass_mmxext(uint8_t *dst, uint8_t *src,
#define ff_put_no_rnd_pixels16_mmxext ff_put_pixels16_mmxext
#define ff_put_no_rnd_pixels16_mmxext ff_put_pixels16_mmxext
#define ff_put_no_rnd_pixels8_mmxext ff_put_pixels8_mmxext
#define ff_put_no_rnd_pixels8_mmxext ff_put_pixels8_mmxext
void
ff_h263_v_loop_filter_mmx
(
uint8_t
*
src
,
int
stride
,
int
qscale
);
void
ff_h263_h_loop_filter_mmx
(
uint8_t
*
src
,
int
stride
,
int
qscale
);
int32_t
ff_scalarproduct_int16_mmxext
(
const
int16_t
*
v1
,
const
int16_t
*
v2
,
int32_t
ff_scalarproduct_int16_mmxext
(
const
int16_t
*
v1
,
const
int16_t
*
v2
,
int
order
);
int
order
);
int32_t
ff_scalarproduct_int16_sse2
(
const
int16_t
*
v1
,
const
int16_t
*
v2
,
int32_t
ff_scalarproduct_int16_sse2
(
const
int16_t
*
v1
,
const
int16_t
*
v2
,
...
@@ -566,11 +563,6 @@ static av_cold void dsputil_init_mmx(DSPContext *c, AVCodecContext *avctx,
...
@@ -566,11 +563,6 @@ static av_cold void dsputil_init_mmx(DSPContext *c, AVCodecContext *avctx,
#endif
/* HAVE_MMX_INLINE */
#endif
/* HAVE_MMX_INLINE */
#if HAVE_MMX_EXTERNAL
#if HAVE_MMX_EXTERNAL
if
(
CONFIG_H263_DECODER
||
CONFIG_H263_ENCODER
)
{
c
->
h263_v_loop_filter
=
ff_h263_v_loop_filter_mmx
;
c
->
h263_h_loop_filter
=
ff_h263_h_loop_filter_mmx
;
}
c
->
vector_clip_int32
=
ff_vector_clip_int32_mmx
;
c
->
vector_clip_int32
=
ff_vector_clip_int32_mmx
;
#endif
/* HAVE_MMX_EXTERNAL */
#endif
/* HAVE_MMX_EXTERNAL */
}
}
...
...
libavcodec/x86/h263dsp_init.c
0 → 100644
View file @
0338c396
/*
* Copyright (c) 2013 Diego Biurrun <diego@biurrun.de>
*
* This file is part of Libav.
*
* Libav 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.
*
* Libav 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 Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <stdint.h>
#include "libavutil/attributes.h"
#include "libavutil/cpu.h"
#include "libavutil/x86/cpu.h"
#include "libavcodec/h263dsp.h"
void
ff_h263_h_loop_filter_mmx
(
uint8_t
*
src
,
int
stride
,
int
qscale
);
void
ff_h263_v_loop_filter_mmx
(
uint8_t
*
src
,
int
stride
,
int
qscale
);
av_cold
void
ff_h263dsp_init_x86
(
H263DSPContext
*
c
)
{
int
cpu_flags
=
av_get_cpu_flags
();
if
(
EXTERNAL_MMX
(
cpu_flags
))
{
c
->
h263_h_loop_filter
=
ff_h263_h_loop_filter_mmx
;
c
->
h263_v_loop_filter
=
ff_h263_v_loop_filter_mmx
;
}
}
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