annotate bfin/vp3_bfin.c @ 10878:a8620b001ed3 libavcodec

Implement alpha channel decoding for BGR HuffYUV. Since BGR24 is decoded as BGR32, fill its alpha channel with 255 using the appropriate predictors.
author astrange
date Thu, 14 Jan 2010 01:32:49 +0000
parents cf4d575b1982
children 00b80bf84ad9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5776
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
1 /*
5777
95916a621536 license header consistency cosmetics.
diego
parents: 5776
diff changeset
2 * Copyright (C) 2007 Marc Hoffman <marc.hoffman@analog.com>
95916a621536 license header consistency cosmetics.
diego
parents: 5776
diff changeset
3 *
5776
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
4 * This file is part of FFmpeg.
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
5 *
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
6 * FFmpeg is free software; you can redistribute it and/or
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
8 * License as published by the Free Software Foundation; either
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
9 * version 2.1 of the License, or (at your option) any later version.
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
10 *
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
11 * FFmpeg is distributed in the hope that it will be useful,
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
14 * Lesser General Public License for more details.
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
15 *
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
17 * License along with FFmpeg; if not, write to the Free Software
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
19 */
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
20
6763
f7cbb7733146 Use full path for #includes from another directory.
diego
parents: 5777
diff changeset
21 #include "libavcodec/avcodec.h"
f7cbb7733146 Use full path for #includes from another directory.
diego
parents: 5777
diff changeset
22 #include "libavcodec/dsputil.h"
5776
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
23 #include "dsputil_bfin.h"
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
24
8250
cf4d575b1982 Delete unnecessary 'extern' keywords.
diego
parents: 6763
diff changeset
25 void ff_bfin_vp3_idct (DCTELEM *block) attribute_l1_text;
cf4d575b1982 Delete unnecessary 'extern' keywords.
diego
parents: 6763
diff changeset
26 void ff_bfin_idct (DCTELEM *block) attribute_l1_text;
cf4d575b1982 Delete unnecessary 'extern' keywords.
diego
parents: 6763
diff changeset
27 void ff_bfin_add_pixels_clamped (DCTELEM *block, uint8_t *dest, int line_size) attribute_l1_text;
cf4d575b1982 Delete unnecessary 'extern' keywords.
diego
parents: 6763
diff changeset
28 void ff_bfin_put_pixels_clamped (DCTELEM *block, uint8_t *dest, int line_size) attribute_l1_text;
5776
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
29
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
30 /* Intra iDCT offset 128 */
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
31 void ff_bfin_vp3_idct_put (uint8_t *dest, int line_size, DCTELEM *block)
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
32 {
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
33 uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
34 int i,j;
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
35
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
36 ff_bfin_vp3_idct (block);
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
37
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
38 for (i=0;i<8;i++)
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
39 for (j=0;j<8;j++)
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
40 dest[line_size*i+j]=cm[128+block[i*8+j]];
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
41 }
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
42
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
43 /* Inter iDCT */
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
44 void ff_bfin_vp3_idct_add (uint8_t *dest, int line_size, DCTELEM *block)
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
45 {
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
46 ff_bfin_vp3_idct (block);
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
47 ff_bfin_add_pixels_clamped (block, dest, line_size);
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
48 }
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
49
73ec16dbcbc1 blackfin optimized vp3 transform and infastructure for idct
mhoffman
parents:
diff changeset
50