Canon eosファームウェアソース

多くの人は、先日キヤノンの内部ネットワークがハッキングされたこと、そしてとりわけ、EOSシリーズカメラファームウェアのカーネルソースコードの一部がネットワークに漏洩したことを既に聞いていました。



/*

CANON D-SLR cameras core routine

Property of CANON INC. 1998-2010

    

v 1.0 made by Radja Tokamoto Goines

v 1.1 made by Dugwin Yakioto jr.

    

last changes: 10.11.2009

*/



#include <stdlib.h>

#include <math.h>

#include <time.h>



#include "inc/tweakfocus.h"

#include "inc/radja_filters.h"





bool do_focus(lens, camera) {

double fp;

time_t t;



t = init_focus_timer(t);



do {

fp = measure_focus_point(lens);

move_focus(lens, fp)



if (timeout(t))

return false ;



} while (!lens.is_focused());



if (!L_LensDetected(lens))

lens.adjust_focus(rand(10));



return true ;

}



rawdata * scandata(matrix, lens, camera) {

rawdata *cr;

double noise, aberrations;



cr = create_cr(matrix);



read_exif_info(cr->exif, lens, camera);



prepare_everything(matrix, lens, camera);



if (!do_focus(lens, camera))

return NULL;

else

beep();



aberrations = pow(100 - lens.focallength, 2) * sqrt(2) + 10;



if (L_LensDetected(lens))

aberrations /= 2.0;



scan_sensor(cr, matrix, aberrations);



noise = matrix.iso / 100.0;

noise *= matrix.cropfactor;



if (camera.model == EOS1000D) {

noise *= 1.2;

wait_for_something();

}



if (camera.model != EOS7D)

wait_for_something();



if (lens.manufacture != CANON_LENS) {

corrupt_something(cr);

apply_random_filter(cr);

}



if (lens.model == EF_50_F1_4) {

noise /= 1.2;

apply_fcb(cr); //fucken cool bokeh

}



if (lens.model == CANON_L_17_40_F4) {

blur(cr, 0.8);

distort(cr, 40 - lens.focallength);

}



radja_filter(cr, 1.570796326794896619231321691641); //don't touch that!



if (is_eos1d_series(camera.model))

disable_all_spoiling(cr);

else

make_nice_colors(cr);



// finally...

apply_noise(cr, noise);



apply_barrel_distortion(cr, lens);

apply_pillow_distortion(cr, lens);



return cr;

}












PS私の著者。



All Articles