Loading apps/decoder.c +77 −12 Original line number Diff line number Diff line Loading @@ -1839,6 +1839,10 @@ static ivas_error decodeG192( IVAS_VECTOR3 Pos; int16_t vec_pos_update, vec_pos_len; #ifdef SPLIT_REND_WITH_HEAD_ROT IVAS_SPLIT_REND_BITS splitRendBits; SplitFileReadWrite *hSplitRendFileReadWrite; #endif for ( i = 0; i < IVAS_MAX_NUM_OBJECTS; ++i ) { Loading Loading @@ -1901,6 +1905,15 @@ static ivas_error decodeG192( nOutSamples = (int16_t) ( arg.output_Fs / 1000 * DEFAULT_FETCH_FRAMESIZE_MS ); vec_pos_len = 1; } #ifdef SPLIT_REND_WITH_HEAD_ROT splitRendBits.bits_buf = splitRendBitsBuf; splitRendBits.bits_read = 0; splitRendBits.bits_written = 0; splitRendBits.buf_len = MAX_SPLIT_REND_BITS_BUFFER_SIZE_IN_BYTES; hSplitRendFileReadWrite = NULL; #endif /*------------------------------------------------------------------------------------------* * Loop for every packet (frame) of bitstream data * - Read the bitstream packet Loading Loading @@ -1951,11 +1964,25 @@ static ivas_error decodeG192( { IVAS_QUATERNION Quaternion; #ifdef SPLIT_REND_WITH_HEAD_ROT if ( headRotReader == NULL ) { Quaternion.w = -3.0f; Quaternion.x = 0.0f; Quaternion.y = 0.0f; Quaternion.z = 0.0f; } else { #endif if ( ( error = HeadRotationFileReading( headRotReader, &Quaternion, &Pos ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), RotationFileReader_getFilePath( headRotReader ) ); goto cleanup; } #ifdef SPLIT_REND_WITH_HEAD_ROT } #endif if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternion, Pos Loading Loading @@ -2048,6 +2075,8 @@ static ivas_error decodeG192( goto cleanup; } } /* TODO(sgi): Get split bitstream here */ error = IVAS_DEC_GetSamples( hIvasDec, nSamplesToRender, pcmBuf + nOutChannels * nSamplesRendered, &nSamplesRendered_loop, &needNewFrame ); nSamplesRendered += nSamplesRendered_loop; nSamplesToRender -= nSamplesRendered_loop; Loading Loading @@ -2092,7 +2121,8 @@ static ivas_error decodeG192( &nOutChannels, &numObj #ifdef SPLIT_REND_WITH_HEAD_ROT ,NULL /* TODO(sgi): see #else branch for reference */ , &hSplitRendFileReadWrite #endif ); if ( error != IVAS_ERR_OK ) Loading @@ -2109,6 +2139,28 @@ static ivas_error decodeG192( /* Write current frame */ if ( decodedGoodFrame ) { #ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED ) ) { if ( split_rend_write_bitstream_to_file( hSplitRendFileReadWrite, splitRendBits.bits_buf, &splitRendBits.bits_read, &splitRendBits.bits_written, splitRendBits.codec, splitRendBits.pose_correction ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to write to bitstream file!\n" ); goto cleanup; } } else { if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) ) { if ( split_rend_write_bitstream_to_file( hSplitRendFileReadWrite, splitRendBits.bits_buf, &splitRendBits.bits_read, &splitRendBits.bits_written, splitRendBits.codec, splitRendBits.pose_correction ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to write to bitstream file!\n" ); goto cleanup; } } #endif if ( delayNumSamples < nOutSamples ) { if ( ( error = AudioFileWriter_write( afWriter, &pcmBuf[delayNumSamples * nOutChannels], nOutSamples * nOutChannels - ( delayNumSamples * nOutChannels ) ) ) != IVAS_ERR_OK ) Loading @@ -2122,6 +2174,9 @@ static ivas_error decodeG192( { delayNumSamples -= nOutSamples; } #ifdef SPLIT_REND_WITH_HEAD_ROT } #endif } /* Write ISm metadata to external file(s) */ Loading Loading @@ -2370,11 +2425,18 @@ static ivas_error decodeG192( /* add zeros at the end to have equal length of synthesized signals */ memset( pcmBuf, 0, delayNumSamples_orig[0] * nOutChannels * sizeof( int16_t ) ); #ifdef SPLIT_REND_WITH_HEAD_ROT if ( afWriter != NULL ) { #endif if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, delayNumSamples_orig[0] * nOutChannels ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError writing output file: %s\n", ivas_error_to_string( error ) ); goto cleanup; } #ifdef SPLIT_REND_WITH_HEAD_ROT } #endif /*------------------------------------------------------------------------------------------* * Close files and deallocate resources Loading @@ -2384,6 +2446,9 @@ static ivas_error decodeG192( cleanup: #ifdef SPLIT_REND_WITH_HEAD_ROT split_rend_reader_writer_close( &hSplitRendFileReadWrite ); #endif AudioFileWriter_close( &afWriter ); MasaFileWriter_close( &masaWriter ); #ifdef DEBUGGING Loading Loading
apps/decoder.c +77 −12 Original line number Diff line number Diff line Loading @@ -1839,6 +1839,10 @@ static ivas_error decodeG192( IVAS_VECTOR3 Pos; int16_t vec_pos_update, vec_pos_len; #ifdef SPLIT_REND_WITH_HEAD_ROT IVAS_SPLIT_REND_BITS splitRendBits; SplitFileReadWrite *hSplitRendFileReadWrite; #endif for ( i = 0; i < IVAS_MAX_NUM_OBJECTS; ++i ) { Loading Loading @@ -1901,6 +1905,15 @@ static ivas_error decodeG192( nOutSamples = (int16_t) ( arg.output_Fs / 1000 * DEFAULT_FETCH_FRAMESIZE_MS ); vec_pos_len = 1; } #ifdef SPLIT_REND_WITH_HEAD_ROT splitRendBits.bits_buf = splitRendBitsBuf; splitRendBits.bits_read = 0; splitRendBits.bits_written = 0; splitRendBits.buf_len = MAX_SPLIT_REND_BITS_BUFFER_SIZE_IN_BYTES; hSplitRendFileReadWrite = NULL; #endif /*------------------------------------------------------------------------------------------* * Loop for every packet (frame) of bitstream data * - Read the bitstream packet Loading Loading @@ -1951,11 +1964,25 @@ static ivas_error decodeG192( { IVAS_QUATERNION Quaternion; #ifdef SPLIT_REND_WITH_HEAD_ROT if ( headRotReader == NULL ) { Quaternion.w = -3.0f; Quaternion.x = 0.0f; Quaternion.y = 0.0f; Quaternion.z = 0.0f; } else { #endif if ( ( error = HeadRotationFileReading( headRotReader, &Quaternion, &Pos ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), RotationFileReader_getFilePath( headRotReader ) ); goto cleanup; } #ifdef SPLIT_REND_WITH_HEAD_ROT } #endif if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternion, Pos Loading Loading @@ -2048,6 +2075,8 @@ static ivas_error decodeG192( goto cleanup; } } /* TODO(sgi): Get split bitstream here */ error = IVAS_DEC_GetSamples( hIvasDec, nSamplesToRender, pcmBuf + nOutChannels * nSamplesRendered, &nSamplesRendered_loop, &needNewFrame ); nSamplesRendered += nSamplesRendered_loop; nSamplesToRender -= nSamplesRendered_loop; Loading Loading @@ -2092,7 +2121,8 @@ static ivas_error decodeG192( &nOutChannels, &numObj #ifdef SPLIT_REND_WITH_HEAD_ROT ,NULL /* TODO(sgi): see #else branch for reference */ , &hSplitRendFileReadWrite #endif ); if ( error != IVAS_ERR_OK ) Loading @@ -2109,6 +2139,28 @@ static ivas_error decodeG192( /* Write current frame */ if ( decodedGoodFrame ) { #ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED ) ) { if ( split_rend_write_bitstream_to_file( hSplitRendFileReadWrite, splitRendBits.bits_buf, &splitRendBits.bits_read, &splitRendBits.bits_written, splitRendBits.codec, splitRendBits.pose_correction ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to write to bitstream file!\n" ); goto cleanup; } } else { if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) ) { if ( split_rend_write_bitstream_to_file( hSplitRendFileReadWrite, splitRendBits.bits_buf, &splitRendBits.bits_read, &splitRendBits.bits_written, splitRendBits.codec, splitRendBits.pose_correction ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to write to bitstream file!\n" ); goto cleanup; } } #endif if ( delayNumSamples < nOutSamples ) { if ( ( error = AudioFileWriter_write( afWriter, &pcmBuf[delayNumSamples * nOutChannels], nOutSamples * nOutChannels - ( delayNumSamples * nOutChannels ) ) ) != IVAS_ERR_OK ) Loading @@ -2122,6 +2174,9 @@ static ivas_error decodeG192( { delayNumSamples -= nOutSamples; } #ifdef SPLIT_REND_WITH_HEAD_ROT } #endif } /* Write ISm metadata to external file(s) */ Loading Loading @@ -2370,11 +2425,18 @@ static ivas_error decodeG192( /* add zeros at the end to have equal length of synthesized signals */ memset( pcmBuf, 0, delayNumSamples_orig[0] * nOutChannels * sizeof( int16_t ) ); #ifdef SPLIT_REND_WITH_HEAD_ROT if ( afWriter != NULL ) { #endif if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, delayNumSamples_orig[0] * nOutChannels ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError writing output file: %s\n", ivas_error_to_string( error ) ); goto cleanup; } #ifdef SPLIT_REND_WITH_HEAD_ROT } #endif /*------------------------------------------------------------------------------------------* * Close files and deallocate resources Loading @@ -2384,6 +2446,9 @@ static ivas_error decodeG192( cleanup: #ifdef SPLIT_REND_WITH_HEAD_ROT split_rend_reader_writer_close( &hSplitRendFileReadWrite ); #endif AudioFileWriter_close( &afWriter ); MasaFileWriter_close( &masaWriter ); #ifdef DEBUGGING Loading