1 /*
2 * Copyright(c) 2019 Intel Corporation
3 *
4 * This source code is subject to the terms of the BSD 2 Clause License and
5 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
6 * was not distributed with this source code in the LICENSE file, you can
7 * obtain it at https://www.aomedia.org/license/software-license. If the Alliance for Open
8 * Media Patent License 1.0 was not distributed with this source code in the
9 * PATENTS file, you can obtain it at https://www.aomedia.org/license/patent-license.
10 */
11 
12 #ifndef EbEncIntraPrediction_h
13 #define EbEncIntraPrediction_h
14 
15 #include "EbMotionEstimationProcess.h"
16 #include "EbModeDecision.h"
17 #include "EbIntraPrediction.h"
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 struct ModeDecisionCandidateBuffer;
24 struct ModeDecisionCandidate;
25 
26 /////////..............................................//////////////////////////
27 
28 extern EbErrorType svt_av1_intra_prediction_cl(uint8_t                      hbd_mode_decision,
29                                                struct ModeDecisionContext * context_ptr,
30                                                PictureControlSet *          pcs_ptr,
31                                                ModeDecisionCandidateBuffer *candidate_buffer_ptr);
32 
33 extern EbErrorType update_neighbor_samples_array_open_loop_mb(
34                                                               uint8_t use_top_righ_bottom_left,
35                                                               uint8_t update_top_neighbor,
36                                                               uint8_t *above_ref, uint8_t *left_ref,
37                                                               EbPictureBufferDesc *input_ptr,
38                                                               uint32_t stride, uint32_t srcOriginX,
39                                                               uint32_t srcOriginY, uint8_t bwidth,
40                                                               uint8_t bheight);
41 extern EbErrorType update_neighbor_samples_array_open_loop_mb_recon(
42         uint8_t                            use_top_righ_bottom_left,
43         uint8_t                            update_top_neighbor,
44     uint8_t *above_ref, uint8_t *left_ref, uint8_t *recon_ptr, uint32_t stride,
45     uint32_t src_origin_x, uint32_t src_origin_y, uint8_t bwidth, uint8_t bheight, uint32_t width,
46     uint32_t height);
47 
48 void svt_av1_predict_intra_block(
49     STAGE stage, const BlockGeom *blk_geom, MacroBlockD *xd, int32_t wpx,
50     int32_t hpx, TxSize tx_size, PredictionMode mode, int32_t angle_delta, int32_t use_palette,
51     PaletteInfo *palette_info, FilterIntraMode filter_intra_mode, uint8_t *top_neigh_array,
52     uint8_t *left_neigh_array, EbPictureBufferDesc *recon_buffer, int32_t col_off, int32_t row_off,
53     int32_t plane, BlockSize bsize, uint32_t txb_org_x_pict, uint32_t txb_org_y_pict,
54     uint32_t bl_org_x_pict, uint32_t bl_org_y_pict, uint32_t bl_org_x_mb, uint32_t bl_org_y_mb,
55     SeqHeader *seq_header_ptr);
56 void svt_av1_predict_intra_block_16bit(
57     EbBitDepthEnum bit_depth, STAGE stage, const BlockGeom *blk_geom,
58     MacroBlockD *xd, int32_t wpx, int32_t hpx, TxSize tx_size, PredictionMode mode,
59     int32_t angle_delta, int32_t use_palette, PaletteInfo *palette_info,
60     FilterIntraMode filter_intra_mode, uint16_t *top_neigh_array, uint16_t *left_neigh_array,
61     EbPictureBufferDesc *recon_buffer, int32_t col_off, int32_t row_off, int32_t plane,
62     BlockSize bsize, uint32_t txb_org_x_pict, uint32_t txb_org_y_pict, uint32_t bl_org_x_pict,
63     uint32_t bl_org_y_pict, uint32_t bl_org_x_mb, uint32_t bl_org_y_mb,
64     SeqHeader *seq_header_ptr);
65 
66 #ifdef __cplusplus
67 }
68 #endif
69 #endif // EbEncIntraPrediction_h
70