Skip to content

Commit cebe03d

Browse files
committed
git subtree pull latest AMF shared code in preparation for 1.4.0 release
2 parents ba69ac7 + f24a550 commit cebe03d

File tree

7 files changed

+248
-28
lines changed

7 files changed

+248
-28
lines changed

amf/public/include/components/VideoConverter.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ enum AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM
5454
AMF_VIDEO_CONVERTER_COLOR_PROFILE_601 = 0,
5555
AMF_VIDEO_CONVERTER_COLOR_PROFILE_709 = 1,
5656
AMF_VIDEO_CONVERTER_COLOR_PROFILE_2020 = 2,
57+
AMF_VIDEO_CONVERTER_COLOR_PROFILE_JPEG = 3, // full range
5758
AMF_VIDEO_CONVERTER_COLOR_PROFILE_COUNT
5859
};
5960

amf/public/include/components/VideoDecoderUVD.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ enum AMF_TIMESTAMP_MODE_ENUM
6767
#define AMF_VIDEO_DECODER_EXTRADATA L"ExtraData" // AMFInterface* -> AMFBuffer* - AVCC - size length + SPS/PPS; or as Annex B. Optional if stream is Annex B
6868
#define AMF_VIDEO_DECODER_FRAME_RATE L"FrameRate" // amf_double; default = 0.0, optional property to restore duration in the output if needed
6969
#define AMF_TIMESTAMP_MODE L"TimestampMode" // amf_int64(AMF_TIMESTAMP_MODE_ENUM) - default AMF_TS_PRESENTATION - how input timestamps are treated
70+
#define AMF_VIDEO_DECODER_FULL_RANGE_COLOR L"FullRangeColor" // bool; default = false; inidicates that YUV input is (0,255)
7071

7172
// dynamic/adaptive resolution change
7273
#define AMF_VIDEO_DECODER_ADAPTIVE_RESOLUTION_CHANGE L"AdaptiveResolutionChange" // amf_bool; default = false; reuse allocated surfaces if new resolution is smaller
Lines changed: 190 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,190 @@
1+
//
2+
// Copyright (c) 2016 Advanced Micro Devices, Inc. All rights reserved.
3+
//
4+
// Permission is hereby granted, free of charge, to any person obtaining a copy
5+
// of this software and associated documentation files (the "Software"), to deal
6+
// in the Software without restriction, including without limitation the rights
7+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8+
// copies of the Software, and to permit persons to whom the Software is
9+
// furnished to do so, subject to the following conditions:
10+
//
11+
// The above copyright notice and this permission notice shall be included in
12+
// all copies or substantial portions of the Software.
13+
//
14+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20+
// THE SOFTWARE.
21+
//
22+
23+
#ifndef __AMFVideoEncoderHW_HEVC_h__
24+
#define __AMFVideoEncoderHW_HEVC_h__
25+
#pragma once
26+
27+
#include "public/include/components/Component.h"
28+
29+
#define AMFVideoEncoder_HEVC L"AMFVideoEncoderHW_HEVC"
30+
31+
enum AMF_VIDEO_ENCODER_HEVC_USAGE_ENUM
32+
{
33+
AMF_VIDEO_ENCODER_HEVC_USAGE_TRANSCONDING = 0,
34+
AMF_VIDEO_ENCODER_HEVC_USAGE_ULTRA_LOW_LATENCY,
35+
AMF_VIDEO_ENCODER_HEVC_USAGE_LOW_LATENCY,
36+
AMF_VIDEO_ENCODER_HEVC_USAGE_WEBCAM
37+
};
38+
39+
enum AMF_VIDEO_ENCODER_HEVC_PROFILE_ENUM
40+
{
41+
AMF_VIDEO_ENCODER_HEVC_PROFILE_MAIN = 1
42+
};
43+
44+
enum AMF_VIDEO_ENCODER_HEVC_TIER_ENUM
45+
{
46+
AMF_VIDEO_ENCODER_HEVC_TIER_MAIN = 0,
47+
AMF_VIDEO_ENCODER_HEVC_TIER_HIGH = 1
48+
};
49+
50+
enum AMF_VIDEO_ENCODER_LEVEL_ENUM
51+
{
52+
AMF_LEVEL_1 = 30,
53+
AMF_LEVEL_2 = 60,
54+
AMF_LEVEL_2_1 = 63,
55+
AMF_LEVEL_3 = 90,
56+
AMF_LEVEL_3_1 = 93,
57+
AMF_LEVEL_4 = 120,
58+
AMF_LEVEL_4_1 = 123,
59+
AMF_LEVEL_5 = 150,
60+
AMF_LEVEL_5_1 = 153,
61+
AMF_LEVEL_5_2 = 156,
62+
AMF_LEVEL_6 = 180,
63+
AMF_LEVEL_6_1 = 183,
64+
AMF_LEVEL_6_2 = 186
65+
};
66+
67+
enum AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_ENUM
68+
{
69+
AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CONSTANT_QP = 0,
70+
AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR,
71+
AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR,
72+
AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CBR
73+
};
74+
75+
enum AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_ENUM
76+
{
77+
AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_NONE = 0,
78+
AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_SKIP,
79+
AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_IDR,
80+
AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_I,
81+
AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_P
82+
};
83+
84+
enum AMF_VIDEO_ENCODER_HEVC_OUTPUT_DATA_TYPE_ENUM
85+
{
86+
AMF_VIDEO_ENCODER_HEVC_OUTPUT_DATA_TYPE_I,
87+
AMF_VIDEO_ENCODER_HEVC_OUTPUT_DATA_TYPE_P
88+
};
89+
90+
enum AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_ENUM
91+
{
92+
AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_QUALITY = 0,
93+
AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_BALANCED = 5,
94+
AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_SPEED = 10
95+
};
96+
97+
enum AMF_VIDEO_ENCODER_HEVC_HEADER_INSERTION_MODE_ENUM
98+
{
99+
AMF_VIDEO_ENCODER_HEVC_HEADER_INSERTION_MODE_NONE = 0,
100+
AMF_VIDEO_ENCODER_HEVC_HEADER_INSERTION_MODE_GOP_ALIGNED,
101+
AMF_VIDEO_ENCODER_HEVC_HEADER_INSERTION_MODE_IDR_ALIGNED
102+
};
103+
104+
enum AMF_VIDEO_ENCODER_HEVC_VBAQ_MODE_ENUM
105+
{
106+
AMF_VIDEO_ENCODER_HEVC_VBAQ_MODE_NONE = 0,
107+
AMF_VIDEO_ENCODER_HEVC_VBAQ_MODE_AUTO
108+
};
109+
110+
111+
112+
// Static properties - can be set before Init()
113+
#define AMF_VIDEO_ENCODER_HEVC_FRAMESIZE L"HevcFrameSize" // AMFSize; default = 0,0; Frame size
114+
115+
#define AMF_VIDEO_ENCODER_HEVC_USAGE L"HevcUsage" // amf_int64(AMF_VIDEO_ENCODER_HEVC_USAGE_ENUM); default = N/A; Encoder usage type. fully configures parameter set.
116+
#define AMF_VIDEO_ENCODER_HEVC_PROFILE L"HevcProfile" // amf_int64(AMF_VIDEO_ENCODER_HEVC_PROFILE_ENUM) ; default = AMF_VIDEO_ENCODER_HEVC_PROFILE_MAIN;
117+
#define AMF_VIDEO_ENCODER_HEVC_TIER L"HevcTier" // amf_int64(AMF_VIDEO_ENCODER_HEVC_TIER_ENUM) ; default = AMF_VIDEO_ENCODER_HEVC_TIER_MAIN;
118+
#define AMF_VIDEO_ENCODER_HEVC_PROFILE_LEVEL L"HevcProfileLevel" // amf_int64 (AMF_VIDEO_ENCODER_LEVEL_ENUM, default depends on HW capabilities);
119+
#define AMF_VIDEO_ENCODER_HEVC_MAX_LTR_FRAMES L"HevcMaxOfLTRFrames" // amf_int64; default = 0; Max number of LTR frames
120+
#define AMF_VIDEO_ENCODER_HEVC_MAX_NUM_REFRAMES L"HevcMaxNumRefFrames" // amf_int64; default = 1; Maximum number of reference frames
121+
#define AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET L"HevcQualityPreset" // amf_int64(AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_ENUM); default = depends on USAGE; Quality Preset
122+
#define AMF_VIDEO_ENCODER_HEVC_EXTRADATA L"HevcExtraData" // AMFInterface* - > AMFBuffer*; SPS/PPS buffer - read-only
123+
#define AMF_VIDEO_ENCODER_HEVC_ASPECT_RATIO L"HevcAspectRatio" // AMFRatio; default = 1, 1
124+
125+
// Picture control properties
126+
#define AMF_VIDEO_ENCODER_HEVC_NUM_GOPS_PER_IDR L"HevcGOPSPerIDR" // amf_int64; default = 60; The frequency to insert IDR as start of a GOP. 0 means no IDR will be inserted.
127+
#define AMF_VIDEO_ENCODER_HEVC_GOP_SIZE L"HevcGOPSize" // amf_int64; default = 60; GOP Size, in frames
128+
#define AMF_VIDEO_ENCODER_HEVC_DE_BLOCKING_FILTER_DISABLE L"HevcDeBlockingFilter" // bool; default = depends on USAGE; De-blocking Filter
129+
#define AMF_VIDEO_ENCODER_HEVC_SLICES_PER_FRAME L"HevcSlicesPerFrame" // amf_int64; default = 1; Number of slices Per Frame
130+
#define AMF_VIDEO_ENCODER_HEVC_HEADER_INSERTION_MODE L"HevcHeaderInsertionMode" // amf_int64(AMF_VIDEO_ENCODER_HEVC_HEADER_INSERTION_MODE_ENUM); default = NONE
131+
132+
// Rate control properties
133+
#define AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD L"HevcRateControlMethod" // amf_int64(AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_MODE_ENUM); default = depends on USAGE; Rate Control Method
134+
#define AMF_VIDEO_ENCODER_HEVC_FRAMERATE L"HevcFrameRate" // AMFRate; default = depends on usage; Frame Rate
135+
#define AMF_VIDEO_ENCODER_HEVC_VBV_BUFFER_SIZE L"HevcVBVBufferSize" // amf_int64; default = depends on USAGE; VBV Buffer Size in bits
136+
#define AMF_VIDEO_ENCODER_HEVC_INITIAL_VBV_BUFFER_FULLNESS L"HevcInitialVBVBufferFullness" // amf_int64; default = 64; Initial VBV Buffer Fullness 0=0% 64=100%
137+
#define AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_PREANALYSIS_ENABLE L"HevcRateControlPreAnalysisEnable" // bool; default = depends on USAGE; enable Pre-analysis assisted rate control
138+
#define AMF_VIDEO_ENCODER_HEVC_ENABLE_VBAQ L"HevcEnableVBAQ" // amf_int64(AMF_VIDEO_ENCODER_HEVC_VBAQ_MODE_ENUM) default = AMF_VIDEO_ENCODER_HEVC_VBAQ_MODE_NONE; Enable VBAQ
139+
140+
141+
// Dynamic properties - can be set at any time
142+
143+
// Rate control properties
144+
#define AMF_VIDEO_ENCODER_HEVC_ENFORCE_HRD L"HevcEnforceHRD" // bool; default = depends on USAGE; Enforce HRD
145+
#define AMF_VIDEO_ENCODER_HEVC_FILLER_DATA_ENABLE L"HevcFillerDataEnable" // bool; default = depends on USAGE; Enforce HRD
146+
#define AMF_VIDEO_ENCODER_HEVC_TARGET_BITRATE L"HevcTargetBitrate" // amf_int64; default = depends on USAGE; Target bit rate in bits
147+
#define AMF_VIDEO_ENCODER_HEVC_PEAK_BITRATE L"HevcPeakBitrate" // amf_int64; default = depends on USAGE; Peak bit rate in bits
148+
149+
#define AMF_VIDEO_ENCODER_HEVC_MAX_AU_SIZE L"HevcMaxAUSize" // amf_int64; default = 60; Max AU Size in bits
150+
151+
#define AMF_VIDEO_ENCODER_HEVC_MIN_QP_I L"HevcMinQP_I" // amf_int64; default = depends on USAGE; Min QP; range =
152+
#define AMF_VIDEO_ENCODER_HEVC_MAX_QP_I L"HevcMaxQP_I" // amf_int64; default = depends on USAGE; Max QP; range =
153+
#define AMF_VIDEO_ENCODER_HEVC_MIN_QP_P L"HevcMinQP_P" // amf_int64; default = depends on USAGE; Min QP; range =
154+
#define AMF_VIDEO_ENCODER_HEVC_MAX_QP_P L"HevcMaxQP_P" // amf_int64; default = depends on USAGE; Max QP; range =
155+
156+
#define AMF_VIDEO_ENCODER_HEVC_QP_I L"HevcQP_I" // amf_int64; default = 26; P-frame QP; range = 0-51
157+
#define AMF_VIDEO_ENCODER_HEVC_QP_P L"HevcQP_P" // amf_int64; default = 26; P-frame QP; range = 0-51
158+
159+
#define AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_SKIP_FRAME_ENABLE L"HevcRateControlSkipFrameEnable" // bool; default = depends on USAGE; Rate Control Based Frame Skip
160+
161+
162+
// Motion estimation
163+
#define AMF_VIDEO_ENCODER_HEVC_MOTION_HALF_PIXEL L"HevcHalfPixel" // bool; default= true; Half Pixel
164+
#define AMF_VIDEO_ENCODER_HEVC_MOTION_QUARTERPIXEL L"HevcQuarterPixel" // bool; default= true; Quarter Pixel
165+
166+
// Per-submittion properties - can be set on input surface interface
167+
#define AMF_VIDEO_ENCODER_HEVC_END_OF_SEQUENCE L"HevcEndOfSequence" // bool; default = false; generate end of sequence
168+
#define AMF_VIDEO_ENCODER_HEVC_FORCE_PICTURE_TYPE L"HevcForcePictureType" // amf_int64(AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_ENUM); default = AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_NONE; generate particular picture type
169+
#define AMF_VIDEO_ENCODER_HEVC_INSERT_AUD L"HevcInsertAUD" // bool; default = false; insert AUD
170+
#define AMF_VIDEO_ENCODER_HEVC_INSERT_HEADER L"HevcInsertHeader" // bool; default = false; insert header(SPS, PPS, VPS)
171+
172+
#define AMF_VIDEO_ENCODER_HEVC_MARK_CURRENT_WITH_LTR_INDEX L"HevcMarkCurrentWithLTRIndex" // amf_int64; default = N/A; Mark current frame with LTR index
173+
#define AMF_VIDEO_ENCODER_HEVC_FORCE_LTR_REFERENCE_BITFIELD L"HevcForceLTRReferenceBitfield"// amf_int64; default = 0; force LTR bit-field
174+
175+
// Properties set by encoder on output buffer interface
176+
#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_DATA_TYPE L"HevcOutputDataType" // amf_int64(AMF_VIDEO_ENCODER_HEVC_OUTPUT_DATA_TYPE_ENUM); default = N/A
177+
#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_MARKED_LTR_INDEX L"HevcMarkedLTRIndex" // amf_int64; default = -1; Marked LTR index
178+
#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_REFERENCED_LTR_INDEX_BITFIELD L"HevcReferencedLTRIndexBitfield"// amf_int64; default = 0; referenced LTR bit-field
179+
180+
// HEVC Encoder capabilities - exposed in AMFCaps interface
181+
#define AMF_VIDEO_ENCODER_HEVC_CAP_MAX_BITRATE L"HevcMaxBitrate" // amf_int64; Maximum bit rate in bits
182+
#define AMF_VIDEO_ENCODER_HEVC_CAP_NUM_OF_STREAMS L"HevcNumOfStreams" // amf_int64; maximum number of encode streams supported
183+
#define AMF_VIDEO_ENCODER_HEVC_CAP_MAX_PROFILE L"HevcMaxProfile" // amf_int64(AMF_VIDEO_ENCODER_HEVC_PROFILE_ENUM)
184+
#define AMF_VIDEO_ENCODER_HEVC_CAP_MAX_TIER L"HevcMaxTier" // amf_int64(AMF_VIDEO_ENCODER_HEVC_TIER_ENUM) maximum profile tier
185+
#define AMF_VIDEO_ENCODER_HEVC_CAP_MAX_LEVEL L"HevcMaxLevel" // amf_int64 maximum profile level
186+
#define AMF_VIDEO_ENCODER_HEVC_CAP_MIN_REFERENCE_FRAMES L"HevcMinReferenceFrames" // amf_int64 minimum number of reference frames
187+
#define AMF_VIDEO_ENCODER_HEVC_CAP_MAX_REFERENCE_FRAMES L"HevcMaxReferenceFrames" // amf_int64 maximum number of reference frames
188+
189+
190+
#endif //#ifndef __AMFVideoEncoderHW_HEVC_h__

0 commit comments

Comments
 (0)