Fixed missing copyright headers. Fixed exceeding 120 columns. Fixed #include Fixed if conditional style. Fixed C++ reference symbol placement.
Showing the changes to plugins/opusCodec/src/OpusDecoder.cpp (1 of 4 files). Show all
Unified · Split
| @@ -1,3 +1,13 @@ | |||
| 1 | // | ||
| 2 | // OpusCodecManager.h | ||
| 3 | // plugins/opusCodec/src | ||
| 4 | // | ||
| 5 | // Copyright 2020 Dale Glass | ||
| 6 | // | ||
| 7 | // Distributed under the Apache License, Version 2.0. | ||
| 8 | // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html | ||
| 9 | // | ||
| 10 | |||
| 1 | #include <PerfStat.h> | 11 | #include <PerfStat.h> |
| 2 | #include <QtCore/QLoggingCategory> | 12 | #include <QtCore/QLoggingCategory> |
| 3 | #include <AudioConstants.h> | 13 | #include <AudioConstants.h> |
| @@ -60,25 +70,30 @@ void AthenaOpusDecoder::decode(const QByteArray &encodedBuffer, QByteArray &deco · 56 unmodified lines | |||
| 60 | PerformanceTimer perfTimer("AthenaOpusDecoder::decode"); | 70 | PerformanceTimer perfTimer("AthenaOpusDecoder::decode"); |
| 61 | 71 | ||
| 62 | // The audio system encodes and decodes always in fixed size chunks | 72 | // The audio system encodes and decodes always in fixed size chunks |
| 63 | int buffer_size = AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * static_cast<int>(sizeof(int16_t)) * _opus_num_channels; | 73 | int buffer_size = AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * static_cast<int>(sizeof(int16_t)) |
| 74 | * _opus_num_channels; | ||
| 64 | 75 | ||
| 65 | decodedBuffer.resize( buffer_size ); | 76 | decodedBuffer.resize( buffer_size ); |
| 66 | int buffer_frames = decodedBuffer.size() / _opus_num_channels / static_cast<int>(sizeof( opus_int16 )); | 77 | int buffer_frames = decodedBuffer.size() / _opus_num_channels / static_cast<int>(sizeof( opus_int16 )); |
| 67 | 78 | ||
| 68 | qCDebug(decoder) << "Opus decode: encodedBytes = " << encodedBuffer.length() << "; decodedBufferBytes = " << decodedBuffer.size() << "; frameCount = " << buffer_frames; | 79 | qCDebug(decoder) << "Opus decode: encodedBytes = " << encodedBuffer.length() << "; decodedBufferBytes = " |
| 69 | int decoded_frames = opus_decode( _decoder, reinterpret_cast<const unsigned char*>(encodedBuffer.data()), encodedBuffer.length(), reinterpret_cast<opus_int16*>(decodedBuffer.data()), buffer_frames, 0 ); | 80 | << decodedBuffer.size() << "; frameCount = " << buffer_frames; |
| 81 | int decoded_frames = opus_decode( _decoder, reinterpret_cast<const unsigned char*>(encodedBuffer.data()), | ||
| 82 | encodedBuffer.length(), reinterpret_cast<opus_int16*>(decodedBuffer.data()), buffer_frames, 0 ); | ||
| 70 | 83 | ||
| 71 | if ( decoded_frames >= 0 ) { | 84 | if ( decoded_frames >= 0 ) { |
| 72 | //qCDebug(decoder) << "Decoded " << decoded_frames << " Opus frames, " << buffer_frames << " expected"; | 85 | //qCDebug(decoder) << "Decoded " << decoded_frames << " Opus frames, " << buffer_frames << " expected"; |
| 73 | 86 | ||
| 74 | if ( decoded_frames < buffer_frames ) { | 87 | if ( decoded_frames < buffer_frames ) { |
| 75 | qCWarning(decoder) << "Opus decoder returned " << decoded_frames << ", but " << buffer_frames << " were expected!"; | 88 | qCWarning(decoder) << "Opus decoder returned " << decoded_frames << ", but " << buffer_frames |
| 89 | << " were expected!"; | ||
| 76 | 90 | ||
| 77 | int start = decoded_frames * static_cast<int>(sizeof(int16_t)) * _opus_num_channels; | 91 | int start = decoded_frames * static_cast<int>(sizeof(int16_t)) * _opus_num_channels; |
| 78 | memset( &decodedBuffer.data()[start], 0, static_cast<size_t>(decodedBuffer.length() - start)); | 92 | memset( &decodedBuffer.data()[start], 0, static_cast<size_t>(decodedBuffer.length() - start)); |
| 79 | } else if ( decoded_frames > buffer_frames ) { | 93 | } else if ( decoded_frames > buffer_frames ) { |
| 80 | // This should never happen | 94 | // This should never happen |
| 81 | qCCritical(decoder) << "Opus decoder returned " << decoded_frames << ", but only " << buffer_frames << " were expected! Buffer overflow!?"; | 95 | qCCritical(decoder) << "Opus decoder returned " << decoded_frames << ", but only " << buffer_frames |
| 96 | << " were expected! Buffer overflow!?"; | ||
| 82 | } | 97 | } |
| 83 | } else { | 98 | } else { |
| 84 | qCCritical(decoder) << "Failed to decode audio: " << error_to_string(decoded_frames); | 99 | qCCritical(decoder) << "Failed to decode audio: " << error_to_string(decoded_frames); |
| @@ -93,23 +108,28 @@ void AthenaOpusDecoder::lostFrame(QByteArray &decodedBuffer) · 8 unmodified lines | |||
| 93 | 108 | ||
| 94 | PerformanceTimer perfTimer("AthenaOpusDecoder::lostFrame"); | 109 | PerformanceTimer perfTimer("AthenaOpusDecoder::lostFrame"); |
| 95 | 110 | ||
| 96 | int buffer_size = AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * static_cast<int>(sizeof(int16_t)) * _opus_num_channels; | 111 | int buffer_size = AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * static_cast<int>(sizeof(int16_t)) |
| 112 | * _opus_num_channels; | ||
| 97 | decodedBuffer.resize( buffer_size ); | 113 | decodedBuffer.resize( buffer_size ); |
| 98 | int buffer_frames = decodedBuffer.size() / _opus_num_channels / static_cast<int>(sizeof( opus_int16 )); | 114 | int buffer_frames = decodedBuffer.size() / _opus_num_channels / static_cast<int>(sizeof( opus_int16 )); |
| 99 | 115 | ||
| 100 | int decoded_frames = opus_decode( _decoder, nullptr, 0, reinterpret_cast<opus_int16*>(decodedBuffer.data()), buffer_frames, 1 ); | 116 | int decoded_frames = opus_decode( _decoder, nullptr, 0, reinterpret_cast<opus_int16*>(decodedBuffer.data()), |
| 117 | buffer_frames, 1 ); | ||
| 101 | 118 | ||
| 102 | if ( decoded_frames >= 0 ) { | 119 | if ( decoded_frames >= 0 ) { |
| 103 | //qCDebug(decoder) << "Produced " << decoded_frames << " opus frames from a lost frame, " << buffer_frames << " expected"; | 120 | //qCDebug(decoder) << "Produced " << decoded_frames << " opus frames from a lost frame, " << buffer_frames |
| 121 | // << " expected"; | ||
| 104 | 122 | ||
| 105 | if ( decoded_frames < buffer_frames ) { | 123 | if ( decoded_frames < buffer_frames ) { |
| 106 | qCWarning(decoder) << "Opus decoder returned " << decoded_frames << ", but " << buffer_frames << " were expected!"; | 124 | qCWarning(decoder) << "Opus decoder returned " << decoded_frames << ", but " << buffer_frames |
| 125 | << " were expected!"; | ||
| 107 | 126 | ||
| 108 | int start = decoded_frames * static_cast<int>(sizeof(int16_t)) * _opus_num_channels; | 127 | int start = decoded_frames * static_cast<int>(sizeof(int16_t)) * _opus_num_channels; |
| 109 | memset( &decodedBuffer.data()[start], 0, static_cast<size_t>(decodedBuffer.length() - start)); | 128 | memset( &decodedBuffer.data()[start], 0, static_cast<size_t>(decodedBuffer.length() - start)); |
| 110 | } else if ( decoded_frames > buffer_frames ) { | 129 | } else if ( decoded_frames > buffer_frames ) { |
| 111 | // This should never happen | 130 | // This should never happen |
| 112 | qCCritical(decoder) << "Opus decoder returned " << decoded_frames << ", but only " << buffer_frames << " were expected! Buffer overflow!?"; | 131 | qCCritical(decoder) << "Opus decoder returned " << decoded_frames << ", but only " << buffer_frames |
| 132 | << " were expected! Buffer overflow!?"; | ||
| 113 | } | 133 | } |
| 114 | } else { | 134 | } else { |
| 115 | qCCritical(decoder) << "Failed to decode lost frame: " << error_to_string(decoded_frames); | 135 | qCCritical(decoder) << "Failed to decode lost frame: " << error_to_string(decoded_frames); |