~ppsspp/ppsspp/ffmpeg

« back to all changes in this revision

Viewing changes to libavcodec/hevcdsp.h

  • Committer: Henrik Rydgård
  • Date: 2014-01-03 10:44:32 UTC
  • Revision ID: git-v1:87c6c126784b1718bfa448ecf2e6a9fef781eb4e
Update our ffmpeg snapshot to a clone of the official repository.

This is because Maxim's at3plus support has been officially merged!

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 * HEVC video Decoder
 
2
 * HEVC video decoder
3
3
 *
4
4
 * Copyright (C) 2012 - 2013 Guillaume Martres
5
5
 *
25
25
 
26
26
#include "get_bits.h"
27
27
 
28
 
struct SAOParams;
 
28
typedef struct SAOParams {
 
29
    int offset_abs[3][4];   ///< sao_offset_abs
 
30
    int offset_sign[3][4];  ///< sao_offset_sign
 
31
 
 
32
    int band_position[3];   ///< sao_band_position
 
33
 
 
34
    int eo_class[3];        ///< sao_eo_class
 
35
 
 
36
    int offset_val[3][5];   ///<SaoOffsetVal
 
37
 
 
38
    uint8_t type_idx[3];    ///< sao_type_idx
 
39
} SAOParams;
29
40
 
30
41
typedef struct HEVCDSPContext {
31
 
    void (*put_pcm)(uint8_t *_dst, ptrdiff_t _stride, int size,
 
42
    void (*put_pcm)(uint8_t *dst, ptrdiff_t stride, int size,
32
43
                    GetBitContext *gb, int pcm_bit_depth);
33
44
 
34
 
    void (*transquant_bypass[4])(uint8_t *_dst, int16_t *coeffs, ptrdiff_t _stride);
 
45
    void (*transquant_bypass[4])(uint8_t *dst, int16_t *coeffs,
 
46
                                 ptrdiff_t stride);
35
47
 
36
48
    void (*transform_skip)(uint8_t *dst, int16_t *coeffs, ptrdiff_t stride);
37
 
 
38
 
    void (*transform_4x4_luma_add)(uint8_t *dst, int16_t *coeffs, ptrdiff_t stride);
39
 
 
40
 
    void (*transform_add[4])(uint8_t *dst, int16_t *coeffs, ptrdiff_t _stride);
41
 
 
42
 
    void (*sao_band_filter[4])( uint8_t *_dst, uint8_t *_src, ptrdiff_t _stride, struct SAOParams *sao, int *borders, int width, int height, int c_idx);
43
 
 
44
 
    void (*sao_edge_filter[4])(uint8_t *_dst, uint8_t *_src, ptrdiff_t _stride,  struct SAOParams *sao, int *borders, int _width, int _height, int c_idx, uint8_t vert_edge, uint8_t horiz_edge, uint8_t diag_edge);
45
 
 
46
 
 
47
 
    void (*put_hevc_qpel[4][4])(int16_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride,
48
 
                                int width, int height, int16_t* mcbuffer);
49
 
 
50
 
    void (*put_hevc_epel[2][2])(int16_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride,
51
 
                             int width, int height, int mx, int my, int16_t* mcbuffer);
52
 
 
53
 
    void (*put_unweighted_pred)(uint8_t *dst, ptrdiff_t dststride, int16_t *src, ptrdiff_t srcstride,
54
 
                                int width, int height);
55
 
 
56
 
    void (*put_weighted_pred_avg)(uint8_t *dst, ptrdiff_t dststride, int16_t *src1, int16_t *src2,
57
 
                                  ptrdiff_t srcstride, int width, int height);
58
 
    void (*weighted_pred)(uint8_t denom, int16_t wlxFlag, int16_t olxFlag, uint8_t *dst, ptrdiff_t dststride, int16_t *src,
59
 
                                  ptrdiff_t srcstride, int width, int height);
60
 
    void (*weighted_pred_avg)(uint8_t denom, int16_t wl0Flag, int16_t wl1Flag, int16_t ol0Flag, int16_t ol1Flag,
61
 
                                   uint8_t *dst, ptrdiff_t dststride, int16_t *src1, int16_t *src2,
62
 
                                   ptrdiff_t srcstride, int width, int height);
63
 
    void (*hevc_h_loop_filter_luma)(uint8_t *_pix, ptrdiff_t _stride, int *_beta, int *_tc, uint8_t *_no_p, uint8_t *_no_q);
64
 
    void (*hevc_v_loop_filter_luma)(uint8_t *_pix, ptrdiff_t _stride, int *_beta, int *_tc, uint8_t *_no_p, uint8_t *_no_q);
65
 
    void (*hevc_h_loop_filter_chroma)(uint8_t *_pix, ptrdiff_t _stride, int *_tc, uint8_t *_no_p, uint8_t *_no_q);
66
 
    void (*hevc_v_loop_filter_chroma)(uint8_t *_pix, ptrdiff_t _stride, int *_tc, uint8_t *_no_p, uint8_t *_no_q);
67
 
    void (*hevc_h_loop_filter_luma_c)(uint8_t *_pix, ptrdiff_t _stride, int *_beta, int *_tc, uint8_t *_no_p, uint8_t *_no_q);
68
 
    void (*hevc_v_loop_filter_luma_c)(uint8_t *_pix, ptrdiff_t _stride, int *_beta, int *_tc, uint8_t *_no_p, uint8_t *_no_q);
69
 
    void (*hevc_h_loop_filter_chroma_c)(uint8_t *_pix, ptrdiff_t _stride, int *_tc, uint8_t *_no_p, uint8_t *_no_q);
70
 
    void (*hevc_v_loop_filter_chroma_c)(uint8_t *_pix, ptrdiff_t _stride, int *_tc, uint8_t *_no_p, uint8_t *_no_q);
 
49
    void (*transform_4x4_luma_add)(uint8_t *dst, int16_t *coeffs,
 
50
                                   ptrdiff_t stride);
 
51
    void (*transform_add[4])(uint8_t *dst, int16_t *coeffs, ptrdiff_t stride);
 
52
 
 
53
    void (*sao_band_filter[4])(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
 
54
                               struct SAOParams *sao, int *borders,
 
55
                               int width, int height, int c_idx);
 
56
    void (*sao_edge_filter[4])(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
 
57
                               struct SAOParams *sao, int *borders, int width,
 
58
                               int height, int c_idx, uint8_t vert_edge,
 
59
                               uint8_t horiz_edge, uint8_t diag_edge);
 
60
 
 
61
    void (*put_hevc_qpel[4][4])(int16_t *dst, ptrdiff_t dststride, uint8_t *src,
 
62
                                ptrdiff_t srcstride, int width, int height,
 
63
                                int16_t *mcbuffer);
 
64
    void (*put_hevc_epel[2][2])(int16_t *dst, ptrdiff_t dststride, uint8_t *src,
 
65
                                ptrdiff_t srcstride, int width, int height,
 
66
                                int mx, int my, int16_t *mcbuffer);
 
67
 
 
68
    void (*put_unweighted_pred)(uint8_t *dst, ptrdiff_t dststride, int16_t *src,
 
69
                                ptrdiff_t srcstride, int width, int height);
 
70
    void (*put_weighted_pred_avg)(uint8_t *dst, ptrdiff_t dststride,
 
71
                                  int16_t *src1, int16_t *src2,
 
72
                                  ptrdiff_t srcstride, int width, int height);
 
73
    void (*weighted_pred)(uint8_t denom, int16_t wlxFlag, int16_t olxFlag,
 
74
                          uint8_t *dst, ptrdiff_t dststride, int16_t *src,
 
75
                          ptrdiff_t srcstride, int width, int height);
 
76
    void (*weighted_pred_avg)(uint8_t denom, int16_t wl0Flag, int16_t wl1Flag,
 
77
                              int16_t ol0Flag, int16_t ol1Flag, uint8_t *dst,
 
78
                              ptrdiff_t dststride, int16_t *src1, int16_t *src2,
 
79
                              ptrdiff_t srcstride, int width, int height);
 
80
 
 
81
    void (*hevc_h_loop_filter_luma)(uint8_t *pix, ptrdiff_t stride,
 
82
                                    int *beta, int *tc,
 
83
                                    uint8_t *no_p, uint8_t *no_q);
 
84
    void (*hevc_v_loop_filter_luma)(uint8_t *pix, ptrdiff_t stride,
 
85
                                    int *beta, int *tc,
 
86
                                    uint8_t *no_p, uint8_t *no_q);
 
87
    void (*hevc_h_loop_filter_chroma)(uint8_t *pix, ptrdiff_t stride,
 
88
                                      int *tc, uint8_t *no_p, uint8_t *no_q);
 
89
    void (*hevc_v_loop_filter_chroma)(uint8_t *pix, ptrdiff_t stride,
 
90
                                      int *tc, uint8_t *no_p, uint8_t *no_q);
 
91
    void (*hevc_h_loop_filter_luma_c)(uint8_t *pix, ptrdiff_t stride,
 
92
                                      int *beta, int *tc,
 
93
                                      uint8_t *no_p, uint8_t *no_q);
 
94
    void (*hevc_v_loop_filter_luma_c)(uint8_t *pix, ptrdiff_t stride,
 
95
                                      int *beta, int *tc,
 
96
                                      uint8_t *no_p, uint8_t *no_q);
 
97
    void (*hevc_h_loop_filter_chroma_c)(uint8_t *pix, ptrdiff_t stride,
 
98
                                        int *tc, uint8_t *no_p,
 
99
                                        uint8_t *no_q);
 
100
    void (*hevc_v_loop_filter_chroma_c)(uint8_t *pix, ptrdiff_t stride,
 
101
                                        int *tc, uint8_t *no_p,
 
102
                                        uint8_t *no_q);
71
103
} HEVCDSPContext;
72
104
 
73
105
void ff_hevc_dsp_init(HEVCDSPContext *hpc, int bit_depth);