-
Notifications
You must be signed in to change notification settings - Fork 10
/
H265VideoConfiguration.ts
822 lines (721 loc) · 28.4 KB
/
H265VideoConfiguration.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
import {map, mapArray} from '../common/Mapper';
import AdaptiveQuantMode from './AdaptiveQuantMode';
import AutoLevelSetup from './AutoLevelSetup';
import BAdapt from './BAdapt';
import Cea608708SubtitleConfiguration from './Cea608708SubtitleConfiguration';
import CodecConfigType from './CodecConfigType';
import ColorConfig from './ColorConfig';
import DisplayAspectRatio from './DisplayAspectRatio';
import EncodingMode from './EncodingMode';
import ForceFlushMode from './ForceFlushMode';
import H265DynamicRangeFormat from './H265DynamicRangeFormat';
import LevelH265 from './LevelH265';
import LimitReferences from './LimitReferences';
import LimitTransformUnitDepthRecursionMode from './LimitTransformUnitDepthRecursionMode';
import MaxCtuSize from './MaxCtuSize';
import MaxTransformUnitSize from './MaxTransformUnitSize';
import MinCodingUnitSize from './MinCodingUnitSize';
import MotionSearch from './MotionSearch';
import PixelFormat from './PixelFormat';
import PresetConfiguration from './PresetConfiguration';
import ProfileH265 from './ProfileH265';
import QuantizationGroupSize from './QuantizationGroupSize';
import RateDistortionLevelForQuantization from './RateDistortionLevelForQuantization';
import RateDistortionPenaltyMode from './RateDistortionPenaltyMode';
import TransformSkipMode from './TransformSkipMode';
import TuInterDepth from './TuInterDepth';
import TuIntraDepth from './TuIntraDepth';
import VideoConfiguration from './VideoConfiguration';
import VideoFormat from './VideoFormat';
/**
* @export
* @class H265VideoConfiguration
*/
export class H265VideoConfiguration extends VideoConfiguration {
/**
* Discriminator property for CodecConfiguration
* @type {string}
* @memberof H265VideoConfiguration
*/
public readonly type: CodecConfigType = CodecConfigType.H265;
/**
* Choose from a set of preset configurations tailored for common use cases. Check out [H265 Presets](https://bitmovin.com/docs/encoding/tutorials/h265-presets) to see which values get applied by each preset. Explicitly setting a property to a different value will override the preset's value for that property.
* @type {PresetConfiguration}
* @memberof H265VideoConfiguration
*/
public presetConfiguration?: PresetConfiguration;
/**
* Automatically configures the H265 Video Codec to be compatible with the given SDR/HDR format. Bitmovin recommends to use the dynamic range format together with a preset configuration to achieve good results. Explicitly configured properties will take precedence over dynamic range format settings, which in turn will take precedence over preset configurations.
* @type {H265DynamicRangeFormat}
* @memberof H265VideoConfiguration
*/
public dynamicRangeFormat?: H265DynamicRangeFormat;
/**
* Constant rate factor for quality-based variable bitrate. Either bitrate or crf is required.
* @type {number}
* @memberof H265VideoConfiguration
*/
public crf?: number;
/**
* @type {ProfileH265}
* @memberof H265VideoConfiguration
*/
public profile?: ProfileH265;
/**
* Amount of b frames
* @type {number}
* @memberof H265VideoConfiguration
*/
public bframes?: number;
/**
* Amount of reference frames
* @type {number}
* @memberof H265VideoConfiguration
*/
public refFrames?: number;
/**
* Quantization factor
* @type {number}
* @memberof H265VideoConfiguration
*/
public qp?: number;
/**
* Maximum Bitrate
* @type {number}
* @memberof H265VideoConfiguration
*/
public maxBitrate?: number;
/**
* Minimum Bitrate
* @type {number}
* @memberof H265VideoConfiguration
*/
public minBitrate?: number;
/**
* Size of the VBV buffer (kbits)
* @type {number}
* @memberof H265VideoConfiguration
*/
public bufsize?: number;
/**
* Minimum GOP length, the minimum distance between I-frames
* @type {number}
* @memberof H265VideoConfiguration
*/
public minGop?: number;
/**
* Maximum GOP length, the maximum distance between I-frames
* @type {number}
* @memberof H265VideoConfiguration
*/
public maxGop?: number;
/**
* Enable open-gop, allows referencing frames from a previous gop
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public openGop?: boolean;
/**
* Minimum interval in seconds between key frames
* @type {number}
* @memberof H265VideoConfiguration
*/
public minKeyframeInterval?: number;
/**
* Maximum interval in seconds between key frames
* @type {number}
* @memberof H265VideoConfiguration
*/
public maxKeyframeInterval?: number;
/**
* @type {LevelH265}
* @memberof H265VideoConfiguration
*/
public level?: LevelH265;
/**
* Number of frames for slice-type decision lookahead
* @type {number}
* @memberof H265VideoConfiguration
*/
public rcLookahead?: number;
/**
* Set the level of effort in determining B frame placement
* @type {BAdapt}
* @memberof H265VideoConfiguration
*/
public bAdapt?: BAdapt;
/**
* @type {MaxCtuSize}
* @memberof H265VideoConfiguration
*/
public maxCTUSize?: MaxCtuSize;
/**
* @type {TuIntraDepth}
* @memberof H265VideoConfiguration
*/
public tuIntraDepth?: TuIntraDepth;
/**
* @type {TuInterDepth}
* @memberof H265VideoConfiguration
*/
public tuInterDepth?: TuInterDepth;
/**
* @type {MotionSearch}
* @memberof H265VideoConfiguration
*/
public motionSearch?: MotionSearch;
/**
* Set the amount of subpel refinement to perform.
* @type {number}
* @memberof H265VideoConfiguration
*/
public subMe?: number;
/**
* Set the Motion search range.
* @type {number}
* @memberof H265VideoConfiguration
*/
public motionSearchRange?: number;
/**
* Enable weighted prediction in P slices
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public weightPredictionOnPSlice?: boolean;
/**
* Enable weighted prediction in B slices
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public weightPredictionOnBSlice?: boolean;
/**
* Toggle sample adaptive offset loop filter
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public sao?: boolean;
/**
* Set the mastering display color volume SEI info (SMPTE ST 2086). For example `G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,1)` describes a P3D65 1000-nits monitor, where G(x=0.265, y=0.690), B(x=0.150, y=0.060), R(x=0.680, y=0.320), WP(x=0.3127, y=0.3290), L(max=1000, min=0.0001). Part of HDR-10 metadata. If used on a Dolby Vision stream, this value must be set to `G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,1)`.
* @type {string}
* @memberof H265VideoConfiguration
*/
public masterDisplay?: string;
/**
* Set the max content light level (MaxCLL). Use together with maxPictureAverageLightLevel (which will be 0 if not set). Part of HDR-10 metadata.
* @type {number}
* @memberof H265VideoConfiguration
*/
public maxContentLightLevel?: number;
/**
* Set the maximum picture average light level (MaxFALL). Use together with maxContentLightLevel (which will be 0 if not set). Part of HDR-10 metadata.
* @type {number}
* @memberof H265VideoConfiguration
*/
public maxPictureAverageLightLevel?: number;
/**
* Force signaling of HDR parameters in SEI packets. Enabled automatically when masterDisplay or maxContentLightLevel/maxPictureAverageLightLevel are set. Useful when there is a desire to signal 0 values for maxContentLightLevel and maxPictureAverageLightLevel.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public hdr?: boolean;
/**
* Scene Change sensitivity. The higher the value, the more likely an I-Frame will be inserted. Set to 0 to disable it.
* @type {number}
* @memberof H265VideoConfiguration
*/
public sceneCutThreshold?: number;
/**
* Controls the adaptive quantization algorithm
* @type {AdaptiveQuantMode}
* @memberof H265VideoConfiguration
*/
public adaptiveQuantizationMode?: AdaptiveQuantMode;
/**
* Enable SDR compatible HLG signaling. The container and bitstream will indicate BT.2020 but ARIB STD-B67 will be signaled in the alternative transfer characteristics SEI message.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public enableHlgSignaling?: boolean;
/**
* Specifies the source format of the original analog video prior to digitizing and encoding
* @type {VideoFormat}
* @memberof H265VideoConfiguration
*/
public videoFormat?: VideoFormat;
/**
* Psycho-visual rate-distortion retains fine details like film grain at the expense of more blocking artifacts. Higher values make the video appear sharper and more detailed but with a higher risk of blocking artifacts. Needs to have subMe with RD_IP, RD_ALL, RD_REF_IP, RD_REF_ALL, QPRD or FULL_RD
* @type {number}
* @memberof H265VideoConfiguration
*/
public psyRateDistortionOptimization?: number;
/**
* Strength of psycho-visual optimizations in quantization. Only has an effect in presets which use RDOQ (rd-levels 4 and 5). The value must be between 0 and 50, 1.0 is typical
* @type {number}
* @memberof H265VideoConfiguration
*/
public psyRateDistortionOptimizedQuantization?: number;
/**
* Signal hypothetical reference decoder (HRD) information
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public enableHrdSignaling?: boolean;
/**
* Enables the use of lookahead’s lowres motion vector fields to determine the amount of reuse of each block to tune adaptive quantization factors.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public cutree?: boolean;
/**
* Minimum CU size (width and height). By using 16 or 32 the encoder will not analyze the cost of CUs below that minimum threshold, saving considerable amounts of compute with a predictable increase in bitrate. This setting has a large effect on performance on the faster presets.
* @type {MinCodingUnitSize}
* @memberof H265VideoConfiguration
*/
public minCodingUnitSize?: MinCodingUnitSize;
/**
* Use multiple worker threads to measure the estimated cost of each frame within the lookahead. The higher this parameter, the less accurate the frame costs will be which will result in less accurate B-frame and scene-cut decisions. Valid range: 0 - 16
* @type {number}
* @memberof H265VideoConfiguration
*/
public lookaheadSlices?: number;
/**
* If enabled, limit references per depth, CU or both.
* @type {LimitReferences}
* @memberof H265VideoConfiguration
*/
public limitReferences?: LimitReferences;
/**
* Enable analysis of rectangular motion partitions Nx2N and 2NxN.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public rectangularMotionPartitionsAnalysis?: boolean;
/**
* Enable analysis of asymmetric motion partitions.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public asymetricMotionPartitionsAnalysis?: boolean;
/**
* When enabled, will limit modes analyzed for each CU using cost metrics from the 4 sub-CUs. This can significantly improve performance when `rectangularMotionPartitionsAnalysis` and/or `asymetricMotionPartitionsAnalysis` are enabled at minimal compression efficiency loss.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public limitModes?: boolean;
/**
* Maximum number of neighbor (spatial and temporal) candidate blocks that the encoder may consider for merging motion predictions. Valid range: 1 - 5
* @type {number}
* @memberof H265VideoConfiguration
*/
public maxMerge?: number;
/**
* Measure 2Nx2N merge candidates first; if no residual is found, additional modes at that depth are not analysed.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public earlySkip?: boolean;
/**
* If enabled exits early from CU depth recursion. When a skip CU is found, additional heuristics are used to decide whether to terminate recursion.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public recursionSkip?: boolean;
/**
* Enable faster search method for angular intra predictions.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public fastSearchForAngularIntraPredictions?: boolean;
/**
* Enables the evaluation of intra modes in B slices.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public evaluationOfIntraModesInBSlices?: boolean;
/**
* Hide sign bit of one coefficient per coding tree unit.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public signHide?: boolean;
/**
* Level of rate-distortion optimization in mode decision. The lower the value the faster the encode, the higher the value higher the compression efficiency. Valid range: 0 - 4
* @type {number}
* @memberof H265VideoConfiguration
*/
public rateDistortionLevelForModeDecision?: number;
/**
* Specifies the amount of rate-distortion analysis to use within quantization.
* @type {RateDistortionLevelForQuantization}
* @memberof H265VideoConfiguration
*/
public rateDistortionLevelForQuantization?: RateDistortionLevelForQuantization;
/**
* Minimum quantization factor. Valid value range: 0 - 69
* @type {number}
* @memberof H265VideoConfiguration
*/
public qpMin?: number;
/**
* Maximum quantization factor. Valid value range: 0 - 69
* @type {number}
* @memberof H265VideoConfiguration
*/
public qpMax?: number;
/**
* The encoder may begin encoding a row as soon as the row above it is at least two CTUs ahead in the encode process. Default is enabled.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public wavefrontParallelProcessing?: boolean;
/**
* Encode each incoming frame as multiple parallel slices that may be decoded independently. Default is 1.
* @type {number}
* @memberof H265VideoConfiguration
*/
public slices?: number;
/**
* Copy buffers of input picture in frame. Default is enabled.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public copyPicture?: boolean;
/**
* If high tier is disabled the encoder will attempt to encode only at the main tier. Default is enabled.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public levelHighTier?: boolean;
/**
* Enable skipping split rate distortion analysis when sum of split CU RD cost larger than one split CU RD cost for intra CU. Default disabled.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public skipSplitRateDistortionAnalysis?: boolean;
/**
* If enabled, consider lossless mode in CU RDO decisions. Default is disabled.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public codingUnitLossless?: boolean;
/**
* Enable evaluation of transform skip (bypass DCT but still use quantization) coding for 4x4 TU coded blocks. Default is NONE.
* @type {TransformSkipMode}
* @memberof H265VideoConfiguration
*/
public transformSkip?: TransformSkipMode;
/**
* Enable QP based rate distortion refinement. Default is disabled.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public refineRateDistortionCost?: boolean;
/**
* Enables early exit from transform unit depth recursion, for inter coded blocks. Default is DISABLED.
* @type {LimitTransformUnitDepthRecursionMode}
* @memberof H265VideoConfiguration
*/
public limitTransformUnitDepthRecursion?: LimitTransformUnitDepthRecursionMode;
/**
* An integer value, which denotes strength of noise reduction in intra CUs. Default 0.
* @type {number}
* @memberof H265VideoConfiguration
*/
public noiseReductionIntra?: number;
/**
* An integer value, which denotes strength of noise reduction in inter CUs. Default 0.
* @type {number}
* @memberof H265VideoConfiguration
*/
public noiseReductionInter?: number;
/**
* Penalty for 32x32 intra transform units in non-I slices. Default DISABLED.
* @type {RateDistortionPenaltyMode}
* @memberof H265VideoConfiguration
*/
public rateDistortionPenalty?: RateDistortionPenaltyMode;
/**
* Penalty for 32x32 intra transform units in non-I slices. Default DISABLED.
* @type {MaxTransformUnitSize}
* @memberof H265VideoConfiguration
*/
public maximumTransformUnitSize?: MaxTransformUnitSize;
/**
* Increases the RD level at points where quality drops due to VBV rate control enforcement. Default 0.
* @type {number}
* @memberof H265VideoConfiguration
*/
public dynamicRateDistortionStrength?: number;
/**
* It is used for mode selection during analysis of CTUs and can achieve significant gain in terms of objective quality metrics SSIM and PSNR. Default false.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public ssimRateDistortionOptimization?: boolean;
/**
* Enable temporal motion vector predictors in P and B slices. Default true.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public temporalMotionVectorPredictors?: boolean;
/**
* Enable motion estimation with source frame pixels, in this mode, motion estimation can be computed independently. Default false.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public analyzeSourceFramePixels?: boolean;
/**
* Enable strong intra smoothing for 32x32 intra blocks. Default true.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public strongIntraSmoothing?: boolean;
/**
* When generating intra predictions for blocks in inter slices, only intra-coded reference pixels are used. Default false.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public constrainedIntraPrediction?: boolean;
/**
* This value represents the percentage difference between the inter cost and intra cost of a frame used in scenecut detection. Default 5.0.
* @type {number}
* @memberof H265VideoConfiguration
*/
public scenecutBias?: number;
/**
* Number of RADL pictures allowed infront of IDR. Requires fixed keyframe interval. Valid values 0 - `bframes`. Default 0.
* @type {number}
* @memberof H265VideoConfiguration
*/
public allowedRADLBeforeIDR?: number;
/**
* Number of frames for GOP boundary decision lookahead. Valid values 0 - `rcLookahead`. Default 0
* @type {number}
* @memberof H265VideoConfiguration
*/
public gopLookahead?: number;
/**
* Bias towards B frames in slicetype decision. The higher the bias the more likely the encoder is to use B frames. Default 0
* @type {number}
* @memberof H265VideoConfiguration
*/
public bframeBias?: number;
/**
* Force the encoder to flush frames. Default is DISABLED.
* @type {ForceFlushMode}
* @memberof H265VideoConfiguration
*/
public forceFlush?: ForceFlushMode;
/**
* Adjust the strength of the adaptive quantization offsets. Default 1.0.
* @type {number}
* @memberof H265VideoConfiguration
*/
public adaptiveQuantizationStrength?: number;
/**
* Adjust the AQ offsets based on the relative motion of each block with respect to the motion of the frame. Default false.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public adaptiveQuantizationMotion?: boolean;
/**
* Enable adaptive quantization for sub-CTUs. This parameter specifies the minimum CU size at which QP can be adjusted. Default is same as `maxCTUSize`.
* @type {QuantizationGroupSize}
* @memberof H265VideoConfiguration
*/
public quantizationGroupSize?: QuantizationGroupSize;
/**
* Enables stricter conditions to control bitrate deviance from the target bitrate in ABR mode. Bit rate adherence is prioritised over quality. Default false.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public strictCbr?: boolean;
/**
* Offset of Cb chroma QP from the luma QP selected by rate control. This is a general way to spend more or less bits on the chroma channel. Default 0
* @type {number}
* @memberof H265VideoConfiguration
*/
public qpOffsetChromaCb?: number;
/**
* Offset of Cr chroma QP from the luma QP selected by rate control. This is a general way to spend more or less bits on the chroma channel. Default 0
* @type {number}
* @memberof H265VideoConfiguration
*/
public qpOffsetChromaCr?: number;
/**
* QP ratio factor between I and P slices. This ratio is used in all of the rate control modes. Default 1.4
* @type {number}
* @memberof H265VideoConfiguration
*/
public ipRatio?: number;
/**
* QP ratio factor between P and B slices. This ratio is used in all of the rate control modes. Default 1.3
* @type {number}
* @memberof H265VideoConfiguration
*/
public pbRatio?: number;
/**
* Quantizer curve compression factor. It weights the frame quantizer based on the complexity of residual (measured by lookahead). Default 0.6
* @type {number}
* @memberof H265VideoConfiguration
*/
public quantizerCurveCompressionFactor?: number;
/**
* The maximum single adjustment in QP allowed to rate control. Default 4
* @type {number}
* @memberof H265VideoConfiguration
*/
public qpStep?: number;
/**
* Enables a specialised ratecontrol algorithm for film grain content. Default false.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public grainOptimizedRateControl?: boolean;
/**
* Temporally blur quants. Default 0.5
* @type {number}
* @memberof H265VideoConfiguration
*/
public blurQuants?: number;
/**
* Temporally blur complexity. Default 20.0
* @type {number}
* @memberof H265VideoConfiguration
*/
public blurComplexity?: number;
/**
* Specify how to handle depencency between SAO and deblocking filter. When enabled, non-deblocked pixels are used for SAO analysis. When disabled, SAO analysis skips the right/bottom boundary areas. Default false.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public saoNonDeblock?: boolean;
/**
* Limit SAO filter computation by early terminating SAO process based on inter prediction mode, CTU spatial-domain correlations, and relations between luma and chroma. Default false.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public limitSao?: boolean;
/**
* Will use low-pass subband dct approximation instead of the standard dct for 16x16 and 32x32 blocks. Default false.
* @type {boolean}
* @memberof H265VideoConfiguration
*/
public lowpassDct?: boolean;
/**
* Defines whether CEA 608/708 subtitles are extracted from the input video stream
* @type {Cea608708SubtitleConfiguration}
* @memberof H265VideoConfiguration
*/
public cea608708SubtitleConfig?: Cea608708SubtitleConfiguration;
/**
* Enable/disable automatic calculation of level, maxBitrate, and bufsize based on the least level that satisfies maximum property values for picture resolution, frame rate, and bit rate. In the case the target level is set explicitly, the maximum bitrate and buffer size are calculated based on the defined level. Explicitly setting maxBitrate, or bufsize properties will disable the automatic calculation.
* @type {AutoLevelSetup}
* @memberof H265VideoConfiguration
*/
public autoLevelSetup?: AutoLevelSetup;
constructor(obj?: Partial<H265VideoConfiguration>) {
super(obj);
if(!obj) {
return;
}
this.presetConfiguration = map(obj.presetConfiguration);
this.dynamicRangeFormat = map(obj.dynamicRangeFormat);
this.crf = map(obj.crf);
this.profile = map(obj.profile);
this.bframes = map(obj.bframes);
this.refFrames = map(obj.refFrames);
this.qp = map(obj.qp);
this.maxBitrate = map(obj.maxBitrate);
this.minBitrate = map(obj.minBitrate);
this.bufsize = map(obj.bufsize);
this.minGop = map(obj.minGop);
this.maxGop = map(obj.maxGop);
this.openGop = map(obj.openGop);
this.minKeyframeInterval = map(obj.minKeyframeInterval);
this.maxKeyframeInterval = map(obj.maxKeyframeInterval);
this.level = map(obj.level);
this.rcLookahead = map(obj.rcLookahead);
this.bAdapt = map(obj.bAdapt);
this.maxCTUSize = map(obj.maxCTUSize);
this.tuIntraDepth = map(obj.tuIntraDepth);
this.tuInterDepth = map(obj.tuInterDepth);
this.motionSearch = map(obj.motionSearch);
this.subMe = map(obj.subMe);
this.motionSearchRange = map(obj.motionSearchRange);
this.weightPredictionOnPSlice = map(obj.weightPredictionOnPSlice);
this.weightPredictionOnBSlice = map(obj.weightPredictionOnBSlice);
this.sao = map(obj.sao);
this.masterDisplay = map(obj.masterDisplay);
this.maxContentLightLevel = map(obj.maxContentLightLevel);
this.maxPictureAverageLightLevel = map(obj.maxPictureAverageLightLevel);
this.hdr = map(obj.hdr);
this.sceneCutThreshold = map(obj.sceneCutThreshold);
this.adaptiveQuantizationMode = map(obj.adaptiveQuantizationMode);
this.enableHlgSignaling = map(obj.enableHlgSignaling);
this.videoFormat = map(obj.videoFormat);
this.psyRateDistortionOptimization = map(obj.psyRateDistortionOptimization);
this.psyRateDistortionOptimizedQuantization = map(obj.psyRateDistortionOptimizedQuantization);
this.enableHrdSignaling = map(obj.enableHrdSignaling);
this.cutree = map(obj.cutree);
this.minCodingUnitSize = map(obj.minCodingUnitSize);
this.lookaheadSlices = map(obj.lookaheadSlices);
this.limitReferences = map(obj.limitReferences);
this.rectangularMotionPartitionsAnalysis = map(obj.rectangularMotionPartitionsAnalysis);
this.asymetricMotionPartitionsAnalysis = map(obj.asymetricMotionPartitionsAnalysis);
this.limitModes = map(obj.limitModes);
this.maxMerge = map(obj.maxMerge);
this.earlySkip = map(obj.earlySkip);
this.recursionSkip = map(obj.recursionSkip);
this.fastSearchForAngularIntraPredictions = map(obj.fastSearchForAngularIntraPredictions);
this.evaluationOfIntraModesInBSlices = map(obj.evaluationOfIntraModesInBSlices);
this.signHide = map(obj.signHide);
this.rateDistortionLevelForModeDecision = map(obj.rateDistortionLevelForModeDecision);
this.rateDistortionLevelForQuantization = map(obj.rateDistortionLevelForQuantization);
this.qpMin = map(obj.qpMin);
this.qpMax = map(obj.qpMax);
this.wavefrontParallelProcessing = map(obj.wavefrontParallelProcessing);
this.slices = map(obj.slices);
this.copyPicture = map(obj.copyPicture);
this.levelHighTier = map(obj.levelHighTier);
this.skipSplitRateDistortionAnalysis = map(obj.skipSplitRateDistortionAnalysis);
this.codingUnitLossless = map(obj.codingUnitLossless);
this.transformSkip = map(obj.transformSkip);
this.refineRateDistortionCost = map(obj.refineRateDistortionCost);
this.limitTransformUnitDepthRecursion = map(obj.limitTransformUnitDepthRecursion);
this.noiseReductionIntra = map(obj.noiseReductionIntra);
this.noiseReductionInter = map(obj.noiseReductionInter);
this.rateDistortionPenalty = map(obj.rateDistortionPenalty);
this.maximumTransformUnitSize = map(obj.maximumTransformUnitSize);
this.dynamicRateDistortionStrength = map(obj.dynamicRateDistortionStrength);
this.ssimRateDistortionOptimization = map(obj.ssimRateDistortionOptimization);
this.temporalMotionVectorPredictors = map(obj.temporalMotionVectorPredictors);
this.analyzeSourceFramePixels = map(obj.analyzeSourceFramePixels);
this.strongIntraSmoothing = map(obj.strongIntraSmoothing);
this.constrainedIntraPrediction = map(obj.constrainedIntraPrediction);
this.scenecutBias = map(obj.scenecutBias);
this.allowedRADLBeforeIDR = map(obj.allowedRADLBeforeIDR);
this.gopLookahead = map(obj.gopLookahead);
this.bframeBias = map(obj.bframeBias);
this.forceFlush = map(obj.forceFlush);
this.adaptiveQuantizationStrength = map(obj.adaptiveQuantizationStrength);
this.adaptiveQuantizationMotion = map(obj.adaptiveQuantizationMotion);
this.quantizationGroupSize = map(obj.quantizationGroupSize);
this.strictCbr = map(obj.strictCbr);
this.qpOffsetChromaCb = map(obj.qpOffsetChromaCb);
this.qpOffsetChromaCr = map(obj.qpOffsetChromaCr);
this.ipRatio = map(obj.ipRatio);
this.pbRatio = map(obj.pbRatio);
this.quantizerCurveCompressionFactor = map(obj.quantizerCurveCompressionFactor);
this.qpStep = map(obj.qpStep);
this.grainOptimizedRateControl = map(obj.grainOptimizedRateControl);
this.blurQuants = map(obj.blurQuants);
this.blurComplexity = map(obj.blurComplexity);
this.saoNonDeblock = map(obj.saoNonDeblock);
this.limitSao = map(obj.limitSao);
this.lowpassDct = map(obj.lowpassDct);
this.cea608708SubtitleConfig = map(obj.cea608708SubtitleConfig, Cea608708SubtitleConfiguration);
this.autoLevelSetup = map(obj.autoLevelSetup);
}
}
export default H265VideoConfiguration;