Work by Arnaud Launay and me, further patch by Thorsten. Thanks to Marjorie for lending me her Canon A20 so that I could test this.