Extended metadata issues
I came across several issues in contribution 17 on extended metadata in ISM format:
- In
IsmFileReader_readNextFrame()
:
-
I think the following verification is still valuable:
#ifndef TD5
if ( char_ptr != NULL )
{
/* Too many values provided in one line */
return IVAS_ERR_ISM_FILE_READER_INVALID_METADATA_FORMAT;
}
#endif
-
What are the expected values for the radius? Could you review/amend the following condition, please?
if ( ismMetadata->radius < 0 ) // Ivas_fmToDo: to be reviewed
-
Metadata default value for radius seems to be inconsistent between encoder and decoder:
meta_prm_default[NUM_ISM_METADATA_PER_LINE] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f };
in IsmFileReader_readNextFrame()
vs.
if ( hIsmMeta == NULL || zero_flag )
{
metadata->azimuth = 0.f;
metadata->elevation = 0.f;
metadata->radius = 0.f;
metadata->spread = 0.f;
metadata->gainFactor = 1.f;
}
in IVAS_DEC_GetObjectMetadata()
. Moreover, yaw and pitch are missing in this if() branch.
-
In renderer.c, there is
if ( ( ( error = IVAS_REND_SetHeadRotation( hIvasRend, NULL, NULL ) ) != IVAS_ERR_OK ) && ( IVAS_REND_SetHeadRotation( hIvasRend, NULL, NULL ) != IVAS_ERR_INVALID_OUTPUT_FORMAT ) ) // VE: TBC
I would avoid calling of IVAS_REND_SetHeadRotation()
twice and rather do sth. like
if ( ( ( error = IVAS_REND_SetHeadRotation( hIvasRend, NULL, NULL ) ) != IVAS_ERR_OK )
{
if ( error != IVAS_ERR_INVALID_OUTPUT_FORMAT )
{
...
}
-
In ivas_cnst.c, there is
IND_ISM_EXTENDED_FLAG = IND_ISM_NUM_OBJECTS + MAX_NUM_OBJECTS,
IND_ISM_METADATA_FLAG = IND_ISM_EXTENDED_FLAG + MAX_NUM_OBJECTS, /* EN2VE: Is this not supposed to be in the loop part below since it is one per ISm? */
In the current framework, ISM metadata flag per object is written after the signaling before the metadata writing in a loop, so it is correct. If we want to write the flag in a loop, then the decoding order would need to be updated as well.
However, I understand that IND_ISM_METADATA_FLAG is just one bit per frame, so it is sufficient to define it simply
IND_ISM_EXTENDED_FLAG = IND_ISM_NUM_OBJECTS + MAX_NUM_OBJECTS,
IND_ISM_METADATA_FLAG,
- Others
-
readme.txt
should be updated to take into account the new metadata. -
the parameter name hIsmMetaData->angle
is misleading to me, could we use a better name like last_direction, last_angles, etc.? -
was it tested for bit-rate switching (low bitrate vs. high bitrate)?
Edited by norvell