Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
da5be235
Commit
da5be235
authored
Dec 18, 2013
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dsputil: Move RV40-specific bits into rv40dsp
parent
8011ac91
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
85 additions
and
85 deletions
+85
-85
dsputil.c
libavcodec/dsputil.c
+0
-22
dsputil.h
libavcodec/dsputil.h
+0
-6
dsputil_template.c
libavcodec/dsputil_template.c
+0
-52
rv40dsp.c
libavcodec/rv40dsp.c
+85
-5
No files found.
libavcodec/dsputil.c
View file @
da5be235
...
...
@@ -1250,28 +1250,6 @@ static void wmv2_mspel8_h_lowpass(uint8_t *dst, uint8_t *src,
}
}
#if CONFIG_RV40_DECODER
void
ff_put_rv40_qpel16_mc33_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
put_pixels16_xy2_8_c
(
dst
,
src
,
stride
,
16
);
}
void
ff_avg_rv40_qpel16_mc33_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
avg_pixels16_xy2_8_c
(
dst
,
src
,
stride
,
16
);
}
void
ff_put_rv40_qpel8_mc33_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
put_pixels8_xy2_8_c
(
dst
,
src
,
stride
,
8
);
}
void
ff_avg_rv40_qpel8_mc33_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
avg_pixels8_xy2_8_c
(
dst
,
src
,
stride
,
8
);
}
#endif
/* CONFIG_RV40_DECODER */
static
void
wmv2_mspel8_v_lowpass
(
uint8_t
*
dst
,
uint8_t
*
src
,
int
dstStride
,
int
srcStride
,
int
w
)
{
...
...
libavcodec/dsputil.h
View file @
da5be235
...
...
@@ -44,12 +44,6 @@ void ff_avg_pixels8x8_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride);
void
ff_put_pixels16x16_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_avg_pixels16x16_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
);
/* RV40 functions */
void
ff_put_rv40_qpel16_mc33_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_avg_rv40_qpel16_mc33_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_put_rv40_qpel8_mc33_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_avg_rv40_qpel8_mc33_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_gmc_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
int
stride
,
int
h
,
int
ox
,
int
oy
,
int
dxx
,
int
dxy
,
int
dyx
,
int
dyy
,
int
shift
,
int
r
,
int
width
,
int
height
);
...
...
libavcodec/dsputil_template.c
View file @
da5be235
...
...
@@ -253,58 +253,6 @@ static inline void OPNAME ## _no_rnd_pixels16_l4_8(uint8_t *dst, \
src_stride2, src_stride3, \
src_stride4, h); \
} \
\
static inline void OPNAME ## _pixels8_xy2_8_c(uint8_t *block, \
const uint8_t *pixels, \
ptrdiff_t line_size, \
int h) \
{ \
/* FIXME HIGH BIT DEPTH */
\
int j; \
\
for (j = 0; j < 2; j++) { \
int i; \
const uint32_t a = AV_RN32(pixels); \
const uint32_t b = AV_RN32(pixels + 1); \
uint32_t l0 = (a & 0x03030303UL) + \
(b & 0x03030303UL) + \
0x02020202UL; \
uint32_t h0 = ((a & 0xFCFCFCFCUL) >> 2) + \
((b & 0xFCFCFCFCUL) >> 2); \
uint32_t l1, h1; \
\
pixels += line_size; \
for (i = 0; i < h; i += 2) { \
uint32_t a = AV_RN32(pixels); \
uint32_t b = AV_RN32(pixels + 1); \
l1 = (a & 0x03030303UL) + \
(b & 0x03030303UL); \
h1 = ((a & 0xFCFCFCFCUL) >> 2) + \
((b & 0xFCFCFCFCUL) >> 2); \
OP(*((uint32_t *) block), \
h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL)); \
pixels += line_size; \
block += line_size; \
a = AV_RN32(pixels); \
b = AV_RN32(pixels + 1); \
l0 = (a & 0x03030303UL) + \
(b & 0x03030303UL) + \
0x02020202UL; \
h0 = ((a & 0xFCFCFCFCUL) >> 2) + \
((b & 0xFCFCFCFCUL) >> 2); \
OP(*((uint32_t *) block), \
h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL)); \
pixels += line_size; \
block += line_size; \
} \
pixels += 4 - line_size * (h + 1); \
block += 4 - line_size * h; \
} \
} \
\
CALL_2X_PIXELS(OPNAME ## _pixels16_xy2_8_c, \
OPNAME ## _pixels8_xy2_8_c, \
8) \
#define op_avg(a, b) a = rnd_avg32(a, b)
#define op_put(a, b) a = b
...
...
libavcodec/rv40dsp.c
View file @
da5be235
...
...
@@ -24,11 +24,14 @@
* RV40 decoder motion compensation functions
*/
#include "libavutil/common.h"
#include "libavutil/intreadwrite.h"
#include "avcodec.h"
#include "h264qpel.h"
#include "mathops.h"
#include "pixels.h"
#include "rnd_avg.h"
#include "rv34dsp.h"
#include "libavutil/common.h"
#define RV40_LOWPASS(OPNAME, OP) \
static av_unused void OPNAME ## rv40_qpel8_h_lowpass(uint8_t *dst, uint8_t *src, int dstStride, int srcStride,\
...
...
@@ -203,6 +206,83 @@ RV40_MC(put_, 16)
RV40_MC
(
avg_
,
8
)
RV40_MC
(
avg_
,
16
)
#define PIXOP2(OPNAME, OP) \
static inline void OPNAME ## _pixels8_xy2_8_c(uint8_t *block, \
const uint8_t *pixels, \
ptrdiff_t line_size, \
int h) \
{ \
/* FIXME HIGH BIT DEPTH */
\
int j; \
\
for (j = 0; j < 2; j++) { \
int i; \
const uint32_t a = AV_RN32(pixels); \
const uint32_t b = AV_RN32(pixels + 1); \
uint32_t l0 = (a & 0x03030303UL) + \
(b & 0x03030303UL) + \
0x02020202UL; \
uint32_t h0 = ((a & 0xFCFCFCFCUL) >> 2) + \
((b & 0xFCFCFCFCUL) >> 2); \
uint32_t l1, h1; \
\
pixels += line_size; \
for (i = 0; i < h; i += 2) { \
uint32_t a = AV_RN32(pixels); \
uint32_t b = AV_RN32(pixels + 1); \
l1 = (a & 0x03030303UL) + \
(b & 0x03030303UL); \
h1 = ((a & 0xFCFCFCFCUL) >> 2) + \
((b & 0xFCFCFCFCUL) >> 2); \
OP(*((uint32_t *) block), \
h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL)); \
pixels += line_size; \
block += line_size; \
a = AV_RN32(pixels); \
b = AV_RN32(pixels + 1); \
l0 = (a & 0x03030303UL) + \
(b & 0x03030303UL) + \
0x02020202UL; \
h0 = ((a & 0xFCFCFCFCUL) >> 2) + \
((b & 0xFCFCFCFCUL) >> 2); \
OP(*((uint32_t *) block), \
h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL)); \
pixels += line_size; \
block += line_size; \
} \
pixels += 4 - line_size * (h + 1); \
block += 4 - line_size * h; \
} \
} \
\
CALL_2X_PIXELS(OPNAME ## _pixels16_xy2_8_c, \
OPNAME ## _pixels8_xy2_8_c, \
8) \
#define op_avg(a, b) a = rnd_avg32(a, b)
#define op_put(a, b) a = b
PIXOP2
(
avg
,
op_avg
)
PIXOP2
(
put
,
op_put
)
#undef op_avg
#undef op_put
static
void
put_rv40_qpel16_mc33_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
put_pixels16_xy2_8_c
(
dst
,
src
,
stride
,
16
);
}
static
void
avg_rv40_qpel16_mc33_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
avg_pixels16_xy2_8_c
(
dst
,
src
,
stride
,
16
);
}
static
void
put_rv40_qpel8_mc33_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
put_pixels8_xy2_8_c
(
dst
,
src
,
stride
,
8
);
}
static
void
avg_rv40_qpel8_mc33_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
avg_pixels8_xy2_8_c
(
dst
,
src
,
stride
,
8
);
}
static
const
int
rv40_bias
[
4
][
4
]
=
{
{
0
,
16
,
32
,
16
},
{
32
,
28
,
32
,
28
},
...
...
@@ -552,7 +632,7 @@ av_cold void ff_rv40dsp_init(RV34DSPContext *c)
c
->
put_pixels_tab
[
0
][
12
]
=
put_rv40_qpel16_mc03_c
;
c
->
put_pixels_tab
[
0
][
13
]
=
put_rv40_qpel16_mc13_c
;
c
->
put_pixels_tab
[
0
][
14
]
=
put_rv40_qpel16_mc23_c
;
c
->
put_pixels_tab
[
0
][
15
]
=
ff_
put_rv40_qpel16_mc33_c
;
c
->
put_pixels_tab
[
0
][
15
]
=
put_rv40_qpel16_mc33_c
;
c
->
avg_pixels_tab
[
0
][
0
]
=
qpel
.
avg_h264_qpel_pixels_tab
[
0
][
0
];
c
->
avg_pixels_tab
[
0
][
1
]
=
avg_rv40_qpel16_mc10_c
;
c
->
avg_pixels_tab
[
0
][
2
]
=
qpel
.
avg_h264_qpel_pixels_tab
[
0
][
2
];
...
...
@@ -568,7 +648,7 @@ av_cold void ff_rv40dsp_init(RV34DSPContext *c)
c
->
avg_pixels_tab
[
0
][
12
]
=
avg_rv40_qpel16_mc03_c
;
c
->
avg_pixels_tab
[
0
][
13
]
=
avg_rv40_qpel16_mc13_c
;
c
->
avg_pixels_tab
[
0
][
14
]
=
avg_rv40_qpel16_mc23_c
;
c
->
avg_pixels_tab
[
0
][
15
]
=
ff_
avg_rv40_qpel16_mc33_c
;
c
->
avg_pixels_tab
[
0
][
15
]
=
avg_rv40_qpel16_mc33_c
;
c
->
put_pixels_tab
[
1
][
0
]
=
qpel
.
put_h264_qpel_pixels_tab
[
1
][
0
];
c
->
put_pixels_tab
[
1
][
1
]
=
put_rv40_qpel8_mc10_c
;
c
->
put_pixels_tab
[
1
][
2
]
=
qpel
.
put_h264_qpel_pixels_tab
[
1
][
2
];
...
...
@@ -584,7 +664,7 @@ av_cold void ff_rv40dsp_init(RV34DSPContext *c)
c
->
put_pixels_tab
[
1
][
12
]
=
put_rv40_qpel8_mc03_c
;
c
->
put_pixels_tab
[
1
][
13
]
=
put_rv40_qpel8_mc13_c
;
c
->
put_pixels_tab
[
1
][
14
]
=
put_rv40_qpel8_mc23_c
;
c
->
put_pixels_tab
[
1
][
15
]
=
ff_
put_rv40_qpel8_mc33_c
;
c
->
put_pixels_tab
[
1
][
15
]
=
put_rv40_qpel8_mc33_c
;
c
->
avg_pixels_tab
[
1
][
0
]
=
qpel
.
avg_h264_qpel_pixels_tab
[
1
][
0
];
c
->
avg_pixels_tab
[
1
][
1
]
=
avg_rv40_qpel8_mc10_c
;
c
->
avg_pixels_tab
[
1
][
2
]
=
qpel
.
avg_h264_qpel_pixels_tab
[
1
][
2
];
...
...
@@ -600,7 +680,7 @@ av_cold void ff_rv40dsp_init(RV34DSPContext *c)
c
->
avg_pixels_tab
[
1
][
12
]
=
avg_rv40_qpel8_mc03_c
;
c
->
avg_pixels_tab
[
1
][
13
]
=
avg_rv40_qpel8_mc13_c
;
c
->
avg_pixels_tab
[
1
][
14
]
=
avg_rv40_qpel8_mc23_c
;
c
->
avg_pixels_tab
[
1
][
15
]
=
ff_
avg_rv40_qpel8_mc33_c
;
c
->
avg_pixels_tab
[
1
][
15
]
=
avg_rv40_qpel8_mc33_c
;
c
->
put_chroma_pixels_tab
[
0
]
=
put_rv40_chroma_mc8_c
;
c
->
put_chroma_pixels_tab
[
1
]
=
put_rv40_chroma_mc4_c
;
...
...
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