clear all;

% filepath = 'D:\Audio_Solutions\IN_EAR\Recording_samples\20190213_longTest';title_name = 'Fit';figurenum = 11;
% filepath = 'D:\Audio_Solutions\IN_EAR\Recording_samples\20190212_Dump_TipSize\±è¼±¹Ì';title_name = 'Fit sizes ´ëÁß¼Ò (±è¼±¹Ì)';figurenum = 22;
% filepath = 'D:\Audio_Solutions\IN_EAR\Recording_samples\20190212_Dump_TipSize\Á¶±âÈ£';title_name = 'Fit sizes ´ëÁß¼Ò (Á¶±âÈ£)';figurenum = 33;
% filepath = 'D:\Audio_Solutions\IN_EAR\Recording_samples\20190212_Dump_TipSize\ÀåÁÖÈñ';title_name = 'Fit sizes ¼Ò (ÀåÁÖÈñ)';figurenum = 44;
% filepath = 'D:\Audio_Solutions\IN_EAR\Recording_samples\20190212_Dump_TipSize\¾çÇöÃ¶';title_name = 'Fit sizes ´ëÁß¼Ò (¾çÇöÃ¶)';figurenum = 55;
% filepath = 'D:\Audio_Solutions\IN_EAR\Recording_samples\20190212_Dump_TipSize\±ÝÁ¾¸ð';title_name = 'Fit sizes Áß¼Ò (±ÝÁ¾¸ð)';figurenum = 66;
% filepath = 'D:\Audio_Solutions\IN_EAR\Recording_samples\20190212_Dump_TipSize\ÀÌ¸íÈ£';title_name = 'Fit sizes ´ëÁß¼Ò (ÀÌ¸íÈ£)';figurenum = 77;
filepath = 'D:\Audio_Solutions\IN_EAR\Recording_samples\20190124_SAC';title_name = 'Fit (R5 ÁöÇÏ ½Ä´ç)';figurenum = 88;
% filepath = 'D:\Audio_Solutions\IN_EAR\Recording_samples\20190213_audio_dump\ÀÌ»óÈÆ';title_name = 'Fit ´ë (ÀÌ»óÈÆ)';figurenum = 88;

%---------- Mixing Data
% fid_Mixing   = fopen([filepath 'A_dbg_Mixing_music_r49.txt']);
[file_name, file_path]  = uigetfile([filepath '\debug\A_dbg_Mixing_*.txt'],'Select debug file');
fid_Mixing              = fopen([file_path file_name]);

dataCell_Mixing         = textscan(fid_Mixing, '%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d');

data_Outer_noise_snr_LF = double(dataCell_Mixing{1}(1:end-1));
data_Outer_noise_snr_HF = double(dataCell_Mixing{2}(1:end-1));
data_w_bwe              = double(dataCell_Mixing{3}(1:end-1)) / (2^15);
data_w_outer            = double(dataCell_Mixing{4}(1:end-1)) / (2^15);
data_w_inner            = double(dataCell_Mixing{5}(1:end-1)) / (2^15);
data_HPFouter           = double(dataCell_Mixing{6}(1:end-1));
data_mixing_state       = double(dataCell_Mixing{7}(1:end-1)) / 5000;
BWE_pwr_in_dB           = double(dataCell_Mixing{8}(1:end-1));
data_vad                = double(dataCell_Mixing{9}(1:end-1));
nonstationary_flag      = double(dataCell_Mixing{10}(1:end-1));
% phi_mean_low_curr_f     = double(dataCell_Mixing{11}(1:end-1));
% phi_mean_low_sm_f       = double(dataCell_Mixing{12}(1:end-1));
phi_mean_low_curr       = double(dataCell_Mixing{11}(1:end-1));
phi_mean_low_sm         = double(dataCell_Mixing{12}(1:end-1));
FitUnFit_state_phi      = double(dataCell_Mixing{13}(1:end-1));
eng_mean_high           = double(dataCell_Mixing{14}(1:end-1));
eng_mean_low            = double(dataCell_Mixing{15}(1:end-1));
FitUnFit_state_eng_high = double(dataCell_Mixing{16}(1:end-1));
FitUnFit_state_eng_low  = double(dataCell_Mixing{17}(1:end-1));
UnFit_ON                = double(dataCell_Mixing{18}(1:end-1));
UnFit_flag              = double(dataCell_Mixing{19}(1:end-1));
Flag_RxVAD_AEC          = double(dataCell_Mixing{20}(1:end-1));
Thr_FitUnFit_leakage_low = double(dataCell_Mixing{21}(1:end-1));
Thr_FitUnFit_leakage_high= double(dataCell_Mixing{22}(1:end-1));
Thr_FitUnFit_InnerOcclusion_low = double(dataCell_Mixing{23}(1:end-1));
Thr_FitUnFit_InnerOcclusion_high= double(dataCell_Mixing{24}(1:end-1));
lowhigh_ratio = double(dataCell_Mixing{25}(1:end-1));
FitUnFit_LowHighRatio= double(dataCell_Mixing{26}(1:end-1));

%---------- Audio Data
% audio_data              = audioread('Seq002_DB001_ECNS_Fitted_music_outer_3.wav');    
[file_name, file_path]  = uigetfile([filepath '\*.pcm'], 'Select outer audio');
% audio_data              = audioread([file_path file_name]);  
% % audio_data              = audio_data(1:end-(512-Nfrmola_wb));
fid                     = fopen([file_path file_name]);
audio_data              = fread(fid, 'short')/32768;

Nfrm_wb = 512;
Nfrmola_wb = 192;
L	= Nfrm_wb - Nfrmola_wb; % shift length of the segmentation process
win_wb         = ones(Nfrm_wb, 1);
win_wb(1:Nfrmola_wb)      = sin(pi*((0:(Nfrmola_wb-1))'+0.5)./2./Nfrmola_wb);
win_wb(L+1:Nfrmola_wb+L)  = win_wb(Nfrmola_wb:-1:1);

[S,F,T] = spectrogram(audio_data,win_wb,Nfrmola_wb,512,16000);

fclose all;
%%
figure(figurenum);clf;set(gcf, 'position', [138 522 1698 470]);
% subplot(211);hold all;grid on;
% % plot(phi_mean_low_curr_f);hold all;grid on;
% plot(phi_mean_low_curr / (2^31));
% % plot(phi_mean_low_sm_f);
% plot(phi_mean_low_sm / (2^31));
% plot(FitUnFit_state_phi, 'g', 'linewidth', 3);
% plot(0.92 * ones(length(phi_mean_low_curr), 1));
% plot(0.6 * ones(length(phi_mean_low_curr), 1));
% ylim([0 1]);xlim([1 length(phi_mean_low_curr)]);
% title('coherence');

% subplot(212);
hold all;grid on;
plot(log10(eng_mean_high));
plot(log10(Thr_FitUnFit_leakage_high), 'c');
plot(log10(Thr_FitUnFit_leakage_low), 'c');

plot(log10(eng_mean_low), 'r');
plot(log10(Thr_FitUnFit_InnerOcclusion_high), 'color', [0.8 0.6 0.2]);
plot(log10(Thr_FitUnFit_InnerOcclusion_low), 'color', [0.8 0.6 0.2]);

plot(1.5*FitUnFit_state_eng_high, 'linewidth', 2);
plot((1-FitUnFit_state_eng_low), 'linewidth', 2);
plot(1*UnFit_ON, 'color', [0.7 0.2 0.3], 'linewidth', 3);
plot(0.4*UnFit_flag, 'k', 'linewidth', 2);
% plot(log10(eng_mean_high./eng_mean_low));

title(title_name);
xlim([1 length(eng_mean_high)]);
legend('energy (leakage)', 'leakage threshold(high)', 'leakage threshold(low)',...
    'energy (occlusion)', 'occlusion threshold(high)', 'occlusion threshold(low)',...
    'FitUnFit\_state\_eng (leakage)', 'FitUnFit\_state\_eng (occlusion)',...
    'UnFit\_ON', 'UnFit\_flag',...
    'location', 'NorthWest');
ylim([0 8]);

% subplot(313);hold all;grid on;
% plot(log10(eng_mean_low));
% plot(4.7*ones(length(eng_mean_low),1));
% xlim([1 length(eng_mean_low)]);
% plot(FitUnFit_state_eng_low, 'g', 'linewidth', 1);
% plot(UnFit_ON, 'm', 'linewidth', 3);
% plot(UnFit_flag, 'k', 'linewidth', 2);
% title('Inner energy (low)');
% legend('energy', 'threshold', 'FitUnFit\_state\_eng', 'UnFit\_ON', 'UnFit\_flag');


%% RxVAD wav write
data_Flag_RxVAD_AEC = repmat(Flag_RxVAD_AEC', 320, 1);
data_Flag_RxVAD_AEC = reshape(data_Flag_RxVAD_AEC, [], 1);

audiowrite([filepath '\debug\RxVAD_result.wav'], data_Flag_RxVAD_AEC, 16000);

%% inner energy wav write
data_inner_energy = log10(eng_mean_high) / 6;
data_inner_energy(find(data_inner_energy == -Inf)) = 0;
data_inner_energy = repmat(data_inner_energy', 320, 1);
data_inner_energy = reshape(data_inner_energy, [], 1);

audiowrite([filepath '\debug\InnerEnergy_result.wav'], data_inner_energy, 16000);


%% plot
% %----------- Threshold
% Thr_Outer_noise_snr_LF = 2500;
% THr_Outer_noise_snr1 = 2300;    THr_Outer_noise_snr1_low = 2100;
% THr_Outer_noise_snr2 = 2800;    THr_Outer_noise_snr2_low = 2600;
% THr_Outer_noise_snr3 = 3300;    THr_Outer_noise_snr3_low = 3100;
% THr_Outer_noise_snr4 = 4000;    THr_Outer_noise_snr4_low = 3800;
% 
% figure(4);clf;
% T = 1:length(T);
% 
% subplot(511);imagesc(T, F, 20*log10(abs(S)),[-40 10]);colormap('jet');set(gca, 'ydir', 'normal');
% 
% subplot(512);plot(T, 10*log10(data_Outer_noise_snr_LF),'linewidth', 2);hold all;grid on;xlim([0 T(end)]);xlabel('Outer\_noise\_snr\_LF');
%              plot(T, 10*log10(THr_Outer_noise_snr1)*ones(1,length(T)), 'r');
%              plot(T, 10*log10(THr_Outer_noise_snr1_low)*ones(1,length(T)), 'g');
%              plot(T, 10*log10(THr_Outer_noise_snr2)*ones(1,length(T)), 'r');
%              plot(T, 10*log10(THr_Outer_noise_snr2_low)*ones(1,length(T)), 'g');
%              plot(T, 10*log10(THr_Outer_noise_snr3)*ones(1,length(T)), 'r');
%              plot(T, 10*log10(THr_Outer_noise_snr3_low)*ones(1,length(T)), 'g');
%              plot(T, 10*log10(THr_Outer_noise_snr4)*ones(1,length(T)), 'r');
%              plot(T, 10*log10(THr_Outer_noise_snr4_low)*ones(1,length(T)), 'g');
%              ylim([33 37]);
% subplot(513);plot(T, 10*log10(data_Outer_noise_snr_HF),'linewidth', 3);hold all;grid on;xlim([0 T(end)]);xlabel('Outer\_noise\_snr\_HF');
% %              plot(T, 10*log10(data_Outer_noise_snr_HF_shortterm),'linewidth', 2);
%              plot(T, 10*log10(Noise_Diff));  
%              ylim([30 37]);%xlim([8000 18000]+1000);           
% subplot(514);plot(T, data_w_bwe,'linewidth', 2);hold all;grid on;xlim([0 T(end)]);xlabel('w\_bwe');
%              plot(T, data_w_outer,'linewidth', 5);
%              plot(T, data_w_inner,'linewidth', 2);
%              plot(T, data_HPFouter,'linewidth', 2);
%              ylim([-0.5 1.5]);%xlim([8000 18000]+1000); 
%              yyaxis right;plot(T, data_mixing_state,'linewidth', 2);  ylim([-3 5]);           
%              legend('w\_bwe', 'w\_outer', 'w\_inner', 'HPFouter', 'mixing\_state','Location','west');
% % subplot(515);plot(T, (BWE_pwr_in_dB),'linewidth', 2);hold all;grid on;xlim([0 T(end)]);xlabel('Outer\_noise\_snr\_HF');
% %              plot(T, (36*(2^8))*ones(1,length(T)), 'r');
% % %             plot(T, data_vad*4000,'linewidth', 2);legend('inner energy', 'vad');
% %             xlim([0 1000]);
%             
% % subplot(515);plot(T, 10*log10(Noise_Diff));
% % subplot(515);plot(T, data_Outer_noise_snr_HF);hold all;grid on;
% % subplot(515);plot(T, data_Outer_noise_snr_HF_shortterm);
% subplot(515);plot(T, (Noise_Diff));
% hold all;plot(T, nonstationary_flag*100);
% xlim([0 T(end)]);hold all;grid on;
% % ylim([0 50]);

















