Questi ultimi giorni di pioggia mi hanno portato a scoprire un serio bug (o quasi) su camsensor che non impediva il cambio continuo del valore di retroilluminazione in caso di valori di luce esterna “stabili” nell’intorno di un salto (15%, 25%, 35%, …).
La scala percentuale della luminosità ambientale infatti non è lineare – in realtà è quasi logaritmica – e quindi le normali oscillazioni del valore di luminosità che si hanno a causa dei limiti materiali (la webcam e i normali movimenti dell’utente) provocano delta sulle misure notevoli. Se per disgrazia il cielo temporalesco, ovvero 50-60% di luminosità (con la pendenza della funzione che comincia a farsi sentire), diventa più/meno annuvolato rapidamente, ci si trova nella brutta situazione di avere la retroilluminazione che passa da passo precedente a successivo e vice-versa ad ogni cattura (ogni 0.5 secondi… disturbante)
Poiché, come dicevo uno o due articoli fa, ormai sono totalmente dipendente da questa mia applicazione, il doverla escludere anche solo per brevi periodi di tempo (altra grossa feature da implementare in futuro) non mi dava pace. Ho pensato un pochetto e alla fine ho adottato questa banale soluzione:
appena cambia la retroilluminazione parte un conteggio a 60 secondi, prima dello scadere del conteggio viene inibita l’azione di scrittura dei valori di retroilluminazione, a meno che non si tratti di un cambio repentino (classica luce accesa/spenta) che è ininfluente all’atto del conteggio. Ci tengo a precisare che i valori mostrati nei log non risentono dell’inibizione e quindi sono “reali”, non falsati.
Poiché queste modifiche potrebbero ledere in maniera consistente la risposta del programma nel primo minuto di avvio (per ora i test che ho effettuato non hanno presentato anomalie), come le altre dalla revisione 19 in poi per ora rimangono solo su subversion.
Ormai pensavo di pulire qualcosina sul codice, ottimizzare questa nuova feature e quindi rilasciare una nuova alpha. Il tutto, tra esami e resto penso mi occuperà un mesetto.
Per tutti quelli che non hanno pazienza (io consiglio CALDAMENTE di usare la versione sperimentale su subversion…) il link è il solito: camsensor/code