FFmpeg
Loading...
Searching...
No Matches
pred.h
Go to the documentation of this file.
1/*
2 * HEVC video Decoder
3 *
4 * Copyright (C) 2012 - 2013 Guillaume Martres
5 *
6 * This file is part of FFmpeg.
7 *
8 * FFmpeg is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * FFmpeg is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with FFmpeg; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
23#ifndef AVCODEC_HEVC_PRED_H
24#define AVCODEC_HEVC_PRED_H
25
26#include <stddef.h>
27#include <stdint.h>
28
29struct HEVCLocalContext;
30struct HEVCPPS;
31
32typedef struct HEVCPredContext {
33 void (*intra_pred[4])(struct HEVCLocalContext *lc,
34 const struct HEVCPPS *pps, int x0, int y0, int c_idx);
35
36 void (*pred_planar[4])(uint8_t *src, const uint8_t *top,
37 const uint8_t *left, ptrdiff_t stride);
38 void (*pred_dc)(uint8_t *src, const uint8_t *top, const uint8_t *left,
39 ptrdiff_t stride, int log2_size, int c_idx);
40 void (*pred_angular[4])(uint8_t *src, const uint8_t *top,
41 const uint8_t *left, ptrdiff_t stride,
42 int c_idx, int mode);
43
44 void (*ref_filter_3tap[3])(uint8_t *filtered_left, uint8_t *filtered_top,
45 const uint8_t *left, const uint8_t *top,
46 int size);
47 void (*ref_filter_strong)(uint8_t *filtered_top, uint8_t *left,
48 const uint8_t *top);
50
54
55/* C angular prediction fallbacks (non-static for arch-specific partial override) */
56#define HEVC_PRED_ANGULAR_DECL(depth) \
57void ff_hevc_pred_angular_0_ ## depth(uint8_t *src, const uint8_t *top, \
58 const uint8_t *left, ptrdiff_t stride, \
59 int c_idx, int mode); \
60void ff_hevc_pred_angular_1_ ## depth(uint8_t *src, const uint8_t *top, \
61 const uint8_t *left, ptrdiff_t stride, \
62 int c_idx, int mode); \
63void ff_hevc_pred_angular_2_ ## depth(uint8_t *src, const uint8_t *top, \
64 const uint8_t *left, ptrdiff_t stride, \
65 int c_idx, int mode); \
66void ff_hevc_pred_angular_3_ ## depth(uint8_t *src, const uint8_t *top, \
67 const uint8_t *left, ptrdiff_t stride, \
68 int c_idx, int mode);
69
74
75#undef HEVC_PRED_ANGULAR_DECL
76
77#endif /* AVCODEC_HEVC_PRED_H */
static void bit_depth(AudioStatsContext *s, const uint64_t *const mask, uint8_t *depth)
Definition af_astats.c:246
static int BS_FUNC left(const BSCTX *bc)
Return the number of the bits left in a buffer.
uint64_t pps
Definition dovi_rpuenc.c:36
void ff_hevc_pred_init_mips(HEVCPredContext *hpc, int bit_depth)
#define HEVC_PRED_ANGULAR_DECL(depth)
Definition pred.h:56
void ff_hevc_pred_init_aarch64(HEVCPredContext *hpc, int bit_depth)
void ff_hevc_pred_init(HEVCPredContext *hpc, int bit_depth)
Definition pred.c:43
Definition ps.h:371
void(* pred_dc)(uint8_t *src, const uint8_t *top, const uint8_t *left, ptrdiff_t stride, int log2_size, int c_idx)
Definition pred.h:38
void(* ref_filter_strong)(uint8_t *filtered_top, uint8_t *left, const uint8_t *top)
Definition pred.h:47
void(* ref_filter_3tap[3])(uint8_t *filtered_left, uint8_t *filtered_top, const uint8_t *left, const uint8_t *top, int size)
Definition pred.h:44
void(* pred_planar[4])(uint8_t *src, const uint8_t *top, const uint8_t *left, ptrdiff_t stride)
Definition pred.h:36
void(* pred_angular[4])(uint8_t *src, const uint8_t *top, const uint8_t *left, ptrdiff_t stride, int c_idx, int mode)
Definition pred.h:40
void(* intra_pred[4])(struct HEVCLocalContext *lc, const struct HEVCPPS *pps, int x0, int y0, int c_idx)
Definition pred.h:33
Definition swscale.c:71
#define stride
#define src
Definition vp8dsp.c:248
int size