fraunhoferhhi / vvenc

VVenC, the Fraunhofer Versatile Video Encoder
https://www.hhi.fraunhofer.de/en/departments/vca/technologies-and-solutions/h266-vvc.html
BSD 3-Clause Clear License
957 stars 172 forks source link

Elapsed time and user time for vvencFFapp not even close. check #2 #148

Closed Harshitha35 closed 2 years ago

Harshitha35 commented 2 years ago

Discussed in https://github.com/fraunhoferhhi/vvenc/discussions/147

Originally posted by **Harshitha35** March 17, 2022 Hi. I have 2 questions. Quick response would be really helpful! 1. I encoded 1080p and 4K videos using VVencFFapp randomaccess_slower configuration with SEIDecodedHash as 1. I tried to decode this output bitstream in DecoderAppStatic/DecoderApp of VTM15/VTM8 & also using vvdec. But I get error like this Using vvdec ``` ./vvdecapp -b vvenc_faster_Catrobot_37_INTER.vvc -o Catrobot_vvdec1.yuv Fraunhofer VVC/H.266 Decoder VVdeC, version 1.4.0 [THREADS=112; PARSE_DELAY=112; SIMD=AVX2] vvdecapp [error]: decoding failed: (unspecified malfunction) ``` Using VTM's decoder: ``` ./DecoderApp -b vvenc_faster_Catrobot_37_INTER.vvc -o vvenc_recon.yuv ERROR: In function "readNalUnitHeader" in /home/mcw/Vimal/ALL_INTER/repo/VTM15/VVCSoftware_VTM/source/Lib/DecoderLib/NALread.cpp:133: The value of nuh_layer_id shall be in the range of 0 to 55, inclusive ``` Note: I haven't changed anything except for SEIDecodedHash to 1 in your randomaccess_slower config. Also I could see that vvencapp generated bitstreams are decoding fine in vvdec but not vvencFFapp 2. Why is the elapsed time and user time aren't even close in VVenCFFapp? I see this for all encodes no matter the input seq/resolution/etc. ``` vvencFFapp: Fraunhofer VVC Encoder ver. 1.3.1 [Linux][GCC 7.5.0][64 bit][SIMD=AVX2] started @ Mon Mar 7 09:18:43 2022 CODING TOOL CFG: CTU128 QT44BTT33 IBD:0 CIP:0 SAO:0 ALF:0 CCALF:0 Tiles:1x1 Slices:1 WPP:0 WPP-Substreams:1 TMVP:0 DQ:0 SDH:0 CST:0 BDOF:0 DMVR:0 MTSImplicit:0 SBT:0 JCbCr:0 CabacInitPresent:0 AMVR:0 SMVD:0 LMCS:0 CIIP:0 MIP:0 AFFINE:0 MMVD:0 SbTMVP:0 GPM:0 LFNST:0 MTS:0 ISP:0 TS:2 TSLog2MaxSize:5 useChromaTS:0 BDPCM:2 IBC:2 BCW:0 ENC. ALG. CFG: QPA:0 HAD:1 RDQ:1 RDQTS:0 ASR:1 MinSearchWindow:96 RestrictMESampling:0 EDO:0 MCTF:0 FAST TOOL CFG: ECU:0 FEN:1 FDM:0 FastSearch:1 (SCC:2) LCTUFast:1 FastMrg:1 PBIntraFast:1 AMaxBT:0 FastQtBtEnc:1 ContentBasedFastQtbt:0 FastIntraTools:0 IntraEstDecBit:1 FastLocalDualTree:1 IntegerET:0 FastSubPel:0 QtbttExtraFast:1 FastTTSplit:1 IBCFastMethod:1 FIM:0 QuantThr: 4 RATE CONTROL CFG: RateControl:0 LookAhead:0 PARALLEL PROCESSING CFG: NumThreads:8 MaxParallelFrames:4 WppBitEqual:1 WF:0 POC 0 TId: 0 ( IDR_N_LP, I-SLICE, QP 22 ) 4328040 bits [Y 42.1879 dB U 42.3545 dB V 43.9805 dB] [ET 84 ] [L0 ] [L1 ] POC 1 TId: 0 ( CRA, I-SLICE, QP 22 ) 4333744 bits [Y 42.1913 dB U 42.3529 dB V 43.9895 dB] [ET 85 ] [L0 ] [L1 ] POC 2 TId: 0 ( CRA, I-SLICE, QP 22 ) 4340136 bits [Y 42.1914 dB U 42.3488 dB V 43.9710 dB] [ET 80 ] [L0 ] [L1 ] POC 3 TId: 0 ( CRA, I-SLICE, QP 22 ) 4361504 bits [Y 42.1915 dB U 42.3518 dB V 43.9880 dB] [ET 88 ] [L0 ] [L1 ] POC 4 TId: 0 ( CRA, I-SLICE, QP 22 ) 4361728 bits [Y 42.1783 dB U 42.3433 dB V 43.9677 dB] [ET 83 ] [L0 ] [L1 ] POC 5 TId: 0 ( CRA, I-SLICE, QP 22 ) 4380496 bits [Y 42.1827 dB U 42.3373 dB V 43.9649 dB] [ET 84 ] [L0 ] [L1 ] POC 6 TId: 0 ( CRA, I-SLICE, QP 22 ) 4389328 bits [Y 42.1789 dB U 42.3556 dB V 43.9551 dB] [ET 87 ] [L0 ] [L1 ] POC 7 TId: 0 ( CRA, I-SLICE, QP 22 ) 4382480 bits [Y 42.1723 dB U 42.3452 dB V 43.9476 dB] [ET 80 ] [L0 ] [L1 ] POC 8 TId: 0 ( CRA, I-SLICE, QP 22 ) 4389568 bits [Y 42.1758 dB U 42.3465 dB V 43.9600 dB] [ET 85 ] [L0 ] [L1 ] POC 9 TId: 0 ( CRA, I-SLICE, QP 22 ) 4399656 bits [Y 42.1749 dB U 42.3334 dB V 43.9464 dB] [ET 85 ] [L0 ] [L1 ] Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR 10 a 262000.0800 42.1825 42.3469 43.9671 42.4621 finished @ Mon Mar 7 09:25:49 2022 Total Time: 3262.759 sec. [user] 425.292 sec. [elapsed] ``` Check this - **_Total Time: 3262.759 sec. [user] 425.292 sec. [elapsed]_** Originally, the elapsed time is matching with realtime. Why is the user time not matching or atleast not even close?
adamjw24 commented 2 years ago

Removed the discussion, no need to duplicate.

About the runtimes. User time is the total time spent on the CPU processing user space code. Elapsed time is the wallclock time, i.e. the time you see on your wallclock elapse between start and end of the execution. Since modern CPUs has multiple cores and VVenC uses that with multithreading, user time is a multiple of the elapsed time. Hope this is clear.

About the DPH SEI, we'll have a look. Didn't test it for a while indeed. Could you share the exact command line for encoding?

adamjw24 commented 2 years ago

From my short current tests, it seems like it does work indeed. Please share the exact command line to see if we can reproduce.

Does this still happen with v1.4.0-rc1?

Harshitha35 commented 2 years ago

Thanks for clarifying on the elapsed and user time difference.

Sharing the commandline, sequence.cfg and randomaccess_medium.cfg Commandline:

./vvencFFapp -c randomaccess_medium.cfg -c Catrobot.cfg --qp 37 -o vvenc_medium_Catrobot_37_INTER.vvc >> vvenc_medium_Catrobot_37_INTERlog.txt 2>&1

randomaccess_medium.cfg (Sharing it in text format as GIT doesn't support .cfg files)

#======== File I/O =====================
BitstreamFile                 : str.bin
ReconFile                     : rec.yuv

#======== Profile ================
Profile                       : auto

#======== Coding Structure =============
IntraPeriod                   : 32          # Period of I-Frame ( -1 = only first)
DecodingRefreshType           : 1           # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI
GOPSize                       : 32          # GOP Size (number of B slice = GOPSize-1)

IntraQPOffset                 : -3
LambdaFromQpEnable            : 1           # see JCTVC-X0038 for suitable parameters for IntraQPOffset, QPoffset, QPOffsetModelOff, QPOffsetModelScale when enabled
#        Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 CbTcOffsetDiv2 CbBetaOffsetDiv2 CrTcOffsetDiv2 CrBetaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0   reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1   reference_pictures_L1
Frame1                        : B   32  -1        0.0                      0.0            0          0          1.0      0            0                0             0                0               0              0             2                3          32 64 48                    2                2           32 64
Frame2                        : B   16   0       -4.9309                   0.2265         0          0          1.0      0            0                0             0                0               0              1             2                2          16 32                       2                2           -16 16
Frame3                        : B    8   0       -4.5000                   0.2353         0          0          1.0      0            0                0             0                0               0              2             2                2          8 24                        2                2           -8 -24
Frame4                        : B    4   3       -5.4095                   0.2571         0          0          1.0      0            0                0             0                0               0              3             2                2          4 20                        2                3           -4 -12 -28
Frame5                        : B    2   5       -4.4895                   0.1947         0          0          1.0      0            0                0             0                0               0              4             2                2          2 18                        2                4           -2 -6 -14 -30
Frame6                        : B    1   6       -5.4429                   0.2429         0          0          1.0      0            0                0             0                0               0              5             2                2          1 -1                        2                5           -1 -3 -7 -15 -31
Frame7                        : B    3   6       -5.4429                   0.2429         0          0          1.0      0            0                0             0                0               0              5             2                2          1 3                         2                4           -1 -5 -13 -29
Frame8                        : B    6   5       -4.4895                   0.1947         0          0          1.0      0            0                0             0                0               0              4             2                2          2 6                         2                3           -2 -10 -26
Frame9                        : B    5   6       -5.4429                   0.2429         0          0          1.0      0            0                0             0                0               0              5             2                2          1 5                         2                4           -1 -3 -11 -27
Frame10                       : B    7   6       -5.4429                   0.2429         0          0          1.0      0            0                0             0                0               0              5             2                3          1 3 7                       2                3           -1 -9 -25
Frame11                       : B   12   3       -5.4095                   0.2571         0          0          1.0      0            0                0             0                0               0              3             2                2          4 12                        2                2           -4 -20
Frame12                       : B   10   5       -4.4895                   0.1947         0          0          1.0      0            0                0             0                0               0              4             2                2          2 10                        2                3           -2 -6 -22
Frame13                       : B    9   6       -5.4429                   0.2429         0          0          1.0      0            0                0             0                0               0              5             2                2          1 9                         2                4           -1 -3 -7 -23
Frame14                       : B   11   6       -5.4429                   0.2429         0          0          1.0      0            0                0             0                0               0              5             2                3          1 3 11                      2                3           -1 -5 -21
Frame15                       : B   14   5       -4.4895                   0.1947         0          0          1.0      0            0                0             0                0               0              4             2                3          2 6 14                      2                2           -2 -18
Frame16                       : B   13   6       -5.4429                   0.2429         0          0          1.0      0            0                0             0                0               0              5             2                3          1 5 13                      2                3           -1 -3 -19
Frame17                       : B   15   6       -5.4429                   0.2429         0          0          1.0      0            0                0             0                0               0              5             2                4          1 3 7 15                    2                2           -1 -17
Frame18                       : B   24   0       -4.5000                   0.2353         0          0          1.0      0            0                0             0                0               0              2             2                2          8 24                        2                2           -8 8
Frame19                       : B   20   3       -5.4095                   0.2571         0          0          1.0      0            0                0             0                0               0              3             2                2          4 20                        2                2           -4 -12
Frame20                       : B   18   5       -4.4895                   0.1947         0          0          1.0      0            0                0             0                0               0              4             2                2          2 18                        2                3           -2 -6 -14
Frame21                       : B   17   6       -5.4429                   0.2429         0          0          1.0      0            0                0             0                0               0              5             2                2          1 17                        2                4           -1 -3 -7 -15
Frame22                       : B   19   6       -5.4429                   0.2429         0          0          1.0      0            0                0             0                0               0              5             2                3          1 3 19                      2                3           -1 -5 -13
Frame23                       : B   22   5       -4.4895                   0.1947         0          0          1.0      0            0                0             0                0               0              4             2                3          2 6 22                      2                2           -2 -10
Frame24                       : B   21   6       -5.4429                   0.2429         0          0          1.0      0            0                0             0                0               0              5             2                3          1 5 21                      2                3           -1 -3 -11
Frame25                       : B   23   6       -5.4429                   0.2429         0          0          1.0      0            0                0             0                0               0              5             2                4          1 3 7 23                    2                2           -1 -9
Frame26                       : B   28   3       -5.4095                   0.2571         0          0          1.0      0            0                0             0                0               0              3             2                3          4 12 28                     2                2           -4 4
Frame27                       : B   26   5       -4.4895                   0.1947         0          0          1.0      0            0                0             0                0               0              4             2                3          2 10 26                     2                2           -2 -6
Frame28                       : B   25   6       -5.4429                   0.2429         0          0          1.0      0            0                0             0                0               0              5             2                3          1 9 25                      2                3           -1 -3 -7
Frame29                       : B   27   6       -5.4429                   0.2429         0          0          1.0      0            0                0             0                0               0              5             2                4          1 3 11 27                   2                2           -1 -5
Frame30                       : B   30   5       -4.4895                   0.1947         0          0          1.0      0            0                0             0                0               0              4             2                3          2 14 30                     2                2           -2 2
Frame31                       : B   29   6       -5.4429                   0.2429         0          0          1.0      0            0                0             0                0               0              5             2                3          1 13 29                     2                2           -1 -3
Frame32                       : B   31   6       -5.4429                   0.2429         0          0          1.0      0            0                0             0                0               0              5             2                4          1 3 15 31                   2                2           -1 1

#=========== Motion Search =============
FastSearch                    : 4           # 0:Full search  1:TZ search
SearchRange                   : 384         # (0: Search range is a Full frame)
ASR                           : 1           # Adaptive motion search range
MinSearchWindow               : 96          # Minimum motion search window size for the adaptive window ME
BipredSearchRange             : 4           # Search range for bi-prediction refinement
HadamardME                    : 1           # Use of hadamard measure for fractional ME
FEN                           : 1           # Fast encoder decision
FDM                           : 1           # Fast Decision for Merge RD cost

#======== Quantization =============
QP                            : 32          # Quantization parameter(0-51)
RDOQ                          : 1           # RDOQ
RDOQTS                        : 1           # RDOQ for transform skip
SignHideFlag                  : 0

#=========== Deblock Filter ============
LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param)
LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
LoopFilterBetaOffset_div2     : 0           # base_param: -12 ~ 12
LoopFilterTcOffset_div2       : 0           # base_param: -12 ~ 12
LoopFilterCbBetaOffset_div2   : 0           # base_param: -12 ~ 12
LoopFilterCbTcOffset_div2     : 0           # base_param: -12 ~ 12
LoopFilterCrBetaOffset_div2   : 0           # base_param: -12 ~ 12
LoopFilterCrTcOffset_div2     : 0           # base_param: -12 ~ 12
DeblockingFilterMetric        : 0           # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (LoopFilterOffsetInPPS and LoopFilterDisable must be 0)

#=========== Misc. ============
InternalBitDepth              : 10          # codec operating bit-depth
SEIDecodedPictureHash         : 1
CbQpOffset                    : 0
CrQpOffset                    : 0
SameCQPTablesForAllChroma     : 1
QpInValCb                     : 17 22 34 42
QpOutValCb                    : 17 23 35 39
ReWriteParamSets              : 1

# General
CTUSize                       : 128
LCTUFast                      : 1
DualITree                     : 1      # separate partitioning of luma and chroma channels for I-slices
MinQTLumaISlice               : 8
MinQTChromaISliceInChromaSamples : 4   # minimum QT size in chroma samples for chroma separate tree
MinQTNonISlice                : 8
MaxMTTHierarchyDepth          : 1
MaxMTTHierarchyDepthISliceL   : 2
MaxMTTHierarchyDepthISliceC   : 2
MaxNumMergeCand               : 6      # Maximum number of merge candidates

# Tools configuration
Affine                        : 2      # Affine prediction: 0: disabled, 1: vtm, 2: fast
ALF                           : 1      # Adpative Loop Filter: 0: disabled, 1: enabled
ALFSpeed                      : 0      # ALF speed (skip filtering of non-referenced frames) [0-1]
AllowDisFracMMVD              : 1      # Disable fractional MVD in MMVD mode adaptively
BCW                           : 0      # Enable Generalized Bi-prediction(Bcw) 0: disabled, 1: enabled, 2: fast
BIO                           : 1      # Bi-directional optical flow: 0: disabled, 1: enabled
CCALF                         : 1      # Cross-component Adaptive Loop Filter: 0: disabled, 1: enabled
CIIP                          : 0      # CIIP mode: 0: disable, 1: vtm, 2: fast, 3: faster
DepQuant                      : 1      # Dependent quantization: 0: disabled, 1: enabled
DMVR                          : 1      # Decoder-side Motion Vector Refinement: 0: disabled, 1: enabled
EncDbOpt                      : 2      # Encoder optimization with deblocking filter 1:default 2:fast
Geo                           : 3      # Geometric partitioning mode: 0: disabled, 1: vtm, 2: good quality, 3: fast
IMV                           : 5      # Adaptive MV precision Mode (IMV): 0: disabled, 1:vtm, 2-7: fast modes
ISP                           : 3      # Intra subpartitions: 0: disabled, 1: enabled, 2: fast, 3: faster
JointCbCr                     : 1      # Joint coding of chroma residuals: 0: disabled, 1: enabled
LFNST                         : 1      # LFNST: 0: disabled, 1: enabled
LMChroma                      : 1      # LMChroma prediction: 0: disabled, 1: enabled
LMCSEnable                    : 2      # LMCS: 0: disable, 1:enable, 2: use SCC detection to disable for screen coded content
LMCSOffset                    : 6      # chroma residual scaling offset
LMCSSignalType                : 0      # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG
LMCSUpdateCtrl                : 0      # LMCS model update control: 0:RA, 1:AI, 2:LDB/LDP
MCTF                          : 2      # GOP based temporal filter (0:off, 1:filter all frames, 2:use SCC detection to disable for screen coded content)
MCTFSpeed                     : 0      # MCTF Fast Mode (0:best quality .. 4:fast)
MCTFFutureReference           : 1      # Enable referencing of future frames in the GOP based temporal filter. This is typically disabled for Low Delay configurations
MIP                           : 1      # Matrix-based intra prediction: 0: disabled, 1: enabled
FastMIP                       : 4      # Fast encoder search for MIP 0: disable, 1:vtm, 2-4: fast
MMVD                          : 3      # Merge mode with Motion Vector Difference: 0: disabled, 1: vtm, 2-4 fast modes
MRL                           : 1      # MultiRefernceLines
MTS                           : 0      # Multiple transform selection: 0: disabled, 1: enabled
MTSImplicit                   : 1      # Implicit MTS (when explicit MTS is off): 0: disabled, 1: enabled
PROF                          : 1      # Prediction refinement with optical flow for affine mode: 0: disabled, 1: enabled
SAO                           : 1      # Sample adaptive offset, 0: disabled, 1: enabled
SBT                           : 0      # Sub-Block Transform for inter blocks: 0: disable, 1: vtm, 2: fast, 3: faster
SbTMVP                        : 1      # Subblock Temporal Motion Vector Prediction: 0: disabled, 1: enabled
SMVD                          : 3      # Symmetric MVD 0: disable, 1: vtm, 2: good quality, 3: fast
TMVPMode                      : 1      # TMVP mode 0: TMVP disable for all slices. 1: TMVP enable for all slices 2: TMVP enable for certain slices only
UseNonLinearAlfChroma         : 0      # Non-linear adaptive loop filters for Chroma Channels: 0: disabled, 1: enabled
UseNonLinearAlfLuma           : 0      # Non-linear adaptive loop filters for Luma Channel: 0: disabled, 1: enabled

# SCC configuration           
FastSearchSCC                 : 2      # Search mode for SCC (0:use non SCC-search 1:Selective 2:DiamondSCC 3:FastDiamondSCC)
BDPCM                         : 2      # BDPCM (0: off, 1: luma and chroma, 2: BDPCM with SCC detection)
IBC                           : 2      # IBC mode: 0: off, 1: IBC, 2: IBC with SCC detection
IBCFastMethod                 : 3      # Fast methods for IBC: 1: default, [2..6] speedups
TransformSkip                 : 2      # Transform skipping, 0: disabled, 1: enabled, 2: TransformSkip with SCC detection
ChromaTS                      : 0      # Chroma transform skip: 0: disabled, 1: enabled
TransformSkipLog2MaxSize      : 4

# Fast options                
QtbttExtraFast                : 3      # Non-VTM compatible QTBTT speed-ups: 0: disabled, 1: enabled
ContentBasedFastQtbt          : 0      # Signal based QTBT speed-up: 0: disabled, 1: enabled
PBIntraFast                   : 1      # Intra mode pre-check dependent on best Inter mode, skip intra if it is not probable: 0: disabled, 1: VTM, 2: relaxed, giving intra more chance
FastMrg                       : 2      # Fast methods for inter merge: 0: disabled, 1: vtm, 2: fast
FastLocalDualTreeMode         : 1      # Fast intra pass coding for local dual-tree in intra coding region: 0: disable, 1: use threshold, 2: one intra mode only
FastSubPel                    : 1      # Fast sub-pel ME: 0: disabled, 1: enabled
FastIntraTools                : 1      # Speedup intra tools: LFNST, ISP, MTS
FastInferMerge                : 0      # Fast method to skip Inter/Intra modes. 0: off, [1..4] speedups
ECU                           : 0      # Early CU setting
IntegerET                     : 0      # Enable early termination for integer motion search
IntraEstDecBit                : 2      # Test every fourth intra directional mode in the first pass
NumIntraModesFullRD           : -1     # Number modes for full RD intra search
ReduceIntraChromaModesFullRD  : 0      # Reduce modes for chroma full RD intra search
FastTTSplit                   : 0      # Fast method for TT split

Catrobot.cfg (the usual sequence.cfg)

#======== File I/O ===============
InputFile                     : CatRobot1_3840x2160_60_10bit.yuv   # Input file
InputBitDepth                 : 10           # Input bitdepth
InputChromaFormat             : 420         # Ratio of luminance to chrominance samples
FrameRate                     : 60          # Frame Rate per second (numerator)
FrameScale                    : 1           # Frame Scale per second (denominator)
FrameSkip                     : 0           # Number of frames to be skipped in input
SourceWidth                   : 3840         # Input frame width
SourceHeight                  : 2160        # Input frame height
FramesToBeEncoded             : 64          # Number of frames to be coded
Threads               : 8       # Number of threads
Level                         : 4.1

Note: Number of frames encoded is variable. We tried with 5, 10, 64, etc. NO luck. We used vvenc 1.3.1 for encoding. We haven't tested with 1.4.1-rc1 The input video - Catrobot is available as a JVET sequence. Hope you are aware of it. Commit: Your commit :)

commit 69469d7ac5de882d9f5e12b24ee87f376df20262 (HEAD -> master, origin/master, origin/HEAD)
Merge: c9bc2d0 88dd2aa
Author: Adam Wieckowski <[70575289+adamjw24@users.noreply.github.com](mailto:70575289+adamjw24@users.noreply.github.com)>
Date:   Fri Feb 4 10:54:42 2022 +0100
    Merge pull request #131 from lehmann-c/y4m_flush_bugfix
    y4m flush/eof bugfix

More details for reproducing: Machine used - Linux CentOS - Intel(R) Xeon(R) Platinum 8180 CPU @ 2.50GHz gcc - gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 cmake - cmake version 3.22.3 nasm - NASM version 2.13.02

adamjw24 commented 2 years ago

I see the problem. In the vvencFFapp, the -o argument specifies where to write the reconstructed YUV. The -b argument specifies the output bitstream. Thats why the output syntax is wrong, because you try to decode the YUV file. Sorry about the inconvenience. It has to do with how we want the FF-app to be kind of similar to the VTM interface.

Harshitha35 commented 2 years ago

Thanks for the quick response. It was a mistake from my end. I will change this and go ahead with the encodes. Thanks