NOTICE: The Processors Wiki will End-of-Life on January 15, 2021. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.
H.264 DM36x Ver 2.1 Codec
Migration Guide for DM36x H.264 version 2.1 codecs
Contents
Migration guide: DM36x ver 2.1 H.264 codec
This document describes the changes done in H.264 ver 2.1 codec over the previous 2.0 codec. It outlines the advantages to migrate to the new codec and the steps needed to do so. This wikitopic is applicable for release on and after 2.10.00.03
New Features in Version 2.1 H.264 codec[edit]
New DM36x version 2.1 H.264 codec is an enhanced version of the existing ver 2.0 codec that supports more features.
The salient new features are:
- H.264 encoder
- SVC-T up to four layers support.Scalable video coding – Temporal
- Supports fixed slice size encoding feature.
- Support for chain free P frames encoding. Chain Free P frame encoding
- Support for Gradual Decoder Refresh (GDR).Gradual Decoder Refresh
- Support for Adaptive Longterm Frame Insertion. Adaptive Longterm Frame Insertion
- Constrained VBR Rate control (CVBR).CVBR Rate control
- ARF (Adaptive Reference field) and MRCRF (Most Recent Coded Reference Field) encoding.
- Mega Pixel support added that can encode input video upto 4096x4096 resolution. MegaPixel Encoder
- New RC modes added. New RC modes
Comparison between version 2.1 and 2.0 codec[edit]
For details about features supported in version 2.0 please visit H.264 DM36x Ver 2.0 Codec .
Due to additional feature support in version 2.1 memtab requirement has increased. In case of SVC-T and LongTermFrame size of the few memtabs increases. Please refer datasheets for details.
API changes in version 2.1 codec[edit]
There are changes in extended parameter of DM365 encoder when compared to ver 2.0. The changes are listed below –
IH264VENC_Params[edit]
Parameter | Ver. 2.1 | Ver. 2.0 | Comments |
maxWidth | Supported upto 4096 | Supported upto 2048 | If maxWidth is set to more than 2048 then MegaPixel encoding is enabled. In this case performance might reduce. |
maxHeight | Supported upto 4096 | Supported upto 2048 | |
inputWidth | Supported upto 4096 | Supported upto 2048 | Encoding of resolution more than 2048x2048 is enabled if maxWidth is more than 2048. |
inputHeight | Supported upto 4096 | Supported upto 2048 | |
aspectRatioX | Moved to IH264VENC_Dynamic_Params Values: same as before |
Supported | X scale for Aspect Ratio |
aspectRatioY | Moved to IH264VENC_Dynamic_Params Values: same as before |
Supported | Y scale for Aspect Ratio |
pixelRange | Move to VUI parameters Structure See How to modify VUI params |
Supported | To specify range of values that a pixel can take. |
timeScale | Move to VUI parameters Structure | Supported | Timer Resolution for Picture Timing |
numUnitsInTicks | Move to VUI parameters Structure | Supported | Number of timer units per Ticks |
enableVUIparams | Values Bit-0: enables VUI param insertion Bit-1: enables insertion of IDR if RC params are changed. Bit-2: VUI params can be set from application at runtime. Bit-3: Application is allowed to provide "Customized Encoded" VUI insertion. |
Refer userguide for more details. | |
disableHDVICPeveryFrame | Depreciated | Supported | |
meAlgo | Values 0,1 0: Normal mode 1: Improved Video quality at low bit rate |
Reserved | If meAlgo is set to 1, performance drop of 1% is observed. Default value: 0 |
unrestrictedMV | Depreciated | Reserved | UMV is always ON |
seqScalingFlag | Values 0-3: Same as before 5: Application can provide/update Customized Scaling Matrix at runtime. |
Supported values 0-3 | Additional feature support added. |
sliceMode | Values (Default value 0) 0 – No multi-slice 1- Slice sizes in bits 2- number of MBs per slice 3- number of MB rows per slice |
Value 0, 2 and 3 supported. | Mode for specifying slice size. |
numTemporalLayers | Value 0-3 and 255 0 -> one layer (Base layer) 1 -> two layers 2 -> three layers 3 -> four layers 255 -> Chain free P frames |
Not present | Number of temporal layers in hierarchical encoding. Default value: 0 |
svcSyntaxEnable | Value 0-3 0 -> SVC disabled short term ref frames used 1 -> SVC enabled short term ref frames used 2 -> SVC disabled long term ref frames used 3 -> SVC enabled long term ref frames used |
Not present | SVC syntax enable/disable flag. Also decides usage of long-term frame as reference frame in hierarchical encoding. |
EnableLongTermFrame | Disable Enable Long Term frame for error resilience. |
Not present | Flag to enable/disable usage of long-term frame as reference frame for error resiliency Default value: 0 |
Log2MaxFrameNumMinus4 | Value 0-12 | Not present | Newly added in ver 2.1 to set the maximum frame number value. Default value: 0 |
ConstraintSetFlag | Values Bit-0: Constraint Set 0 flag. Bit-1: Constraint Set 1 flag Bit-2: Don’t’ Care Bit-3: Constraint Set 3 flag |
Not present | Constraint Profile Set Flag. Refer user guide for more details Default value: 0 |
IH264VENC_Dynamic_Params[edit]
Parameter | Ver. 2.1 | Ver. 2.0 | Comments |
aspectRatioX | Values: same as before | Supported | X scale for Aspect Ratio |
aspectRatioY | Values: same as before | Supported | X scale for Aspect Ratio |
maxBitrateCVBR | Values 0 – 50000000 bps |
Not present | Specifies the max Bitrate for CVBR RC algorithm. Default value: 0 |
interlaceRefMode | Values 0-2 0 = ARF (default mode), 1 = SPF, 2 = MRCF |
Not present | Mode to choose between ARF/SPF/MRCF. Default value 0. ARF- Adaptive Reference field. SPF- Same parity field. MRCF- Most recent coded field. Default 0 |
sliceSize | Accepts siceSize in bits also. | Supported | Slice size in terms of bits, MBs and rows depending upon sliceMode flag. |
rcAlgo | Values 0-6 0: CBR, 1: VBR 2:Fixed QP 3: CVBR 4: FIXED_RC 5: CBR custom1 6: VBR custom1 |
Supported 0-3 | Support for additional new RC algorithm. Refer user guide for details. |
enableGDR | Values 0-2 | Not present | Flag to enable Gradual Decoder Refresh. Default 0 |
GDRduration | Values non-Negative | Not present | GDR refresh duration. GDRduration shall be non-negative and lesser than GDRinterval. Default 0. |
GDRinterval | Values non-Negative | Not present | Interval between GDR refresh. GDRinterval shall be non-negative else not supported Default 0. |
LongTermRefreshInterval | Values non-Negative | Not present | Newly added in ver 2.1. Interval in which long term reference frame is updated. Default 0. |
UseLongTermFrame | Values 0-1 0- Long term frame not Used for reference 1- Long term frame used for reference |
Not present | Newly added in ver 2.1. Allows codec to use long-term frame instead of short term frame as reference frame. Default value 0. |
SetLongTermFrame | Values 0- Set current frame as a short term 1- Set current frame as a long term |
Not present | Newly added in ver 2.1. Default value 0. |
VUIParamBuffer *VUI_Buffer | Pointer to the VUI parameter structure | Not present | Newly added in ver 2.1. It is functional if Bit-2 of enableVUIparams is set to 1 (e.g. enableVUIparams = 0x4). This allows application to set VUI params from the application. For default VUI values refer user guide. |
CustomScalingMatrix *CustomScaleMatrix_Buffer | Pointer to the Customized Scaling Matrix structure. | Not present | Newly added in ver 2.1. It is functional if seqScalingFlag is set to 5.For details refer user guide. Default: NULL |
CVBRsensitivity | Reserved | Not present | Newly added in ver 2.1 for future use |
CVBRminbitrate | Reserved | Not present | Newly added in ver 2.1 for future use |
LBRmaxpicsize | Reserved | Not present | Newly added in ver 2.1 for future use |
LBRminpicsize | Reserved | Not present | Newly added in ver 2.1 for future use |
LBRskipcontrol | Reserved | Not present | Newly added in ver 2.1 for future use |
maxHighCmpxIntCVBR | Reserved | Not present | Newly added in ver 2.1 for future use |
How to integrate ver 2.1 codec in existing application?[edit]
- In case application is using only base class for encode and decode operation and have already migrated to ver 2.0 codec, they can just replace the existing codec RTSC package with the new ver 2.1 codec RTSC package and rebuild the application. In case the existing application is built on ver 1.1 or prior codec, please refer to Migartion guide to ver 2.0 codec before integrating this codec.
- The codec can work in DVSDK 2.1 and 3.1 demo and DVTB(base class) by just replacing the existing ver 2.0 library.
- There are changes in no. of memtab requirement and the changes in sizes of few memtabs. Hence the user might observe increased memory requirement from codec.
- No. of memory pools required are same as of ver 2.0.
- There are no changes in no. of EDMA channels required. It is same as previous ver 2.0
- In case the application uses extended parameter, one will need to do modification in the app code depending on the usage of the new features. Please refer to the new interface file, sample test application and user guide to understand the changes in detail.