digiKam
cb-split.h
Go to the documentation of this file.
1
/*
2
* H.265 video codec.
3
* Copyright (c) 2013-2014 struktur AG, Dirk Farin <farin@struktur.de>
4
*
5
* Authors: Dirk Farin <farin@struktur.de>
6
*
7
* This file is part of libde265.
8
*
9
* libde265 is free software: you can redistribute it and/or modify
10
* it under the terms of the GNU Lesser General Public License as
11
* published by the Free Software Foundation, either version 3 of
12
* the License, or (at your option) any later version.
13
*
14
* libde265 is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU Lesser General Public License for more details.
18
*
19
* You should have received a copy of the GNU Lesser General Public License
20
* along with libde265. If not, see <http://www.gnu.org/licenses/>.
21
*/
22
23
#ifndef CB_SPLIT_H
24
#define CB_SPLIT_H
25
26
#include "
libde265/nal-parser.h
"
27
#include "
libde265/decctx.h
"
28
#include "
libde265/slice.h
"
29
#include "
libde265/scan.h
"
30
#include "
libde265/intrapred.h
"
31
#include "
libde265/transform.h
"
32
#include "
libde265/fallback-dct.h
"
33
#include "
libde265/quality.h
"
34
#include "
libde265/fallback.h
"
35
#include "
libde265/configparam.h
"
36
37
#include "
libde265/encoder/algo/algo.h
"
38
#include "
libde265/encoder/algo/tb-intrapredmode.h
"
39
#include "
libde265/encoder/algo/tb-split.h
"
40
41
42
/* Encoder search tree, bottom up:
43
44
- Algo_TB_Split - whether TB is split or not
45
46
- Algo_TB_IntraPredMode - choose the intra prediction mode (or NOP, if at the wrong tree level)
47
48
- Algo_CB_IntraPartMode - choose between NxN and 2Nx2N intra parts
49
50
- Algo_CB_Split - whether CB is split or not
51
52
- Algo_CTB_QScale - select QScale on CTB granularity
53
*/
54
55
56
// ========== CB split decision ==========
57
58
class
Algo_CB_Split
:
public
Algo_CB
59
{
60
public
:
61
virtual
~Algo_CB_Split
() { }
62
63
// TODO: probably, this will later be a intra/inter decision which again
64
// has two child algorithms, depending on the coding mode.
65
void
setChildAlgo
(
Algo_CB
* algo) {
mChildAlgo
= algo; }
66
67
const
char
*
name
()
const
{
return
"cb-split"
; }
68
69
protected
:
70
Algo_CB
*
mChildAlgo
;
71
72
enc_cb
*
encode_cb_split
(
encoder_context
* ectx,
73
context_model_table
& ctxModel,
74
enc_cb
* cb);
75
};
76
77
78
class
Algo_CB_Split_BruteForce
:
public
Algo_CB_Split
79
{
80
public
:
81
virtual
enc_cb
*
analyze
(
encoder_context
*,
82
context_model_table
&,
83
enc_cb
* cb);
84
85
const
char
*
name
()
const
{
return
"cb-split-bruteforce"
; }
86
};
87
88
#endif
algo.h
Algo_CB_Split_BruteForce
Definition:
cb-split.h:79
Algo_CB_Split_BruteForce::name
const char * name() const
Definition:
cb-split.h:85
Algo_CB_Split_BruteForce::analyze
virtual enc_cb * analyze(encoder_context *, context_model_table &, enc_cb *cb)
Algo_CB_Split
Definition:
cb-split.h:59
Algo_CB_Split::name
const char * name() const
Definition:
cb-split.h:67
Algo_CB_Split::mChildAlgo
Algo_CB * mChildAlgo
Definition:
cb-split.h:70
Algo_CB_Split::setChildAlgo
void setChildAlgo(Algo_CB *algo)
Definition:
cb-split.h:65
Algo_CB_Split::~Algo_CB_Split
virtual ~Algo_CB_Split()
Definition:
cb-split.h:61
Algo_CB_Split::encode_cb_split
enc_cb * encode_cb_split(encoder_context *ectx, context_model_table &ctxModel, enc_cb *cb)
Algo_CB
Definition:
algo.h:67
context_model_table
Definition:
contextmodel.h:100
enc_cb
Definition:
encoder-types.h:248
encoder_context
Definition:
encoder-context.h:39
configparam.h
decctx.h
fallback-dct.h
fallback.h
intrapred.h
nal-parser.h
quality.h
scan.h
slice.h
tb-intrapredmode.h
tb-split.h
transform.h
core
libs
heifutils
libde265
encoder
algo
cb-split.h
Generated by
1.9.1