function [SNR, bitrate, compression] = demoAAC3(fNameIn, fNameOut, frameAACoded) %Function that demonstrates usage of the level 3 code % Usage [SNR, bitrate, compression] = demoAAC3(fNameIn, fNameOut, frameAACoded), where: % Inputs % - fNameIn is the filename and path of the file to encode % - fNameOut is the filename and path of the wav file that will be % written after decoding % - frameAACoded is the filename and path of the mat file that will % be written after encoding % % Output % - SNR is the signal to noise ration computed after successively % encoding and decoding the audio signal % - bitrate is the bits per second % - compression is the ratio of the bitrate before the encoding to % the bitrate after it AACSeq3 = AACoder3(fNameIn, frameAACoded); totalSize = 0; for frameIndex = 1:length(AACSeq3) totalSize = totalSize + 2; % frameType totalSize = totalSize + 2 * 4; % TNS coefficients totalSize = totalSize + length(AACSeq3(frameIndex).chl.G) * 4; totalSize = totalSize + length(AACSeq3(frameIndex).chr.G) * 4; totalSize = totalSize + length(AACSeq3(frameIndex).chl.sfc); totalSize = totalSize + length(AACSeq3(frameIndex).chr.sfc); totalSize = totalSize + length(AACSeq3(frameIndex).chl.stream); totalSize = totalSize + length(AACSeq3(frameIndex).chr.stream); end decodedAudio = iAACoder3(AACSeq3, fNameOut); bitrate = totalSize / (length(decodedAudio) / 48000); [audioData, ~] = audioread(fNameIn); compression = (length(audioData) * 64) / totalSize; snr(audioData(1025:length(decodedAudio)-1024, 1), audioData(1025:length(decodedAudio)-1024, 1) - decodedAudio(1025:end-1024, 1)) snr(audioData(1025:length(decodedAudio)-1024, 2), audioData(1025:length(decodedAudio)-1024, 2) - decodedAudio(1025:end-1024, 2)) SNR = snr(audioData(1025:length(decodedAudio)-1024, :), audioData(1025:length(decodedAudio)-1024, :) - decodedAudio(1025:end-1024, :)); end