37 CUVIDPICPARAMS *pp = &
ctx->pic_params;
38 CUVIDVP9PICPARAMS *ppc = &pp->CodecSpecific.vp9;
52 *pp = (CUVIDPICPARAMS) {
53 .PicWidthInMbs = (cur_frame->
width + 15) / 16,
54 .FrameHeightInMbs = (cur_frame->
height + 15) / 16,
55 .CurrPicIdx = cf->
idx,
57 .CodecSpecific.vp9 = {
58 .width = cur_frame->
width,
59 .height = cur_frame->
height,
65 .profile =
h->h.profile,
66 .frameContextIdx =
h->h.framectxid,
67 .frameType = !
h->h.keyframe,
68 .showFrame = !
h->h.invisible,
69 .errorResilient =
h->h.errorres,
70 .frameParallelDecoding =
h->h.parallelmode,
73 .intraOnly =
h->h.intraonly,
74 .allow_high_precision_mv =
h->h.keyframe ? 0 :
h->h.highprecisionmvs,
75 .refreshEntropyProbs =
h->h.refreshctx,
77 .bitDepthMinus8Luma = pixdesc->
comp[0].
depth - 8,
78 .bitDepthMinus8Chroma = pixdesc->
comp[1].
depth - 8,
80 .loopFilterLevel =
h->h.filter.level,
81 .loopFilterSharpness =
h->h.filter.sharpness,
82 .modeRefLfEnabled =
h->h.lf_delta.enabled,
84 .log2_tile_columns =
h->h.tiling.log2_tile_cols,
85 .log2_tile_rows =
h->h.tiling.log2_tile_rows,
87 .segmentEnabled =
h->h.segmentation.enabled,
88 .segmentMapUpdate =
h->h.segmentation.update_map,
89 .segmentMapTemporalUpdate =
h->h.segmentation.temporal,
90 .segmentFeatureMode =
h->h.segmentation.absolute_vals,
93 .qpYDc =
h->h.ydc_qdelta,
94 .qpChDc =
h->h.uvdc_qdelta,
95 .qpChAc =
h->h.uvac_qdelta,
97 .resetFrameContext =
h->h.resetctx,
98 .mcomp_filter_type =
h->h.filtermode ^ (
h->h.filtermode <= 1),
100 .frameTagSize =
h->h.uncompressed_header_size,
101 .offsetToDctParts =
h->h.compressed_header_size,
103 .refFrameSignBias[0] = 0,
107 for (
i = 0;
i < 2;
i++)
108 ppc->mbModeLfDelta[
i] =
h->h.lf_delta.mode[
i];
111 ppc->mbRefLfDelta[
i] =
h->h.lf_delta.ref[
i];
114 ppc->mb_segment_tree_probs[
i] =
h->h.segmentation.prob[
i];
117 ppc->activeRefIdx[
i] =
h->h.refidx[
i];
118 ppc->segment_pred_probs[
i] =
h->h.segmentation.pred_prob[
i];
119 ppc->refFrameSignBias[
i + 1] =
h->h.signbias[
i];
122 for (
i = 0;
i < 8;
i++) {
123 ppc->segmentFeatureEnable[
i][0] =
h->h.segmentation.feat[
i].q_enabled;
124 ppc->segmentFeatureEnable[
i][1] =
h->h.segmentation.feat[
i].lf_enabled;
125 ppc->segmentFeatureEnable[
i][2] =
h->h.segmentation.feat[
i].ref_enabled;
126 ppc->segmentFeatureEnable[
i][3] =
h->h.segmentation.feat[
i].skip_enabled;
128 ppc->segmentFeatureData[
i][0] =
h->h.segmentation.feat[
i].q_val;
129 ppc->segmentFeatureData[
i][1] =
h->h.segmentation.feat[
i].lf_val;
130 ppc->segmentFeatureData[
i][2] =
h->h.segmentation.feat[
i].ref_val;
131 ppc->segmentFeatureData[
i][3] = 0;
Libavcodec external API header.
common internal API header
int ff_nvdec_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx, int dpb_size, int supports_444)
int ff_nvdec_simple_end_frame(AVCodecContext *avctx)
int ff_nvdec_simple_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size)
int ff_nvdec_decode_init(AVCodecContext *avctx)
int ff_nvdec_get_ref_idx(AVFrame *frame)
int ff_nvdec_start_frame(AVCodecContext *avctx, AVFrame *frame)
int ff_nvdec_decode_uninit(AVCodecContext *avctx)
static int nvdec_vp9_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx)
static int nvdec_vp9_start_frame(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size)
const AVHWAccel ff_vp9_nvdec_hwaccel
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
@ AV_PIX_FMT_CUDA
HW acceleration through CUDA.
@ AVCOL_SPC_BT709
also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B
@ 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_RGB
order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB)
@ AVCOL_SPC_BT2020_NCL
ITU-R BT2020 non-constant luminance system.
@ AVCOL_SPC_SMPTE170M
also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
@ AVCOL_SPC_SMPTE240M
functionally identical to above
A reference to a data buffer.
uint8_t * data
The data buffer.
main external API structure.
enum AVPixelFormat sw_pix_fmt
Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx.
enum AVColorSpace colorspace
YUV colorspace type.
struct AVCodecInternal * internal
Private context used for internal data.
void * hwaccel_priv_data
hwaccel-specific private data
int depth
Number of bits in the component.
This structure describes decoded (raw) audio or video data.
AVBufferRef * private_ref
AVBufferRef for internal use by a single libav* library.
const char * name
Name of the hardware accelerated codec.
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
AVComponentDescriptor comp[4]
Parameters that describe how pixels are packed.
uint8_t log2_chroma_w
Amount to shift the luma width right to find the chroma width.
uint8_t log2_chroma_h
Amount to shift the luma height right to find the chroma height.
This struct stores per-frame lavc-internal data and is attached to it via private_ref.
void * hwaccel_priv
Per-frame private data for hwaccels.