
This is a manual adaptation of the following commit from aom/master: ce12003d60a1c8d6c65ed07ba165c34062fcbcbd The original commit message: A tile group is a set of tiles in scan order. Each tile group has a version of uncompressed and compressed headers, identical apart from tile group parameters. Encoding probability updates takes account of the number of headers to control overheads. The decoder supports arbitrary numbers of tile groups with arbitrary number of tiles. The number of tiles in a TG is signalled in the uncompressed header for that TG. The encoder currently only supports a fixed number of TGs (3, when error resilient mode is on) of equal size (except possibly for the last one). The average BDR performnce with 3 tile groups versus anchor with error resilient mode and up to 16 tiles is: NR YCbCr: 3.02% 3.04% 3.05% PSNRHVS: 3.09% SSIM: 3.06% MSSSIM: 3.05% CIEDE2000: 3.04% Change-Id: I9b97c5ed733103b9160a3a5d4370de5322c00c0b
46 lines
1.4 KiB
C
46 lines
1.4 KiB
C
/*
|
|
* Copyright (c) 2016, Alliance for Open Media. All rights reserved
|
|
*
|
|
* This source code is subject to the terms of the BSD 2 Clause License and
|
|
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
|
|
* was not distributed with this source code in the LICENSE file, you can
|
|
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
|
|
* Media Patent License 1.0 was not distributed with this source code in the
|
|
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
|
*/
|
|
|
|
#ifndef AV1_COMMON_TILE_COMMON_H_
|
|
#define AV1_COMMON_TILE_COMMON_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
struct AV1Common;
|
|
|
|
#if CONFIG_TILE_GROUPS
|
|
#define MAX_NUM_TG 3
|
|
#endif
|
|
|
|
typedef struct TileInfo {
|
|
int mi_row_start, mi_row_end;
|
|
int mi_col_start, mi_col_end;
|
|
} TileInfo;
|
|
|
|
// initializes 'tile->mi_(row|col)_(start|end)' for (row, col) based on
|
|
// 'cm->log2_tile_(rows|cols)' & 'cm->mi_(rows|cols)'
|
|
void av1_tile_init(TileInfo *tile, const struct AV1Common *cm, int row,
|
|
int col);
|
|
|
|
void av1_tile_set_row(TileInfo *tile, const struct AV1Common *cm, int row);
|
|
void av1_tile_set_col(TileInfo *tile, const struct AV1Common *cm, int col);
|
|
|
|
void av1_get_tile_n_bits(const int mi_cols, int *min_log2_tile_cols,
|
|
int *max_log2_tile_cols);
|
|
|
|
#ifdef __cplusplus
|
|
} // extern "C"
|
|
#endif
|
|
|
|
#endif // AV1_COMMON_TILE_COMMON_H_
|