Photographic equipment
11 November 2009

Исходные тексты прошивки canon eos

Многие, наверное, уже слышали, что на днях была взломана внутренняя сеть компании Canon и в числе прочего в сеть «утёк» кусок ядра исходных текстов прошивки камер серии 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;
}


P.S. Авторство моё.

+66
281 14
Comments 114