diff --git a/apps/decoder.c b/apps/decoder.c index d2260713c28f0b618033d3d2229c77794147b1dc..e7392477fa0ecbb51bc8dc120244e6e95fb1837c 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -1429,7 +1429,11 @@ static ivas_error decodeG192( ivas_error error = IVAS_ERR_UNKNOWN; uint16_t numObj = 0; IVAS_DEC_BS_FORMAT bsFormat = IVAS_DEC_BS_UNKOWN; +#ifdef FIX_406_IVAS_POSITION + IVAS_VECTOR3 Pos[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; +#else IVAS_POSITION Pos[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; +#endif IsmFileWriter *ismWriters[IVAS_MAX_NUM_OBJECTS]; for ( i = 0; i < IVAS_MAX_NUM_OBJECTS; ++i ) diff --git a/apps/renderer.c b/apps/renderer.c index 726eeb237b13c1e6f6f7b3c9b391b17373e213d0..82eaf89a34807d395b96825d80dfb21374d4b5c1 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -536,7 +536,11 @@ int main( int32_t delayTimeScale = 0; int16_t i, numChannels; ivas_error error = IVAS_ERR_OK; +#ifdef FIX_406_IVAS_POSITION + IVAS_VECTOR3 Pos[RENDERER_HEAD_POSITIONS_PER_FRAME]; +#else IVAS_POSITION Pos[RENDERER_HEAD_POSITIONS_PER_FRAME]; +#endif #ifdef WMOPS reset_wmops(); diff --git a/lib_com/common_api_types.h b/lib_com/common_api_types.h index 3e012a6f99685c080760cade2d1e15a90874970a..209f5d89636a5504502b068a9ee01a4e6e56d756 100644 --- a/lib_com/common_api_types.h +++ b/lib_com/common_api_types.h @@ -93,11 +93,13 @@ typedef struct float x, y, z; } IVAS_VECTOR3; +#ifndef FIX_406_IVAS_POSITION typedef struct { float x, y, z; } IVAS_POSITION; +#endif typedef struct ivas_masa_metadata_frame_struct *IVAS_MASA_METADATA_HANDLE; #ifdef FIX_350_MASA_DELAY_COMP diff --git a/lib_com/options.h b/lib_com/options.h index c188222e221ed3b52575fd961ebca0f43e7d0028..d4ea004209494f5d5b62693445bdf53edf39afad 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -170,6 +170,7 @@ #define ISSUE_24_CLEANUP_MCT_LFE /* Issue 24: Cleanup LFE path withing MCT */ #define FIX_401_DIRAC_RENDERER_META_READ_INDICES /* Nokia: Issue 401: Fix metadata reading indices in DirAC renderer. */ +#define FIX_406_IVAS_POSITION /* Eri: Issue 406: Unify IVAS_POSITION to use IVAS_VECTOR3 instead */ /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ diff --git a/lib_dec/lib_dec.c b/lib_dec/lib_dec.c index a1410c482e1031ad3e6ed4c3480ea175ba449102..6f385c5066552618edf44184581e03968c53ba42 100644 --- a/lib_dec/lib_dec.c +++ b/lib_dec/lib_dec.c @@ -895,7 +895,11 @@ ivas_error IVAS_DEC_GetMasaMetadata( ivas_error IVAS_DEC_FeedHeadTrackData( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ IVAS_QUATERNION *orientation, /* i : head-tracking data, listener orientation */ - IVAS_POSITION *Pos /* i : listener position */ +#ifdef FIX_406_IVAS_POSITION + IVAS_VECTOR3 *Pos /* i : listener position */ +#else + IVAS_POSITION *Pos /* i : listener position */ +#endif ) { HEAD_TRACK_DATA_HANDLE hHeadTrackData; diff --git a/lib_dec/lib_dec.h b/lib_dec/lib_dec.h index e1e5bfe9f47fbcb676cf2c8c79ece0d5c2a39398..5fe89ad2d716781680b1467bc2bfe026e01f2a19 100644 --- a/lib_dec/lib_dec.h +++ b/lib_dec/lib_dec.h @@ -177,7 +177,11 @@ ivas_error IVAS_DEC_GetMasaMetadata( ivas_error IVAS_DEC_FeedHeadTrackData( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ IVAS_QUATERNION *orientation, /* i : head-tracking data */ +#ifdef FIX_406_IVAS_POSITION + IVAS_VECTOR3 *Pos /* i : listener position */ +#else IVAS_POSITION *Pos /* i : listener position */ +#endif ); /*! r: error code */ diff --git a/lib_rend/ivas_objectRenderer.c b/lib_rend/ivas_objectRenderer.c index ed36fa26b11a1e90fcd71276d542ad431b79d8a7..b454f061795d68e561fd74ade0ab1e2bdfa5a0b9 100644 --- a/lib_rend/ivas_objectRenderer.c +++ b/lib_rend/ivas_objectRenderer.c @@ -258,9 +258,13 @@ ivas_error ivas_td_binaural_renderer_unwrap( ISM_METADATA_HANDLE *hIsmMetaData, /* i : ISM metadata handle */ const int16_t Opt_Headrotation, /* i : Head rotation flag */ const IVAS_QUATERNION *Quaternions, /* i : Head tracking data per subframe */ - const IVAS_POSITION *Pos, /* i : Listener position data per subframe */ - float output[][L_FRAME48k], /* i/o: SCE channels / Binaural synthesis */ - const int16_t output_frame /* i : output frame length */ +#ifdef FIX_406_IVAS_POSITION + const IVAS_VECTOR3 *Pos, /* i : Listener position data per subframe */ +#else + const IVAS_POSITION *Pos, /* i : Listener position data per subframe */ +#endif + float output[][L_FRAME48k], /* i/o: SCE channels / Binaural synthesis */ + const int16_t output_frame /* i : output frame length */ ) { int16_t subframe_length; @@ -462,7 +466,11 @@ void TDREND_Update_listener_orientation( BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD Renderer handle */ const int16_t headRotEnabled, /* i : Headrotation flag */ const IVAS_QUATERNION *headPosition, /* i : Listener orientation */ - const IVAS_POSITION *Pos /* i : Listener Position */ +#ifdef FIX_406_IVAS_POSITION + const IVAS_VECTOR3 *Pos /* i : Listener Position */ +#else + const IVAS_POSITION *Pos /* i : Listener Position */ +#endif ) { float FrontVec[3]; diff --git a/lib_rend/ivas_prot_rend.h b/lib_rend/ivas_prot_rend.h index 938e8de02c909c85236052bb6055cbd1f97b8143..9d13ba9b36f4ac2afdcb4ce4b088445f4fc8e681 100644 --- a/lib_rend/ivas_prot_rend.h +++ b/lib_rend/ivas_prot_rend.h @@ -221,7 +221,11 @@ ivas_error ivas_td_binaural_renderer_unwrap( ISM_METADATA_HANDLE *hIsmMetaData, /* i : ISM metadata handle */ const int16_t Opt_Headrotation, /* i : Head rotation flag */ const IVAS_QUATERNION *Quaternions, /* i : Head tracking data per subframe */ +#ifdef FIX_406_IVAS_POSITION + const IVAS_VECTOR3 *Pos, /* i : Listener position data per subframe */ +#else const IVAS_POSITION *Pos, /* i : Listener position data per subframe */ +#endif float output[][L_FRAME48k], /* i/o: SCE channels / Binaural synthesis */ const int16_t output_frame /* i : output frame length */ ); @@ -273,7 +277,11 @@ void TDREND_Update_listener_orientation( BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD Renderer handle */ const int16_t headRotEnabled, /* i : Headrotation flag */ const IVAS_QUATERNION *headPosition, /* i : Listener orientation */ +#ifdef FIX_406_IVAS_POSITION + const IVAS_VECTOR3 *Pos /* i : Listener Position */ +#else const IVAS_POSITION *Pos /* i : Listener Position */ +#endif ); void TDREND_Update_object_positions( diff --git a/lib_rend/ivas_stat_rend.h b/lib_rend/ivas_stat_rend.h index e7ff9eb0bafafad55ac6ceb4fc5535955937b0dd..faa22abd5655a761e7ee4558bd9dcaaa7e35542f 100644 --- a/lib_rend/ivas_stat_rend.h +++ b/lib_rend/ivas_stat_rend.h @@ -250,7 +250,11 @@ typedef struct { int8_t headRotEnabled; IVAS_QUATERNION headPositions[RENDERER_HEAD_POSITIONS_PER_FRAME]; +#ifdef FIX_406_IVAS_POSITION + IVAS_VECTOR3 Pos[RENDERER_HEAD_POSITIONS_PER_FRAME]; +#else IVAS_POSITION Pos[RENDERER_HEAD_POSITIONS_PER_FRAME]; +#endif float crossfade[L_FRAME48k / RENDERER_HEAD_POSITIONS_PER_FRAME]; ivas_orient_trk_state_t *hOrientationTracker; @@ -260,7 +264,11 @@ typedef struct ivas_binaural_head_track_struct { int16_t num_quaternions; IVAS_QUATERNION Quaternions[MAX_PARAM_SPATIAL_SUBFRAMES]; +#ifdef FIX_406_IVAS_POSITION + IVAS_VECTOR3 Pos[MAX_PARAM_SPATIAL_SUBFRAMES]; +#else IVAS_POSITION Pos[MAX_PARAM_SPATIAL_SUBFRAMES]; +#endif float Rmat[3][3]; float Rmat_prev[3][3]; diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 3d2420632d86ccac487ab5aeb6737bb9afb2631d..e24c34d73e8fbe414a4027f2887c943409200e2f 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -3807,7 +3807,11 @@ int16_t IVAS_REND_FeedRenderConfig( ivas_error IVAS_REND_SetHeadRotation( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ const IVAS_QUATERNION headRot[RENDERER_HEAD_POSITIONS_PER_FRAME], /* i : head orientations for next rendering call */ - const IVAS_POSITION Pos[RENDERER_HEAD_POSITIONS_PER_FRAME] /* i : listener positions for next rendering call */ +#ifdef FIX_406_IVAS_POSITION + const IVAS_VECTOR3 Pos[RENDERER_HEAD_POSITIONS_PER_FRAME] /* i : listener positions for next rendering call */ +#else + const IVAS_POSITION Pos[RENDERER_HEAD_POSITIONS_PER_FRAME] /* i : listener positions for next rendering call */ +#endif ) { int16_t i; diff --git a/lib_rend/lib_rend.h b/lib_rend/lib_rend.h index ec4c05a6d676aac8b1a0fb98d156ee8ef110de82..ca5ae9ab264769015d018fa94bc223519695b7fb 100644 --- a/lib_rend/lib_rend.h +++ b/lib_rend/lib_rend.h @@ -249,7 +249,11 @@ int16_t IVAS_REND_FeedRenderConfig( ivas_error IVAS_REND_SetHeadRotation( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ const IVAS_QUATERNION headRot[RENDERER_HEAD_POSITIONS_PER_FRAME], /* i : head orientations for next rendering call */ +#ifdef FIX_406_IVAS_POSITION + const IVAS_VECTOR3 Pos[RENDERER_HEAD_POSITIONS_PER_FRAME] /* i : listener positions for next rendering call */ +#else const IVAS_POSITION Pos[RENDERER_HEAD_POSITIONS_PER_FRAME] /* i : listener positions for next rendering call */ +#endif ); ivas_error IVAS_REND_SetOrientationTrackingMode( diff --git a/lib_util/head_rotation_file_reader.c b/lib_util/head_rotation_file_reader.c index 02f14be9247c62fb5ba80701fab7de6d96a49c84..fda8154b326ac711c359ecd1038e7c1cded9d743 100644 --- a/lib_util/head_rotation_file_reader.c +++ b/lib_util/head_rotation_file_reader.c @@ -94,7 +94,11 @@ ivas_error HeadRotationFileReader_open( ivas_error HeadRotationFileReading( HeadRotFileReader *headRotReader, /* i/o: HeadRotFileReader handle */ IVAS_QUATERNION *pQuaternion, /* o : head-tracking data */ - IVAS_POSITION *pPos /* o : listener position */ +#ifdef FIX_406_IVAS_POSITION + IVAS_VECTOR3 *pPos /* o : listener position */ +#else + IVAS_POSITION *pPos /* o : listener position */ +#endif ) { float w, x, y, z; diff --git a/lib_util/head_rotation_file_reader.h b/lib_util/head_rotation_file_reader.h index 4794aeba45b2d17e2c7552112ff292741ca9655d..2625bbe3f8945610902b8b5250e908266ec58ebe 100644 --- a/lib_util/head_rotation_file_reader.h +++ b/lib_util/head_rotation_file_reader.h @@ -60,7 +60,11 @@ ivas_error HeadRotationFileReader_open( ivas_error HeadRotationFileReading( HeadRotFileReader *headRotReader, /* i/o: HeadRotFileReader handle */ IVAS_QUATERNION *pQuaternion, /* o : head-tracking data */ - IVAS_POSITION *pPos /* o : listener position */ +#ifdef FIX_406_IVAS_POSITION + IVAS_VECTOR3 *pPos /* o : listener position */ +#else + IVAS_POSITION *pPos /* o : listener position */ +#endif ); /*-----------------------------------------------------------------------*