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