annotate vp6dsp.c @ 12530:63edd10ad4bc libavcodec tip

Try to fix crashes introduced by r25218 r25218 made assumptions about the existence of past reference frames that weren't necessarily true.
author darkshikari
date Tue, 28 Sep 2010 09:06:22 +0000
parents 9f06475db098
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8785
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
1 /**
11644
7dd2a45249a9 Remove explicit filename from Doxygen @file commands.
diego
parents: 8785
diff changeset
2 * @file
8785
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
3 * VP6 DSP-oriented functions
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
4 *
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
5 * Copyright (C) 2006 Aurelien Jacobs <aurel@gnuage.org>
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
6 *
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
7 * This file is part of FFmpeg.
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
8 *
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
9 * FFmpeg is free software; you can redistribute it and/or
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
10 * modify it under the terms of the GNU Lesser General Public
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
11 * License as published by the Free Software Foundation; either
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
12 * version 2.1 of the License, or (at your option) any later version.
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
13 *
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
14 * FFmpeg is distributed in the hope that it will be useful,
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
17 * Lesser General Public License for more details.
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
18 *
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
19 * You should have received a copy of the GNU Lesser General Public
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
20 * License along with FFmpeg; if not, write to the Free Software
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
22 */
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
23
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
24 #include "libavutil/common.h"
12417
9f06475db098 Move vp6_filter_diag4() from DSPContext to VP56DSPContext.
rbultje
parents: 11644
diff changeset
25 #include "vp56dsp.h"
8785
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
26
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
27
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
28 void ff_vp6_filter_diag4_c(uint8_t *dst, uint8_t *src, int stride,
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
29 const int16_t *h_weights, const int16_t *v_weights)
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
30 {
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
31 int x, y;
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
32 int tmp[8*11];
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
33 int *t = tmp;
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
34
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
35 src -= stride;
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
36
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
37 for (y=0; y<11; y++) {
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
38 for (x=0; x<8; x++) {
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
39 t[x] = av_clip_uint8(( src[x-1] * h_weights[0]
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
40 + src[x ] * h_weights[1]
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
41 + src[x+1] * h_weights[2]
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
42 + src[x+2] * h_weights[3] + 64) >> 7);
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
43 }
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
44 src += stride;
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
45 t += 8;
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
46 }
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
47
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
48 t = tmp + 8;
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
49 for (y=0; y<8; y++) {
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
50 for (x=0; x<8; x++) {
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
51 dst[x] = av_clip_uint8(( t[x-8 ] * v_weights[0]
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
52 + t[x ] * v_weights[1]
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
53 + t[x+8 ] * v_weights[2]
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
54 + t[x+16] * v_weights[3] + 64) >> 7);
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
55 }
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
56 dst += stride;
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
57 t += 8;
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
58 }
bee83b3f9a6b move vp6_filter_diag4() to a new vp6dsp.c file and use it throught dsputil
aurel
parents:
diff changeset
59 }