-
Notifications
You must be signed in to change notification settings - Fork 180
/
changelog.txt
780 lines (672 loc) · 39.8 KB
/
changelog.txt
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
/////////////////////////////////////////
tag 1.13.0
* libvvenc:
- many ARM SIMD optimizations for both NEON and SVE
- added parameters
- m_GOPQPA: enableed GOP adaptive QP cascade (default: on if QPA off)
- m_numParallelGOPs: allows to encode multiple GOPs at once, improving multi-threading for large number of threads (default: off)
- m_fga (experimental): enables film grain analysis and embeds FGS SEI in the encoded bitstreams (default: off)
- changed parameters:
- m_DecodingRefreshType: added a DASH optimized mode VVENC_DRT_IDR_NO_RADL - starts each intra period with an IDR frame
without leading picture, allowing simple splitting into segments at each IDR.
- preset adjustments:
- 5% speedup for medium
- 2% speedup for slow and slower
- memory reduction for medium/fast/faster
- bugfixes
- cleanups
* vvencFFapp:
- added parameters:
- GOPQPA: enabled GOP adaptive QP cascade (default: on if QPA off)
- NumParallelGOPs: allows to encode multiple GOPs at once (default: off)
- FGA: enables the experimental film grain analysis (default: off)
- changed parameters:
- DecodingRefreshType: now also accepts values "6" and "idr_no_radl" enabling the new DASH optimized IDR only structure.
* vvencapp:
- changed parameters:
- refreshtype: now also accepts values "6" and "idr_no_radl" enabling the new DASH optimized IDR only structure.
/////////////////////////////////////////
tag 1.12.1
* libvvenc:
- changed parameters (vvenc_config::) for proper VUI signalization:
- m_aspectRatioIdc=1 per default (sar 1x1)
- m_chromaLocInfoPresent=-1 and m_chromaSampleLocType=-1 per default (auto behavior depending on HDR/SDR mode)
m_chromaSampleLocType is auto set, depending on m_horCollocatedChromaFlag and m_verCollocatedChromaFlag
m_chromaLocInfoPresent=1 and m_chromaSampleLocType=2 for VVENC_HDR_PQ, VVENC_HDR_PQ_BT2020,
VVENC_HDR_HLG, VVENC_HDR_HLG_BT2020, VVENC_SDR_BT2020
else m_chromaLocInfoPresent=0 and m_chromaSampleLocType=0
- m_aspectRatioInfoPresent flag is auto on, if m_aspectRatioIdc>0 or non-default Sar is given
- m_overscanInfoPresent flag is auto on, when m_overscanAppropriateFlag is enabled
- m_chromaSampleLocTypeTopField and m_chromaSampleLocTypeBottomField unused now (will be removed in next major release)
- VUI defaults changed:
- progressiveSourceFlag=1
- nonPackedFlag=1
- nonProjectedFlag=1
* vvencFFapp:
- added parameters:
- Sar: specify Sample aspect ratio - ratio of width to height (WidthxHeight)
- removed unused parameter: ChromaSampleLocTypeTopField, ChromaSampleLocTypeBottomField
- changed parameter section:
- cleanup section "VUI and SEI options" into separate sections:
"HDR/SDR and Color Options", "SEI and auxiliary options", "VUI options"
- "ChromaLocInfoPresent" is now auto behavior "Signals whether chroma_sample_loc_type is present (-1: auto, 0: off, 1: on)")
/////////////////////////////////////////
tag 1.12.0
* libvvenc:
- added parameters:
- vvenc_config::m_mtProfile: defines how aggressively to boost multi-threading (0...3, where 0 is
current multi-threading, and 3 contains all WPP, IFP and tile usage, use -1 for auto behavior
depending on resolution and the number of threads used)
- changed parameters (vvenc_config::):
- m_numTileCols and m_numTileRows from uint32_t to int32_t (-1 for auto behavior, see m_mtProfile)
- m_ifp and m_entropyCodingSynchEnabled from bool to int8_t (-1 for auto behavior, see m_mtProfile)
- enabled capped constant quality factor (CQF) mode
- constant quality mode (vvenc_config::m_QP set and ::m_usePerceptQPA enabled) with rate capping
enabled with an absolute limit (::m_RCMaxBitrate)
- minor (~5%) speedups to faster preset
- improvements to low-delay encoding configuration
- other minor optimizations, cleanups and bugfixes
* vvencFFapp:
- added parameters:
- MTProfile: set the multi-threading profile (0: current default - 3: use all MT optimizers, use
-1/auto to automatically set depending on resolution and number of threads used)
- changed parameters:
- WaveFrontSynchro, IFP, Tiles: default value set to -1, with the behavior defined by MTProfile
parameter, resolution and number of used threads
* vvencapp:
- added parameters:
- mtprofile: set the multi-threading profile (0: current default - 3: use all MT optimizers, use
-1/auto to automatically set depending on resolution and number of threads used)
- internal-bitdepth: sets internal encoding bitdepth, i.e. the output bitstream bitdepth
- refreshtype: specifies the refresh-type used at random access points
- decodedpicturehash: enable/disable decoded picture hash (DPH) SEI generation
- changed parameters:
- ifp, tiles: default value set to -1, with the behavior defined by mtprofile parameter, resolution
and number of used threads
- format: now accepts yuv400 and yuv400_10 as parameter for monochrome input
/////////////////////////////////////////
tag 1.11.1
* libvvenc:
- fix performance regression for ARM
- using SSE41 code to generate NEON with SIMDe rather than AVX2
/////////////////////////////////////////
tag 1.11.0
* libvvenc:
- added library parameters:
- vvenc_config::m_forceScc to force a specific SCC detection decision for all frames
(0: do not use, 1/2/3: no SCC/weak SCC/strong SCC)
- vvenc_config::m_ifp to enable inter-frame parallelism
- vvenc_config::m_minIntraDist to define minimal distance between intra frames (in presentation order)
- changed parameters:
- vvenc_config::m_RCMaxBitrate can now be specified as factor of target bitrate, use the macro
VVENC_SET_MAXRATE_FACTOR to set the value (absolute of negative values will be interpreted as
a 4-bit fixed-point factor)
- vvenc_config::m_numThreads will now per default be set to 12 for 5K and higher resolutions
- renamed library parameters:
- vvenc_config::m_fppLinesSynchro to vvenc_config::m_ifpLines
- added an affine speedup based on Pejman et al., ICIP 2023.
- added vectorized DQ implementation
- finalized inter-frame parallelization (previously FPP) improving performance during
execution with high number of threads (harmonized with rate control)
- improved SCC detection by reducing false positives
- overall speedups:
- 6% for fast/slow/slower
- 12% for medium, 25%+ for multi-threaded execution with long intra periods
* vvencFFapp:
- added parameters:
- IFP: enables the usage of inter-frame parallelism
- IFPLines: defines the synchronization offset in CTU lines
- ForceSCC: forces a specific SCC detection decision
- MinIntraDistance: defines a minimal distance between intra pictures in presentation order
- changed parameters:
- FppLinesSynchro: now deprecated, please use IFP and IFPLines
- NumThreads: if set to default (-1), will now cause the encoder to use 12 threads for 5K and higher resolutions
- MaxRate: if specified with suffix "x", e.g. "2x", the value will be interpreted as multiple of target bitrate
* vvencapp:
- added parameters:
- ifp: when set, will enable inter-frame parallelism with a default synchronization offset of two CTU lines
- changed parameters:
- threads, t: if set to default (-1), will now cause the encoder to use 12 threads for 5K and higher resolutions
- maxrate, m: if specified with suffix "x", e.g. "2x", the value will be interpreted as multiple of target bitrate
/////////////////////////////////////////
tag 1.10.0
* libvvenc:
- added library parameters:
- vvenc_config::m_poc0idr to force POC0 to be an IDR (otherwise per default it will now be a RASL picture)
- changed default GOP structure of the first GOP to align with other GOPs, ensuring all intra-periods
and DASH segments have equal length
- enable spatial subsampling for 1st pass in 2-pass RC per default for faster preset
- adaptively extend the number of neighboring frames in MCTF pre-filtering
- allow ALF derivation from partial data for FPPLinesSynchro
- improved rate matching accuracy at high target rates on easy-to-encode content, especially for HDR
- disable compilation for SSE42 and AVX as no specific code is used,
only keep explicit support for SSE41 and AVX2
- around 0.5% BDR gain for all presets
- minor changes and cleanups to rate control, DMVR, MCTF, QPA and others
* vvencFFapp:
- added parameter: POC0IDR to control if POC0 is an IDR (=1, default if PicReordering is 1)
or RASL (=0, default if PicReordering is 0)
/////////////////////////////////////////
tag 1.9.1
* libvvenc:
- added library parameters:
- vvenc_config::m_maxPicWidth, vvenc_config::m_maxPicHeight to signal maximal possible picture size when
encoding for resolution change (e.g. using CRA_CRE decoder refresh)
- added medium_lowDecEnergy as a built-in preset (in C-API: VVENC_MEDIUM_LOWDECNRG)
- refactoring and improvements of affine search and interpolation filtering
- fixed 8-bit encoding from 10-bit input and proper handling of 8-bit video in BIM
- added proper setting of conformance window
- refactoring and improvements to rate control (RC)
- fixed potential integer overflow
- finalized spatial subsampling implementation for 2-pass RC
* vvencFFapp:
- added parameter: MaxPicSize/MaxPicWidth/MaxPicHeight to control the signaled maximal picture size during
resolution change
/////////////////////////////////////////
tag 1.9.0
* libvvenc:
- removed library parameters: vvenc_config::m_wcgChromaQpControl, vvenc_config::m_ccalfQpThreshold,
vvenc_config::m_switchPOC, vvenc_config::m_switchDQP,
vvenc_config::m_fastForwardToPOC, vvenc_config::m_stopAfterFFtoPOC,
vvenc_config::m_bs2ModPOCAndType, vvenc_config::m_forceDecodeBitstream1,
vvenc_config::m_decodeBitstreams
- removed deprecated struct: vvencWCGChromaQPControl
- added library parameters:
- vvenc_config::m_fppLinesSynchro (controls CTU line offset for dependent frame parallelism)
- vvenc_config::m_RCMaxBitrate (controls the maximum instantaneous rate for rate control encoding)
- changed library parameters:
- vvenc_config::m_FirstPassMode (added spatial and temporal subsampling to first pass)
- vvenc_config::m_decodedPictureHashSEIType (when >= 10, the hash is calculated and logged,
but no SEI message is generated)
- vvenc_config::m_IntraPeriodSec (will now round the intra period to a multiple of 8 frames,
instead of GOP size)
- added rate capping during rate control (must be at least 1.5x of target rate)
- extensive improvements and cleanups to rate control, especially single pass
- improved efficiency by 1-2%
- speedup of first pass, especially for preset faster (around 15% overall runtime)
- unified MCTF activation for low- and high-rate encoding
- various speedups, fixes, and cleanups
* vvencapp:
- added parameter: stats (when enabled, prints a statistical summary of encoding every second of input)
maxrate (enables to specify maximum rate for RC, must be at least 1.5x of target rate)
* vvencFFapp:
- added parameter: MaxBitrate (enables to specify maximum rate for RC, must be at least 1.5x of target rate)
stats (when enabled, prints a statistical summary of encoding every second of input)
- removed parameters: WCGPPSEnable, WCGPPSCbQpScale, WCGPPSCrQpScale, WCGPPSChromaQpScale,
WCGPPSChromaQpOffset, DebugBitstream, DecodeBitstream1, DecodeBitstream2,
DebugPOC, SwitchPOC, SwitchDQP, FastForwardToPOC, StopAfterFFtoPOC,
DecodeBitstream2ModPOCAndType, ForceDecodeBitstream1, CCALFQpTh, decode
/////////////////////////////////////////
tag 1.8.0
* libvvenc:
- removed library parameters:
- vvenc_config::m_temporalSubsampleRatio, vvenc_config::m_MaxCodingDepth, vvenc_config::m_RCForceIntraQP,
vvenc_config::m_log2DiffMaxMinCodingBlockSize
- added library parameters:
- vvenc_config::m_FirstPassMode
- changed library parameters:
- vvenc_config::m_useSelectiveRDOQ is now an int_8, with 2 enabling selective RDOQ only for SCC
- deprecated config: vvencWCGChromaQPControl
- QPA: added saliency detection
- BIM: propagation of the parameters to higher temporal layers
- retuned the presets:
- 15% speedup for faster, 10% speedup for fast, medium and slow, 5% for slower
- speedup of the first pass for faster preset
- various speedups and bugfixes
* vvencapp:
* vvencFFapp:
- removed from default installation! Use VVENC_INSTALL_FULLFEATURE_APP CMake variable to override.
- removed parameters: TemporalSubsampleRatio, RCForceIntraQP, MaxMTTHierarchyDepth, MaxMTTHierarchyDepthI,
MaxMTTHierarchyDepthISliceL, MaxMTTHierarchyDepthISliceC
- deprecated parameters: WCGPPSEnable, WCGPPSCbQpScale, WCGPPSCrQpScale,
WCGPPSChromaQpScale, WCGPPSChromaQpOffset
- added parameters: FirstPassMode
/////////////////////////////////////////
tag 1.7.0
* libvvenc:
- removed (unused) library parameters:
- vvencGOPEntry: m_CbTcOffsetDiv2, m_CbBetaOffsetDiv2, m_CrTcOffsetDiv2, m_CrBetaOffsetDiv2
m_refPic, m_isEncoded, m_ltrp_in_slice_header_flag
- vvencReshapeCW: rspBaseQP
- added library parameters:
- extended vvencHDRMode to also include SDR color spaces
- vvenc_config: m_numRefPics, m_numRefPicsSCC, m_blockImportanceMapping, m_saoScc
- vvenc_config: changed m_sliceTypeAdapt from bool to char
- changed library parameters:
- m_TicksPerSecond new default 27000000 (old: 90000) to support all NTSC frame rates
- added support for ARM through SIMDe
- allowing adaptive intra period (content adaptive placement of random access points)
- ported block importance mapping from VTM
- around 1% gain for faster
- around 2% BD-rate gain for other presets
- added noise based QP clipping to RC
- improved SCC detector to ignore black borders
- added possibility of logo overlay
- major refactoring to separate a pre-processing step
- many bugfixes
- speedups: 20% for faster, 5% for other presets
* vvencapp:
- added parameter "sdr" to set the SDR color space (mutually exclusive with "hdr" parameter)
- added parameter "logofile" specifying a JSON logo descriptor (use without value for help)
* vvencFFapp:
- added parameters "Sdr" and "logofile" analogue to simple app
- added parameters "NumRefPics" and "NumRefPicsSCC" allowing per-TL setting of number of reference pictures
- added parameter "BIM"
- changed parameters "SAO" and "STA" from flag to integer
- SAO=2 will only apply SAO to screen content
- STA=2 will start a new intra period when a content-dependent intra frame is inserted
/////////////////////////////////////////
tag 1.6.1
* libvvenc:
- bugfix for rate control at low rates
- bugfix to multi-threaded encoding with tiles
- made apputils an internal header only lib, fixing linking problems
- speedup non-linear ALF (-4% runtime for slower)
- added auto-logic for correct tickspersec setting
- optimized non-RD-optimized quantization
/////////////////////////////////////////
tag 1.6.0
* libvvenc:
- removed library parameters:
- vvenc_config::m_bRestrictMESampling
- added library parameters:
- vvencMCTF::MCTFUnitSize, vvenc_config::m_alfUnitSize, vvenc_config::m_meReduceTap
- changed semantics of the parameters:
- vvenc_config::m_maxMTTDepth: if >=10, each decimal digit corresponds to the value set for frames in a specific temporal layer
- vvenc_config::m_maxMTTDepthIChroma: if negative, set equal to vvenc_config::m_maxMTTDepthI
- vvenc_config::m_motionEstimationSearchMethod: deprecated value 2
- vvenc_config::m_motionEstimationSearchMethodSCC: deprecated value 1
- speedups
- 15%+ for faster, fast, medium and slower
- 6% for slow
- improvements to rate control stability, especially for single pass and high rates
- various improvements, cleanups and fixes
* vvencapp:
- remove deprecated gopsize parameter
* vvencFFapp:
- removed command line parameters:
- RestrictMESampling
- added command line parameters:
- ReduceFilterME, ALFUnitSize, MCTFUnitSize
/////////////////////////////////////////
tag 1.5.0
* libvvenc:
- removed library paramters:
- vvenc_config::m_RPLList0, vvenc_config::m_RPLList1, vvenc_config::m_maxDecPicBuffering, vvenc_config::m_maxNumReorderPics,
vvenc_config::m_maxNumReorderPics, vvenc_config::m_numRPLList0, vvenc_config::m_numRPLList1, vvenc_config::m_bUseConstrainedIntraPred,
vvenc_config::m_deblockingFilterMetric, vvenc_config::m_videoSignalTypePresent
- added library parameters:
- vvenc_config::m_deblockLastTLayers, vvenc_config::m_picReordering, vvenc_config::m_fastHad
- allowing arbitrary intra periods (not required to be multiples of the GOP size)
- improvements to rate control stability, mostly regarding to noisy input and scene changes
- many speedups and improvements
- 10% speedup, 1.3% BD-rate gain for faster
- 12% speedup, 1.3% BD-rate gain for fast
- 11% speedup for medium
- 8% speedup for slow
- 6% speedup for slower
- added a low-decoding-energy configuration roughly matching the medium preset
- fixed portability
- multi-threading improvements
- memory reduction
* vvencapp:
* vvencFFapp:
- removed command line parameters:
- DeblockingFilterMetric, ConstrainedIntraPred
- added command line parameters
- PicReordering: enable/disable picture reordering during encoding (default 1, picture reordering enabled)
- FastHAD: enable/disable the usage of a fast subsampled HAD calculation for large blocks
- DeblockLastLayers: indicates to only use deblocking filter for the N highest temporal layers (default 0, deblock all temporal layers)
/////////////////////////////////////////
tag 1.4.0
* all:
- changed license to the standard Clear BSD license (without adaptations)
- explicitly stating the authors (AUTHORS.md) as copyright holders
* libvvenc:
- removed library parameters:
- vvencMCTF::MCTFNumLeadFrames, vvencMCTF::MCTFNumTrailFrames
- vvenc_config::m_RCLookAhead (now always behaving as if equal to 1)
- added library parameters:
- vvenc_config::m_leadFrames, vvenc_config::m_trailFrames, vvenc_config::m_LookAhead, vvenc_config::m_sliceTypeAdapt
- add function to extract SPS, PPS and other headers during encoding
int vvenc_get_headers(vvencEncoder *, vvencAccessUnit *);
- removed legacy 1-pass rate control (now always using the look-ahead based 1pRC)
- added a slice adaptation mode inserting intra-frames instead of TL-0 B-frames when scene-cut is detected within the preceding GOP
- fix encoder initialization with other bitstream when using rate control
- fixed CU tracing
- ported improvements to motion compensated filtering from JVET
- fixed LMCS processing for 8-bit internal bitdepth coding
- various fixes and improvements
* vvencapp:
- changed semantics of the bitrate parameters to understand suffixes (Mbps, M, kbps, k, bps),
associated with multipliers (1e6, 1e6, 1e3, 1e3, 1), respectively
- added y4m parameter to force input interpretation as Y4M (also inferred when file file extension is .y4m)
* vvencFFapp:
- added command line parameters:
- STA: enable/disable TL-0 B-to-I slice type adaptation after scene cuts (default: on)
- renamed parameters:
- MCTFNumLeadFrames -> LeadFrames (now also relevant in chunk based encoding for STA)
- MCTFNumTrailFrames -> TrailFrames
- changed semantics of the TargetBitrate parameter to understand suffixes (Mbps, M, kbps, k, bps),
associated with multipliers (1e6, 1e6, 1e3, 1e3, 1), respectively
- added y4m parameter to force input interpretation as Y4M (also inferred when file file extension is .y4m)
/////////////////////////////////////////
tag 1.3.1
* libvvenc:
- fixed QPA encoding with tiles
- allowing encoding of videos compatible with subpic-merging functionality of VVC
- API extended, but ABI compatible
- added paramter: m_treatAsSubPic, m_explicitAPSid
- temporarily forbidding rate control combined with DebugBitstream
* vvencapp:
- fixed output of `vvencapp --version`
- aligned output with full-featured app
* vvencFFapp:
- aligned output with vvencapp
- added command line parameters
- TreatAsSubPic
- ExplicitAPSid
/////////////////////////////////////////
tag 1.3.0
* libvvenc:
- introducing params setting using a string api (vvencCfg.h):
int vvenc_set_param (vvenc_config *cfg, const char *name, const char *value);
int vvenc_set_param_list(vvenc_config *c, int argc, char* argv[]);
- logger interface changed to support multiple encoder instances. use: vvenc_set_msg_callback(vvenc_config *, void* , vvencLoggingCallback)
- deprecated: vvenc_set_logging_callback(void * ctx, vvencLoggingCallback) (please use: vvenc_set_msg_callback)
- added CRA with constrained RASL encoding refresh type (cra_cre)
- presets redefined for codec improvements
- add look ahead analysis for single pass rate control
- HRD timing information are always written into bitstream per default (signal fps)
- perceptual QPA improvements for lower bitrates
- added tile support including tile parallelism
- mingw support added
- various cleanups, bugfixes and reducing memory usage
* vvencapp:
- added command line parameters:
- tiles: set number of tile columns and tile rows
- framescale: defines the denominator of the framerate to enable fractional rate sepcification (before framerate 59 automatically used 60000/1001)
- fps: framerate/framescale in a single parameter as integer or fraction (e.g. 60, 60/1 or 60000/1001)
- additional: set parameters using the string api by using a space separated list of key=value parameters (e.g. "bitrate=1000000 passes=2")
- rt/refreshtype now supports cra_cre (previously set using --RPR=2 in full-featured app)
* vvencFFapp:
- added command line parameters:
- Tiles: set number of tile columns and tile rows
- FrameScale: defines the denominator of the framerate to enable fractional rate sepcification (before framerate 59 automatically used 60000/1001)
- fps: framerate/framescale in a single parameter as integer or fraction (e.g. 60, 60/1, 60000/1001)
- additional: set parameter using the string api by using a space separated list of key=value parameters (e.g. "bitrate=1000000 passes=2")
- LookAhead: enable pre-analysis in single pass rate control
- DecodingRefreshType/dr now supports value '5' (cra_cre), previously set using --RPR=2)
- removed command line parameters:
- InputQueueSize
- removed unused/legacy command line parameters (legacy VTM parameter):
- EnablePictureHeaderInSliceHeader
- CropOffsetLeft, CropOffsetTop, CropOffsetRight, CropOffsetBottom
- CalculateHdrMetrics
- SignalledIdFlag
- SignalledSliceIdLengthMinus1
- RectSlicesBoundaryArray
- SignalledSliceId
- isSDR
/////////////////////////////////////////
tag 1.2.0
* libvvenc:
- added parameters: m_qtbttSpeedUpMode, m_numIntraModesFullRD, m_reduceIntraChromaModesFullRD, m_RCPass
- renamed parameters: m_bUseEarlyCU to m_useEarlyCU, m_dqThresholdVal to m_quantThresholdVal
- added IDR2 refresh type, which aligns the layout of the first intra period with others (using IDR_W_RADL rather than IDR_N_LP picture)
- added nlohmann_json as a third party lib (can be disabled with CMake variable VVENC_ENABLE_THIRDPARTY_JSON)
- redefined the presets
- improvements to single picture rate control
- added additional partitioning speedups
- improved linear ALF implementation (memory access patterns and SIMD)
- improved DMVR implementation
- improved error handling
- various cleanups and bugfixes
* vvencapp:
- added command line parameters:
- rcstatsfile: defines the location of the to-be-written/to-be-read rate control statistics file
- pass: if != -1, defines which encoding pass is to be performed in case of 2-pass RC (requires rcstatsfile)
- added support for yuv420_10_packed (packed 10-bit YUV) raw bitstream layout
* vvencFFapp:
- added command line parameters:
- RCStatsFile, Pass (analogue to vvencapp)
- NumIntraModesFullRD, ReduceIntraChromaModesFullRD
- renamed command line parameters: DQThrVal to QuantThrVal
- added support for yuv420_10_packed (packed 10-bit YUV) raw bitstream layout (PYUV=1)
/////////////////////////////////////////
tag 1.1.0
* libvvenc:
- mostly about faster/fast speedups, minor improvements to other presets
- redefined the presets
- improved RC rate accuracy
- added tool: BCW
- added parameters: m_FIMMode, m_bIntegerET, (m_vvencMCTF.)MCTFSpeed, m_alfSpeed, m_IntraEstDecBit, m_BCW, m_motionEstimationSearchMethodSCC
- removed parameters: m_useEarlySkipDetection
- SCC coding: using alternative ME strategy, disabling LMCS
- memory reduction (storing coeffs as 16bit, single storage for displacement/affine motion models, move objects rather than copy during search, garbage collection)
- removed dynamic memory from partitioner
- SIMD search for last coeff in DQ=0 RDOQ=2
- combined regular and affine merge search into a single function
- optimized motion search
- RC cleanup
- various cleanups
* vvencapp:
* vvencFFapp:
- added options: IntegerET, FastInferMerge, MCTFSpeed, ALFSpeed, IntraEstDecBit, BCW, FastSearchSCC
- removed options: ESD
* bugfixes:
- fixed the TU-split z-partitioning
- fixed the ECU option
- fixed picture/sequence-level deblocking parameter management
- fixed SwitchDQP option when used with multi-threading
- fixed TemporalSubsampling (used in JVET AI test conditions)
- fixed ALF covariance accumulation domain to double when required (LMCS+ALF+Hdr=pq)
- fixed IDR coding with GOPSize==IntraPeriod
- fixed short sequence coding (<3 frames) with MCTF
/////////////////////////////////////////
tag 1.0.0
* libvvenc:
- add pkgconfig
- rewriting the vvenc interface in c
- restructuring vvenc.h and vvencCfg.h to pure C syntax
- removing namespace vvenc and replacing all struct and enumx to typedefs with prefix 'vvenc'
- removing file vvencCfgExpert.h and integrating all expert options into single struct vvenc_config
- vvencCfg replacing existing lists/vector by fixed size arrays, std::strings are fixed size char arrays now
- added IBC
- added parameters m_IBCMode (0 - off, 1 - always on, 2 - on with SCC auto detection) and m_IBCFastMethod (1 - slowest with biggest gain to 6 - fastest with lowest gain)
- improvements to rate control based on the XPSNR model
- supports for generation of main10stillpicture profile bitstreams
* vvencapp:
- adding parameter --version to show current version
- changed parameter: -i/--input accepts "-" to indicate reading input from stdin
* vvencFFapp:
- adding parameter --version/-v to show current version
- vvenc::YUVWriterIf is replaced by callback function vvencRecYUVBufferCallback
- changed parameter: -i/--InputFile accepts "-" to indicate reading input from stdin
- added parameters IBC and IBCFastMethod as described in the libvvenc
* bugfixes
- fixes #51, #47, #46, #37, #33 and many more
- fixed AVX2 CCALF for non-multiple of 8 picture width
- fixed PQ content encoding with LMCS
- fixed C++17 compatibility
- fixed level/tier auto-settings
- fixed FastForwardToPOC and DebugBitstram options
/////////////////////////////////////////
tag 0.3.1.0
* libvvenc:
- only supporting picture-level rate control, removed vvencCfgExpert::m_RCRateControlMode,
vvencCfgExpert::m_RCKeepHierarchicalBit and vvencCfgExpert::m_RCUseLCUSeparateModel parameters.
- added vvencCfgExpert::m_log2MinCodingBlockSize parameter to limit minimal coding block size (default: 2)
- reduced and defragmented the used memory.
- added new speed-ups and adapted fast and faster presets.
* vvencFFapp:
- removed parameters --KeepHierarchicalBit, --RCLCUSeparateModel
and --RateControl (defaults to 2 if target rate is set, 0 otherwise).
- renamed parameter --InitialQP to --RCInitialQP.
- added parameter --Log2MinCodingBlockSize (default: 2) to limit the minimal coding block size
* bugfixes
- fixes #29
- corrected motion vector clipping during DMVR process (might produce enc/dec mismatches).
- fixed LMCS/ISP interaction (weighted SAD for blocks of width '1').
/////////////////////////////////////////
tag 0.3.0.0
* new:
- support for HDR metadata (--hdr off, pq|hdr10, pq_2020|hdr10_2020, hlg, hlg_2020)
- if using HDR, encoder decisions depend on the used mode and the enabled metadata. by default VUI and SEI metadata are enabled
- PQ: set vui parameter (transfer characteristics 16(smpte2084))
- HLG: set vui parameter (transfer characteristics 1|14(bt709|bt2020-10)) + SEI AlternativeTransferCharacteristics 18
- support for MasteringDisplayColourVolume and MaxContentLightLevel (SMPTE ST 2086 - HDR10/PQ)
- MasteringDisplayColourVolume can be set by vector of 10 values:
x,y,x,y,x,y,x,y,max,min where: "G(x,y)B(x,y)R(x,y)WP(x,y)L(max,min)
x,y coordinates for GBR and WP in increment of 1/50000
max,min luminance in units of 1/10000 cd/m2
0 <= x,y <= 50000, 0 <= max,min <= 10000,
Example for 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):
13250,34500,7500,3000,34000,16000,15635,16450,10000000,1
- MaxContentLightLevel can be set by vector of 2 values:
cll,fall where cll=max. content light level,fall=max. frame average light level,
range: 1 <= cll,fall <= 65535
* changes:
- align usage of vvenc interface for vvencapp and vvencFFapp (both apps are now using the lib in the same manner)
- vvencapp is now using the command line parser of vvencFFapp,
but the command line params haven´t changed to prev. version for legacy support
- help dialog re-designed, params are now sorted into categories
- perceptually motivated QP adaptation (qpa) changed to on/off (mode 0-5 before) and uses XPSNR depending on HDR mode
vvencapp: use --qpa or --qpa 0|1 to enable/disable (enabled by default
vvencFFapp: use -qpa|--PerceptQPA or -qpa|--PerceptQPA 0|1 to enable/disable (enabled by default
- Level is set to auto per default. In this mode it will be automatically detected by given resolution
* bugfixes:
- #18: setting of max number CABAC-coded coefficients for the floating point scalar RDOQ
* libvvenc:
- changed preset configuration to reflect current Pareto-Optimal trade-offs. The new presets are much better harmonized between different
resolutions and content types.
- auto config initialization. The configuration to init the vvenc library now only needs required
parameter (width, height, framerate), everything else is set to default config
some parameter are set to -1 per default. Params set to -1 will be set to default, auto config params:
profile, level, threads, aud, vui, hrd, PerceptQPATempFiltIPic, RateControl, KeepHierarchicalBit, WppBitEqual, FEN
- medium preset is now used as default (this has quite a big impact on default params in the vvencFFapp)
- decreased memory usage
- improved multi-threading (now can utilize up to 10 threads for HD and up to 24 for UHD, efficiency depends on preset and other parameters)
- added the possibility to generate bitstreams for minimal drift in open-GOP adaptive switching.
- various optimizations and speed-ups.
* vvencapp:
- new parameter -aud, --accessunitdelimiter [auto] Emit Access Unit Delimiter NALUs (auto(-1),off(0),on(1);
default: auto - only if needed by dependent options)
-vui, --vuiparameterspresent [auto] Emit VUI information (auto(-1),off(0),on(1);
default: auto - only if needed by dependent options)
-hrd, --hrdParameterspresent [auto] Emit VUI HRD information (auto(-1),off(0),on(1);
default: auto - only if needed by dependent options)
--hdr [off] set HDR mode (+SEI messages) + BT.709 or BT.2020 color space.
use: off, pq|hdr10, pq_2020|hdr10_2020, hlg, hlg_2020
- changed parameter --qpa [on] Enable perceptually motivated QP adaptation, XPSNR based (0:off, 1:on)
as legacy support the previous modes 1-5 are now mapped to on/1
* vvencFFapp:
- new parameter --MaxParallelFrames [-1] Maximum number of frames to be processed in parallel
(-1: auto depends on number of threads, 0:off, >=2: enable parallel frames)
--hdr [off] set HDR mode (+SEI messages) + BT.709 or BT.2020 color space.
use: off, pq|hdr10, pq_2020|hdr10_2020, hlg, hlg_2020
--MasteringDisplayColourVolume [[]]
SMPTE ST 2086 mastering display colour volume info SEI (HDR), vec(uint) size 10,
x,y,x,y,x,y,x,y,max,min where: "G(x,y)B(x,y)R(x,y)WP(x,y)L(max,min)"range: 0 <=
GBR,WP <= 50000, 0 <= L <= uint; GBR xy coordinates in increment of 1/50000,
min/max luminance in units of 1/10000 cd/m2
--MaxContentLightLevel [[]] Specify content light level info SEI as "cll,fall" (HDR) max. content light level,
max. frame average light level, range: 1 <= cll,fall <= 65535'
--PreferredTransferCharacteristics [auto]
Specify preferred transfer characteristics SEI and overwrite transfer entry in VUI
(0-18): reserved, bt709, unknown, empty, bt470m, bt470bg, smpte170m, smpte240m,
linear, log100, log316, iec61966-2-4, bt1361e, iec61966-2-1, bt2020-10, bt2020-12,
smpte2084, smpte428, arib-std-b67
--segment [off] when encoding multiple separate segments, specify segment position to enable segment concatenation
(first, mid, last) [off]
first: first segment
mid : all segments between first and last segment
last : last segment
--FastIntraTools [0] SpeedUPIntraTools:LFNST,ISP,MTS. (0:off, 1:speed1, 2:speed2)
- changed parameter --qpa [off] Enable perceptually motivated QP adaptation, XPSNR based (0:off, 1:on)
-aud, --AccessUnitDelimiter [auto] Enable Access Unit Delimiter NALUs,
(default: auto - enable only if needed by dependent options)
-vui, --VuiParametersPresent [auto] Enable generation of vui_parameters(),
(default: auto - enable only if needed by dependent options)
-hrd, --HrdParametersPresent [auto] Enable generation of hrd_parameters(),
(default: auto - enable only if needed by dependent options)
--Profile [auto] name to use for encoding. Use [multilayer_]main_10[_444][_still_picture],
auto, or none
--Level [auto] limit to be used, eg 5.1, or none
--WppBitEqual [-1] Ensure bit equality with WPP case (0:off (sequencial mode), 1:copy from wpp line
above, 2:line wise reset)
--RateControl [-1] enable rate control (0:off 1:CTU-level RC; 2:picture-level RC; 3:GOP-level RC)
--KeepHierarchicalBit [-1] Rate control: (0:equal bit allocation, 1:fixed ratio bit allocation,
2:adaptive ratio bit allocation
--PerceptQPATempFiltIPic [-1] Temporal high-pass filter in QPA activity calculation for key pictures
(0:off, 1:on, 2:on incl. temporal pumping reduction, -1:auto)
--SliceChromaQPOffsetPeriodicity [-1] Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic.
Use 0 (default) to disable periodic nature.
--ColourPrimaries [unknown] Specify color primaries (0-13): reserved, bt709, unknown, empty, bt470m, bt470bg,
smpte170m, smpte240m, film, bt2020, smpte428, smpte431, smpte432
--TransferCharacteristics [unknown]
Specify opto-electroni transfer characteristics (0-18): reserved, bt709, unknown,
empty, bt470m, bt470bg, smpte170m, smpte240m, linear, log100, log316, iec61966-2-4,
bt1361e, iec61966-2-1, bt2020-10, bt2020-12, smpte2084, smpte428, arib-std-b67
--MatrixCoefficients [unknown]
Specify color matrix setting to derive luma/chroma from RGB primaries (0-14): gbr,
bt709, unknown, empty, fcc, bt470bg, smpte170m, smpte240m, ycgco, bt2020nc,
bt2020c, smpte2085, chroma-derived-nc, chroma-derived-c, ictcp
--RPR [1] can be now set to "2", in which case the encoder will impose constraints on the RASL frames
allowing for minimal drift open-GOP adaptive switching (with or withour resolution change).
/////////////////////////////////////////
tag 0.2.1.0
* bugfixes:
- ISP fix: erroneous placed sanity check
* libvvenc:
- decrease memory consumption
- harmonize 2-pass rate control and perceptual QPA
- improve rate control
/////////////////////////////////////////
tag 0.2.0.0
* new license
- switched to modified 3-clause BSD
* bugfixes:
- access unit delimiter (AUD) generation
- DPH-SEI syntax
* new features:
- ISP
- TS (with automatic screen-content detection)
- BDPCM
- 2-pass rate control
- 1-pass rate control with GOP32
* libvvenc:
- added "slower" preset
- redefined the presets according to current pareto-set
- removed PredictionUnit type
- various memory reductions (Rom.cpp, scaling list memory)
- verious optimizations (SIMD for MCTF, forward transformation, single column IF; memory accesses for DMVR)
- changed MCTF algorithm to do intermediate rounding between hor/ver filtering
* vvencapp:
- new parameter --refreshsec,-rs to define the intra refresh rate in seconds depending on the given frame rate.
Internally, the refresh rate in seconds is translated into the frames where the refresh is set.
--internal-bitdepth to define the internal bit-depth used in bitstream (default: 10).
--passes to control number of passes for rate-control
--segment to control chunkwise encoding configuration
- changed parameter --intraperiod,-ip is 0 per default because --refreshsec is used for that purpose instead.
In case of a value greater than 0, intraperiod overwrites refreshsec.
Abbreviation -q is now supported in addition to --qp.
--gopsize default changed to 32
- fullhelp changed All internal encoding parameters are now shown as strings when --fullhelp is called.
* build system:
- using GnuInstallDirs
- added basic tests
- versioning using CMake
- added support for address sanitizer
/////////////////////////////////////////
tag 0.1.0.1
* libvvenc:
- VVEnc::init() correctly initializes SIMD for transformation (TrafoX86) and sample operations (BufferX86).
* vvencapp:
- Improved speed because of the bugfix to libvvenc.
/////////////////////////////////////////
tag 0.1.0.0
* initial version
/////////////////////////////////////////