Commit 38cd955b authored by norvell's avatar norvell
Browse files

Test efficient scaling of Quaternions

parent 472474a9
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -146,7 +146,7 @@ static uint32_t packQuaternion( IVAS_QUATERNION orientation, uint8_t *buffer )
        {
            continue;
        }
        lWord |= ( ( (int16_t) ( ( q[n] + 1 ) * 1023 * 0.5f ) & MASK_10BIT ) << ( 30 - k * 10 ) );
        lWord |= ( ( (int16_t) ( ( q[n] + 1 / sqrt( 2.0f ) ) * 1023 * sqrt( 2.0f ) ) & MASK_10BIT ) << ( 30 - k * 10 ) );
        k++;
    }

@@ -180,7 +180,7 @@ static ivas_error unpackQuaternion( const uint8_t *buffer, IVAS_QUATERNION *orie
            continue;
        }
        tmp = ( lWord >> ( 30 - k * 10 ) ) & MASK_10BIT;
        q[i] = tmp / 1023.0f * 2.0f - 1;
        q[i] = tmp / 1023.0f * sqrtf( 2.0f ) - 1 / sqrtf( 2.0f );
        qs += q[i] * q[i];
        k++;
    }
+2 −2
Original line number Diff line number Diff line
@@ -769,7 +769,7 @@ def unpackOrientations(bitstrm: ConstBitStream, piSize: int) -> list[ORIENTATION
            if i == max_q_idx:
                continue
            tmp = bitstrm.read(10).uint
            q[i] = (tmp / 1023.0) * 2.0 - 1.0
            q[i] = (tmp / 1023.0) * 2.0**0.5 - 1.0 / (2.0**0.5)
            qs = qs + q[i]**2
        
        q[max_q_idx] = (1 - qs)**0.5
@@ -798,7 +798,7 @@ def packOrientations(bitstrm: BitStream, data: any):
        for i in range(0,4):
            if i == max_q_idx:
                continue
            bitstrm.append(f"uint:10={(int)((q[i]+1)*1023*1/2)}")
            bitstrm.append(f"uint:10={(int)((q[i]+1/(2**0.5))*1023*(2**0.5))}")


def unpackPositions(bitstrm: ConstBitStream, piSize: int) -> list[POSITION]: