18bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling#pragma once 28bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling#include <semaphore.h> 38bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling 48bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling// The Preview FBO dimensions are determined from the high-res 58bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling// frame dimensions (gPreviewImageWidth, gPreviewImageHeight) 68bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling// using the scale factors below. 7b998a491a5b24e710bc1711dbb00cbfa05273bf2Angus Kongconst int PREVIEW_FBO_WIDTH_SCALE = 4; 88bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberlingconst int PREVIEW_FBO_HEIGHT_SCALE = 2; 98bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling 108bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling// The factor below determines the (horizontal) speed at which the viewfinder 118bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling// will pan across the UI during capture. A value of 0.0 will keep the viewfinder 128bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling// static in the center of the screen and 1.0f will make it pan at the 138bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling// same speed as the device. 148bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberlingconst float VIEWFINDER_PAN_FACTOR_HORZ = 0.0f; 158bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling 168bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling// What fraction of the screen viewport width has been allocated to show the 178bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling// arrows on the direction of motion side. 188bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberlingconst float VIEWPORT_BORDER_FACTOR_HORZ = 0.1f; 198bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling 208bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberlingconst int LR = 0; // Low-resolution mode 218bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberlingconst int HR = 1; // High-resolution mode 228bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberlingconst int NR = 2; // Number of resolution modes 238bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling 248bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberlingconst int H2L_FACTOR = 4; // Can be 2 258bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling 268bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberlingextern "C" void AllocateTextureMemory(int widthHR, int heightHR, 278bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling int widthLR, int heightLR); 288bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberlingextern "C" void FreeTextureMemory(); 298bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberlingextern "C" void UpdateWarpTransformation(float *trs); 308bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling 318bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberlingextern unsigned char* gPreviewImage[NR]; 328bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberlingextern int gPreviewImageWidth[NR]; 338bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberlingextern int gPreviewImageHeight[NR]; 348bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberling 358bddf8ce4f3dcbb56edb12cee7e93f3a9daa3f96Sascha Haeberlingextern sem_t gPreviewImage_semaphore; 36