Go to the documentation of this file.
38 CUVIDPICPARAMS *pp = &
ctx->pic_params;
39 CUVIDVP9PICPARAMS *ppc = &pp->CodecSpecific.vp9;
53 *pp = (CUVIDPICPARAMS) {
54 .PicWidthInMbs = (cur_frame->
width + 15) / 16,
55 .FrameHeightInMbs = (cur_frame->
height + 15) / 16,
56 .CurrPicIdx = cf->
idx,
58 .CodecSpecific.vp9 = {
59 .width = cur_frame->
width,
60 .height = cur_frame->
height,
66 .profile =
h->h.profile,
67 .frameContextIdx =
h->h.framectxid,
68 .frameType = !
h->h.keyframe,
69 .showFrame = !
h->h.invisible,
70 .errorResilient =
h->h.errorres,
71 .frameParallelDecoding =
h->h.parallelmode,
74 .intraOnly =
h->h.intraonly,
75 .allow_high_precision_mv =
h->h.keyframe ? 0 :
h->h.highprecisionmvs,
76 .refreshEntropyProbs =
h->h.refreshctx,
78 .bitDepthMinus8Luma = pixdesc->
comp[0].
depth - 8,
79 .bitDepthMinus8Chroma = pixdesc->
comp[1].
depth - 8,
81 .loopFilterLevel =
h->h.filter.level,
82 .loopFilterSharpness =
h->h.filter.sharpness,
83 .modeRefLfEnabled =
h->h.lf_delta.enabled,
85 .log2_tile_columns =
h->h.tiling.log2_tile_cols,
86 .log2_tile_rows =
h->h.tiling.log2_tile_rows,
88 .segmentEnabled =
h->h.segmentation.enabled,
89 .segmentMapUpdate =
h->h.segmentation.update_map,
90 .segmentMapTemporalUpdate =
h->h.segmentation.temporal,
91 .segmentFeatureMode =
h->h.segmentation.absolute_vals,
94 .qpYDc =
h->h.ydc_qdelta,
95 .qpChDc =
h->h.uvdc_qdelta,
96 .qpChAc =
h->h.uvac_qdelta,
98 .resetFrameContext =
h->h.resetctx,
99 .mcomp_filter_type =
h->h.filtermode ^ (
h->h.filtermode <= 1),
101 .frameTagSize =
h->h.uncompressed_header_size,
102 .offsetToDctParts =
h->h.compressed_header_size,
104 .refFrameSignBias[0] = 0,
108 for (
i = 0;
i < 2;
i++)
109 ppc->mbModeLfDelta[
i] =
h->h.lf_delta.mode[
i];
112 ppc->mbRefLfDelta[
i] =
h->h.lf_delta.ref[
i];
115 ppc->mb_segment_tree_probs[
i] =
h->h.segmentation.prob[
i];
118 ppc->activeRefIdx[
i] =
h->h.refidx[
i];
119 ppc->segment_pred_probs[
i] =
h->h.segmentation.pred_prob[
i];
120 ppc->refFrameSignBias[
i + 1] =
h->h.signbias[
i];
123 for (
i = 0;
i < 8;
i++) {
124 ppc->segmentFeatureEnable[
i][0] =
h->h.segmentation.feat[
i].q_enabled;
125 ppc->segmentFeatureEnable[
i][1] =
h->h.segmentation.feat[
i].lf_enabled;
126 ppc->segmentFeatureEnable[
i][2] =
h->h.segmentation.feat[
i].ref_enabled;
127 ppc->segmentFeatureEnable[
i][3] =
h->h.segmentation.feat[
i].skip_enabled;
129 ppc->segmentFeatureData[
i][0] =
h->h.segmentation.feat[
i].q_val;
130 ppc->segmentFeatureData[
i][1] =
h->h.segmentation.feat[
i].lf_val;
131 ppc->segmentFeatureData[
i][2] =
h->h.segmentation.feat[
i].ref_val;
132 ppc->segmentFeatureData[
i][3] = 0;
174 .
p.
name =
"vp9_nvdec",
@ AV_PIX_FMT_CUDA
HW acceleration through CUDA.
enum AVColorSpace colorspace
YUV colorspace type.
static int nvdec_vp9_start_frame(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size)
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
uint8_t * data
The data buffer.
int ff_nvdec_get_ref_idx(AVFrame *frame)
AVHWAccel p
The public AVHWAccel.
This struct stores per-frame lavc-internal data and is attached to it via private_ref.
This structure describes decoded (raw) audio or video data.
int depth
Number of bits in the component.
@ AVCOL_SPC_RGB
order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB), YZX and ST 428-1
@ AVCOL_SPC_BT470BG
also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601
@ AVCOL_SPC_RESERVED
reserved for future use by ITU-T and ISO/IEC just like 15-255 are
int ff_nvdec_start_frame(AVCodecContext *avctx, AVFrame *frame)
@ AVCOL_SPC_SMPTE170M
also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above
uint8_t log2_chroma_w
Amount to shift the luma width right to find the chroma width.
int ff_nvdec_simple_end_frame(AVCodecContext *avctx)
int ff_nvdec_decode_init(AVCodecContext *avctx)
struct AVCodecInternal * internal
Private context used for internal data.
static int nvdec_vp9_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx)
void * hwaccel_priv_data
hwaccel-specific private data
int ff_nvdec_decode_uninit(AVCodecContext *avctx)
AVBufferRef * private_ref
AVBufferRef for internal use by a single libav* library.
const char * name
Name of the hardware accelerated codec.
@ AVCOL_SPC_SMPTE240M
derived from 170M primaries and D65 white point, 170M is derived from BT470 System M's primaries
#define i(width, name, range_min, range_max)
@ AVCOL_SPC_BT2020_NCL
ITU-R BT2020 non-constant luminance system.
main external API structure.
int ff_nvdec_simple_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size)
the frame and frame reference mechanism is intended to as much as expensive copies of that data while still allowing the filters to produce correct results The data is stored in buffers represented by AVFrame structures Several references can point to the same frame buffer
int ff_nvdec_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx, int dpb_size, int supports_444)
AVComponentDescriptor comp[4]
Parameters that describe how pixels are packed.
A reference to a data buffer.
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
void * hwaccel_priv
Per-frame private data for hwaccels.
enum AVPixelFormat sw_pix_fmt
Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx.
@ AVCOL_SPC_BT709
also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / derived in SMPTE RP 177 Annex B
uint8_t log2_chroma_h
Amount to shift the luma height right to find the chroma height.
const FFHWAccel ff_vp9_nvdec_hwaccel