Commit 62534d6d authored by Marek Szczerba's avatar Marek Szczerba
Browse files

Merge branch '1154-add-rtpdump-support' into 1154-add-rtpdump-support-apply-acoustic-env

parents cdf736e0 4ec6d74f
Loading
Loading
Loading
Loading
Loading
+87 −73
Original line number Diff line number Diff line
@@ -139,9 +139,9 @@ static ivas_error IvasRtpFile_Read(
static const char *const PiDataNames[IVAS_PI_MAX_ID] = {
    "SCENE_ORIENTATION", "DEVICE_ORIENTATION_COMPENSATED", "DEVICE_ORIENTATION_UNCOMPENSATED",
    "ACOUSTIC_ENVIRONMENT", "AUDIO_DESCRIPTION", "ISM_NUM", "ISM_ID", "ISM_GAIN", "ISM_ORIENTATION",
    "ISM_POSITION", "ISM_DISTANCE_ATTENUATION", "ISM_DIRECTIVITY", "DIEGETIC_TYPE", "RESERVED13",
    "ISM_POSITION", "ISM_DISTANCE_ATTENUATION", "ISM_DIRECTIVITY", "DIEGETIC_TYPE", "DYNAMIC_AUDIO_SUPPRESSION_INDICATION",
    "AUDIO_FOCUS_INDICATION", "RESERVED15", "PLAYBACK_DEVICE_ORIENTATION", "HEAD_ORIENTATION", "LISTENER_POSITION",
    "DYNAMIC_AUDIO_SUPPRESSION", "AUDIO_FOCUS_REQUEST", "PI_LATENCY", "R_ISM_ID", "R_ISM_GAIN",
    "DYNAMIC_AUDIO_SUPPRESSION_REQUEST", "AUDIO_FOCUS_REQUEST", "PI_LATENCY", "R_ISM_ID", "R_ISM_GAIN",
    "R_ISM_ORIENTATION", "R_ISM_POSITION", "R_ISM_DIRECTION", "RESERVED27", "RESERVED28", "RESERVED29",
    "RESERVED30", "NO_DATA"
};
@@ -273,9 +273,20 @@ void IVAS_RTP_LogPiData(
                fprintf( f_piDataOut, "\n\t\t}" );
            }
            break;
            case IVAS_PI_DYNAMIC_AUDIO_SUPPRESSION:
            case IVAS_PI_DYNAMIC_AUDIO_SUPPRESSION_REQUEST:
            {
                const IVAS_PIDATA_DYNAMIC_SUPPRESSION *das = &cur->data.dynSuppression;
                const IVAS_PIDATA_DYNAMIC_SUPPRESSION *das = &cur->data.dynSuppressionRequest;
                fprintf( f_piDataOut, "{\n" );
                fprintf( f_piDataOut, "\t\t\t\"preferSpeech\": %s,\n", das->speech ? "true" : "false" );
                fprintf( f_piDataOut, "\t\t\t\"preferMusic\": %s,\n", das->music ? "true" : "false" );
                fprintf( f_piDataOut, "\t\t\t\"preferAmbiance\": %s,\n", das->ambiance ? "true" : "false" );
                fprintf( f_piDataOut, "\t\t\t\"level\": %d", das->sli );
                fprintf( f_piDataOut, "\n\t\t}" );
            }
            break;
            case IVAS_PI_DYNAMIC_AUDIO_SUPPRESSION_INDICATION:
            {
                const IVAS_PIDATA_DYNAMIC_SUPPRESSION *das = &cur->data.dynSuppressionIndication;
                fprintf( f_piDataOut, "{\n" );
                fprintf( f_piDataOut, "\t\t\t\"preferSpeech\": %s,\n", das->speech ? "true" : "false" );
                fprintf( f_piDataOut, "\t\t\t\"preferMusic\": %s,\n", das->music ? "true" : "false" );
@@ -284,7 +295,6 @@ void IVAS_RTP_LogPiData(
                fprintf( f_piDataOut, "\n\t\t}" );
            }
            break;
            case IVAS_PI_RESERVED13:
            case IVAS_PI_AUDIO_FOCUS_REQUEST:
            {
                fprintf( f_piDataOut, "{" );
@@ -375,18 +385,6 @@ void IVAS_RTP_WriteExtPiData(
                fprintf( f_piDataOut, "%f,%f,%f,%f", cur->data.deviceUnCompensated.orientation.w, cur->data.deviceUnCompensated.orientation.x, cur->data.deviceUnCompensated.orientation.y, cur->data.deviceUnCompensated.orientation.z );
            }
            break;
#ifdef RTP_S4_251135_CR26253_0016_REV1
            case IVAS_PI_PLAYBACK_DEVICE_ORIENTATION:
            {
                fprintf( f_piDataOut, "%f,%f,%f,%f", cur->data.playbackOrientation.orientation.w, cur->data.playbackOrientation.orientation.x, cur->data.playbackOrientation.orientation.y, cur->data.playbackOrientation.orientation.z );
            }
            break;
            case IVAS_PI_HEAD_ORIENTATION:
            {
                fprintf( f_piDataOut, "%f,%f,%f,%f", cur->data.headOrientation.orientation.w, cur->data.headOrientation.orientation.x, cur->data.headOrientation.orientation.y, cur->data.headOrientation.orientation.z );
            }
            break;
#endif
            case IVAS_PI_ACOUSTIC_ENVIRONMENT:
            {
                fprintf( f_piDataOut, "%d", cur->data.acousticEnv.aeid );
@@ -403,11 +401,6 @@ void IVAS_RTP_WriteExtPiData(
            }
            break;
#ifdef RTP_S4_251135_CR26253_0016_REV1
            case IVAS_PI_LISTENER_POSITION:
            {
                fprintf( f_piDataOut, "%f,%f,%f", cur->data.listnerPosition.position.x, cur->data.listnerPosition.position.y, cur->data.listnerPosition.position.z );
            }
            break;
            case IVAS_PI_AUDIO_DESCRIPTION:
            {
                uint32_t nEntries = cur->data.audioDesc.nValidEntries;
@@ -420,57 +413,6 @@ void IVAS_RTP_WriteExtPiData(
                }
            }
            break;
            case IVAS_PI_DIEGETIC_TYPE:
            {
                const bool *isDiegetic = cur->data.digeticIndicator.isDiegetic;
                fprintf( f_piDataOut, "%d,%d,%d,%d,%d", isDiegetic[0], isDiegetic[1], isDiegetic[2], isDiegetic[3], isDiegetic[4] );
            }
            break;
            case IVAS_PI_AUDIO_FOCUS_INDICATION:
            {
                if ( cur->data.focusIndication.availDirection )
                {
                    fprintf( f_piDataOut, "%f,%f,%f,%f", cur->data.focusIndication.direction.w, cur->data.focusIndication.direction.x, cur->data.focusIndication.direction.y, cur->data.focusIndication.direction.z );
                    if ( cur->data.focusIndication.availLevel )
                    {
                        fprintf( f_piDataOut, "," );
                    }
                }
                if ( cur->data.focusIndication.availLevel )
                {
                    fprintf( f_piDataOut, "%d", cur->data.focusIndication.flvl );
                }
            }
            break;
            case IVAS_PI_DYNAMIC_AUDIO_SUPPRESSION:
            {
                const IVAS_PIDATA_DYNAMIC_SUPPRESSION *das = &cur->data.dynSuppression;
                fprintf( f_piDataOut, "%d,%d,%d,%d", das->speech, das->music, das->ambiance, das->sli );
            }
            break;
            case IVAS_PI_RESERVED13:
            case IVAS_PI_AUDIO_FOCUS_REQUEST:
            {

                if ( cur->data.focusRequest.availDirection )
                {
                    fprintf( f_piDataOut, "%f,%f,%f,%f", cur->data.focusRequest.direction.w, cur->data.focusRequest.direction.x, cur->data.focusRequest.direction.y, cur->data.focusRequest.direction.z );
                    if ( cur->data.focusRequest.availLevel )
                    {
                        fprintf( f_piDataOut, "," );
                    }
                }
                if ( cur->data.focusRequest.availLevel )
                {
                    fprintf( f_piDataOut, "%d", cur->data.focusRequest.flvl );
                }
            }
            break;
            case IVAS_PI_RESERVED15:
            case IVAS_PI_RESERVED27:
            case IVAS_PI_RESERVED28:
            case IVAS_PI_RESERVED29:
            case IVAS_PI_RESERVED30:
            case IVAS_PI_ISM_NUM:
            {
                fprintf( f_piDataOut, "%d", cur->data.ismNum.numObjects );
@@ -548,6 +490,72 @@ void IVAS_RTP_WriteExtPiData(
                }
            }
            break;
            case IVAS_PI_DIEGETIC_TYPE:
            {
                const bool *isDiegetic = cur->data.digeticIndicator.isDiegetic;
                fprintf( f_piDataOut, "%d,%d,%d,%d,%d", isDiegetic[0], isDiegetic[1], isDiegetic[2], isDiegetic[3], isDiegetic[4] );
            }
            break;
            case IVAS_PI_DYNAMIC_AUDIO_SUPPRESSION_INDICATION:
            {
                const IVAS_PIDATA_DYNAMIC_SUPPRESSION *das = &cur->data.dynSuppressionIndication;
                fprintf( f_piDataOut, "%d,%d,%d,%d", das->speech, das->music, das->ambiance, das->sli );
            }
            break;
            case IVAS_PI_AUDIO_FOCUS_INDICATION:
            {
                if ( cur->data.focusIndication.availDirection )
                {
                    fprintf( f_piDataOut, "%f,%f,%f,%f", cur->data.focusIndication.direction.w, cur->data.focusIndication.direction.x, cur->data.focusIndication.direction.y, cur->data.focusIndication.direction.z );
                    if ( cur->data.focusIndication.availLevel )
                    {
                        fprintf( f_piDataOut, "," );
                    }
                }
                if ( cur->data.focusIndication.availLevel )
                {
                    fprintf( f_piDataOut, "%d", cur->data.focusIndication.flvl );
                }
            }
            break;
            case IVAS_PI_PLAYBACK_DEVICE_ORIENTATION:
            {
                fprintf( f_piDataOut, "%f,%f,%f,%f", cur->data.playbackOrientation.orientation.w, cur->data.playbackOrientation.orientation.x, cur->data.playbackOrientation.orientation.y, cur->data.playbackOrientation.orientation.z );
            }
            break;
            case IVAS_PI_HEAD_ORIENTATION:
            {
                fprintf( f_piDataOut, "%f,%f,%f,%f", cur->data.headOrientation.orientation.w, cur->data.headOrientation.orientation.x, cur->data.headOrientation.orientation.y, cur->data.headOrientation.orientation.z );
            }
            break;
            case IVAS_PI_LISTENER_POSITION:
            {
                fprintf( f_piDataOut, "%f,%f,%f", cur->data.listnerPosition.position.x, cur->data.listnerPosition.position.y, cur->data.listnerPosition.position.z );
            }
            break;
            case IVAS_PI_DYNAMIC_AUDIO_SUPPRESSION_REQUEST:
            {
                const IVAS_PIDATA_DYNAMIC_SUPPRESSION *das = &cur->data.dynSuppressionRequest;
                fprintf( f_piDataOut, "%d,%d,%d,%d", das->speech, das->music, das->ambiance, das->sli );
            }
            break;
            case IVAS_PI_AUDIO_FOCUS_REQUEST:
            {

                if ( cur->data.focusRequest.availDirection )
                {
                    fprintf( f_piDataOut, "%f,%f,%f,%f", cur->data.focusRequest.direction.w, cur->data.focusRequest.direction.x, cur->data.focusRequest.direction.y, cur->data.focusRequest.direction.z );
                    if ( cur->data.focusRequest.availLevel )
                    {
                        fprintf( f_piDataOut, "," );
                    }
                }
                if ( cur->data.focusRequest.availLevel )
                {
                    fprintf( f_piDataOut, "%d", cur->data.focusRequest.flvl );
                }
            }
            break;
            case IVAS_PI_PI_LATENCY:
            {
                fprintf( f_piDataOut, "%d", cur->data.piLatency.latency );
@@ -578,6 +586,12 @@ void IVAS_RTP_WriteExtPiData(
                fprintf( f_piDataOut, "%f,%f", cur->data.ismEditDirection.azimuth, cur->data.ismEditDirection.elevation );
            }
            break;
            case IVAS_PI_RESERVED15:
            case IVAS_PI_RESERVED27:
            case IVAS_PI_RESERVED28:
            case IVAS_PI_RESERVED29:
            case IVAS_PI_RESERVED30:
            break;
#endif /* RTP_S4_251135_CR26253_0016_REV1 */
        }
        fprintf( f_piDataOut, "\n" );
+1 −1
Original line number Diff line number Diff line
@@ -1388,7 +1388,7 @@ static uint32_t parseSubsequentEByte( const IVAS_DATA_BUFFER *payload, uint32_t
            break;
#endif
            default: /* Reserved for future use - unhandled atm */
                assert( 0 );
            break;
        }
    }

+1 −2
Original line number Diff line number Diff line
@@ -437,7 +437,7 @@ static ivas_error packDynamicSuppression( const IVAS_PIDATA_GENERIC *piData, uin
        return IVAS_ERROR( IVAS_ERR_RTP_INSUFFICIENT_OUTPUT_SIZE, "Insufficient space in DAS PI data buffer" );
    }

    buffer[nBytes++] = ( IVAS_PI_DYNAMIC_AUDIO_SUPPRESSION ); /* PF/PM populated during final packing */
    buffer[nBytes++] = ( das->piDataType & MASK_5BIT ); /* PF/PM populated during final packing */
    buffer[nBytes++] = 2u;

    buffer[nBytes++] = ( das->speech ? PI_AD_SPEECH_INDICATED : 0 ) |
@@ -460,7 +460,6 @@ static ivas_error unpackDynamicSuppression( const uint8_t *buffer, uint32_t numD
    }

    das->size = sizeof( IVAS_PIDATA_AUDIO_DESC );
    das->piDataType = IVAS_PI_DYNAMIC_AUDIO_SUPPRESSION;
    das->speech = ( buffer[0] & PI_AD_SPEECH_INDICATED ) != 0;
    das->music = ( buffer[0] & PI_AD_MUSIC_INDICATED ) != 0;
    das->ambiance = ( buffer[0] & PI_AD_AMBIANCE_INDICATED ) != 0;
+11 −10
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@ typedef enum
    IVAS_PI_ISM_DISTANCE_ATTENUATION, /* distance attenuation for each object */
    IVAS_PI_ISM_DIRECTIVITY,          /* directivity of each object */
    IVAS_PI_DIEGETIC_TYPE,            /* digetic audio indication */
    IVAS_PI_RESERVED13,               /* reserved */
    IVAS_PI_DYNAMIC_AUDIO_SUPPRESSION_INDICATION,   /* audio suppression indication */
    IVAS_PI_AUDIO_FOCUS_INDICATION,   /* audio focus indication (direction in Quaternions and/or level) */
    IVAS_PI_RESERVED15,               /* reserved */

@@ -65,7 +65,7 @@ typedef enum
    IVAS_PI_PLAYBACK_DEVICE_ORIENTATION, /* orientation of the playback device in quaternions */
    IVAS_PI_HEAD_ORIENTATION,            /* head orientation of the listener in Quaternions */
    IVAS_PI_LISTENER_POSITION,           /* position of the listener in 3D space */
    IVAS_PI_DYNAMIC_AUDIO_SUPPRESSION,   /* receiver’s preference with respect to audio suppression */
    IVAS_PI_DYNAMIC_AUDIO_SUPPRESSION_REQUEST,   /* receiver’s preference with respect to audio suppression */
    IVAS_PI_AUDIO_FOCUS_REQUEST,         /* direction of interest for the listener in Quaternions and/or audio focus level */
    IVAS_PI_PI_LATENCY,                  /* round-trip latency for PI frames */
    IVAS_PI_R_ISM_ID,                    /* id of an object for editing */
@@ -314,9 +314,9 @@ typedef enum
    IVAS_FLVL_FOCUS_LEVEL_LEVEL_10, /* Audio focus level 10  */
    IVAS_FLVL_FOCUS_LEVEL_LEVEL_11, /* Audio focus level 11  */
    IVAS_FLVL_FOCUS_LEVEL_LEVEL_12, /* Audio focus level 12  */
    IVAS_FLVL_FOCUS_LEVEL_LEVEL_13, /* Audio focus level 13  */
    IVAS_FLVL_DEFAULT_AUDIO_FOCUS,  /* Default audio focus   */
    IVAS_FLVL_MAX_AUDIO_FOCUS,      /* Apply max audio focus */
    IVAS_FLVL_DEFAULT_AUDIO_FOCUS,  /* Default audio focus   */
    IVAS_FLVL_NO_PREFERENCE,        /* No preference / No indication  */
} IVAS_FLVL;

typedef struct
@@ -344,7 +344,7 @@ typedef struct
 */
typedef enum
{
    IVAS_SLI_NO_SUPPRESSION = 0,   /* Apply no suppression */
    IVAS_SLI_MIN_SUPPRESSION = 0,  /* Apply min suppression */
    IVAS_SLI_SUPPRESSION_LEVEL_1,  /* Suppression level 1  */
    IVAS_SLI_SUPPRESSION_LEVEL_2,  /* Suppression level 2  */
    IVAS_SLI_SUPPRESSION_LEVEL_3,  /* Suppression level 3  */
@@ -356,16 +356,16 @@ typedef enum
    IVAS_SLI_SUPPRESSION_LEVEL_9,  /* Suppression level 9  */
    IVAS_SLI_SUPPRESSION_LEVEL_10, /* Suppression level 10 */
    IVAS_SLI_SUPPRESSION_LEVEL_11, /* Suppression level 11 */
    IVAS_SLI_SUPPRESSION_LEVEL_12, /* Suppression level 12 */
    IVAS_SLI_SUPPRESSION_LEVEL_13, /* Suppression level 13 */
    IVAS_SLI_SUPPRESSION_LEVEL_14, /* Suppression level 14 */
    IVAS_SLI_MAX_SUPPRESSION,      /* Apply max suppression */
    IVAS_SLI_NO_SUPPRESSION,       /* Apply no suppression */
    IVAS_SLI_DEFAULT_SUPPRESSION,  /* Apply default suppression */
    IVAS_SLI_NO_PREFERENCE,        /* No preference / No indication */
} IVAS_SLI;

typedef struct
{
    size_t size;         /* sizeof(IVAS_PIDATA_DYNAMIC_SUPPRESSION)      */
    uint32_t piDataType; /* IVAS_PI_DYNAMIC_AUDIO_SUPPRESSION            */
    uint32_t piDataType; /* IVAS_PI_DYNAMIC_AUDIO_SUPPRESSION_REQUEST or IVAS_PI_DYNAMIC_AUDIO_SUPPRESSION_INDICATION */
    bool speech;         /* receiver's preference is voice/speech        */
    bool music;          /* receiver's preference is music               */
    bool ambiance;       /* receiver's preference is background ambiance */
@@ -452,12 +452,13 @@ typedef union
    IVAS_PIDATA_ISM_ATTENUATION ismAttenuation;
    IVAS_PIDATA_ISM_DIRECTIVITY ismDirectivity;
    IVAS_PIDATA_DIEGETIC digeticIndicator;
    IVAS_PIDATA_DYNAMIC_SUPPRESSION dynSuppressionIndication;
    IVAS_PIDATA_AUDIO_FOCUS focusIndication;

    IVAS_PIDATA_ORIENTATION playbackOrientation;
    IVAS_PIDATA_ORIENTATION headOrientation;
    IVAS_PIDATA_LISTENER_POSITION listnerPosition;
    IVAS_PIDATA_DYNAMIC_SUPPRESSION dynSuppression;
    IVAS_PIDATA_DYNAMIC_SUPPRESSION dynSuppressionRequest;
    IVAS_PIDATA_AUDIO_FOCUS focusRequest;
    IVAS_PIDATA_REVERSE_PI_LATENCY piLatency;
    IVAS_PIDATA_ISM_EDIT_ID ismEditId;
+13 −13
Original line number Diff line number Diff line
@@ -177,13 +177,13 @@ class PIDATAS(str, Enum):
    ISM_DISTANCE_ATTENUATION = "ISM_DISTANCE_ATTENUATION"
    ISM_DIRECTIVITY = "ISM_DIRECTIVITY"
    DIEGETIC_TYPE = "DIEGETIC_TYPE"
    RESERVED13 = "RESERVED13"
    DYNAMIC_AUDIO_SUPPRESSION_INDICATION = "DYNAMIC_AUDIO_SUPPRESSION_INDICATION"
    AUDIO_FOCUS_INDICATION = "AUDIO_FOCUS_INDICATION"
    RESERVED15 = "RESERVED15"
    PLAYBACK_DEVICE_ORIENTATION = "PLAYBACK_DEVICE_ORIENTATION"
    HEAD_ORIENTATION = "HEAD_ORIENTATION"
    LISTENER_POSITION = "LISTENER_POSITION"
    DYNAMIC_AUDIO_SUPPRESSION = "DYNAMIC_AUDIO_SUPPRESSION"
    DYNAMIC_AUDIO_SUPPRESSION_REQUEST = "DYNAMIC_AUDIO_SUPPRESSION_REQUEST"
    AUDIO_FOCUS_REQUEST = "AUDIO_FOCUS_REQUEST"
    PI_LATENCY = "PI_LATENCY"
    R_ISM_ID = "R_ISM_ID"
@@ -199,7 +199,7 @@ class PIDATAS(str, Enum):


class SUPPRESSION_LEVEL(int, Enum):
    SUPPRESSION_LEVEL_NONE = 0
    SUPPRESSION_LEVEL_MIN = 0
    SUPPRESSION_LEVEL_1 = 1
    SUPPRESSION_LEVEL_2 = 2
    SUPPRESSION_LEVEL_3 = 3
@@ -211,10 +211,10 @@ class SUPPRESSION_LEVEL(int, Enum):
    SUPPRESSION_LEVEL_9 = 9
    SUPPRESSION_LEVEL_10 = 10
    SUPPRESSION_LEVEL_11 = 11
    SUPPRESSION_LEVEL_12 = 12
    SUPPRESSION_LEVEL_13 = 13
    SUPPRESSION_LEVEL_14 = 14
    SUPPRESSION_LEVEL_MAX = 15
    SUPPRESSION_LEVEL_MAX = 12
    SUPPRESSION_LEVEL_NONE = 13
    SUPPRESSION_LEVEL_DEFAULT = 14
    SUPPRESSION_LEVEL_NO_PREFERENCE = 15


class AUDIO_FOCUS_LEVEL(int, Enum):
@@ -231,7 +231,7 @@ class AUDIO_FOCUS_LEVEL(int, Enum):
    AUDIO_FOCUS_LEVEL_10 = 10
    AUDIO_FOCUS_LEVEL_11 = 11
    AUDIO_FOCUS_LEVEL_12 = 12
    AUDIO_FOCUS_LEVEL_13 = 13
    AUDIO_FOCUS_LEVEL_MAX = 13
    AUDIO_FOCUS_LEVEL_DEFAULT = 14
    AUDIO_FOCUS_LEVEL_NO_PREFERENCE = 15

@@ -938,13 +938,13 @@ PIDataUnpacker = [
    unpackUnsupported,  # ISM_DISTANCE_ATTENUATION
    unpackUnsupported,  # ISM_DIRECTIVITY
    unpackDiegetic,  # DIEGETIC_TYPE
    unpackUnsupported,  # RESERVED13
    unpackDAS,  # DYNAMIC_AUDIO_SUPPRESSION_INDICATION
    unpackAudioFocus,  # AUDIO_FOCUS_INDICATION
    unpackUnsupported,  # RESERVED15
    unpackOrientation,  # PLAYBACK_DEVICE_ORIENTATION
    unpackOrientation,  # HEAD_ORIENTATION
    unpackPosition,  # LISTENER_POSITION
    unpackDAS,  # DYNAMIC_AUDIO_SUPPRESSION
    unpackDAS,  # DYNAMIC_AUDIO_SUPPRESSION_REQUEST
    unpackAudioFocus,  # AUDIO_FOCUS_REQUEST
    unpackUnsupported,  # PI_LATENCY
    unpackUnsupported,  # R_ISM_ID
@@ -973,13 +973,13 @@ PIDataPacker = [
    packUnsupported,  # ISM_DISTANCE_ATTENUATION
    packUnsupported,  # ISM_DIRECTIVITY
    packDiegetic,  # DIEGETIC_TYPE
    packUnsupported,  # RESERVED13
    packDAS,  # DYNAMIC_AUDIO_SUPPRESSION_INDICATION
    packAudioFocus,  # AUDIO_FOCUS_INDICATION
    packUnsupported,  # RESERVED15
    packOrientation,  # PLAYBACK_DEVICE_ORIENTATION
    packOrientation,  # HEAD_ORIENTATION
    packPosition,  # LISTENER_POSITION
    packDAS,  # DYNAMIC_AUDIO_SUPPRESSION
    packDAS,  # DYNAMIC_AUDIO_SUPPRESSION_REQUEST
    packAudioFocus,  # AUDIO_FOCUS_DIRECTION
    packUnsupported,  # PI_LATENCY
    packUnsupported,  # R_ISM_ID
@@ -1487,7 +1487,7 @@ class IvasRtp:
                        or piTypes == PIDATAS.R_ISM_POSITION
                    ):
                        data = POSITION(**dataDict)
                    elif piTypes == PIDATAS.DYNAMIC_AUDIO_SUPPRESSION:
                    elif "DYNAMIC_AUDIO_SUPPRESSION" in piTypes:
                        data = DYNAMIC_AUDIO_SUPPRESSION(**dataDict)
                    else:
                        assert False, "Unhandled PI Data"
Loading