early-access version 1432
This commit is contained in:
169
externals/ffmpeg/libavcodec/vp9shared.h
vendored
Executable file
169
externals/ffmpeg/libavcodec/vp9shared.h
vendored
Executable file
@@ -0,0 +1,169 @@
|
||||
/*
|
||||
* VP9 compatible video decoder
|
||||
*
|
||||
* Copyright (C) 2013 Ronald S. Bultje <rsbultje gmail com>
|
||||
* Copyright (C) 2013 Clément Bœsch <u pkh me>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVCODEC_VP9SHARED_H
|
||||
#define AVCODEC_VP9SHARED_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "vp9.h"
|
||||
#include "thread.h"
|
||||
#include "vp56.h"
|
||||
|
||||
enum BlockPartition {
|
||||
PARTITION_NONE, // [ ] <-.
|
||||
PARTITION_H, // [-] |
|
||||
PARTITION_V, // [|] |
|
||||
PARTITION_SPLIT, // [+] --'
|
||||
};
|
||||
|
||||
enum InterPredMode {
|
||||
NEARESTMV = 10,
|
||||
NEARMV = 11,
|
||||
ZEROMV = 12,
|
||||
NEWMV = 13,
|
||||
};
|
||||
|
||||
enum CompPredMode {
|
||||
PRED_SINGLEREF,
|
||||
PRED_COMPREF,
|
||||
PRED_SWITCHABLE,
|
||||
};
|
||||
|
||||
typedef struct VP9mvrefPair {
|
||||
VP56mv mv[2];
|
||||
int8_t ref[2];
|
||||
} VP9mvrefPair;
|
||||
|
||||
typedef struct VP9Frame {
|
||||
ThreadFrame tf;
|
||||
AVBufferRef *extradata;
|
||||
uint8_t *segmentation_map;
|
||||
VP9mvrefPair *mv;
|
||||
int uses_2pass;
|
||||
|
||||
AVBufferRef *hwaccel_priv_buf;
|
||||
void *hwaccel_picture_private;
|
||||
} VP9Frame;
|
||||
|
||||
enum BlockLevel {
|
||||
BL_64X64,
|
||||
BL_32X32,
|
||||
BL_16X16,
|
||||
BL_8X8,
|
||||
};
|
||||
|
||||
enum BlockSize {
|
||||
BS_64x64,
|
||||
BS_64x32,
|
||||
BS_32x64,
|
||||
BS_32x32,
|
||||
BS_32x16,
|
||||
BS_16x32,
|
||||
BS_16x16,
|
||||
BS_16x8,
|
||||
BS_8x16,
|
||||
BS_8x8,
|
||||
BS_8x4,
|
||||
BS_4x8,
|
||||
BS_4x4,
|
||||
N_BS_SIZES,
|
||||
};
|
||||
|
||||
typedef struct VP9BitstreamHeader {
|
||||
// bitstream header
|
||||
uint8_t profile;
|
||||
uint8_t bpp;
|
||||
uint8_t keyframe;
|
||||
uint8_t invisible;
|
||||
uint8_t errorres;
|
||||
uint8_t intraonly;
|
||||
uint8_t resetctx;
|
||||
uint8_t refreshrefmask;
|
||||
uint8_t highprecisionmvs;
|
||||
enum FilterMode filtermode;
|
||||
uint8_t allowcompinter;
|
||||
uint8_t refreshctx;
|
||||
uint8_t parallelmode;
|
||||
uint8_t framectxid;
|
||||
uint8_t use_last_frame_mvs;
|
||||
uint8_t refidx[3];
|
||||
uint8_t signbias[3];
|
||||
uint8_t fixcompref;
|
||||
uint8_t varcompref[2];
|
||||
struct {
|
||||
uint8_t level;
|
||||
int8_t sharpness;
|
||||
} filter;
|
||||
struct {
|
||||
uint8_t enabled;
|
||||
uint8_t updated;
|
||||
int8_t mode[2];
|
||||
int8_t ref[4];
|
||||
} lf_delta;
|
||||
uint8_t yac_qi;
|
||||
int8_t ydc_qdelta, uvdc_qdelta, uvac_qdelta;
|
||||
uint8_t lossless;
|
||||
#define MAX_SEGMENT 8
|
||||
struct {
|
||||
uint8_t enabled;
|
||||
uint8_t temporal;
|
||||
uint8_t absolute_vals;
|
||||
uint8_t update_map;
|
||||
uint8_t prob[7];
|
||||
uint8_t pred_prob[3];
|
||||
struct {
|
||||
uint8_t q_enabled;
|
||||
uint8_t lf_enabled;
|
||||
uint8_t ref_enabled;
|
||||
uint8_t skip_enabled;
|
||||
uint8_t ref_val;
|
||||
int16_t q_val;
|
||||
int8_t lf_val;
|
||||
int16_t qmul[2][2];
|
||||
uint8_t lflvl[4][2];
|
||||
} feat[MAX_SEGMENT];
|
||||
} segmentation;
|
||||
enum TxfmMode txfmmode;
|
||||
enum CompPredMode comppredmode;
|
||||
struct {
|
||||
unsigned log2_tile_cols, log2_tile_rows;
|
||||
unsigned tile_cols, tile_rows;
|
||||
} tiling;
|
||||
|
||||
int uncompressed_header_size;
|
||||
int compressed_header_size;
|
||||
} VP9BitstreamHeader;
|
||||
|
||||
typedef struct VP9SharedContext {
|
||||
VP9BitstreamHeader h;
|
||||
|
||||
ThreadFrame refs[8];
|
||||
#define CUR_FRAME 0
|
||||
#define REF_FRAME_MVPAIR 1
|
||||
#define REF_FRAME_SEGMAP 2
|
||||
VP9Frame frames[3];
|
||||
} VP9SharedContext;
|
||||
|
||||
#endif /* AVCODEC_VP9SHARED_H */
|
Reference in New Issue
Block a user