Statistics
| Branch: | Revision:

ffmpeg / libavcodec / vc1dsp.h @ 18b6a69c

History | View | Annotate | Download (2.66 KB)

1
/*
2
 * VC-1 and WMV3 decoder - DSP functions
3
 * Copyright (c) 2006 Konstantin Shishkov
4
 *
5
 * This file is part of Libav.
6
 *
7
 * Libav is free software; you can redistribute it and/or
8
 * modify it under the terms of the GNU Lesser General Public
9
 * License as published by the Free Software Foundation; either
10
 * version 2.1 of the License, or (at your option) any later version.
11
 *
12
 * Libav is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
 * Lesser General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU Lesser General Public
18
 * License along with Libav; if not, write to the Free Software
19
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
 */
21

    
22
/**
23
 * @file
24
 * VC-1 and WMV3 decoder
25
 *
26
 */
27

    
28
#ifndef AVCODEC_VC1DSP_H
29
#define AVCODEC_VC1DSP_H
30

    
31
#include "dsputil.h"
32

    
33
typedef struct VC1DSPContext {
34
    /* vc1 functions */
35
    void (*vc1_inv_trans_8x8)(DCTELEM *b);
36
    void (*vc1_inv_trans_8x4)(uint8_t *dest, int line_size, DCTELEM *block);
37
    void (*vc1_inv_trans_4x8)(uint8_t *dest, int line_size, DCTELEM *block);
38
    void (*vc1_inv_trans_4x4)(uint8_t *dest, int line_size, DCTELEM *block);
39
    void (*vc1_inv_trans_8x8_dc)(uint8_t *dest, int line_size, DCTELEM *block);
40
    void (*vc1_inv_trans_8x4_dc)(uint8_t *dest, int line_size, DCTELEM *block);
41
    void (*vc1_inv_trans_4x8_dc)(uint8_t *dest, int line_size, DCTELEM *block);
42
    void (*vc1_inv_trans_4x4_dc)(uint8_t *dest, int line_size, DCTELEM *block);
43
    void (*vc1_v_overlap)(uint8_t* src, int stride);
44
    void (*vc1_h_overlap)(uint8_t* src, int stride);
45
    void (*vc1_v_loop_filter4)(uint8_t *src, int stride, int pq);
46
    void (*vc1_h_loop_filter4)(uint8_t *src, int stride, int pq);
47
    void (*vc1_v_loop_filter8)(uint8_t *src, int stride, int pq);
48
    void (*vc1_h_loop_filter8)(uint8_t *src, int stride, int pq);
49
    void (*vc1_v_loop_filter16)(uint8_t *src, int stride, int pq);
50
    void (*vc1_h_loop_filter16)(uint8_t *src, int stride, int pq);
51

    
52
    /* put 8x8 block with bicubic interpolation and quarterpel precision
53
     * last argument is actually round value instead of height
54
     */
55
    op_pixels_func put_vc1_mspel_pixels_tab[16];
56
    op_pixels_func avg_vc1_mspel_pixels_tab[16];
57

    
58
    /* This is really one func used in VC-1 decoding */
59
    h264_chroma_mc_func put_no_rnd_vc1_chroma_pixels_tab[3];
60
    h264_chroma_mc_func avg_no_rnd_vc1_chroma_pixels_tab[3];
61
} VC1DSPContext;
62

    
63
void ff_vc1dsp_init(VC1DSPContext* c);
64
void ff_vc1dsp_init_altivec(VC1DSPContext* c);
65
void ff_vc1dsp_init_mmx(VC1DSPContext* dsp);
66

    
67
#endif /* AVCODEC_VC1DSP_H */