| FFmpeg
    | 
#include "libavutil/attributes.h"#include "libavutil/common.h"#include "libavutil/display.h"#include "libavutil/internal.h"#include "libavutil/mastering_display_metadata.h"#include "libavutil/md5.h"#include "libavutil/opt.h"#include "libavutil/pixdesc.h"#include "libavutil/stereo3d.h"#include "libavutil/timecode.h"#include "bswapdsp.h"#include "bytestream.h"#include "cabac_functions.h"#include "golomb.h"#include "hevc.h"#include "hevc_data.h"#include "hevc_parse.h"#include "hevcdec.h"#include "hwconfig.h"#include "profiles.h"Go to the source code of this file.
| Macros | |
| #define | HWACCEL_MAX | 
| #define | CTB(tab, x, y) ((tab)[(y) * s->ps.sps->ctb_width + (x)]) | 
| #define | SET_SAO(elem, value) | 
| #define | SUBDIVIDE(x, y, idx) | 
| #define | POS(c_idx, x, y) | 
| #define | OFFSET(x) offsetof(HEVCContext, x) | 
| #define | PAR (AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_VIDEO_PARAM) | 
| Functions | |
| static void | pic_arrays_free (HEVCContext *s) | 
| NOTE: Each function hls_foo correspond to the function foo in the specification (HLS stands for High Level Syntax).  More... | |
| static int | pic_arrays_init (HEVCContext *s, const HEVCSPS *sps) | 
| static int | pred_weight_table (HEVCContext *s, GetBitContext *gb) | 
| static int | decode_lt_rps (HEVCContext *s, LongTermRPS *rps, GetBitContext *gb) | 
| static void | export_stream_params (HEVCContext *s, const HEVCSPS *sps) | 
| static int | export_stream_params_from_sei (HEVCContext *s) | 
| static enum AVPixelFormat | get_format (HEVCContext *s, const HEVCSPS *sps) | 
| static int | set_sps (HEVCContext *s, const HEVCSPS *sps, enum AVPixelFormat pix_fmt) | 
| static int | hls_slice_header (HEVCContext *s) | 
| static void | hls_sao_param (HEVCContext *s, int rx, int ry) | 
| static int | hls_cross_component_pred (HEVCContext *s, int idx) | 
| static int | hls_transform_unit (HEVCContext *s, int x0, int y0, int xBase, int yBase, int cb_xBase, int cb_yBase, int log2_cb_size, int log2_trafo_size, int blk_idx, int cbf_luma, int *cbf_cb, int *cbf_cr) | 
| static void | set_deblocking_bypass (HEVCContext *s, int x0, int y0, int log2_cb_size) | 
| static int | hls_transform_tree (HEVCContext *s, int x0, int y0, int xBase, int yBase, int cb_xBase, int cb_yBase, int log2_cb_size, int log2_trafo_size, int trafo_depth, int blk_idx, const int *base_cbf_cb, const int *base_cbf_cr) | 
| static int | hls_pcm_sample (HEVCContext *s, int x0, int y0, int log2_cb_size) | 
| static void | luma_mc_uni (HEVCContext *s, uint8_t *dst, ptrdiff_t dststride, AVFrame *ref, const Mv *mv, int x_off, int y_off, int block_w, int block_h, int luma_weight, int luma_offset) | 
| 8.5.3.2.2.1 Luma sample unidirectional interpolation process  More... | |
| static void | luma_mc_bi (HEVCContext *s, uint8_t *dst, ptrdiff_t dststride, AVFrame *ref0, const Mv *mv0, int x_off, int y_off, int block_w, int block_h, AVFrame *ref1, const Mv *mv1, struct MvField *current_mv) | 
| 8.5.3.2.2.1 Luma sample bidirectional interpolation process  More... | |
| static void | chroma_mc_uni (HEVCContext *s, uint8_t *dst0, ptrdiff_t dststride, uint8_t *src0, ptrdiff_t srcstride, int reflist, int x_off, int y_off, int block_w, int block_h, struct MvField *current_mv, int chroma_weight, int chroma_offset) | 
| 8.5.3.2.2.2 Chroma sample uniprediction interpolation process  More... | |
| static void | chroma_mc_bi (HEVCContext *s, uint8_t *dst0, ptrdiff_t dststride, AVFrame *ref0, AVFrame *ref1, int x_off, int y_off, int block_w, int block_h, struct MvField *current_mv, int cidx) | 
| 8.5.3.2.2.2 Chroma sample bidirectional interpolation process  More... | |
| static void | hevc_await_progress (HEVCContext *s, HEVCFrame *ref, const Mv *mv, int y0, int height) | 
| static void | hevc_luma_mv_mvp_mode (HEVCContext *s, int x0, int y0, int nPbW, int nPbH, int log2_cb_size, int part_idx, int merge_idx, MvField *mv) | 
| static void | hls_prediction_unit (HEVCContext *s, int x0, int y0, int nPbW, int nPbH, int log2_cb_size, int partIdx, int idx) | 
| static int | luma_intra_pred_mode (HEVCContext *s, int x0, int y0, int pu_size, int prev_intra_luma_pred_flag) | 
| 8.4.1  More... | |
| static av_always_inline void | set_ct_depth (HEVCContext *s, int x0, int y0, int log2_cb_size, int ct_depth) | 
| static void | intra_prediction_unit (HEVCContext *s, int x0, int y0, int log2_cb_size) | 
| static void | intra_prediction_unit_default_value (HEVCContext *s, int x0, int y0, int log2_cb_size) | 
| static int | hls_coding_unit (HEVCContext *s, int x0, int y0, int log2_cb_size) | 
| static int | hls_coding_quadtree (HEVCContext *s, int x0, int y0, int log2_cb_size, int cb_depth) | 
| static void | hls_decode_neighbour (HEVCContext *s, int x_ctb, int y_ctb, int ctb_addr_ts) | 
| static int | hls_decode_entry (AVCodecContext *avctxt, void *isFilterThread) | 
| static int | hls_slice_data (HEVCContext *s) | 
| static int | hls_decode_entry_wpp (AVCodecContext *avctxt, void *input_ctb_row, int job, int self_id) | 
| static int | hls_slice_data_wpp (HEVCContext *s, const H2645NAL *nal) | 
| static int | set_side_data (HEVCContext *s) | 
| static int | hevc_frame_start (HEVCContext *s) | 
| static int | decode_nal_unit (HEVCContext *s, const H2645NAL *nal) | 
| static int | decode_nal_units (HEVCContext *s, const uint8_t *buf, int length) | 
| static void | print_md5 (void *log_ctx, int level, uint8_t md5[16]) | 
| static int | verify_md5 (HEVCContext *s, AVFrame *frame) | 
| static int | hevc_decode_extradata (HEVCContext *s, uint8_t *buf, int length, int first) | 
| static int | hevc_decode_frame (AVCodecContext *avctx, void *data, int *got_output, AVPacket *avpkt) | 
| static int | hevc_ref_frame (HEVCContext *s, HEVCFrame *dst, HEVCFrame *src) | 
| static av_cold int | hevc_decode_free (AVCodecContext *avctx) | 
| static av_cold int | hevc_init_context (AVCodecContext *avctx) | 
| static av_cold int | hevc_decode_init (AVCodecContext *avctx) | 
| static void | hevc_decode_flush (AVCodecContext *avctx) | 
| Variables | |
| const uint8_t | ff_hevc_pel_weight [65] = { [2] = 0, [4] = 1, [6] = 2, [8] = 3, [12] = 4, [16] = 5, [24] = 6, [32] = 7, [48] = 8, [64] = 9 } | 
| static const uint8_t | tab_mode_idx [] | 
| static const AVOption | options [] | 
| static const AVClass | hevc_decoder_class | 
| AVCodec | ff_hevc_decoder | 
| #define HWACCEL_MAX | 
| #define SET_SAO | ( | elem, | |
| value | |||
| ) | 
| #define SUBDIVIDE | ( | x, | |
| y, | |||
| idx | |||
| ) | 
| #define POS | ( | c_idx, | |
| x, | |||
| y | |||
| ) | 
| #define OFFSET | ( | x | ) | offsetof(HEVCContext, x) | 
| #define PAR (AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_VIDEO_PARAM) | 
| 
 | static | 
NOTE: Each function hls_foo correspond to the function foo in the specification (HLS stands for High Level Syntax).
Section 5.7
Definition at line 60 of file hevcdec.c.
Referenced by hevc_decode_free(), pic_arrays_init(), and set_sps().
| 
 | static | 
| 
 | static | 
Definition at line 144 of file hevcdec.c.
Referenced by hls_slice_header().
| 
 | static | 
Definition at line 260 of file hevcdec.c.
Referenced by hls_slice_header().
| 
 | static | 
Definition at line 317 of file hevcdec.c.
Referenced by hevc_decode_extradata(), and set_sps().
| 
 | static | 
Definition at line 374 of file hevcdec.c.
Referenced by hevc_decode_extradata(), and hls_slice_header().
| 
 | static | 
Definition at line 390 of file hevcdec.c.
Referenced by hls_slice_header().
| 
 | static | 
Definition at line 476 of file hevcdec.c.
Referenced by hls_slice_header().
| 
 | static | 
Definition at line 539 of file hevcdec.c.
Referenced by decode_nal_unit().
| 
 | static | 
Definition at line 989 of file hevcdec.c.
Referenced by hls_decode_entry(), and hls_decode_entry_wpp().
| 
 | static | 
Definition at line 1063 of file hevcdec.c.
Referenced by hls_transform_unit().
| 
 | static | 
Definition at line 1079 of file hevcdec.c.
Referenced by hls_transform_tree().
| 
 | static | 
Definition at line 1285 of file hevcdec.c.
Referenced by hls_coding_unit(), and hls_transform_tree().
| 
 | static | 
Definition at line 1300 of file hevcdec.c.
Referenced by hls_coding_unit().
| 
 | static | 
Definition at line 1423 of file hevcdec.c.
Referenced by hls_coding_unit().
| 
 | static | 
8.5.3.2.2.1 Luma sample unidirectional interpolation process
| s | HEVC decoding context | 
| dst | target buffer for block data at block position | 
| dststride | stride of the dst buffer | 
| ref | reference picture buffer at origin (0, 0) | 
| mv | motion vector (relative to block position) to get pixel data from | 
| x_off | horizontal position of block from origin (0, 0) | 
| y_off | vertical position of block from origin (0, 0) | 
| block_w | width of block | 
| block_h | height of block | 
| luma_weight | weighting factor applied to the luma prediction | 
| luma_offset | additive offset applied to the luma prediction value | 
Definition at line 1480 of file hevcdec.c.
Referenced by hls_prediction_unit().
| 
 | static | 
8.5.3.2.2.1 Luma sample bidirectional interpolation process
| s | HEVC decoding context | 
| dst | target buffer for block data at block position | 
| dststride | stride of the dst buffer | 
| ref0 | reference picture0 buffer at origin (0, 0) | 
| mv0 | motion vector0 (relative to block position) to get pixel data from | 
| x_off | horizontal position of block from origin (0, 0) | 
| y_off | vertical position of block from origin (0, 0) | 
| block_w | width of block | 
| block_h | height of block | 
| ref1 | reference picture1 buffer at origin (0, 0) | 
| mv1 | motion vector1 (relative to block position) to get pixel data from | 
| current_mv | current motion vector structure | 
Definition at line 1541 of file hevcdec.c.
Referenced by hls_prediction_unit().
| 
 | static | 
8.5.3.2.2.2 Chroma sample uniprediction interpolation process
| s | HEVC decoding context | 
| dst1 | target buffer for block data at block position (U plane) | 
| dst2 | target buffer for block data at block position (V plane) | 
| dststride | stride of the dst1 and dst2 buffers | 
| ref | reference picture buffer at origin (0, 0) | 
| mv | motion vector (relative to block position) to get pixel data from | 
| x_off | horizontal position of block from origin (0, 0) | 
| y_off | vertical position of block from origin (0, 0) | 
| block_w | width of block | 
| block_h | height of block | 
| chroma_weight | weighting factor applied to the chroma prediction | 
| chroma_offset | additive offset applied to the chroma prediction value | 
Definition at line 1632 of file hevcdec.c.
Referenced by hls_prediction_unit().
| 
 | static | 
8.5.3.2.2.2 Chroma sample bidirectional interpolation process
| s | HEVC decoding context | 
| dst | target buffer for block data at block position | 
| dststride | stride of the dst buffer | 
| ref0 | reference picture0 buffer at origin (0, 0) | 
| mv0 | motion vector0 (relative to block position) to get pixel data from | 
| x_off | horizontal position of block from origin (0, 0) | 
| y_off | vertical position of block from origin (0, 0) | 
| block_w | width of block | 
| block_h | height of block | 
| ref1 | reference picture1 buffer at origin (0, 0) | 
| mv1 | motion vector1 (relative to block position) to get pixel data from | 
| current_mv | current motion vector structure | 
| cidx | chroma component(cb, cr) | 
Definition at line 1697 of file hevcdec.c.
Referenced by hls_prediction_unit().
| 
 | static | 
Definition at line 1787 of file hevcdec.c.
Referenced by hls_prediction_unit().
| 
 | static | 
Definition at line 1797 of file hevcdec.c.
Referenced by hls_prediction_unit().
| 
 | static | 
Definition at line 1842 of file hevcdec.c.
Referenced by hls_coding_unit().
| 
 | static | 
Definition at line 2048 of file hevcdec.c.
Referenced by hls_coding_unit().
| 
 | static | 
Definition at line 2065 of file hevcdec.c.
Referenced by hls_coding_unit().
| 
 | static | 
Definition at line 2133 of file hevcdec.c.
Referenced by hls_coding_unit().
| 
 | static | 
Definition at line 2156 of file hevcdec.c.
Referenced by hls_coding_quadtree().
| 
 | static | 
Definition at line 2319 of file hevcdec.c.
Referenced by hls_decode_entry(), and hls_decode_entry_wpp().
| 
 | static | 
Definition at line 2404 of file hevcdec.c.
Referenced by hls_decode_entry(), and hls_decode_entry_wpp().
| 
 | static | 
Definition at line 2453 of file hevcdec.c.
Referenced by hls_slice_data().
| 
 | static | 
Definition at line 2514 of file hevcdec.c.
Referenced by decode_nal_unit().
| 
 | static | 
Definition at line 2525 of file hevcdec.c.
Referenced by hls_slice_data_wpp().
| 
 | static | 
Definition at line 2606 of file hevcdec.c.
Referenced by decode_nal_unit().
| 
 | static | 
Definition at line 2710 of file hevcdec.c.
Referenced by hevc_frame_start().
| 
 | static | 
Definition at line 2897 of file hevcdec.c.
Referenced by decode_nal_unit().
| 
 | static | 
Definition at line 2956 of file hevcdec.c.
Referenced by decode_nal_units().
| 
 | static | 
Definition at line 3143 of file hevcdec.c.
Referenced by hevc_decode_frame().
Definition at line 3202 of file hevcdec.c.
Referenced by verify_md5().
| 
 | static | 
Definition at line 3209 of file hevcdec.c.
Referenced by hevc_decode_frame().
| 
 | static | 
Definition at line 3275 of file hevcdec.c.
Referenced by hevc_decode_frame(), and hevc_decode_init().
| 
 | static | 
| 
 | static | 
| 
 | static | 
Definition at line 3405 of file hevcdec.c.
Referenced by hevc_init_context().
| 
 | static | 
Definition at line 3450 of file hevcdec.c.
Referenced by hevc_decode_init().
| 
 | static | 
| 
 | static | 
| const uint8_t ff_hevc_pel_weight[65] = { [2] = 0, [4] = 1, [6] = 2, [8] = 3, [12] = 4, [16] = 5, [24] = 6, [32] = 7, [48] = 8, [64] = 9 } | 
Definition at line 48 of file hevcdec.c.
Referenced by chroma_mc_bi(), chroma_mc_uni(), luma_mc_bi(), and luma_mc_uni().
| 
 | static | 
Definition at line 2061 of file hevcdec.c.
Referenced by intra_prediction_unit().
| 
 | static | 
| 
 | static | 
 1.8.17
 1.8.17