Как стать автором
Поиск
Написать публикацию
Обновить

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

Время на прочтение2 мин
Количество просмотров806
Многие, наверное, уже слышали, что на днях была взломана внутренняя сеть компании 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. Авторство моё.
Теги:
Хабы:
Всего голосов 188: ↑127 и ↓61+66
Комментарии114

Публикации

Ближайшие события