mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-10 01:07:31 +09:00
76 lines
2.1 KiB
C
76 lines
2.1 KiB
C
/*
|
|
* Copyright (c) 2019, 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 AOM_AV1_ENCODER_LEVEL_H_
|
|
#define AOM_AV1_ENCODER_LEVEL_H_
|
|
|
|
#include "av1/common/enums.h"
|
|
|
|
struct AV1_COMP;
|
|
|
|
// AV1 Level Specifications
|
|
typedef struct {
|
|
AV1_LEVEL level;
|
|
int max_picture_size;
|
|
int max_h_size;
|
|
int max_v_size;
|
|
int max_header_rate;
|
|
int max_tiles;
|
|
int max_tile_cols;
|
|
int64_t max_display_rate;
|
|
int64_t max_decode_rate;
|
|
double main_mbps;
|
|
double high_mbps;
|
|
double main_cr;
|
|
double high_cr;
|
|
} AV1LevelSpec;
|
|
|
|
typedef struct {
|
|
int64_t ts_start;
|
|
int64_t ts_end;
|
|
int pic_size;
|
|
int frame_header_count;
|
|
int show_frame;
|
|
int show_existing_frame;
|
|
} FrameRecord;
|
|
|
|
// Record frame info. in a rolling window.
|
|
#define FRAME_WINDOW_SIZE 256
|
|
typedef struct {
|
|
FrameRecord buf[FRAME_WINDOW_SIZE];
|
|
int num; // Number of FrameRecord stored in the buffer.
|
|
int start; // Buffer index of the first FrameRecord.
|
|
} FrameWindowBuffer;
|
|
|
|
// Used to keep track of AV1 Level Stats. Currently unimplemented.
|
|
typedef struct {
|
|
uint64_t total_compressed_size;
|
|
int max_tile_size;
|
|
int min_cropped_tile_width;
|
|
int min_cropped_tile_height;
|
|
int tile_width_is_valid;
|
|
double total_time_encoded;
|
|
double min_cr;
|
|
} AV1LevelStats;
|
|
|
|
typedef struct {
|
|
AV1LevelStats level_stats;
|
|
AV1LevelSpec level_spec;
|
|
} AV1LevelInfo;
|
|
|
|
void av1_update_level_info(struct AV1_COMP *cpi, size_t size, int64_t ts_start,
|
|
int64_t ts_end);
|
|
|
|
// Return sequence level indices in seq_level_idx[MAX_NUM_OPERATING_POINTS].
|
|
aom_codec_err_t av1_get_seq_level_idx(const struct AV1_COMP *cpi,
|
|
int *seq_level_idx);
|
|
|
|
#endif // AOM_AV1_ENCODER_LEVEL_H_
|