Commit 1f22a948 authored by Lauros Pajunen's avatar Lauros Pajunen
Browse files

Fix PI orientations

parent c17ed8c8
Loading
Loading
Loading
Loading
Loading
+56 −14
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@
#include <string.h>
#include "ivas_rtp_file.h"
#include "ivas_error_utils.h"
#include "prot_fx.h"

struct IVAS_RTP_FILE
{
@@ -191,8 +192,11 @@ void IVAS_RTP_LogPiData(
            case IVAS_PI_R_ISM_ORIENTATION:
#endif
            {
                fprintf( f_piDataOut, "{\n\t\t\t\"w\": %d,\n\t\t\t\"x\": %d,\n\t\t\t\"y\": %d,\n\t\t\t\"z\": %d \n\t\t}",
                         cur->data.scene.orientation.w_fx, cur->data.scene.orientation.x_fx, cur->data.scene.orientation.y_fx, cur->data.scene.orientation.z_fx );
                fprintf( f_piDataOut, "{\n\t\t\t\"w\": %f,\n\t\t\t\"x\": %f,\n\t\t\t\"y\": %f,\n\t\t\t\"z\": %f \n\t\t}",
                         fixedToFloat( cur->data.scene.orientation.w_fx, Q15 ),
                         fixedToFloat( cur->data.scene.orientation.x_fx, Q15 ),
                         fixedToFloat( cur->data.scene.orientation.y_fx, Q15 ),
                         fixedToFloat( cur->data.scene.orientation.z_fx, Q15 ) );
            }
            break;

@@ -259,8 +263,11 @@ void IVAS_RTP_LogPiData(
                if ( cur->data.focusIndication.availDirection )
                {
                    fprintf( f_piDataOut, "\n\t\t\t\"direction\": {\n" );
                    fprintf( f_piDataOut, "\t\t\t\t\t\t\"w\": %d,\n\t\t\t\t\t\t\"x\": %d,\n\t\t\t\t\t\t\"y\": %d,\n\t\t\t\t\t\t\"z\": %d \n\t\t\t}",
                             cur->data.focusIndication.direction.w_fx, cur->data.focusIndication.direction.x_fx, cur->data.focusIndication.direction.y_fx, cur->data.focusIndication.direction.z_fx );
                    fprintf( f_piDataOut, "\t\t\t\t\t\t\"w\": %f,\n\t\t\t\t\t\t\"x\": %f,\n\t\t\t\t\t\t\"y\": %f,\n\t\t\t\t\t\t\"z\": %f \n\t\t\t}",
                             fixedToFloat( cur->data.focusIndication.direction.w_fx, Q15 ),
                             fixedToFloat( cur->data.focusIndication.direction.x_fx, Q15 ),
                             fixedToFloat( cur->data.focusIndication.direction.y_fx, Q15 ),
                             fixedToFloat( cur->data.focusIndication.direction.z_fx, Q15 ) );
                    if ( cur->data.focusIndication.availLevel )
                    {
                        fprintf( f_piDataOut, "," );
@@ -301,8 +308,11 @@ void IVAS_RTP_LogPiData(
                if ( cur->data.focusRequest.availDirection )
                {
                    fprintf( f_piDataOut, "\n\t\t\t\"direction\": {\n" );
                    fprintf( f_piDataOut, "\t\t\t\t\t\t\"w\": %d,\n\t\t\t\t\t\t\"x\": %d,\n\t\t\t\t\t\t\"y\": %d,\n\t\t\t\t\t\t\"z\": %d \n\t\t\t}",
                             cur->data.focusRequest.direction.w_fx, cur->data.focusRequest.direction.x_fx, cur->data.focusRequest.direction.y_fx, cur->data.focusRequest.direction.z_fx );
                    fprintf( f_piDataOut, "\t\t\t\t\t\t\"w\": %f,\n\t\t\t\t\t\t\"x\": %f,\n\t\t\t\t\t\t\"y\": %f,\n\t\t\t\t\t\t\"z\": %f \n\t\t\t}",
                             fixedToFloat( cur->data.focusRequest.direction.w_fx, Q15 ),
                             fixedToFloat( cur->data.focusRequest.direction.x_fx, Q15 ),
                             fixedToFloat( cur->data.focusRequest.direction.y_fx, Q15 ),
                             fixedToFloat( cur->data.focusRequest.direction.z_fx, Q15 ) );
                    if ( cur->data.focusRequest.availLevel )
                    {
                        fprintf( f_piDataOut, "," );
@@ -372,17 +382,29 @@ void IVAS_RTP_WriteExtPiData(
        {
            case IVAS_PI_SCENE_ORIENTATION:
            {
                fprintf( f_piDataOut, "%d,%d,%d,%d", cur->data.scene.orientation.w_fx, cur->data.scene.orientation.x_fx, cur->data.scene.orientation.y_fx, cur->data.scene.orientation.z_fx );
                fprintf( f_piDataOut, "%f,%f,%f,%f",
                         fixedToFloat( cur->data.scene.orientation.w_fx, Q15 ),
                         fixedToFloat( cur->data.scene.orientation.x_fx, Q15 ),
                         fixedToFloat( cur->data.scene.orientation.y_fx, Q15 ),
                         fixedToFloat( cur->data.scene.orientation.z_fx, Q15 ) );
            }
            break;
            case IVAS_PI_DEVICE_ORIENTATION_COMPENSATED:
            {
                fprintf( f_piDataOut, "%d,%d,%d,%d", cur->data.deviceCompensated.orientation.w_fx, cur->data.deviceCompensated.orientation.x_fx, cur->data.deviceCompensated.orientation.y_fx, cur->data.deviceCompensated.orientation.z_fx );
                fprintf( f_piDataOut, "%f,%f,%f,%f",
                         fixedToFloat( cur->data.deviceCompensated.orientation.w_fx, Q15 ),
                         fixedToFloat( cur->data.deviceCompensated.orientation.x_fx, Q15 ),
                         fixedToFloat( cur->data.deviceCompensated.orientation.y_fx, Q15 ),
                         fixedToFloat( cur->data.deviceCompensated.orientation.z_fx, Q15 ) );
            }
            break;
            case IVAS_PI_DEVICE_ORIENTATION_UNCOMPENSATED:
            {
                fprintf( f_piDataOut, "%d,%d,%d,%d", cur->data.deviceUnCompensated.orientation.w_fx, cur->data.deviceUnCompensated.orientation.x_fx, cur->data.deviceUnCompensated.orientation.y_fx, cur->data.deviceUnCompensated.orientation.z_fx );
                fprintf( f_piDataOut, "%f,%f,%f,%f",
                         fixedToFloat( cur->data.deviceUnCompensated.orientation.w_fx, Q15 ),
                         fixedToFloat( cur->data.deviceUnCompensated.orientation.x_fx, Q15 ),
                         fixedToFloat( cur->data.deviceUnCompensated.orientation.y_fx, Q15 ),
                         fixedToFloat( cur->data.deviceUnCompensated.orientation.z_fx, Q15 ) );
            }
            break;
            case IVAS_PI_ACOUSTIC_ENVIRONMENT:
@@ -450,7 +472,11 @@ void IVAS_RTP_WriteExtPiData(
                    {
                        fprintf( f_piDataOut, "," );
                    }
                    fprintf( f_piDataOut, "%d,%d,%d,%d", cur->data.ismOrientation.orientation[i].w_fx, cur->data.ismOrientation.orientation[i].x_fx, cur->data.ismOrientation.orientation[i].y_fx, cur->data.ismOrientation.orientation[i].z_fx );
                    fprintf( f_piDataOut, "%f,%f,%f,%f",
                             fixedToFloat( cur->data.ismOrientation.orientation[i].w_fx, Q15 ),
                             fixedToFloat( cur->data.ismOrientation.orientation[i].x_fx, Q15 ),
                             fixedToFloat( cur->data.ismOrientation.orientation[i].y_fx, Q15 ),
                             fixedToFloat( cur->data.ismOrientation.orientation[i].z_fx, Q15 ) );
                }
            }
            break;
@@ -506,7 +532,11 @@ void IVAS_RTP_WriteExtPiData(
            {
                if ( cur->data.focusIndication.availDirection )
                {
                    fprintf( f_piDataOut, "%d,%d,%d,%d", cur->data.focusIndication.direction.w_fx, cur->data.focusIndication.direction.x_fx, cur->data.focusIndication.direction.y_fx, cur->data.focusIndication.direction.z_fx );
                    fprintf( f_piDataOut, "%f,%f,%f,%f",
                             fixedToFloat( cur->data.focusIndication.direction.w_fx, Q15 ),
                             fixedToFloat( cur->data.focusIndication.direction.x_fx, Q15 ),
                             fixedToFloat( cur->data.focusIndication.direction.y_fx, Q15 ),
                             fixedToFloat( cur->data.focusIndication.direction.z_fx, Q15 ) );
                    if ( cur->data.focusIndication.availLevel )
                    {
                        fprintf( f_piDataOut, "," );
@@ -520,12 +550,20 @@ void IVAS_RTP_WriteExtPiData(
            break;
            case IVAS_PI_PLAYBACK_DEVICE_ORIENTATION:
            {
                fprintf( f_piDataOut, "%d,%d,%d,%d", cur->data.playbackOrientation.orientation.w_fx, cur->data.playbackOrientation.orientation.x_fx, cur->data.playbackOrientation.orientation.y_fx, cur->data.playbackOrientation.orientation.z_fx );
                fprintf( f_piDataOut, "%f,%f,%f,%f",
                         fixedToFloat( cur->data.playbackOrientation.orientation.w_fx, Q15 ),
                         fixedToFloat( cur->data.playbackOrientation.orientation.x_fx, Q15 ),
                         fixedToFloat( cur->data.playbackOrientation.orientation.y_fx, Q15 ),
                         fixedToFloat( cur->data.playbackOrientation.orientation.z_fx, Q15 ) );
            }
            break;
            case IVAS_PI_HEAD_ORIENTATION:
            {
                fprintf( f_piDataOut, "%d,%d,%d,%d", cur->data.headOrientation.orientation.w_fx, cur->data.headOrientation.orientation.x_fx, cur->data.headOrientation.orientation.y_fx, cur->data.headOrientation.orientation.z_fx );
                fprintf( f_piDataOut, "%f,%f,%f,%f",
                         fixedToFloat( cur->data.headOrientation.orientation.w_fx, Q15 ),
                         fixedToFloat( cur->data.headOrientation.orientation.x_fx, Q15 ),
                         fixedToFloat( cur->data.headOrientation.orientation.y_fx, Q15 ),
                         fixedToFloat( cur->data.headOrientation.orientation.z_fx, Q15 ) );
            }
            break;
            case IVAS_PI_LISTENER_POSITION:
@@ -544,7 +582,11 @@ void IVAS_RTP_WriteExtPiData(

                if ( cur->data.focusRequest.availDirection )
                {
                    fprintf( f_piDataOut, "%d,%d,%d,%d", cur->data.focusRequest.direction.w_fx, cur->data.focusRequest.direction.x_fx, cur->data.focusRequest.direction.y_fx, cur->data.focusRequest.direction.z_fx );
                    fprintf( f_piDataOut, "%f,%f,%f,%f",
                             fixedToFloat( cur->data.focusRequest.direction.w_fx, Q15 ),
                             fixedToFloat( cur->data.focusRequest.direction.x_fx, Q15 ),
                             fixedToFloat( cur->data.focusRequest.direction.y_fx, Q15 ),
                             fixedToFloat( cur->data.focusRequest.direction.z_fx, Q15 ) );
                    if ( cur->data.focusRequest.availLevel )
                    {
                        fprintf( f_piDataOut, "," );
+16 −16
Original line number Diff line number Diff line
@@ -145,10 +145,10 @@ static ivas_error packOrientation( const IVAS_PIDATA_GENERIC *piData, uint8_t *b

    buffer[nBytes++] = ( orientation->piDataType & MASK_5BIT ); /* PF/PM populated during final packing */
    buffer[nBytes++] = 8;
    nBytes = writeInt16( buffer, nBytes, orientation->orientation.w_fx );
    nBytes = writeInt16( buffer, nBytes, orientation->orientation.x_fx );
    nBytes = writeInt16( buffer, nBytes, orientation->orientation.y_fx );
    nBytes = writeInt16( buffer, nBytes, orientation->orientation.z_fx );
    nBytes = writeInt16( buffer, nBytes, round_fx( orientation->orientation.w_fx ) );
    nBytes = writeInt16( buffer, nBytes, round_fx( orientation->orientation.x_fx ) );
    nBytes = writeInt16( buffer, nBytes, round_fx( orientation->orientation.y_fx ) );
    nBytes = writeInt16( buffer, nBytes, round_fx( orientation->orientation.z_fx ) );

    *nBytesWritten = nBytes;
    return IVAS_ERR_OK;
@@ -165,10 +165,10 @@ static ivas_error unpackOrientation( const uint8_t *buffer, uint32_t numDataByte
    }

    piData->size = sizeof( IVAS_PIDATA_ORIENTATION );
    orientation->orientation.w_fx = readInt16( &buffer[0] );
    orientation->orientation.x_fx = readInt16( &buffer[2] );
    orientation->orientation.y_fx = readInt16( &buffer[4] );
    orientation->orientation.z_fx = readInt16( &buffer[6] );
    orientation->orientation.w_fx = L_deposit_l( readInt16( &buffer[0] ) );
    orientation->orientation.x_fx = L_deposit_l( readInt16( &buffer[2] ) );
    orientation->orientation.y_fx = L_deposit_l( readInt16( &buffer[4] ) );
    orientation->orientation.z_fx = L_deposit_l( readInt16( &buffer[6] ) );

    return IVAS_ERR_OK;
}
@@ -582,10 +582,10 @@ static ivas_error packAudioFocusCommon( const IVAS_PIDATA_GENERIC *piData, uint8

    if ( packedSize == 9 || packedSize == 8 )
    {
        nBytes = writeInt16( buffer, nBytes, audioFocus->direction.w_fx );
        nBytes = writeInt16( buffer, nBytes, audioFocus->direction.x_fx );
        nBytes = writeInt16( buffer, nBytes, audioFocus->direction.y_fx );
        nBytes = writeInt16( buffer, nBytes, audioFocus->direction.z_fx );
        nBytes = writeInt16( buffer, nBytes, round_fx( audioFocus->direction.w_fx ) );
        nBytes = writeInt16( buffer, nBytes, round_fx( audioFocus->direction.x_fx ) );
        nBytes = writeInt16( buffer, nBytes, round_fx( audioFocus->direction.y_fx ) );
        nBytes = writeInt16( buffer, nBytes, round_fx( audioFocus->direction.z_fx ) );
    }
    if ( packedSize == 9 || packedSize == 1 )
    {
@@ -616,10 +616,10 @@ static ivas_error unpackAudioFocusCommon( const uint8_t *buffer, uint32_t numDat
    }
    else
    {
        audioFocus->direction.w_fx = readInt16( &buffer[0] );
        audioFocus->direction.x_fx = readInt16( &buffer[2] );
        audioFocus->direction.y_fx = readInt16( &buffer[4] );
        audioFocus->direction.z_fx = readInt16( &buffer[6] );
        audioFocus->direction.w_fx = L_deposit_l( readInt16( &buffer[0] ) );
        audioFocus->direction.x_fx = L_deposit_l( readInt16( &buffer[2] ) );
        audioFocus->direction.y_fx = L_deposit_l( readInt16( &buffer[4] ) );
        audioFocus->direction.z_fx = L_deposit_l( readInt16( &buffer[6] ) );

        if ( numDataBytes == 9 )
        {