mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2026-10-24 02:09:03 +03:00
avcodec/h264dsp: Use ptrdiff_t for stride in idct functions
Reviewed-by: Martin Storsjö <martin@martin.st> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
@@ -65,22 +65,22 @@ void ff_biweight_h264_pixels_4_neon(uint8_t *dst, uint8_t *src, ptrdiff_t stride
|
||||
int height, int log2_den, int weightd,
|
||||
int weights, int offset);
|
||||
|
||||
void ff_h264_idct_add_neon(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_idct_dc_add_neon(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_idct_add_neon(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
void ff_h264_idct_dc_add_neon(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
void ff_h264_idct_add16_neon(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
int16_t *block, ptrdiff_t stride,
|
||||
const uint8_t nnzc[5 * 8]);
|
||||
void ff_h264_idct_add16intra_neon(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
int16_t *block, ptrdiff_t stride,
|
||||
const uint8_t nnzc[5 * 8]);
|
||||
void ff_h264_idct_add8_neon(uint8_t **dest, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
int16_t *block, ptrdiff_t stride,
|
||||
const uint8_t nnzc[15 * 8]);
|
||||
|
||||
void ff_h264_idct8_add_neon(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_idct8_dc_add_neon(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_idct8_add_neon(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
void ff_h264_idct8_dc_add_neon(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
void ff_h264_idct8_add4_neon(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
int16_t *block, ptrdiff_t stride,
|
||||
const uint8_t nnzc[5 * 8]);
|
||||
|
||||
void ff_h264_v_loop_filter_luma_neon_10(uint8_t *pix, ptrdiff_t stride, int alpha,
|
||||
|
||||
@@ -26,7 +26,6 @@ function ff_h264_idct_add_neon, export=1
|
||||
.L_ff_h264_idct_add_neon:
|
||||
AARCH64_VALID_CALL_TARGET
|
||||
ld1 {v0.4h, v1.4h, v2.4h, v3.4h}, [x1]
|
||||
sxtw x2, w2
|
||||
movi v30.8h, #0
|
||||
|
||||
add v4.4h, v0.4h, v2.4h
|
||||
@@ -81,7 +80,6 @@ endfunc
|
||||
function ff_h264_idct_dc_add_neon, export=1
|
||||
.L_ff_h264_idct_dc_add_neon:
|
||||
AARCH64_VALID_CALL_TARGET
|
||||
sxtw x2, w2
|
||||
mov w3, #0
|
||||
ld1r {v2.8h}, [x1]
|
||||
strh w3, [x1]
|
||||
@@ -107,12 +105,12 @@ function ff_h264_idct_add16_neon, export=1
|
||||
mov x6, x0 // dest
|
||||
mov x5, x1 // block_offset
|
||||
mov x1, x2 // block
|
||||
mov w9, w3 // stride
|
||||
mov x9, x3 // stride
|
||||
movrel x7, scan8
|
||||
mov x10, #16
|
||||
movrel x13, .L_ff_h264_idct_dc_add_neon
|
||||
movrel x14, .L_ff_h264_idct_add_neon
|
||||
1: mov w2, w9
|
||||
1: mov x2, x9
|
||||
ldrb w3, [x7], #1
|
||||
ldrsw x0, [x5], #4
|
||||
ldrb w3, [x4, w3, uxtw]
|
||||
@@ -134,12 +132,12 @@ function ff_h264_idct_add16intra_neon, export=1
|
||||
mov x6, x0 // dest
|
||||
mov x5, x1 // block_offset
|
||||
mov x1, x2 // block
|
||||
mov w9, w3 // stride
|
||||
mov x9, x3 // stride
|
||||
movrel x7, scan8
|
||||
mov x10, #16
|
||||
movrel x13, .L_ff_h264_idct_dc_add_neon
|
||||
movrel x14, .L_ff_h264_idct_add_neon
|
||||
1: mov w2, w9
|
||||
1: mov x2, x9
|
||||
ldrb w3, [x7], #1
|
||||
ldrsw x0, [x5], #4
|
||||
ldrb w3, [x4, w3, uxtw]
|
||||
@@ -162,13 +160,13 @@ function ff_h264_idct_add8_neon, export=1
|
||||
ldp x6, x15, [x0] // dest[0], dest[1]
|
||||
add x5, x1, #16*4 // block_offset
|
||||
add x9, x2, #16*32 // block
|
||||
mov w19, w3 // stride
|
||||
mov x19, x3 // stride
|
||||
movrel x13, .L_ff_h264_idct_dc_add_neon
|
||||
movrel x14, .L_ff_h264_idct_add_neon
|
||||
movrel x7, scan8, 16
|
||||
mov x10, #0
|
||||
mov x11, #16
|
||||
1: mov w2, w19
|
||||
1: mov x2, x19
|
||||
ldrb w3, [x7, x10] // scan8[i]
|
||||
ldrsw x0, [x5, x10, lsl #2] // block_offset[i]
|
||||
ldrb w3, [x4, w3, uxtw] // nnzc[ scan8[i] ]
|
||||
@@ -268,7 +266,6 @@ function ff_h264_idct8_add_neon, export=1
|
||||
.L_ff_h264_idct8_add_neon:
|
||||
AARCH64_VALID_CALL_TARGET
|
||||
movi v19.8h, #0
|
||||
sxtw x2, w2
|
||||
ld1 {v24.8h, v25.8h}, [x1]
|
||||
st1 {v19.8h}, [x1], #16
|
||||
st1 {v19.8h}, [x1], #16
|
||||
@@ -333,7 +330,6 @@ function ff_h264_idct8_dc_add_neon, export=1
|
||||
.L_ff_h264_idct8_dc_add_neon:
|
||||
AARCH64_VALID_CALL_TARGET
|
||||
mov w3, #0
|
||||
sxtw x2, w2
|
||||
ld1r {v31.8h}, [x1]
|
||||
strh w3, [x1]
|
||||
ld1 {v0.8b}, [x0], x2
|
||||
@@ -378,7 +374,7 @@ function ff_h264_idct8_add4_neon, export=1
|
||||
mov x6, x0
|
||||
mov x5, x1
|
||||
mov x1, x2
|
||||
mov w2, w3
|
||||
mov x2, x3
|
||||
movrel x7, scan8
|
||||
mov w10, #16
|
||||
movrel x13, .L_ff_h264_idct8_dc_add_neon
|
||||
|
||||
@@ -36,39 +36,39 @@ void ff_h264_h_loop_filter_chroma_neon(uint8_t *pix, ptrdiff_t stride, int alpha
|
||||
void ff_h264_h_loop_filter_chroma422_neon(uint8_t *pix, ptrdiff_t stride, int alpha,
|
||||
int beta, int8_t *tc0);
|
||||
|
||||
void ff_weight_h264_pixels_16_neon(uint8_t *dst, int stride, int height,
|
||||
void ff_weight_h264_pixels_16_neon(uint8_t *dst, ptrdiff_t stride, int height,
|
||||
int log2_den, int weight, int offset);
|
||||
void ff_weight_h264_pixels_8_neon(uint8_t *dst, int stride, int height,
|
||||
void ff_weight_h264_pixels_8_neon(uint8_t *dst, ptrdiff_t stride, int height,
|
||||
int log2_den, int weight, int offset);
|
||||
void ff_weight_h264_pixels_4_neon(uint8_t *dst, int stride, int height,
|
||||
void ff_weight_h264_pixels_4_neon(uint8_t *dst, ptrdiff_t stride, int height,
|
||||
int log2_den, int weight, int offset);
|
||||
|
||||
void ff_biweight_h264_pixels_16_neon(uint8_t *dst, uint8_t *src, int stride,
|
||||
void ff_biweight_h264_pixels_16_neon(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
|
||||
int height, int log2_den, int weightd,
|
||||
int weights, int offset);
|
||||
void ff_biweight_h264_pixels_8_neon(uint8_t *dst, uint8_t *src, int stride,
|
||||
void ff_biweight_h264_pixels_8_neon(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
|
||||
int height, int log2_den, int weightd,
|
||||
int weights, int offset);
|
||||
void ff_biweight_h264_pixels_4_neon(uint8_t *dst, uint8_t *src, int stride,
|
||||
void ff_biweight_h264_pixels_4_neon(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
|
||||
int height, int log2_den, int weightd,
|
||||
int weights, int offset);
|
||||
|
||||
void ff_h264_idct_add_neon(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_idct_dc_add_neon(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_idct_add_neon(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
void ff_h264_idct_dc_add_neon(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
void ff_h264_idct_add16_neon(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
int16_t *block, ptrdiff_t stride,
|
||||
const uint8_t nnzc[5 * 8]);
|
||||
void ff_h264_idct_add16intra_neon(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
int16_t *block, ptrdiff_t stride,
|
||||
const uint8_t nnzc[5 * 8]);
|
||||
void ff_h264_idct_add8_neon(uint8_t **dest, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
int16_t *block, ptrdiff_t stride,
|
||||
const uint8_t nnzc[15 * 8]);
|
||||
|
||||
void ff_h264_idct8_add_neon(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_idct8_dc_add_neon(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_idct8_add_neon(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
void ff_h264_idct8_dc_add_neon(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
void ff_h264_idct8_add4_neon(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
int16_t *block, ptrdiff_t stride,
|
||||
const uint8_t nnzc[5 * 8]);
|
||||
|
||||
static av_cold void h264dsp_init_neon(H264DSPContext *c, const int bit_depth,
|
||||
|
||||
@@ -620,8 +620,8 @@ static av_always_inline void hl_decode_mb_predict_luma(const H264Context *h,
|
||||
int linesize,
|
||||
uint8_t *dest_y, int p)
|
||||
{
|
||||
void (*idct_add)(uint8_t *dst, int16_t *block, int stride);
|
||||
void (*idct_dc_add)(uint8_t *dst, int16_t *block, int stride);
|
||||
void (*idct_add)(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
void (*idct_dc_add)(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
int i;
|
||||
int qscale = p == 0 ? sl->qscale : sl->chroma_qp[p - 1];
|
||||
block_offset += 16 * p;
|
||||
@@ -733,7 +733,7 @@ static av_always_inline void hl_decode_mb_idct_luma(const H264Context *h, H264Sl
|
||||
int linesize,
|
||||
uint8_t *dest_y, int p)
|
||||
{
|
||||
void (*idct_add)(uint8_t *dst, int16_t *block, int stride);
|
||||
void (*idct_add)(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
int i;
|
||||
block_offset += 16 * p;
|
||||
if (!IS_INTRA4x4(mb_type)) {
|
||||
|
||||
@@ -49,7 +49,7 @@ static av_noinline void FUNC(hl_decode_mb)(const H264Context *h, H264SliceContex
|
||||
int i, j;
|
||||
const int *block_offset = &h->block_offset[0];
|
||||
const int transform_bypass = !SIMPLE && (sl->qscale == 0 && h->ps.sps->transform_bypass);
|
||||
void (*idct_add)(uint8_t *dst, int16_t *block, int stride);
|
||||
void (*idct_add)(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
const int block_h = 16 >> h->chroma_y_shift;
|
||||
const int chroma422 = CHROMA422(h);
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
#include "bit_depth_template.c"
|
||||
|
||||
static void FUNCC(ff_h264_add_pixels4)(uint8_t *_dst, int16_t *_src, int stride)
|
||||
static void FUNCC(ff_h264_add_pixels4)(uint8_t *_dst, int16_t *_src, ptrdiff_t stride)
|
||||
{
|
||||
int i;
|
||||
pixel *dst = (pixel *) _dst;
|
||||
@@ -47,7 +47,7 @@ static void FUNCC(ff_h264_add_pixels4)(uint8_t *_dst, int16_t *_src, int stride)
|
||||
memset(_src, 0, sizeof(dctcoef) * 16);
|
||||
}
|
||||
|
||||
static void FUNCC(ff_h264_add_pixels8)(uint8_t *_dst, int16_t *_src, int stride)
|
||||
static void FUNCC(ff_h264_add_pixels8)(uint8_t *_dst, int16_t *_src, ptrdiff_t stride)
|
||||
{
|
||||
int i;
|
||||
pixel *dst = (pixel *) _dst;
|
||||
|
||||
@@ -79,33 +79,33 @@ typedef struct H264DSPContext {
|
||||
|
||||
/* IDCT */
|
||||
void (*idct_add)(uint8_t *dst /*align 4*/,
|
||||
int16_t *block /*align 16*/, int stride);
|
||||
int16_t *block /*align 16*/, ptrdiff_t stride);
|
||||
void (*idct8_add)(uint8_t *dst /*align 8*/,
|
||||
int16_t *block /*align 16*/, int stride);
|
||||
int16_t *block /*align 16*/, ptrdiff_t stride);
|
||||
void (*idct_dc_add)(uint8_t *dst /*align 4*/,
|
||||
int16_t *block /*align 16*/, int stride);
|
||||
int16_t *block /*align 16*/, ptrdiff_t stride);
|
||||
void (*idct8_dc_add)(uint8_t *dst /*align 8*/,
|
||||
int16_t *block /*align 16*/, int stride);
|
||||
int16_t *block /*align 16*/, ptrdiff_t stride);
|
||||
|
||||
void (*idct_add16)(uint8_t *dst /*align 16*/, const int *blockoffset,
|
||||
int16_t *block /*align 16*/, int stride,
|
||||
int16_t *block /*align 16*/, ptrdiff_t stride,
|
||||
const uint8_t nnzc[5 * 8]);
|
||||
void (*idct8_add4)(uint8_t *dst /*align 16*/, const int *blockoffset,
|
||||
int16_t *block /*align 16*/, int stride,
|
||||
int16_t *block /*align 16*/, ptrdiff_t stride,
|
||||
const uint8_t nnzc[5 * 8]);
|
||||
void (*idct_add8)(uint8_t **dst /*align 16*/, const int *blockoffset,
|
||||
int16_t *block /*align 16*/, int stride,
|
||||
int16_t *block /*align 16*/, ptrdiff_t stride,
|
||||
const uint8_t nnzc[15 * 8]);
|
||||
void (*idct_add16intra)(uint8_t *dst /*align 16*/, const int *blockoffset,
|
||||
int16_t *block /*align 16*/,
|
||||
int stride, const uint8_t nnzc[5 * 8]);
|
||||
ptrdiff_t stride, const uint8_t nnzc[5 * 8]);
|
||||
void (*luma_dc_dequant_idct)(int16_t *output,
|
||||
int16_t *input /*align 16*/, int qmul);
|
||||
void (*chroma_dc_dequant_idct)(int16_t *block, int qmul);
|
||||
|
||||
/* bypass-transform */
|
||||
void (*add_pixels8_clear)(uint8_t *dst, int16_t *block, int stride);
|
||||
void (*add_pixels4_clear)(uint8_t *dst, int16_t *block, int stride);
|
||||
void (*add_pixels8_clear)(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
void (*add_pixels4_clear)(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
|
||||
/**
|
||||
* Search buf from the start for up to size bytes. Return the index
|
||||
|
||||
@@ -19,18 +19,19 @@
|
||||
#ifndef AVCODEC_H264IDCT_H
|
||||
#define AVCODEC_H264IDCT_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#define H264_IDCT(depth) \
|
||||
void ff_h264_idct8_add_ ## depth ## _c(uint8_t *dst, int16_t *block, int stride);\
|
||||
void ff_h264_idct_add_ ## depth ## _c(uint8_t *dst, int16_t *block, int stride);\
|
||||
void ff_h264_idct8_dc_add_ ## depth ## _c(uint8_t *dst, int16_t *block, int stride);\
|
||||
void ff_h264_idct_dc_add_ ## depth ## _c(uint8_t *dst, int16_t *block, int stride);\
|
||||
void ff_h264_idct_add16_ ## depth ## _c(uint8_t *dst, const int *blockoffset, int16_t *block, int stride, const uint8_t nnzc[5 * 8]);\
|
||||
void ff_h264_idct_add16intra_ ## depth ## _c(uint8_t *dst, const int *blockoffset, int16_t *block, int stride, const uint8_t nnzc[5 * 8]);\
|
||||
void ff_h264_idct8_add4_ ## depth ## _c(uint8_t *dst, const int *blockoffset, int16_t *block, int stride, const uint8_t nnzc[5 * 8]);\
|
||||
void ff_h264_idct_add8_422_ ## depth ## _c(uint8_t **dest, const int *blockoffset, int16_t *block, int stride, const uint8_t nnzc[15 * 8]);\
|
||||
void ff_h264_idct_add8_ ## depth ## _c(uint8_t **dest, const int *blockoffset, int16_t *block, int stride, const uint8_t nnzc[15 * 8]);\
|
||||
void ff_h264_idct8_add_ ## depth ## _c(uint8_t *dst, int16_t *block, ptrdiff_t stride);\
|
||||
void ff_h264_idct_add_ ## depth ## _c(uint8_t *dst, int16_t *block, ptrdiff_t stride);\
|
||||
void ff_h264_idct8_dc_add_ ## depth ## _c(uint8_t *dst, int16_t *block, ptrdiff_t stride);\
|
||||
void ff_h264_idct_dc_add_ ## depth ## _c(uint8_t *dst, int16_t *block, ptrdiff_t stride);\
|
||||
void ff_h264_idct_add16_ ## depth ## _c(uint8_t *dst, const int *blockoffset, int16_t *block, ptrdiff_t stride, const uint8_t nnzc[5 * 8]);\
|
||||
void ff_h264_idct_add16intra_ ## depth ## _c(uint8_t *dst, const int *blockoffset, int16_t *block, ptrdiff_t stride, const uint8_t nnzc[5 * 8]);\
|
||||
void ff_h264_idct8_add4_ ## depth ## _c(uint8_t *dst, const int *blockoffset, int16_t *block, ptrdiff_t stride, const uint8_t nnzc[5 * 8]);\
|
||||
void ff_h264_idct_add8_422_ ## depth ## _c(uint8_t **dest, const int *blockoffset, int16_t *block, ptrdiff_t stride, const uint8_t nnzc[15 * 8]);\
|
||||
void ff_h264_idct_add8_ ## depth ## _c(uint8_t **dest, const int *blockoffset, int16_t *block, ptrdiff_t stride, const uint8_t nnzc[15 * 8]);\
|
||||
|
||||
H264_IDCT( 8)
|
||||
H264_IDCT( 9)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
#include "h264_parse.h"
|
||||
#include "h264idct.h"
|
||||
|
||||
void FUNCC(ff_h264_idct_add)(uint8_t *_dst, int16_t *_block, int stride)
|
||||
void FUNCC(ff_h264_idct_add)(uint8_t *_dst, int16_t *_block, ptrdiff_t stride)
|
||||
{
|
||||
int i;
|
||||
pixel *dst = (pixel*)_dst;
|
||||
@@ -66,7 +66,8 @@ void FUNCC(ff_h264_idct_add)(uint8_t *_dst, int16_t *_block, int stride)
|
||||
memset(block, 0, 16 * sizeof(dctcoef));
|
||||
}
|
||||
|
||||
void FUNCC(ff_h264_idct8_add)(uint8_t *_dst, int16_t *_block, int stride){
|
||||
void FUNCC(ff_h264_idct8_add)(uint8_t *_dst, int16_t *_block, ptrdiff_t stride)
|
||||
{
|
||||
int i;
|
||||
pixel *dst = (pixel*)_dst;
|
||||
dctcoef *block = (dctcoef*)_block;
|
||||
@@ -141,7 +142,8 @@ void FUNCC(ff_h264_idct8_add)(uint8_t *_dst, int16_t *_block, int stride){
|
||||
}
|
||||
|
||||
// assumes all AC coefs are 0
|
||||
void FUNCC(ff_h264_idct_dc_add)(uint8_t *_dst, int16_t *_block, int stride){
|
||||
void FUNCC(ff_h264_idct_dc_add)(uint8_t *_dst, int16_t *_block, ptrdiff_t stride)
|
||||
{
|
||||
int i, j;
|
||||
pixel *dst = (pixel*)_dst;
|
||||
dctcoef *block = (dctcoef*)_block;
|
||||
@@ -156,7 +158,8 @@ void FUNCC(ff_h264_idct_dc_add)(uint8_t *_dst, int16_t *_block, int stride){
|
||||
}
|
||||
}
|
||||
|
||||
void FUNCC(ff_h264_idct8_dc_add)(uint8_t *_dst, int16_t *_block, int stride){
|
||||
void FUNCC(ff_h264_idct8_dc_add)(uint8_t *_dst, int16_t *_block, ptrdiff_t stride)
|
||||
{
|
||||
int i, j;
|
||||
pixel *dst = (pixel*)_dst;
|
||||
dctcoef *block = (dctcoef*)_block;
|
||||
@@ -172,7 +175,7 @@ void FUNCC(ff_h264_idct8_dc_add)(uint8_t *_dst, int16_t *_block, int stride){
|
||||
}
|
||||
|
||||
void FUNCC(ff_h264_idct_add16)(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
int16_t *block, ptrdiff_t stride,
|
||||
const uint8_t nnzc[5 * 8])
|
||||
{
|
||||
int i;
|
||||
@@ -186,7 +189,7 @@ void FUNCC(ff_h264_idct_add16)(uint8_t *dst, const int *block_offset,
|
||||
}
|
||||
|
||||
void FUNCC(ff_h264_idct_add16intra)(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
int16_t *block, ptrdiff_t stride,
|
||||
const uint8_t nnzc[5 * 8])
|
||||
{
|
||||
int i;
|
||||
@@ -197,7 +200,7 @@ void FUNCC(ff_h264_idct_add16intra)(uint8_t *dst, const int *block_offset,
|
||||
}
|
||||
|
||||
void FUNCC(ff_h264_idct8_add4)(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
int16_t *block, ptrdiff_t stride,
|
||||
const uint8_t nnzc[5 * 8])
|
||||
{
|
||||
int i;
|
||||
@@ -210,7 +213,9 @@ void FUNCC(ff_h264_idct8_add4)(uint8_t *dst, const int *block_offset,
|
||||
}
|
||||
}
|
||||
|
||||
void FUNCC(ff_h264_idct_add8)(uint8_t **dest, const int *block_offset, int16_t *block, int stride, const uint8_t nnzc[15*8]){
|
||||
void FUNCC(ff_h264_idct_add8)(uint8_t **dest, const int *block_offset, int16_t *block,
|
||||
ptrdiff_t stride, const uint8_t nnzc[15*8])
|
||||
{
|
||||
int i, j;
|
||||
for(j=1; j<3; j++){
|
||||
for(i=j*16; i<j*16+4; i++){
|
||||
@@ -222,7 +227,9 @@ void FUNCC(ff_h264_idct_add8)(uint8_t **dest, const int *block_offset, int16_t *
|
||||
}
|
||||
}
|
||||
|
||||
void FUNCC(ff_h264_idct_add8_422)(uint8_t **dest, const int *block_offset, int16_t *block, int stride, const uint8_t nnzc[15*8]){
|
||||
void FUNCC(ff_h264_idct_add8_422)(uint8_t **dest, const int *block_offset,
|
||||
int16_t *block, ptrdiff_t stride, const uint8_t nnzc[15*8])
|
||||
{
|
||||
int i, j;
|
||||
|
||||
for(j=1; j<3; j++){
|
||||
|
||||
@@ -699,7 +699,7 @@ void ff_h264_v_lpf_luma_intra_8_lasx(uint8_t *data, ptrdiff_t img_width,
|
||||
}
|
||||
}
|
||||
|
||||
void ff_h264_add_pixels4_8_lasx(uint8_t *_dst, int16_t *_src, int stride)
|
||||
void ff_h264_add_pixels4_8_lasx(uint8_t *_dst, int16_t *_src, ptrdiff_t stride)
|
||||
{
|
||||
__m256i src0, dst0, dst1, dst2, dst3, zero;
|
||||
__m256i tmp0, tmp1;
|
||||
@@ -726,7 +726,7 @@ void ff_h264_add_pixels4_8_lasx(uint8_t *_dst, int16_t *_src, int stride)
|
||||
__lasx_xvst(zero, _src, 0);
|
||||
}
|
||||
|
||||
void ff_h264_add_pixels8_8_lasx(uint8_t *_dst, int16_t *_src, int stride)
|
||||
void ff_h264_add_pixels8_8_lasx(uint8_t *_dst, int16_t *_src, ptrdiff_t stride)
|
||||
{
|
||||
__m256i src0, src1, src2, src3;
|
||||
__m256i dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
|
||||
|
||||
@@ -26,25 +26,25 @@
|
||||
#include "libavcodec/h264dec.h"
|
||||
#include "config.h"
|
||||
|
||||
void ff_h264_idct_add_8_lsx(uint8_t *dst, int16_t *src, int dst_stride);
|
||||
void ff_h264_idct8_add_8_lsx(uint8_t *dst, int16_t *src, int dst_stride);
|
||||
void ff_h264_idct_dc_add_8_lsx(uint8_t *dst, int16_t *src, int dst_stride);
|
||||
void ff_h264_idct8_dc_add_8_lsx(uint8_t *dst, int16_t *src, int dst_stride);
|
||||
void ff_h264_idct_add_8_lsx(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride);
|
||||
void ff_h264_idct8_add_8_lsx(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride);
|
||||
void ff_h264_idct_dc_add_8_lsx(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride);
|
||||
void ff_h264_idct8_dc_add_8_lsx(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride);
|
||||
void ff_h264_luma_dc_dequant_idct_8_lsx(int16_t *_output, int16_t *_input, int qmul);
|
||||
void ff_h264_idct_add16_8_lsx(uint8_t *dst, const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nzc[15 * 8]);
|
||||
void ff_h264_idct8_add4_8_lsx(uint8_t *dst, const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nzc[15 * 8]);
|
||||
void ff_h264_idct_add8_8_lsx(uint8_t **dst, const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nzc[15 * 8]);
|
||||
void ff_h264_idct_add8_422_8_lsx(uint8_t **dst, const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nzc[15 * 8]);
|
||||
void ff_h264_idct_add16_intra_8_lsx(uint8_t *dst, const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nzc[15 * 8]);
|
||||
|
||||
void ff_h264_h_lpf_luma_8_lsx(uint8_t *src, ptrdiff_t stride,
|
||||
@@ -84,8 +84,8 @@ void ff_weight_h264_pixels8_8_lsx(uint8_t *src, ptrdiff_t stride,
|
||||
void ff_weight_h264_pixels4_8_lsx(uint8_t *src, ptrdiff_t stride,
|
||||
int height, int log2_denom,
|
||||
int weight_src, int offset);
|
||||
void ff_h264_add_pixels4_8_lsx(uint8_t *_dst, int16_t *_src, int stride);
|
||||
void ff_h264_add_pixels8_8_lsx(uint8_t *_dst, int16_t *_src, int stride);
|
||||
void ff_h264_add_pixels4_8_lsx(uint8_t *_dst, int16_t *_src, ptrdiff_t stride);
|
||||
void ff_h264_add_pixels8_8_lsx(uint8_t *_dst, int16_t *_src, ptrdiff_t stride);
|
||||
void ff_h264_loop_filter_strength_lsx(int16_t bS[2][4][4], uint8_t nnz[40],
|
||||
int8_t ref[2][40], int16_t mv[2][40][2],
|
||||
int bidir, int edges, int step,
|
||||
@@ -101,11 +101,11 @@ void ff_h264_h_lpf_luma_intra_8_lasx(uint8_t *src, ptrdiff_t stride,
|
||||
void ff_h264_v_lpf_luma_intra_8_lasx(uint8_t *src, ptrdiff_t stride,
|
||||
int alpha, int beta);
|
||||
void ff_biweight_h264_pixels16_8_lasx(unsigned char *dst, unsigned char *src,
|
||||
long int stride, int height,
|
||||
ptrdiff_t stride, int height,
|
||||
int log2_denom, int weight_dst,
|
||||
int weight_src, int offset_in);
|
||||
void ff_biweight_h264_pixels8_8_lasx(unsigned char *dst, unsigned char *src,
|
||||
long int stride, int height,
|
||||
ptrdiff_t stride, int height,
|
||||
int log2_denom, int weight_dst,
|
||||
int weight_src, int offset);
|
||||
void ff_weight_h264_pixels16_8_lasx(uint8_t *src, ptrdiff_t stride,
|
||||
@@ -114,14 +114,14 @@ void ff_weight_h264_pixels16_8_lasx(uint8_t *src, ptrdiff_t stride,
|
||||
void ff_weight_h264_pixels8_8_lasx(uint8_t *src, ptrdiff_t stride,
|
||||
int height, int log2_denom,
|
||||
int weight_src, int offset);
|
||||
void ff_h264_add_pixels4_8_lasx(uint8_t *_dst, int16_t *_src, int stride);
|
||||
void ff_h264_add_pixels4_8_lasx(uint8_t *_dst, int16_t *_src, ptrdiff_t stride);
|
||||
|
||||
void ff_h264_add_pixels8_8_lasx(uint8_t *_dst, int16_t *_src, int stride);
|
||||
void ff_h264_idct8_add_8_lasx(uint8_t *dst, int16_t *src, int32_t dst_stride);
|
||||
void ff_h264_add_pixels8_8_lasx(uint8_t *_dst, int16_t *_src, ptrdiff_t stride);
|
||||
void ff_h264_idct8_add_8_lasx(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride);
|
||||
void ff_h264_idct8_dc_add_8_lasx(uint8_t *dst, int16_t *src,
|
||||
int32_t dst_stride);
|
||||
ptrdiff_t dst_stride);
|
||||
void ff_h264_idct8_add4_8_lasx(uint8_t *dst, const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nzc[15 * 8]);
|
||||
void ff_h264_loop_filter_strength_lasx(int16_t bS[2][4][4], uint8_t nnz[40],
|
||||
int8_t ref[2][40], int16_t mv[2][40][2],
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
/*
|
||||
* #define FUNC2(a, b, c) FUNC3(a, b, c)
|
||||
* #define FUNCC(a) FUNC2(a, BIT_DEPTH, _c)
|
||||
* void FUNCC(ff_h264_idct_add)(uint8_t *_dst, int16_t *_block, int stride)
|
||||
* void FUNCC(ff_h264_idct_add)(uint8_t *_dst, int16_t *_block, ptrdiff_t stride)
|
||||
* LSX optimization is enough for this function.
|
||||
*/
|
||||
function ff_h264_idct_add_8_lsx
|
||||
@@ -88,7 +88,7 @@ endfunc
|
||||
/*
|
||||
* #define FUNC2(a, b, c) FUNC3(a, b, c)
|
||||
* #define FUNCC(a) FUNC2(a, BIT_DEPTH, _c)
|
||||
* void FUNCC(ff_h264_idct8_add)(uint8_t *_dst, int16_t *_block, int stride)
|
||||
* void FUNCC(ff_h264_idct8_add)(uint8_t *_dst, int16_t *_block, ptrdiff_t stride)
|
||||
*/
|
||||
function ff_h264_idct8_add_8_lsx
|
||||
ld.h t0, a1, 0
|
||||
@@ -295,7 +295,7 @@ endfunc
|
||||
/*
|
||||
* #define FUNC2(a, b, c) FUNC3(a, b, c)
|
||||
* #define FUNCC(a) FUNC2(a, BIT_DEPTH, _c)
|
||||
* void FUNCC(ff_h264_idct8_add)(uint8_t *_dst, int16_t *_block, int stride)
|
||||
* void FUNCC(ff_h264_idct8_add)(uint8_t *_dst, int16_t *_block, ptrdiff_t stride)
|
||||
*/
|
||||
function ff_h264_idct8_add_8_lasx
|
||||
ld.h t0, a1, 0
|
||||
@@ -466,7 +466,7 @@ endfunc
|
||||
/*
|
||||
* #define FUNC2(a, b, c) FUNC3(a, b, c)
|
||||
* #define FUNCC(a) FUNC2(a, BIT_DEPTH, _c)
|
||||
* void FUNCC(ff_h264_idct_dc_add)(uint8_t *_dst, int16_t *_block, int stride)
|
||||
* void FUNCC(ff_h264_idct_dc_add)(uint8_t *_dst, int16_t *_block, ptrdiff_t stride)
|
||||
* LSX optimization is enough for this function.
|
||||
*/
|
||||
function ff_h264_idct_dc_add_8_lsx
|
||||
@@ -500,7 +500,7 @@ endfunc
|
||||
/*
|
||||
* #define FUNC2(a, b, c) FUNC3(a, b, c)
|
||||
* #define FUNCC(a) FUNC2(a, BIT_DEPTH, _c)
|
||||
* void FUNCC(ff_h264_idct8_dc_add)(uint8_t *_dst, int16_t *_block, int stride)
|
||||
* void FUNCC(ff_h264_idct8_dc_add)(uint8_t *_dst, int16_t *_block, ptrdiff_t stride)
|
||||
*/
|
||||
function ff_h264_idct8_dc_add_8_lsx
|
||||
vldrepl.h vr8, a1, 0
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
#include "libavcodec/bit_depth_template.c"
|
||||
|
||||
void ff_h264_idct_add16_8_lsx(uint8_t *dst, const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nzc[15 * 8])
|
||||
{
|
||||
int32_t i;
|
||||
@@ -47,7 +47,7 @@ void ff_h264_idct_add16_8_lsx(uint8_t *dst, const int32_t *blk_offset,
|
||||
}
|
||||
|
||||
void ff_h264_idct8_add4_8_lsx(uint8_t *dst, const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nzc[15 * 8])
|
||||
{
|
||||
int32_t cnt;
|
||||
@@ -69,7 +69,7 @@ void ff_h264_idct8_add4_8_lsx(uint8_t *dst, const int32_t *blk_offset,
|
||||
|
||||
#if HAVE_LASX
|
||||
void ff_h264_idct8_add4_8_lasx(uint8_t *dst, const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nzc[15 * 8])
|
||||
{
|
||||
int32_t cnt;
|
||||
@@ -91,7 +91,7 @@ void ff_h264_idct8_add4_8_lasx(uint8_t *dst, const int32_t *blk_offset,
|
||||
#endif // #if HAVE_LASX
|
||||
|
||||
void ff_h264_idct_add8_8_lsx(uint8_t **dst, const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nzc[15 * 8])
|
||||
{
|
||||
int32_t i;
|
||||
@@ -119,7 +119,7 @@ void ff_h264_idct_add8_8_lsx(uint8_t **dst, const int32_t *blk_offset,
|
||||
}
|
||||
|
||||
void ff_h264_idct_add8_422_8_lsx(uint8_t **dst, const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nzc[15 * 8])
|
||||
{
|
||||
int32_t i;
|
||||
@@ -167,7 +167,7 @@ void ff_h264_idct_add8_422_8_lsx(uint8_t **dst, const int32_t *blk_offset,
|
||||
}
|
||||
|
||||
void ff_h264_idct_add16_intra_8_lsx(uint8_t *dst, const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nzc[15 * 8])
|
||||
{
|
||||
int32_t i;
|
||||
|
||||
@@ -43,28 +43,28 @@ void ff_h264_h_loop_filter_luma_mbaff_msa(uint8_t *src, ptrdiff_t stride,
|
||||
int32_t alpha, int32_t beta,
|
||||
int8_t *tc0);
|
||||
|
||||
void ff_h264_idct_add_msa(uint8_t *dst, int16_t *src, int32_t dst_stride);
|
||||
void ff_h264_idct_add_msa(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride);
|
||||
void ff_h264_idct4x4_addblk_dc_msa(uint8_t *dst, int16_t *src,
|
||||
int32_t dst_stride);
|
||||
ptrdiff_t dst_stride);
|
||||
void ff_h264_deq_idct_luma_dc_msa(int16_t *dst, int16_t *src,
|
||||
int32_t de_q_val);
|
||||
void ff_h264_idct_add16_msa(uint8_t *dst, const int32_t *blk_offset,
|
||||
int16_t *block, int32_t stride,
|
||||
int16_t *block, ptrdiff_t stride,
|
||||
const uint8_t nnzc[5 * 8]);
|
||||
void ff_h264_idct_add16_intra_msa(uint8_t *dst, const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nnzc[5 * 8]);
|
||||
void ff_h264_idct_add8_msa(uint8_t **dst, const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nnzc[15 * 8]);
|
||||
void ff_h264_idct_add8_422_msa(uint8_t **dst, const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nnzc[15 * 8]);
|
||||
void ff_h264_idct8_addblk_msa(uint8_t *dst, int16_t *src, int32_t dst_stride);
|
||||
void ff_h264_idct8_addblk_msa(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride);
|
||||
void ff_h264_idct8_dc_addblk_msa(uint8_t *dst, int16_t *src,
|
||||
int32_t dst_stride);
|
||||
ptrdiff_t dst_stride);
|
||||
void ff_h264_idct8_add4_msa(uint8_t *dst, const int *blk_offset,
|
||||
int16_t *blk, int dst_stride,
|
||||
int16_t *blk, ptrdiff_t dst_stride,
|
||||
const uint8_t nnzc[5 * 8]);
|
||||
|
||||
void ff_h264_h_lpf_luma_intra_msa(uint8_t *src, ptrdiff_t stride,
|
||||
@@ -323,21 +323,21 @@ void ff_h264_loop_filter_strength_msa(int16_t bS[2][4][4], uint8_t nnz[40],
|
||||
int8_t ref[2][40], int16_t mv[2][40][2], int bidir, int edges,
|
||||
int step, int mask_mv0, int mask_mv1, int field);
|
||||
|
||||
void ff_h264_add_pixels4_8_mmi(uint8_t *_dst, int16_t *_src, int stride);
|
||||
void ff_h264_idct_add_8_mmi(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_idct8_add_8_mmi(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_idct_dc_add_8_mmi(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_idct8_dc_add_8_mmi(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_add_pixels4_8_mmi(uint8_t *_dst, int16_t *_src, ptrdiff_t stride);
|
||||
void ff_h264_idct_add_8_mmi(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
void ff_h264_idct8_add_8_mmi(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
void ff_h264_idct_dc_add_8_mmi(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
void ff_h264_idct8_dc_add_8_mmi(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
void ff_h264_idct_add16_8_mmi(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride, const uint8_t nnzc[5 * 8]);
|
||||
int16_t *block, ptrdiff_t stride, const uint8_t nnzc[5 * 8]);
|
||||
void ff_h264_idct_add16intra_8_mmi(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride, const uint8_t nnzc[5 * 8]);
|
||||
int16_t *block, ptrdiff_t stride, const uint8_t nnzc[5 * 8]);
|
||||
void ff_h264_idct8_add4_8_mmi(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride, const uint8_t nnzc[5 * 8]);
|
||||
int16_t *block, ptrdiff_t stride, const uint8_t nnzc[5 * 8]);
|
||||
void ff_h264_idct_add8_8_mmi(uint8_t **dest, const int *block_offset,
|
||||
int16_t *block, int stride, const uint8_t nnzc[15*8]);
|
||||
int16_t *block, ptrdiff_t stride, const uint8_t nnzc[15*8]);
|
||||
void ff_h264_idct_add8_422_8_mmi(uint8_t **dest, const int *block_offset,
|
||||
int16_t *block, int stride, const uint8_t nnzc[15*8]);
|
||||
int16_t *block, ptrdiff_t stride, const uint8_t nnzc[15*8]);
|
||||
void ff_h264_luma_dc_dequant_idct_8_mmi(int16_t *output, int16_t *input,
|
||||
int qmul);
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
#include "libavutil/mips/mmiutils.h"
|
||||
#include "libavutil/mem_internal.h"
|
||||
|
||||
void ff_h264_add_pixels4_8_mmi(uint8_t *dst, int16_t *src, int stride)
|
||||
void ff_h264_add_pixels4_8_mmi(uint8_t *dst, int16_t *src, ptrdiff_t stride)
|
||||
{
|
||||
double ftmp[9];
|
||||
DECLARE_VAR_LOW32;
|
||||
@@ -76,7 +76,7 @@ void ff_h264_add_pixels4_8_mmi(uint8_t *dst, int16_t *src, int stride)
|
||||
|
||||
}
|
||||
|
||||
void ff_h264_idct_add_8_mmi(uint8_t *dst, int16_t *block, int stride)
|
||||
void ff_h264_idct_add_8_mmi(uint8_t *dst, int16_t *block, ptrdiff_t stride)
|
||||
{
|
||||
double ftmp[12];
|
||||
uint64_t tmp[1];
|
||||
@@ -168,7 +168,7 @@ void ff_h264_idct_add_8_mmi(uint8_t *dst, int16_t *block, int stride)
|
||||
|
||||
}
|
||||
|
||||
void ff_h264_idct8_add_8_mmi(uint8_t *dst, int16_t *block, int stride)
|
||||
void ff_h264_idct8_add_8_mmi(uint8_t *dst, int16_t *block, ptrdiff_t stride)
|
||||
{
|
||||
double ftmp[16];
|
||||
uint64_t tmp[7];
|
||||
@@ -636,7 +636,7 @@ void ff_h264_idct8_add_8_mmi(uint8_t *dst, int16_t *block, int stride)
|
||||
|
||||
}
|
||||
|
||||
void ff_h264_idct_dc_add_8_mmi(uint8_t *dst, int16_t *block, int stride)
|
||||
void ff_h264_idct_dc_add_8_mmi(uint8_t *dst, int16_t *block, ptrdiff_t stride)
|
||||
{
|
||||
int dc = (block[0] + 32) >> 6;
|
||||
double ftmp[6];
|
||||
@@ -680,7 +680,7 @@ void ff_h264_idct_dc_add_8_mmi(uint8_t *dst, int16_t *block, int stride)
|
||||
);
|
||||
}
|
||||
|
||||
void ff_h264_idct8_dc_add_8_mmi(uint8_t *dst, int16_t *block, int stride)
|
||||
void ff_h264_idct8_dc_add_8_mmi(uint8_t *dst, int16_t *block, ptrdiff_t stride)
|
||||
{
|
||||
int dc = (block[0] + 32) >> 6;
|
||||
double ftmp[10];
|
||||
@@ -766,7 +766,7 @@ void ff_h264_idct8_dc_add_8_mmi(uint8_t *dst, int16_t *block, int stride)
|
||||
}
|
||||
|
||||
void ff_h264_idct_add16_8_mmi(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
int16_t *block, ptrdiff_t stride,
|
||||
const uint8_t nnzc[5 * 8])
|
||||
{
|
||||
int i;
|
||||
@@ -784,7 +784,7 @@ void ff_h264_idct_add16_8_mmi(uint8_t *dst, const int *block_offset,
|
||||
}
|
||||
|
||||
void ff_h264_idct_add16intra_8_mmi(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride, const uint8_t nnzc[5 * 8])
|
||||
int16_t *block, ptrdiff_t stride, const uint8_t nnzc[5 * 8])
|
||||
{
|
||||
int i;
|
||||
for(i=0; i<16; i++){
|
||||
@@ -797,7 +797,7 @@ void ff_h264_idct_add16intra_8_mmi(uint8_t *dst, const int *block_offset,
|
||||
}
|
||||
|
||||
void ff_h264_idct8_add4_8_mmi(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride, const uint8_t nnzc[5 * 8])
|
||||
int16_t *block, ptrdiff_t stride, const uint8_t nnzc[5 * 8])
|
||||
{
|
||||
int i;
|
||||
for(i=0; i<16; i+=4){
|
||||
@@ -814,7 +814,7 @@ void ff_h264_idct8_add4_8_mmi(uint8_t *dst, const int *block_offset,
|
||||
}
|
||||
|
||||
void ff_h264_idct_add8_8_mmi(uint8_t **dest, const int *block_offset,
|
||||
int16_t *block, int stride, const uint8_t nnzc[15*8])
|
||||
int16_t *block, ptrdiff_t stride, const uint8_t nnzc[15*8])
|
||||
{
|
||||
int i, j;
|
||||
for(j=1; j<3; j++){
|
||||
@@ -830,7 +830,7 @@ void ff_h264_idct_add8_8_mmi(uint8_t **dest, const int *block_offset,
|
||||
}
|
||||
|
||||
void ff_h264_idct_add8_422_8_mmi(uint8_t **dest, const int *block_offset,
|
||||
int16_t *block, int stride, const uint8_t nnzc[15*8])
|
||||
int16_t *block, ptrdiff_t stride, const uint8_t nnzc[15*8])
|
||||
{
|
||||
int i, j;
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@ static void avc_deq_idct_luma_dc_msa(int16_t *dst, int16_t *src,
|
||||
#undef DC_DEST_STRIDE
|
||||
}
|
||||
|
||||
static void avc_idct8_addblk_msa(uint8_t *dst, int16_t *src, int32_t dst_stride)
|
||||
static void avc_idct8_addblk_msa(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride)
|
||||
{
|
||||
v8i16 src0, src1, src2, src3, src4, src5, src6, src7;
|
||||
v8i16 vec0, vec1, vec2, vec3;
|
||||
@@ -240,7 +240,7 @@ static void avc_idct8_addblk_msa(uint8_t *dst, int16_t *src, int32_t dst_stride)
|
||||
}
|
||||
|
||||
static void avc_idct8_dc_addblk_msa(uint8_t *dst, int16_t *src,
|
||||
int32_t dst_stride)
|
||||
ptrdiff_t dst_stride)
|
||||
{
|
||||
int32_t dc_val;
|
||||
v16i8 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
|
||||
@@ -269,7 +269,7 @@ static void avc_idct8_dc_addblk_msa(uint8_t *dst, int16_t *src,
|
||||
ST_D8(dst0, dst1, dst2, dst3, 0, 1, 0, 1, 0, 1, 0, 1, dst, dst_stride)
|
||||
}
|
||||
|
||||
void ff_h264_idct_add_msa(uint8_t *dst, int16_t *src, int32_t dst_stride)
|
||||
void ff_h264_idct_add_msa(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride)
|
||||
{
|
||||
uint32_t src0_m, src1_m, src2_m, src3_m, out0_m, out1_m, out2_m, out3_m;
|
||||
v16i8 dst0_m = { 0 };
|
||||
@@ -311,13 +311,13 @@ void ff_h264_idct_add_msa(uint8_t *dst, int16_t *src, int32_t dst_stride)
|
||||
}
|
||||
|
||||
void ff_h264_idct8_addblk_msa(uint8_t *dst, int16_t *src,
|
||||
int32_t dst_stride)
|
||||
ptrdiff_t dst_stride)
|
||||
{
|
||||
avc_idct8_addblk_msa(dst, src, dst_stride);
|
||||
}
|
||||
|
||||
void ff_h264_idct4x4_addblk_dc_msa(uint8_t *dst, int16_t *src,
|
||||
int32_t dst_stride)
|
||||
ptrdiff_t dst_stride)
|
||||
{
|
||||
v16u8 pred = { 0 };
|
||||
v16i8 out;
|
||||
@@ -339,14 +339,14 @@ void ff_h264_idct4x4_addblk_dc_msa(uint8_t *dst, int16_t *src,
|
||||
}
|
||||
|
||||
void ff_h264_idct8_dc_addblk_msa(uint8_t *dst, int16_t *src,
|
||||
int32_t dst_stride)
|
||||
ptrdiff_t dst_stride)
|
||||
{
|
||||
avc_idct8_dc_addblk_msa(dst, src, dst_stride);
|
||||
}
|
||||
|
||||
void ff_h264_idct_add16_msa(uint8_t *dst,
|
||||
const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nzc[5 * 8])
|
||||
{
|
||||
int32_t i;
|
||||
@@ -368,7 +368,7 @@ void ff_h264_idct_add16_msa(uint8_t *dst,
|
||||
}
|
||||
|
||||
void ff_h264_idct8_add4_msa(uint8_t *dst, const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nzc[5 * 8])
|
||||
{
|
||||
int32_t cnt;
|
||||
@@ -391,7 +391,7 @@ void ff_h264_idct8_add4_msa(uint8_t *dst, const int32_t *blk_offset,
|
||||
|
||||
void ff_h264_idct_add8_msa(uint8_t **dst,
|
||||
const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nzc[15 * 8])
|
||||
{
|
||||
int32_t i, j;
|
||||
@@ -412,7 +412,7 @@ void ff_h264_idct_add8_msa(uint8_t **dst,
|
||||
|
||||
void ff_h264_idct_add8_422_msa(uint8_t **dst,
|
||||
const int32_t *blk_offset,
|
||||
int16_t *block, int32_t dst_stride,
|
||||
int16_t *block, ptrdiff_t dst_stride,
|
||||
const uint8_t nzc[15 * 8])
|
||||
{
|
||||
int32_t i, j;
|
||||
@@ -447,7 +447,7 @@ void ff_h264_idct_add8_422_msa(uint8_t **dst,
|
||||
void ff_h264_idct_add16_intra_msa(uint8_t *dst,
|
||||
const int32_t *blk_offset,
|
||||
int16_t *block,
|
||||
int32_t dst_stride,
|
||||
ptrdiff_t dst_stride,
|
||||
const uint8_t nzc[5 * 8])
|
||||
{
|
||||
int32_t i;
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
va_u32 = vec_splat((vec_u32)va_u8, 0); \
|
||||
vec_ste(va_u32, element, (uint32_t*)dst);
|
||||
|
||||
static void h264_idct_add_altivec(uint8_t *dst, int16_t *block, int stride)
|
||||
static void h264_idct_add_altivec(uint8_t *dst, int16_t *block, ptrdiff_t stride)
|
||||
{
|
||||
vec_s16 va0, va1, va2, va3;
|
||||
vec_s16 vz0, vz1, vz2, vz3;
|
||||
@@ -215,7 +215,7 @@ static void h264_idct_add_altivec(uint8_t *dst, int16_t *block, int stride)
|
||||
dest_unligned_store(dest);\
|
||||
}
|
||||
|
||||
static void h264_idct8_add_altivec(uint8_t *dst, int16_t *dct, int stride)
|
||||
static void h264_idct8_add_altivec(uint8_t *dst, int16_t *dct, ptrdiff_t stride)
|
||||
{
|
||||
vec_s16 s0, s1, s2, s3, s4, s5, s6, s7;
|
||||
vec_s16 d0, d1, d2, d3, d4, d5, d6, d7;
|
||||
@@ -266,7 +266,7 @@ static void h264_idct8_add_altivec(uint8_t *dst, int16_t *dct, int stride)
|
||||
#else
|
||||
#define DST_LD vec_vsx_ld
|
||||
#endif
|
||||
static av_always_inline void h264_idct_dc_add_internal(uint8_t *dst, int16_t *block, int stride, int size)
|
||||
static av_always_inline void h264_idct_dc_add_internal(uint8_t *dst, int16_t *block, ptrdiff_t stride, int size)
|
||||
{
|
||||
vec_s16 dc16;
|
||||
vec_u8 dcplus, dcminus, v0, v1, v2, v3, aligner;
|
||||
@@ -316,18 +316,18 @@ static av_always_inline void h264_idct_dc_add_internal(uint8_t *dst, int16_t *bl
|
||||
}
|
||||
}
|
||||
|
||||
static void h264_idct_dc_add_altivec(uint8_t *dst, int16_t *block, int stride)
|
||||
static void h264_idct_dc_add_altivec(uint8_t *dst, int16_t *block, ptrdiff_t stride)
|
||||
{
|
||||
h264_idct_dc_add_internal(dst, block, stride, 4);
|
||||
}
|
||||
|
||||
static void h264_idct8_dc_add_altivec(uint8_t *dst, int16_t *block, int stride)
|
||||
static void h264_idct8_dc_add_altivec(uint8_t *dst, int16_t *block, ptrdiff_t stride)
|
||||
{
|
||||
h264_idct_dc_add_internal(dst, block, stride, 8);
|
||||
}
|
||||
|
||||
static void h264_idct_add16_altivec(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
int16_t *block, ptrdiff_t stride,
|
||||
const uint8_t nnzc[5 * 8])
|
||||
{
|
||||
int i;
|
||||
@@ -341,7 +341,7 @@ static void h264_idct_add16_altivec(uint8_t *dst, const int *block_offset,
|
||||
}
|
||||
|
||||
static void h264_idct_add16intra_altivec(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
int16_t *block, ptrdiff_t stride,
|
||||
const uint8_t nnzc[5 * 8])
|
||||
{
|
||||
int i;
|
||||
@@ -352,7 +352,7 @@ static void h264_idct_add16intra_altivec(uint8_t *dst, const int *block_offset,
|
||||
}
|
||||
|
||||
static void h264_idct8_add4_altivec(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
int16_t *block, ptrdiff_t stride,
|
||||
const uint8_t nnzc[5 * 8])
|
||||
{
|
||||
int i;
|
||||
@@ -366,7 +366,7 @@ static void h264_idct8_add4_altivec(uint8_t *dst, const int *block_offset,
|
||||
}
|
||||
|
||||
static void h264_idct_add8_altivec(uint8_t **dest, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
int16_t *block, ptrdiff_t stride,
|
||||
const uint8_t nnzc[15 * 8])
|
||||
{
|
||||
int i, j;
|
||||
@@ -653,7 +653,7 @@ static void h264_h_loop_filter_luma_altivec(uint8_t *pix, ptrdiff_t stride, int
|
||||
}
|
||||
|
||||
static av_always_inline
|
||||
void weight_h264_W_altivec(uint8_t *block, int stride, int height,
|
||||
void weight_h264_W_altivec(uint8_t *block, ptrdiff_t stride, int height,
|
||||
int log2_denom, int weight, int offset, int w)
|
||||
{
|
||||
int y, aligned;
|
||||
@@ -702,7 +702,7 @@ void weight_h264_W_altivec(uint8_t *block, int stride, int height,
|
||||
}
|
||||
|
||||
static av_always_inline
|
||||
void biweight_h264_W_altivec(uint8_t *dst, uint8_t *src, int stride, int height,
|
||||
void biweight_h264_W_altivec(uint8_t *dst, uint8_t *src, ptrdiff_t stride, int height,
|
||||
int log2_denom, int weightd, int weights, int offset, int w)
|
||||
{
|
||||
int y, dst_aligned, src_aligned;
|
||||
|
||||
@@ -62,24 +62,24 @@ void ff_h264_h_loop_filter_chroma_mbaff_intra_8_rvv(uint8_t *pix,
|
||||
int alpha, int beta);
|
||||
|
||||
#define IDCT_DEPTH(depth) \
|
||||
void ff_h264_idct_add_##depth##_rvv(uint8_t *d, int16_t *s, int stride); \
|
||||
void ff_h264_idct8_add_##depth##_rvv(uint8_t *d, int16_t *s, int stride); \
|
||||
void ff_h264_idct4_dc_add_##depth##_rvv(uint8_t *, int16_t *, int); \
|
||||
void ff_h264_idct8_dc_add_##depth##_rvv(uint8_t *, int16_t *, int); \
|
||||
void ff_h264_idct_add_##depth##_rvv(uint8_t *d, int16_t *s, ptrdiff_t stride); \
|
||||
void ff_h264_idct8_add_##depth##_rvv(uint8_t *d, int16_t *s, ptrdiff_t stride); \
|
||||
void ff_h264_idct4_dc_add_##depth##_rvv(uint8_t *, int16_t *, ptrdiff_t); \
|
||||
void ff_h264_idct8_dc_add_##depth##_rvv(uint8_t *, int16_t *, ptrdiff_t); \
|
||||
void ff_h264_idct_add16_##depth##_rvv(uint8_t *d, const int *soffset, \
|
||||
int16_t *s, int stride, \
|
||||
int16_t *s, ptrdiff_t stride, \
|
||||
const uint8_t nnzc[5 * 8]); \
|
||||
void ff_h264_idct_add16intra_##depth##_rvv(uint8_t *d, const int *soffset, \
|
||||
int16_t *s, int stride, \
|
||||
int16_t *s, ptrdiff_t stride, \
|
||||
const uint8_t nnzc[5 * 8]); \
|
||||
void ff_h264_idct8_add4_##depth##_rvv(uint8_t *d, const int *soffset, \
|
||||
int16_t *s, int stride, \
|
||||
int16_t *s, ptrdiff_t stride, \
|
||||
const uint8_t nnzc[5 * 8]); \
|
||||
void ff_h264_idct4_add8_##depth##_rvv(uint8_t **d, const int *soffset, \
|
||||
int16_t *s, int stride, \
|
||||
int16_t *s, ptrdiff_t stride, \
|
||||
const uint8_t nnzc[5 * 8]); \
|
||||
void ff_h264_idct4_add8_422_##depth##_rvv(uint8_t **d, const int *soffset, \
|
||||
int16_t *s, int stride, \
|
||||
int16_t *s, ptrdiff_t stride, \
|
||||
const uint8_t nnzc[5 * 8]); \
|
||||
void ff_h264_luma_dc_dequant_idct_##depth##_rvv(int16_t *d, int16_t *s, int q);
|
||||
|
||||
@@ -90,10 +90,10 @@ IDCT_DEPTH(12)
|
||||
IDCT_DEPTH(14)
|
||||
#undef IDCT_DEPTH
|
||||
|
||||
void ff_h264_add_pixels8_8_rvv(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_add_pixels4_8_rvv(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_add_pixels8_16_rvv(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_add_pixels4_16_rvv(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_add_pixels8_8_rvv(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
void ff_h264_add_pixels4_8_rvv(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
void ff_h264_add_pixels8_16_rvv(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
void ff_h264_add_pixels4_16_rvv(uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
|
||||
extern int ff_startcode_find_candidate_rvb(const uint8_t *, int);
|
||||
extern int ff_startcode_find_candidate_rvv(const uint8_t *, int);
|
||||
|
||||
@@ -225,9 +225,8 @@ SECTION .text
|
||||
%endmacro
|
||||
|
||||
INIT_XMM sse2
|
||||
; void ff_h264_idct8_add_8_sse2(uint8_t *dst, int16_t *block, int stride)
|
||||
; void ff_h264_idct8_add_8_sse2(uint8_t *dst, int16_t *block, ptrdiff_t stride)
|
||||
cglobal h264_idct8_add_8, 3, 4, 10
|
||||
movsxdifnidn r2, r2d
|
||||
IDCT8_ADD_SSE r0, r1, r2, r3
|
||||
RET
|
||||
|
||||
@@ -264,9 +263,8 @@ cglobal h264_idct8_add_8, 3, 4, 10
|
||||
|
||||
INIT_MMX mmxext
|
||||
%if ARCH_X86_64
|
||||
; void ff_h264_idct8_dc_add_8_mmxext(uint8_t *dst, int16_t *block, int stride)
|
||||
; void ff_h264_idct8_dc_add_8_mmxext(uint8_t *dst, int16_t *block, ptrdiff_t stride)
|
||||
cglobal h264_idct8_dc_add_8, 3, 4, 0
|
||||
movsxd r2, r2d
|
||||
movsx r3, word [r1]
|
||||
mov dword [r1], 0
|
||||
DC_ADD_MMXEXT_INIT r3, r2
|
||||
@@ -275,7 +273,7 @@ cglobal h264_idct8_dc_add_8, 3, 4, 0
|
||||
DC_ADD_MMXEXT_OP mova, r0, r2, r3
|
||||
RET
|
||||
%else
|
||||
; void ff_h264_idct8_dc_add_8_mmxext(uint8_t *dst, int16_t *block, int stride)
|
||||
; void ff_h264_idct8_dc_add_8_mmxext(uint8_t *dst, int16_t *block, ptrdiff_t stride)
|
||||
cglobal h264_idct8_dc_add_8, 2, 3, 0
|
||||
movsx r2, word [r1]
|
||||
mov dword [r1], 0
|
||||
@@ -289,10 +287,9 @@ cglobal h264_idct8_dc_add_8, 2, 3, 0
|
||||
|
||||
INIT_XMM sse2
|
||||
; void ff_h264_idct8_add4_8_sse2(uint8_t *dst, const int *block_offset,
|
||||
; int16_t *block, int stride,
|
||||
; int16_t *block, ptrdiff_t stride,
|
||||
; const uint8_t nnzc[6 * 8])
|
||||
cglobal h264_idct8_add4_8, 5, 8 + npicregs, 10, dst1, block_offset, block, stride, nnzc, cntr, coeff, dst2, picreg
|
||||
movsxdifnidn r3, r3d
|
||||
xor r5, r5
|
||||
%if PIC
|
||||
lea picregq, [scan8_mem]
|
||||
@@ -345,7 +342,6 @@ INIT_XMM cpuname
|
||||
INIT_MMX mmx
|
||||
cglobal h264_idct_add8_422_8, 5, 8 + npicregs, 0, dst1, block_offset, block, stride, nnzc, cntr, coeff, dst2, picreg
|
||||
; dst1, block_offset, block, stride, nnzc, cntr, coeff, dst2, picreg
|
||||
movsxdifnidn r3, r3d
|
||||
%if PIC
|
||||
lea picregq, [scan8_mem]
|
||||
%endif
|
||||
@@ -459,10 +455,9 @@ h264_add8x4_idct_sse2:
|
||||
%endmacro
|
||||
|
||||
; void ff_h264_idct_add16_8_sse2(uint8_t *dst, const int *block_offset,
|
||||
; int16_t *block, int stride,
|
||||
; int16_t *block, ptrdiff_t stride,
|
||||
; const uint8_t nnzc[6 * 8])
|
||||
cglobal h264_idct_add16_8, 5, 5 + ARCH_X86_64, 8
|
||||
movsxdifnidn r3, r3d
|
||||
%if ARCH_X86_64
|
||||
mov r5, r0
|
||||
%endif
|
||||
@@ -507,10 +502,9 @@ RET
|
||||
%endmacro
|
||||
|
||||
; void ff_h264_idct_add16intra_8_sse2(uint8_t *dst, const int *block_offset,
|
||||
; int16_t *block, int stride,
|
||||
; int16_t *block, ptrdiff_t stride,
|
||||
; const uint8_t nnzc[6 * 8])
|
||||
cglobal h264_idct_add16intra_8, 5, 7 + ARCH_X86_64, 8
|
||||
movsxdifnidn r3, r3d
|
||||
%if ARCH_X86_64
|
||||
mov r7, r0
|
||||
%endif
|
||||
@@ -559,10 +553,9 @@ RET
|
||||
%endmacro
|
||||
|
||||
; void ff_h264_idct_add8_8_sse2(uint8_t **dest, const int *block_offset,
|
||||
; int16_t *block, int stride,
|
||||
; int16_t *block, ptrdiff_t stride,
|
||||
; const uint8_t nnzc[6 * 8])
|
||||
cglobal h264_idct_add8_8, 5, 7 + ARCH_X86_64, 8
|
||||
movsxdifnidn r3, r3d
|
||||
add r2, 512
|
||||
%if ARCH_X86_64
|
||||
mov r7, r0
|
||||
@@ -742,12 +735,10 @@ cglobal h264_luma_dc_dequant_idct, 3, 4, 6
|
||||
INIT_XMM %1
|
||||
|
||||
cglobal h264_idct_add_8, 3, 3, 8, dst_, block_, stride_
|
||||
movsxdifnidn stride_q, stride_d
|
||||
IDCT4_ADD dst_q, block_q, stride_q
|
||||
RET
|
||||
|
||||
cglobal h264_idct_dc_add_8, 3, 4, 6, dst_, block_, stride_
|
||||
movsxdifnidn stride_q, stride_d
|
||||
movsx r3d, word [block_q]
|
||||
mov dword [block_q], 0
|
||||
DC_ADD_INIT r3
|
||||
|
||||
@@ -31,7 +31,7 @@ cextern pw_1023
|
||||
cextern pd_32
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; void ff_h264_idct_add_10(pixel *dst, int16_t *block, int stride)
|
||||
; void ff_h264_idct_add_10(pixel *dst, int16_t *block, ptrdiff_t stride)
|
||||
;-----------------------------------------------------------------------------
|
||||
%macro STORE_DIFFx2 6
|
||||
psrad %1, 6
|
||||
@@ -76,7 +76,6 @@ cextern pd_32
|
||||
|
||||
%macro IDCT_ADD_10 0
|
||||
cglobal h264_idct_add_10, 3,3
|
||||
movsxdifnidn r2, r2d
|
||||
IDCT4_ADD_10 r0, r1, r2
|
||||
RET
|
||||
%endmacro
|
||||
@@ -90,7 +89,7 @@ IDCT_ADD_10
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; void ff_h264_idct_add16_10(pixel *dst, const int *block_offset,
|
||||
; int16_t *block, int stride,
|
||||
; int16_t *block, ptrdiff_t stride,
|
||||
; const uint8_t nnzc[6*8])
|
||||
;-----------------------------------------------------------------------------
|
||||
;;;;;;; NO FATE SAMPLES TRIGGER THIS
|
||||
@@ -138,7 +137,6 @@ ADD4x4IDCT
|
||||
|
||||
%macro IDCT_ADD16_10 0
|
||||
cglobal h264_idct_add16_10, 5,6
|
||||
movsxdifnidn r3, r3d
|
||||
ADD16_OP 0, 4+1*8
|
||||
ADD16_OP 1, 5+1*8
|
||||
ADD16_OP 2, 4+2*8
|
||||
@@ -166,7 +164,7 @@ IDCT_ADD16_10
|
||||
%endif
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; void ff_h264_idct_dc_add_10(pixel *dst, int16_t *block, int stride)
|
||||
; void ff_h264_idct_dc_add_10(pixel *dst, int16_t *block, ptrdiff_t stride)
|
||||
;-----------------------------------------------------------------------------
|
||||
%macro IDCT_DC_ADD_OP_10 3
|
||||
pxor m5, m5
|
||||
@@ -197,7 +195,6 @@ IDCT_ADD16_10
|
||||
|
||||
INIT_MMX mmxext
|
||||
cglobal h264_idct_dc_add_10,3,3
|
||||
movsxdifnidn r2, r2d
|
||||
movd m0, [r1]
|
||||
mov dword [r1], 0
|
||||
paddd m0, [pd_32]
|
||||
@@ -209,11 +206,10 @@ cglobal h264_idct_dc_add_10,3,3
|
||||
RET
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; void ff_h264_idct8_dc_add_10(pixel *dst, int16_t *block, int stride)
|
||||
; void ff_h264_idct8_dc_add_10(pixel *dst, int16_t *block, ptrdiff_t stride)
|
||||
;-----------------------------------------------------------------------------
|
||||
%macro IDCT8_DC_ADD 0
|
||||
cglobal h264_idct8_dc_add_10,3,4,7
|
||||
movsxdifnidn r2, r2d
|
||||
movd m0, [r1]
|
||||
mov dword[r1], 0
|
||||
paddd m0, [pd_32]
|
||||
@@ -236,7 +232,7 @@ IDCT8_DC_ADD
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; void ff_h264_idct_add16intra_10(pixel *dst, const int *block_offset,
|
||||
; int16_t *block, int stride,
|
||||
; int16_t *block, ptrdiff_t stride,
|
||||
; const uint8_t nnzc[6*8])
|
||||
;-----------------------------------------------------------------------------
|
||||
%macro AC 1
|
||||
@@ -283,7 +279,6 @@ idct_dc_add %+ SUFFIX:
|
||||
ret
|
||||
|
||||
cglobal h264_idct_add16intra_10,5,7,8
|
||||
movsxdifnidn r3, r3d
|
||||
ADD16_OP_INTRA 0, 4+1*8
|
||||
ADD16_OP_INTRA 2, 4+2*8
|
||||
ADD16_OP_INTRA 4, 6+1*8
|
||||
@@ -313,12 +308,11 @@ IDCT_ADD16INTRA_10
|
||||
%assign last_block 36
|
||||
;-----------------------------------------------------------------------------
|
||||
; void ff_h264_idct_add8_10(pixel **dst, const int *block_offset,
|
||||
; int16_t *block, int stride,
|
||||
; int16_t *block, ptrdiff_t stride,
|
||||
; const uint8_t nnzc[6*8])
|
||||
;-----------------------------------------------------------------------------
|
||||
%macro IDCT_ADD8 0
|
||||
cglobal h264_idct_add8_10,5,8,7
|
||||
movsxdifnidn r3, r3d
|
||||
%if ARCH_X86_64
|
||||
mov r7, r0
|
||||
%endif
|
||||
@@ -352,7 +346,7 @@ IDCT_ADD8
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; void ff_h264_idct_add8_422_10(pixel **dst, const int *block_offset,
|
||||
; int16_t *block, int stride,
|
||||
; int16_t *block, ptrdiff_t stride,
|
||||
; const uint8_t nnzc[6*8])
|
||||
;-----------------------------------------------------------------------------
|
||||
%assign last_block 44
|
||||
@@ -360,7 +354,6 @@ IDCT_ADD8
|
||||
%macro IDCT_ADD8_422 0
|
||||
|
||||
cglobal h264_idct_add8_422_10, 5, 8, 7
|
||||
movsxdifnidn r3, r3d
|
||||
%if ARCH_X86_64
|
||||
mov r7, r0
|
||||
%endif
|
||||
@@ -404,7 +397,7 @@ IDCT_ADD8_422
|
||||
%endif
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; void ff_h264_idct8_add_10(pixel *dst, int16_t *block, int stride)
|
||||
; void ff_h264_idct8_add_10(pixel *dst, int16_t *block, ptrdiff_t stride)
|
||||
;-----------------------------------------------------------------------------
|
||||
%macro IDCT8_1D 2
|
||||
SWAP 0, 1
|
||||
@@ -488,7 +481,7 @@ IDCT_ADD8_422
|
||||
%endif
|
||||
%endmacro
|
||||
|
||||
; %1=uint8_t *dst, %2=int16_t *block, %3=int stride
|
||||
; %1=uint8_t *dst, %2=int16_t *block, %3=ptrdiff_t stride
|
||||
%macro IDCT8_ADD_SSE_END 3
|
||||
IDCT8_1D_FULL %2
|
||||
mova [%2 ], m6
|
||||
@@ -508,7 +501,6 @@ IDCT_ADD8_422
|
||||
|
||||
%macro IDCT8_ADD 0
|
||||
cglobal h264_idct8_add_10, 3,4,16
|
||||
movsxdifnidn r2, r2d
|
||||
%if UNIX64 == 0
|
||||
%assign pad 16-gprsize-(stack_offset&15)
|
||||
sub rsp, pad
|
||||
@@ -615,7 +607,7 @@ IDCT8_ADD
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; void ff_h264_idct8_add4_10(pixel **dst, const int *block_offset,
|
||||
; int16_t *block, int stride,
|
||||
; int16_t *block, ptrdiff_t stride,
|
||||
; const uint8_t nnzc[6*8])
|
||||
;-----------------------------------------------------------------------------
|
||||
;;;;;;; NO FATE SAMPLES TRIGGER THIS
|
||||
@@ -633,7 +625,6 @@ IDCT8_ADD
|
||||
|
||||
%macro IDCT8_ADD4 0
|
||||
cglobal h264_idct8_add4_10, 0,7,16
|
||||
movsxdifnidn r3, r3d
|
||||
%assign pad 16-gprsize-(stack_offset&15)
|
||||
SUB rsp, pad
|
||||
mov r5, r0mp
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
#define IDCT_ADD_FUNC(NUM, DEPTH, OPT) \
|
||||
void ff_h264_idct ## NUM ## _add_ ## DEPTH ## _ ## OPT(uint8_t *dst, \
|
||||
int16_t *block, \
|
||||
int stride);
|
||||
ptrdiff_t stride);
|
||||
|
||||
IDCT_ADD_FUNC(, 8, sse2)
|
||||
IDCT_ADD_FUNC(, 8, avx)
|
||||
@@ -48,7 +48,7 @@ IDCT_ADD_FUNC(8, 10, avx)
|
||||
#define IDCT_ADD_REP_FUNC(NUM, REP, DEPTH, OPT) \
|
||||
void ff_h264_idct ## NUM ## _add ## REP ## _ ## DEPTH ## _ ## OPT \
|
||||
(uint8_t *dst, const int *block_offset, \
|
||||
int16_t *block, int stride, const uint8_t nnzc[5 * 8]);
|
||||
int16_t *block, ptrdiff_t stride, const uint8_t nnzc[5 * 8]);
|
||||
|
||||
IDCT_ADD_REP_FUNC(8, 4, 8, sse2)
|
||||
IDCT_ADD_REP_FUNC(8, 4, 10, sse2)
|
||||
@@ -64,7 +64,7 @@ IDCT_ADD_REP_FUNC(, 16intra, 10, avx)
|
||||
#define IDCT_ADD_REP_FUNC2(NUM, REP, DEPTH, OPT) \
|
||||
void ff_h264_idct ## NUM ## _add ## REP ## _ ## DEPTH ## _ ## OPT \
|
||||
(uint8_t **dst, const int *block_offset, \
|
||||
int16_t *block, int stride, const uint8_t nnzc[15 * 8]);
|
||||
int16_t *block, ptrdiff_t stride, const uint8_t nnzc[15 * 8]);
|
||||
|
||||
IDCT_ADD_REP_FUNC2(, 8, 8, sse2)
|
||||
IDCT_ADD_REP_FUNC2(, 8, 10, sse2)
|
||||
|
||||
@@ -184,7 +184,7 @@ static void check_idct(void)
|
||||
LOCAL_ALIGNED_16(int16_t, subcoef1, [8 * 8 * 2]);
|
||||
H264DSPContext h;
|
||||
int bit_depth, sz, align, dc, i;
|
||||
declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *dst, int16_t *block, int stride);
|
||||
declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *dst, int16_t *block, ptrdiff_t stride);
|
||||
|
||||
for (i = 0; i < FF_ARRAY_ELEMS(depths); i++) {
|
||||
bit_depth = depths[i];
|
||||
@@ -192,7 +192,7 @@ static void check_idct(void)
|
||||
|
||||
for (dc = 0; dc <= 2; dc++) {
|
||||
for (sz = 4; sz <= 8; sz += 4) {
|
||||
void (*idct)(uint8_t *, int16_t *, int) = NULL;
|
||||
void (*idct)(uint8_t *, int16_t *, ptrdiff_t) = NULL;
|
||||
const char fmts[3][28] = {
|
||||
"idct%d_add_%dbpp", "idct%d_dc_add_%dbpp",
|
||||
"add_pixels%d_%dbpp",
|
||||
@@ -250,12 +250,12 @@ static void check_idct_multiple(void)
|
||||
LOCAL_ALIGNED_16(uint8_t, nnzc, [15 * 8]);
|
||||
H264DSPContext h;
|
||||
int bit_depth, i, y, func;
|
||||
declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *dst, const int *block_offset, int16_t *block, int stride, const uint8_t nnzc[15*8]);
|
||||
declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *dst, const int *block_offset, int16_t *block, ptrdiff_t stride, const uint8_t nnzc[15*8]);
|
||||
|
||||
for (bit_depth = 8; bit_depth <= 10; bit_depth++) {
|
||||
ff_h264dsp_init(&h, bit_depth, 1);
|
||||
for (func = 0; func < 3; func++) {
|
||||
void (*idct)(uint8_t *, const int *, int16_t *, int, const uint8_t[]) = NULL;
|
||||
void (*idct)(uint8_t *, const int *, int16_t *, ptrdiff_t, const uint8_t[]) = NULL;
|
||||
const char *name;
|
||||
int sz = 4, intra = 0;
|
||||
int block_offset[16] = { 0 };
|
||||
|
||||
Reference in New Issue
Block a user