#83 closed defect (fixed)LayerConfig Configuration Option Not Operational
Description
From software version SHM 5.1, the LayerConfig configuration option is not fully implemented; it is not active. For example, when using the command switch "-lc0" to specify a specific configuration file for the base layer, this command is ignored during the encoding process and no error is produced. The same is true for all layers. I have included a screenshot image (below) of the configuration option to which I am referring.
In the TAppEncCfg.cpp source code file, the string variable "cfg_LayerCfgFile" in the public member function "parseCfg" of class "TAppEncCfg" (starting at line 338) is relevant to this issue. Change history (7)comment:1 Changed 9 years ago by DefaultCC Plugin
comment:2 Changed 9 years ago by Vadimcomment:3 Changed 9 years ago by Prangnell
Thank you very much for the reply and for the information you have provided.
Indeed, I am aware that layer configuration options are typically set in the layers.cfg configuration file, such as the option “QP0” for the BL quantisation parameter and the option QP1 for the EL 1 quantisation parameter, for example. I have also tested the Q0108_Extension.cfg file in the latest version of SHM, which I believe is a useful feature for facilitating layer specific prediction settings.
I am, at present, working on a particular project that requires the use of different scaling lists (quantisation matrices) for different layers, instead of using the same scaling list for all layers. As you’re aware, unfortunately there is no such option in SHM 5.1+. This is why the “LayersConfig” option would have been very useful.
From a wider perspective, I propose that it might be a good idea to fully implement the “LayersConfig” option in SHM, so that multiple primary configuration files can be set for different layers instead of being restricted to using a single primary configuration file for all layers in a multilayered bitstream (e.g., encoder_lowdelay_main_BL.cfg and encoder_lowdelay_main_EL1.cfg). I understand that several of the configuration options — such as QP, IntraPeriod and RateControl — in these primary configuration files have been moved to layers.cfg to be used as layer specific configuration options. Is it JCT-VC's plan to eventually make all coding options, including ScalingList and ScalingListFile, layer specific?
An example encoder command line usage (Windows) of this proposed implementation, using the “LayersConfig” command option, could be as follows:
“TAppEncoder.exe -lc0 encoder_lowdelay_main_BL.cfg -lc1 encoder_lowdelay_main_EL1.cfg -lc2 encoder_lowdelay_main_EL2.cfg -c Kimono-SNR.cfg -c layers.cfg”.
Thanks again! comment:4 Changed 9 years ago by Vadim
Basically, there are two types of options in SHM. First ones are layer-specific and the second ones are general across layers. If there is a need, then some options can be converted from general to be layer specific.
Those options can be split in any number of config files, so that’s why I think explicit layer config options seems not needed. Even now, you can put some parameters related to BL in encoder_lowdelay_main_BL.cfg, and some parameters related to ELs in encoder_lowdelay_main_EL1.cfg and encoder_lowdelay_main_EL2.cfg, and use it as
TAppEncoder.exe -c encoder_lowdelay_main_BL.cfg -c encoder_lowdelay_main_EL1.cfg -c encoder_lowdelay_main_EL2.cfg -c Kimono-SNR.cfg -c layers.cfg
(-lc%d is replaced with -c in your example)
Regarding the scaling list, it is possible that the parameter is global across the layers so far. Do you need it to be layer-specific? comment:5 Changed 9 years ago by Prangnell
Thank you, Vadim; your swift responses are greatly appreciated.
I often use SHM like HM (by using the base layer of SHM only). This obviously involves using global configuration parameters and base layer parameters only.
I understand that it matters not the .cfg file(s) in which the parameters are set (as long as there are sufficient configuration settings applied to allow the execution of the encoding process).
My main point is as follows: using the "-c" command switch (instead of -lc%d) will allow me to use either global configuration parameters across all layers or, indeed, layer specific configuration parameters such as QP0, QP1, and IntraPeriod0 and IntraPeriod1 et cetera. Since "ScalingList" and "ScalingListFile" do not have layer specific options (i.e., ScalingList0 and ScalingList1), then the conventional configuration file switch to which you're referring (-c) is not useful for this specific purpose. That is, "-c encoder_lowdelay_main.cfg" with ScalingList activated would result in a global scaling list setting across all layers, which is what I am endeavouring to avoid.
To answer your question, yes, it is very important in my project to have a layer specific scaling list option. I was thinking that the "LayerConfig" (-lc%d) option might be the most efficient way to accomplish this objective; however, after reading your helpful reply, I am now not so sure. If it would be more suitable to simply implement a layer specific option for scaling lists, may I ask what the JCT-VC procedure is for this and, also, how long it would take to implement in SHM?
Thanks again. comment:6 Changed 9 years ago by Vadim
I removed LayerConfig option with rev 1380 and added scaling list to be layer specific with rev 1381, hence I am closing this ticket. Can you please try to use SHM-dev with different scaling lists and please let me know if you will face a problem by vseregin @ qti.qualcomm.com? comment:7 Changed 9 years ago by Prangnell
Great! Thank you very much for this. I will, indeed, test the modified version of SHM. As per your request, if I encounter any difficulties I will contact you on the e-mail you have provided. Note: See TracTickets for help on using tickets. | This list contains all users that will be notified about changes made to this ticket. These roles will be notified: Reporter, Owner, Subscriber, Participant
|
Thank you for reporting the problem. Actually, there is no per-layer config files and I will remove this option to avoid confusion. For example, to set different prediction structure Layer%dFrame%d setting can be used as shown in cfg/cfg_extension/Q0108_Extension.cfg. Also, inter-layer parameters are defined in cfg/layers.cfg. Finally, if several configurations files are needed, they can always be added by -c config0.cfg -c config1.cfg and so forth option.
Please reply to this ticket if you have some other ideas of layer-specific configuration files.