Merge commit '68d8238cca52e50e8cc81bf2edcaf8088c52d4c0'
* commit '68d8238cca52e50e8cc81bf2edcaf8088c52d4c0': hpeldsp: Add half-pel functions (currently copies of dsputil) Conflicts: libavcodec/hpeldsp.c libavcodec/hpeldsp.h libavcodec/hpeldsp_template.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
23de9e91df
@ -28,12 +28,13 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "libavutil/attributes.h"
|
#include "libavutil/attributes.h"
|
||||||
|
#include "libavutil/intreadwrite.h"
|
||||||
#include "hpeldsp.h"
|
#include "hpeldsp.h"
|
||||||
|
|
||||||
#define BIT_DEPTH 8
|
#define BIT_DEPTH 8
|
||||||
#include "hpeldsp_template.c"
|
#include "hpeldsp_template.c"
|
||||||
|
|
||||||
av_cold void ff_hpeldsp_init(HpelDSPContext* c, int flags)
|
av_cold void ff_hpeldsp_init(HpelDSPContext *c, int flags)
|
||||||
{
|
{
|
||||||
#define hpel_funcs(prefix, idx, num) \
|
#define hpel_funcs(prefix, idx, num) \
|
||||||
c->prefix ## _pixels_tab idx [0] = prefix ## _pixels ## num ## _8_c; \
|
c->prefix ## _pixels_tab idx [0] = prefix ## _pixels ## num ## _8_c; \
|
||||||
|
@ -32,9 +32,12 @@
|
|||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
/* add and put pixel (decoding) */
|
/* add and put pixel (decoding) */
|
||||||
// blocksizes for op_pixels_func are 8x4,8x8 16x8 16x16
|
// blocksizes for hpel_pixels_func are 8x4,8x8 16x8 16x16
|
||||||
// h for op_pixels_func is limited to {width/2, width} but never larger
|
// h for hpel_pixels_func is limited to {width/2, width} but never larger
|
||||||
// than 16 and never smaller than 4
|
// than 16 and never smaller than 4
|
||||||
|
typedef void (*hpel_pixels_func)(uint8_t *block /*align width (8 or 16)*/,
|
||||||
|
const uint8_t *pixels /*align 1*/,
|
||||||
|
ptrdiff_t line_size, int h);
|
||||||
typedef void (*op_pixels_func)(uint8_t *block /*align width (8 or 16)*/,
|
typedef void (*op_pixels_func)(uint8_t *block /*align width (8 or 16)*/,
|
||||||
const uint8_t *pixels /*align 1*/,
|
const uint8_t *pixels /*align 1*/,
|
||||||
ptrdiff_t line_size, int h);
|
ptrdiff_t line_size, int h);
|
||||||
@ -53,7 +56,7 @@ typedef struct HpelDSPContext {
|
|||||||
* @param line_size number of bytes in a horizontal line of block
|
* @param line_size number of bytes in a horizontal line of block
|
||||||
* @param h height
|
* @param h height
|
||||||
*/
|
*/
|
||||||
op_pixels_func put_pixels_tab[4][4];
|
hpel_pixels_func put_pixels_tab[4][4];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Halfpel motion compensation with rounding (a+b+1)>>1.
|
* Halfpel motion compensation with rounding (a+b+1)>>1.
|
||||||
@ -65,7 +68,7 @@ typedef struct HpelDSPContext {
|
|||||||
* @param line_size number of bytes in a horizontal line of block
|
* @param line_size number of bytes in a horizontal line of block
|
||||||
* @param h height
|
* @param h height
|
||||||
*/
|
*/
|
||||||
op_pixels_func avg_pixels_tab[4][4];
|
hpel_pixels_func avg_pixels_tab[4][4];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Halfpel motion compensation with no rounding (a+b)>>1.
|
* Halfpel motion compensation with no rounding (a+b)>>1.
|
||||||
@ -77,7 +80,7 @@ typedef struct HpelDSPContext {
|
|||||||
* @param line_size number of bytes in a horizontal line of block
|
* @param line_size number of bytes in a horizontal line of block
|
||||||
* @param h height
|
* @param h height
|
||||||
*/
|
*/
|
||||||
op_pixels_func put_no_rnd_pixels_tab[4][4];
|
hpel_pixels_func put_no_rnd_pixels_tab[4][4];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Halfpel motion compensation with no rounding (a+b)>>1.
|
* Halfpel motion compensation with no rounding (a+b)>>1.
|
||||||
@ -89,10 +92,10 @@ typedef struct HpelDSPContext {
|
|||||||
* @param line_size number of bytes in a horizontal line of block
|
* @param line_size number of bytes in a horizontal line of block
|
||||||
* @param h height
|
* @param h height
|
||||||
*/
|
*/
|
||||||
op_pixels_func avg_no_rnd_pixels_tab[4];
|
hpel_pixels_func avg_no_rnd_pixels_tab[4];
|
||||||
} HpelDSPContext;
|
} HpelDSPContext;
|
||||||
|
|
||||||
void ff_hpeldsp_init(HpelDSPContext* p, int flags);
|
void ff_hpeldsp_init(HpelDSPContext *c, int flags);
|
||||||
|
|
||||||
void ff_hpeldsp_init_alpha(HpelDSPContext* c, int flags);
|
void ff_hpeldsp_init_alpha(HpelDSPContext* c, int flags);
|
||||||
void ff_hpeldsp_init_arm(HpelDSPContext* c, int flags);
|
void ff_hpeldsp_init_arm(HpelDSPContext* c, int flags);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user