OUTDATED
--------


case 1) 

(--------------------------------------------------)
! bin                                              !
! (--------)         (--------)         (--------) !
! ! fakesrc!         !identity!         !fakesink! !
! !   1   src ----- sink  1  src ---- sink   1   ! !
! (--------)         (--------)         (--------) !
!                                                  !
! (--------)         (--------)         (--------) !
! !fakesrc !         !identity!         !fakesink! !
! !   2   src ----- sink  2  src ---- sink   2   ! !
! (--------)         (--------)         (--------) !
(--------------------------------------------------)

  just two scheduled chains in a single bin.

.scheduling.
  
  we have two chains here fs1-i1-fsk1 and fs2-i2-fsk2
  fakesrc1 will output 1 buffer, fakesrc2 3 buffers

.eos.

  fs1 will return a NULL buffer on EOS. the scheduler 
  detects the NULL buffer and puts chain1 in EOS so that it
  doesn't get scheduled again. The scheduler fires the EOS
  signal for all the elements in the chain and puts the fs1
  element in the READY state. 

  the same procedure happens for chain2. At that point, the bin 
  has no chains to schedule and so it fires EOS.


case 2) 

(---------------------------------------------------)
! bin                                               !
! (--------)         (--------)         (---------) !
! ! disksrc!         ! mpg123 !         !audiosink! !
! !   1   src ----- sink  1  src ---- sink   1    ! !
! (--------)         (--------)         (---------) !
!                                                   !
! (--------)         (--------)         (---------) !
! !disksrc !         ! mpg123 !         !audiosink! !
! !   2   src ----- sink  2  src ---- sink   2    ! !
! (--------)         (--------)         (---------) !
(---------------------------------------------------)

  same as case 1, an mp3 mixer where the mixing is performed
  in hardware (in the audiosink).
  we want to show how the EOS state can be undone.

.scheduling.
  
  we have two chains here ds1-mpg1-ask1 and ds2-mpg2-ask2
  the song in chain1 is about to end, chain2 has just begun
  playing a song.

.eos.

  fs1 will return a NULL buffer on EOS. the scheduler 
  detects the NULL buffer and puts chain1 in EOS so that it
  doesn't get scheduled again. The scheduler fires the EOS
  signal for all the elements in the chain and puts the fs1
  element in the READY state.

  the app sets the new location for the disksrc. The element is
  put in the PLAYING state, the chain is marked !EOS so that
  it will be scheduled again.
 

