function show_landmarks(D,SR,L,T,C)
% show_landmarks(D,SR,L[,T,C])
%    Display the landmarks superimposed on a spectrogram.
%    Rows of L are landmark pairs <t1 f1 f2 dt>
%    T is optional 2-element time range selector (empty for all)
%    C is optional graphic mode specifier (defaults to 'o-r')
%    If D is 2-D, it is taken as the spectrogram up to 4 kHz from
%    find_landmarks (and SR is ignored).
% 2008-12-30 Dan Ellis [email protected]

if nargin < 4
  T = [];
end
if nargin < 5
  C = 'o-r';
end

targetSR = 8000;
% We use a 64 ms window (512 point FFT) for good spectral resolution
fft_ms = 64;
nfft = round(targetSR/1000*fft_ms);

% win overlap in fingerprint calculation
win_overlap = 2;
% win overlap for display here
my_win_overlap = 4;

fbase = targetSR/nfft;
tbase = fft_ms/win_overlap/1000;
my_tbase = fft_ms/my_win_overlap/1000;

if (size(D,1)<3) || (size(D,2)<3)
  % we have an actual soundfile

   if length(D) > 0

   %%%%%%%% vvvvvvvvv Copied from find_landmarks

     if size(D,1) > size(D,2)
       D = D';
     end
     if size(D,1) == 2;
       D = mean(D);
     end
     
     % Resample to target sampling rate
     if (SR ~= targetSR)
       srgcd = gcd(SR, targetSR);
       D = resample(D,targetSR/srgcd,SR/srgcd);
     end

     % Take spectral features
     S = abs(specgram(D,nfft,targetSR,nfft,nfft-nfft/my_win_overlap));

   %%%%%%%% ^^^^^^^^ Copied from find_landmarks
   
   end

else
  S = D;
end

if length(D) > 0
   
  [nr,nc] = size(S);
  tt = [1:nc]*my_tbase;
  ff = [0:nr-1]*fbase;

  imagesc(tt,ff,20*log10(S));
  axis xy
  ca = caxis;
  caxis([-80 0]+ca(2));

end
  
hold on

for i = 1:size(L,1);
  lrow = L(i,:);
  t1q = lrow(1);
  f1q = lrow(2);
  f2q = lrow(3);
  dtq = lrow(4);
  t2q = t1q+dtq;
  t1 = t1q*tbase;
  t2 = t2q*tbase;
  f1 = f1q*fbase;
  f2 = f2q*fbase;
  plot([t1 t2],[f1 f2],C);
end

hold off

if length(T) == 2
  a = axis;
  axis([T(1) T(2) a(3) a(4)]);
end