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
e8b9e1e2
Commit
e8b9e1e2
authored
Jul 04, 2012
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dsputil: extend things to 12 and 14 bits
Signed-off-by:
Michael Niedermayer
<
michaelni@gmx.at
>
parent
1a8b0025
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
53 additions
and
9 deletions
+53
-9
dsputil.c
libavcodec/dsputil.c
+28
-0
dsputil.h
libavcodec/dsputil.h
+6
-0
dsputil_template.c
libavcodec/dsputil_template.c
+19
-9
No files found.
libavcodec/dsputil.c
View file @
e8b9e1e2
...
...
@@ -43,6 +43,7 @@
uint8_t
ff_cropTbl
[
256
+
2
*
MAX_NEG_CROP
]
=
{
0
,
};
uint32_t
ff_squareTbl
[
512
]
=
{
0
,
};
#define pixeltmp int16_t
#define BIT_DEPTH 9
#include "dsputil_template.c"
#undef BIT_DEPTH
...
...
@@ -51,8 +52,21 @@ uint32_t ff_squareTbl[512] = {0, };
#include "dsputil_template.c"
#undef BIT_DEPTH
#undef pixeltmp
#define pixeltmp int32_t
#define BIT_DEPTH 12
#include "dsputil_template.c"
#undef BIT_DEPTH
#define BIT_DEPTH 14
#include "dsputil_template.c"
#undef BIT_DEPTH
#undef pixeltmp
#define pixeltmp int16_t
#define BIT_DEPTH 8
#include "dsputil_template.c"
#undef pixeltmp
// 0x7f7f7f7f or 0x7f7f7f7f7f7f7f7f or whatever, depending on the cpu's native arithmetic size
#define pb_7f (~0UL/255 * 0x7f)
...
...
@@ -3147,6 +3161,20 @@ av_cold void ff_dsputil_init(DSPContext* c, AVCodecContext *avctx)
BIT_DEPTH_FUNCS
(
10
,
_16
);
}
break
;
case
12
:
if
(
c
->
dct_bits
==
32
)
{
BIT_DEPTH_FUNCS
(
12
,
_32
);
}
else
{
BIT_DEPTH_FUNCS
(
12
,
_16
);
}
break
;
case
14
:
if
(
c
->
dct_bits
==
32
)
{
BIT_DEPTH_FUNCS
(
14
,
_32
);
}
else
{
BIT_DEPTH_FUNCS
(
14
,
_16
);
}
break
;
default
:
av_assert0
(
avctx
->
bits_per_raw_sample
<=
8
||
avctx
->
codec_type
!=
AVMEDIA_TYPE_VIDEO
);
BIT_DEPTH_FUNCS
(
8
,
_16
);
...
...
libavcodec/dsputil.h
View file @
e8b9e1e2
...
...
@@ -72,6 +72,8 @@ void ff_h264_chroma_dc_dequant_idct_ ## depth ## _c(DCTELEM *block, int qmul);
H264_IDCT
(
8
)
H264_IDCT
(
9
)
H264_IDCT
(
10
)
H264_IDCT
(
12
)
H264_IDCT
(
14
)
void
ff_svq3_luma_dc_dequant_idct_c
(
DCTELEM
*
output
,
DCTELEM
*
input
,
int
qp
);
void
ff_svq3_add_idct_c
(
uint8_t
*
dst
,
DCTELEM
*
block
,
int
stride
,
int
qp
,
int
dc
);
...
...
@@ -98,6 +100,8 @@ void ff_avg_pixels16x16_ ## depth ## _c(uint8_t *dst, uint8_t *src, int stride);
PUTAVG_PIXELS
(
8
)
PUTAVG_PIXELS
(
9
)
PUTAVG_PIXELS
(
10
)
PUTAVG_PIXELS
(
12
)
PUTAVG_PIXELS
(
14
)
#define ff_put_pixels8x8_c ff_put_pixels8x8_8_c
#define ff_avg_pixels8x8_c ff_avg_pixels8x8_8_c
...
...
@@ -211,6 +215,8 @@ void ff_emulated_edge_mc_ ## depth (uint8_t *buf, const uint8_t *src, int linesi
EMULATED_EDGE
(
8
)
EMULATED_EDGE
(
9
)
EMULATED_EDGE
(
10
)
EMULATED_EDGE
(
12
)
EMULATED_EDGE
(
14
)
void
ff_add_pixels_clamped_c
(
const
DCTELEM
*
block
,
uint8_t
*
dest
,
int
linesize
);
void
ff_put_pixels_clamped_c
(
const
DCTELEM
*
block
,
uint8_t
*
dest
,
int
linesize
);
...
...
libavcodec/dsputil_template.c
View file @
e8b9e1e2
...
...
@@ -829,7 +829,7 @@ static av_unused void FUNC(OPNAME ## h264_qpel2_v_lowpass)(uint8_t *p_dst, uint8
}\
}\
\
static av_unused void FUNC(OPNAME ## h264_qpel2_hv_lowpass)(uint8_t *p_dst,
int16_t
*tmp, uint8_t *p_src, int dstStride, int tmpStride, int srcStride){\
static av_unused void FUNC(OPNAME ## h264_qpel2_hv_lowpass)(uint8_t *p_dst,
pixeltmp
*tmp, uint8_t *p_src, int dstStride, int tmpStride, int srcStride){\
const int h=2;\
const int w=2;\
const int pad = (BIT_DEPTH > 9) ? (-10 * ((1<<BIT_DEPTH)-1)) : 0;\
...
...
@@ -910,7 +910,7 @@ static void FUNC(OPNAME ## h264_qpel4_v_lowpass)(uint8_t *p_dst, uint8_t *p_src,
}\
}\
\
static void FUNC(OPNAME ## h264_qpel4_hv_lowpass)(uint8_t *p_dst,
int16_t
*tmp, uint8_t *p_src, int dstStride, int tmpStride, int srcStride){\
static void FUNC(OPNAME ## h264_qpel4_hv_lowpass)(uint8_t *p_dst,
pixeltmp
*tmp, uint8_t *p_src, int dstStride, int tmpStride, int srcStride){\
const int h=4;\
const int w=4;\
const int pad = (BIT_DEPTH > 9) ? (-10 * ((1<<BIT_DEPTH)-1)) : 0;\
...
...
@@ -1010,7 +1010,7 @@ static void FUNC(OPNAME ## h264_qpel8_v_lowpass)(uint8_t *p_dst, uint8_t *p_src,
}\
}\
\
static void FUNC(OPNAME ## h264_qpel8_hv_lowpass)(uint8_t *p_dst,
int16_t
*tmp, uint8_t *p_src, int dstStride, int tmpStride, int srcStride){\
static void FUNC(OPNAME ## h264_qpel8_hv_lowpass)(uint8_t *p_dst,
pixeltmp
*tmp, uint8_t *p_src, int dstStride, int tmpStride, int srcStride){\
const int h=8;\
const int w=8;\
const int pad = (BIT_DEPTH > 9) ? (-10 * ((1<<BIT_DEPTH)-1)) : 0;\
...
...
@@ -1081,7 +1081,7 @@ static void FUNC(OPNAME ## h264_qpel16_h_lowpass)(uint8_t *dst, uint8_t *src, in
FUNC(OPNAME ## h264_qpel8_h_lowpass)(dst+8*sizeof(pixel), src+8*sizeof(pixel), dstStride, srcStride);\
}\
\
static void FUNC(OPNAME ## h264_qpel16_hv_lowpass)(uint8_t *dst,
int16_t
*tmp, uint8_t *src, int dstStride, int tmpStride, int srcStride){\
static void FUNC(OPNAME ## h264_qpel16_hv_lowpass)(uint8_t *dst,
pixeltmp
*tmp, uint8_t *src, int dstStride, int tmpStride, int srcStride){\
FUNC(OPNAME ## h264_qpel8_hv_lowpass)(dst , tmp , src , dstStride, tmpStride, srcStride);\
FUNC(OPNAME ## h264_qpel8_hv_lowpass)(dst+8*sizeof(pixel), tmp+8, src+8*sizeof(pixel), dstStride, tmpStride, srcStride);\
src += 8*srcStride;\
...
...
@@ -1181,12 +1181,12 @@ static void FUNCC(OPNAME ## h264_qpel ## SIZE ## _mc33)(uint8_t *dst, uint8_t *s
}\
\
static void FUNCC(OPNAME ## h264_qpel ## SIZE ## _mc22)(uint8_t *dst, uint8_t *src, int stride){\
int16_t
tmp[SIZE*(SIZE+5)*sizeof(pixel)];\
pixeltmp
tmp[SIZE*(SIZE+5)*sizeof(pixel)];\
FUNC(OPNAME ## h264_qpel ## SIZE ## _hv_lowpass)(dst, tmp, src, stride, SIZE*sizeof(pixel), stride);\
}\
\
static void FUNCC(OPNAME ## h264_qpel ## SIZE ## _mc21)(uint8_t *dst, uint8_t *src, int stride){\
int16_t
tmp[SIZE*(SIZE+5)*sizeof(pixel)];\
pixeltmp
tmp[SIZE*(SIZE+5)*sizeof(pixel)];\
uint8_t halfH[SIZE*SIZE*sizeof(pixel)];\
uint8_t halfHV[SIZE*SIZE*sizeof(pixel)];\
FUNC(put_h264_qpel ## SIZE ## _h_lowpass)(halfH, src, SIZE*sizeof(pixel), stride);\
...
...
@@ -1195,7 +1195,7 @@ static void FUNCC(OPNAME ## h264_qpel ## SIZE ## _mc21)(uint8_t *dst, uint8_t *s
}\
\
static void FUNCC(OPNAME ## h264_qpel ## SIZE ## _mc23)(uint8_t *dst, uint8_t *src, int stride){\
int16_t
tmp[SIZE*(SIZE+5)*sizeof(pixel)];\
pixeltmp
tmp[SIZE*(SIZE+5)*sizeof(pixel)];\
uint8_t halfH[SIZE*SIZE*sizeof(pixel)];\
uint8_t halfHV[SIZE*SIZE*sizeof(pixel)];\
FUNC(put_h264_qpel ## SIZE ## _h_lowpass)(halfH, src + stride, SIZE*sizeof(pixel), stride);\
...
...
@@ -1206,7 +1206,7 @@ static void FUNCC(OPNAME ## h264_qpel ## SIZE ## _mc23)(uint8_t *dst, uint8_t *s
static void FUNCC(OPNAME ## h264_qpel ## SIZE ## _mc12)(uint8_t *dst, uint8_t *src, int stride){\
uint8_t full[SIZE*(SIZE+5)*sizeof(pixel)];\
uint8_t * const full_mid= full + SIZE*2*sizeof(pixel);\
int16_t
tmp[SIZE*(SIZE+5)*sizeof(pixel)];\
pixeltmp
tmp[SIZE*(SIZE+5)*sizeof(pixel)];\
uint8_t halfV[SIZE*SIZE*sizeof(pixel)];\
uint8_t halfHV[SIZE*SIZE*sizeof(pixel)];\
FUNC(copy_block ## SIZE )(full, src - stride*2, SIZE*sizeof(pixel), stride, SIZE + 5);\
...
...
@@ -1218,7 +1218,7 @@ static void FUNCC(OPNAME ## h264_qpel ## SIZE ## _mc12)(uint8_t *dst, uint8_t *s
static void FUNCC(OPNAME ## h264_qpel ## SIZE ## _mc32)(uint8_t *dst, uint8_t *src, int stride){\
uint8_t full[SIZE*(SIZE+5)*sizeof(pixel)];\
uint8_t * const full_mid= full + SIZE*2*sizeof(pixel);\
int16_t
tmp[SIZE*(SIZE+5)*sizeof(pixel)];\
pixeltmp
tmp[SIZE*(SIZE+5)*sizeof(pixel)];\
uint8_t halfV[SIZE*SIZE*sizeof(pixel)];\
uint8_t halfHV[SIZE*SIZE*sizeof(pixel)];\
FUNC(copy_block ## SIZE )(full, src - stride*2 + sizeof(pixel), SIZE*sizeof(pixel), stride, SIZE + 5);\
...
...
@@ -1263,6 +1263,16 @@ H264_MC(avg_, 16)
# define avg_h264_qpel8_mc00_10_c ff_avg_pixels8x8_10_c
# define put_h264_qpel16_mc00_10_c ff_put_pixels16x16_10_c
# define avg_h264_qpel16_mc00_10_c ff_avg_pixels16x16_10_c
#elif BIT_DEPTH == 12
# define put_h264_qpel8_mc00_12_c ff_put_pixels8x8_12_c
# define avg_h264_qpel8_mc00_12_c ff_avg_pixels8x8_12_c
# define put_h264_qpel16_mc00_12_c ff_put_pixels16x16_12_c
# define avg_h264_qpel16_mc00_12_c ff_avg_pixels16x16_12_c
#elif BIT_DEPTH == 14
# define put_h264_qpel8_mc00_14_c ff_put_pixels8x8_14_c
# define avg_h264_qpel8_mc00_14_c ff_avg_pixels8x8_14_c
# define put_h264_qpel16_mc00_14_c ff_put_pixels16x16_14_c
# define avg_h264_qpel16_mc00_14_c ff_avg_pixels16x16_14_c
#endif
void
FUNCC
(
ff_put_pixels8x8
)(
uint8_t
*
dst
,
uint8_t
*
src
,
int
stride
)
{
...
...
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