CinderBlock for Canon camera control
C++ C
Switch branches/tags
Nothing to show


Cinder-EDSDK is a CinderBlock to interact with Canon cameras. See Canon's compatibility chart for a list of cameras supported in their EDSDK.


Image capture to memory or on-disk, camera keep-alive, simultaneous control of multiple cameras, Live View and camera connect and disconnect handling.


void CaptureApp::setup() {
    CameraBrowser::instance()->connectAddedHandler(&CaptureApp::browserDidAddCamera, this);

void CaptureApp::browserDidAddCamera(CameraRef camera) {
    mCamera = camera;
    mCamera->connectFileAddedHandler(&CaptureApp::didAddFile, this);
    EdsError error = mCamera->requestOpenSession();
    if (error == EDS_ERR_OK) {

void CaptureApp::didAddFile(CameraRef camera, CameraFileRef file) {
    fs::path destinationFolderPath = expandPath(fs::path("~/Desktop/Captures"));
    camera->requestDownloadFile(file, destinationFolderPath, [this](EdsError error, fs::path outputFilePath) {
        if (error == EDS_ERR_OK) {
            console() << "downloaded image to: " << outputFilePath << endl;


  1. Apply for EDSDK access from Canon USA or Canon Europa (serving Europe, Africa and The Middle East)
  2. Wait hours / days / weeks / months
  3. Download the EDSDK
  4. Unarchive
  5. Move the EDSDK folder into Cinder-EDSDK/lib
  6. Replace Cinder-EDSDK/lib/EDSDK/Framework/EDSDK.framework with EDSDK vX.Y.Z/EDSDK_64/EDSDK.framework to allow applications to be built x86_64

NOTE - Due to a bug introduced in EDSDK v2.10, the CameraBrowser will only call the camera removed handler for cameras with an open session.