mirror of https://github.com/FFmpeg/FFmpeg.git
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>pull/79/merge
parent
9a6ca20ef6
commit
c0a586d9d5
8 changed files with 159 additions and 13 deletions
@ -0,0 +1,87 @@ |
||||
/*
|
||||
* DSP utils |
||||
* Copyright (c) 2000, 2001, 2002 Fabrice Bellard |
||||
* Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at> |
||||
* |
||||
* This file is part of FFmpeg. |
||||
* |
||||
* FFmpeg 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. |
||||
* |
||||
* FFmpeg 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 FFmpeg; if not, write to the Free Software |
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
||||
*/ |
||||
|
||||
/**
|
||||
* @file |
||||
* DSP utils. |
||||
* This is deprecated |
||||
*/ |
||||
|
||||
#ifndef AVCODEC_DSPUTIL_H |
||||
#define AVCODEC_DSPUTIL_H |
||||
|
||||
#include "avcodec.h" |
||||
#include "version.h" |
||||
#include "me_cmp.h" |
||||
|
||||
#if FF_API_DSPUTIL |
||||
|
||||
/* minimum alignment rules ;)
|
||||
* If you notice errors in the align stuff, need more alignment for some ASM code |
||||
* for some CPU or need to use a function with less aligned data then send a mail |
||||
* to the ffmpeg-devel mailing list, ... |
||||
* |
||||
* !warning These alignments might not match reality, (missing attribute((align)) |
||||
* stuff somewhere possible). |
||||
* I (Michael) did not check them, these are just the alignments which I think |
||||
* could be reached easily ... |
||||
* |
||||
* !future video codecs might need functions with less strict alignment |
||||
*/ |
||||
|
||||
struct MpegEncContext; |
||||
|
||||
/**
|
||||
* DSPContext. |
||||
*/ |
||||
typedef struct DSPContext { |
||||
int (*sum_abs_dctelem)(int16_t *block /* align 16 */); |
||||
|
||||
me_cmp_func sad[6]; /* identical to pix_absAxA except additional void * */ |
||||
me_cmp_func sse[6]; |
||||
me_cmp_func hadamard8_diff[6]; |
||||
me_cmp_func dct_sad[6]; |
||||
me_cmp_func quant_psnr[6]; |
||||
me_cmp_func bit[6]; |
||||
me_cmp_func rd[6]; |
||||
me_cmp_func vsad[6]; |
||||
me_cmp_func vsse[6]; |
||||
me_cmp_func nsse[6]; |
||||
me_cmp_func w53[6]; |
||||
me_cmp_func w97[6]; |
||||
me_cmp_func dct_max[6]; |
||||
me_cmp_func dct264_sad[6]; |
||||
|
||||
me_cmp_func me_pre_cmp[6]; |
||||
me_cmp_func me_cmp[6]; |
||||
me_cmp_func me_sub_cmp[6]; |
||||
me_cmp_func mb_cmp[6]; |
||||
me_cmp_func ildct_cmp[6]; // only width 16 used
|
||||
me_cmp_func frame_skip_cmp[6]; // only width 8 used
|
||||
|
||||
me_cmp_func pix_abs[2][4]; |
||||
} DSPContext; |
||||
|
||||
attribute_deprecated void avpriv_dsputil_init(DSPContext* p, AVCodecContext *avctx); |
||||
|
||||
#endif |
||||
#endif /* AVCODEC_DSPUTIL_H */ |
@ -0,0 +1,56 @@ |
||||
/*
|
||||
* DSP utils |
||||
* |
||||
* This file is part of FFmpeg. |
||||
* |
||||
* FFmpeg 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. |
||||
* |
||||
* FFmpeg 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 FFmpeg; if not, write to the Free Software |
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
||||
*/ |
||||
|
||||
#include "me_cmp.h" |
||||
#include "dsputil.h" |
||||
|
||||
#if FF_API_DSPUTIL |
||||
|
||||
void avpriv_dsputil_init(DSPContext* p, AVCodecContext *avctx) |
||||
{ |
||||
MECmpContext mecc; |
||||
|
||||
ff_me_cmp_init(&mecc, avctx); |
||||
#define COPY(name) memcpy(&p->name, &mecc.name, sizeof(p->name)) |
||||
COPY(sum_abs_dctelem); |
||||
COPY(sad); |
||||
COPY(sse); |
||||
COPY(hadamard8_diff); |
||||
COPY(dct_sad); |
||||
COPY(quant_psnr); |
||||
COPY(bit); |
||||
COPY(rd); |
||||
COPY(vsad); |
||||
COPY(vsse); |
||||
COPY(nsse); |
||||
COPY(w53); |
||||
COPY(w97); |
||||
COPY(dct_max); |
||||
COPY(dct264_sad); |
||||
COPY(me_pre_cmp); |
||||
COPY(me_cmp); |
||||
COPY(me_sub_cmp); |
||||
COPY(mb_cmp); |
||||
COPY(ildct_cmp); |
||||
COPY(frame_skip_cmp); |
||||
COPY(pix_abs); |
||||
} |
||||
|
||||
#endif |
Loading…
Reference in new issue