/* 
 | 
 *  Copyright (c) 2020 Rockchip Corporation 
 | 
 * 
 | 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 | 
 * you may not use this file except in compliance with the License. 
 | 
 * You may obtain a copy of the License at 
 | 
 * 
 | 
 *      http://www.apache.org/licenses/LICENSE-2.0 
 | 
 * 
 | 
 * Unless required by applicable law or agreed to in writing, software 
 | 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 | 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 | 
 * See the License for the specific language governing permissions and 
 | 
 * limitations under the License. 
 | 
 * 
 | 
 */  
 | 
  
 | 
#ifndef __RKGENMESHVERSION_H__  
 | 
 /*! 
 | 
  * ==================== GENMESH VERSION HISTORY ==================== 
 | 
  * 
 | 
  * v1.0.0 
 | 
  *  - date: from 2020-09-11 to 2020-09-14 
 | 
  *  - FEC & LDCH: Keep the max FOV in the horizontal(X direction) 
 | 
  *  - FEC: 1) Add "correctX" and "correctY" flag: 
 | 
               a) correctX = 1, correctY = 1: correct both directions 
 | 
               b) correctX = 1, correctY = 0: correct x direction 
 | 
               c) correctX = 0, correctY = 1: correct y direction 
 | 
               d) correctX = 0, correctY = 0: no correct 
 | 
            2) Add "saveMesh4bin" flag: whether to save 4 mesh bins(meshxi,meshxf,meshyi,meshyf) or not 
 | 
               a) saveMesh4bin = 1: save 
 | 
               b) saveMesh4bin = 0: not save 
 | 
            3) Add "mesh4binPath" : set the path for saving 4 mesh bins, for example, mesh4binPath = "../data_out/" 
 | 
               when 4 mesh bins saved, the prefix file names of each group of bins are 
 | 
               a) level255_both_correct_: correct both directions 
 | 
               b) level255_x_correct_: correct x direction 
 | 
               c) level255_y_correct_: correct y direction 
 | 
               d) level255_no_correct_: no correct 
 | 
  *  - LDCH: 1) Add judgment: calculate the max correction capability("maxLevel") of LDCH, and divide it into 255 levels. 
 | 
                so the value of level can still vary from 0 to 255 when the function is called. 
 | 
             2) Add "saveMeshX" flag: whether to save mesh bin or not 
 | 
               a) saveMeshX = 1: save 
 | 
               b) saveMeshX = 0: not save 
 | 
             3) Add "meshPath" : set the path for saving mesh bin, for example, meshPath = "../data_out/" 
 | 
   
 | 
  * v1.0.1 
 | 
  *  - date: 2020-09-15 
 | 
  *  - LDCH: optimize the "calcLdchMaxLevel" function to reduce the cost time, 
 | 
             and it takes about 160ms in PC 
 | 
  
 | 
  * v1.0.2 
 | 
  *  - date: 2020-09-16 
 | 
  *  - LDCH: continue to optimize the "calcLdchMaxLevel" function to reduce the cost time, 
 | 
             and it takes about 50ms in PC 
 | 
  
 | 
  * v1.0.3 
 | 
  *  - date: 2020-09-17 
 | 
  *  - LDCH: continue to optimize the "calcLdchMaxLevel" function to reduce the cost time, 
 | 
             and it takes about 8ms in PC 
 | 
  
 | 
  * v2.0.0 
 | 
  *  - date: 2020-09-17 
 | 
  *  - FEC&LDCH: change to use rho-cotTheta(or rho-tanTheta) in polynomial fitting, 
 | 
                 and it saves some time in function "genFECMeshNLevel" and "genLDCMeshNLevel" for each level 
 | 
  *  - LDCH: continue to optimize the "calcLdchMaxLevel" function to reduce the cost time, 
 | 
             and it only takes 4ms in PC 
 | 
  
 | 
  * v2.0.1 
 | 
  *  - date: 2020-09-18 
 | 
  *  - FEC&LDCH: due to a bug in polynomial fitting, last version will returns error when the I/O resolutions are different, 
 | 
                 it has been solved in this version 
 | 
     - FEC: the fixed-point number is changed from 7 to 8 
 | 
  
 | 
  * v2.0.2 
 | 
  *  - date: 2020-09-23 
 | 
  *  - FEC&LDCH: adjust some code to facilitate branch prediction logic and reduce unnecessary memory references to improve efficiency 
 | 
  
 | 
  * v2.0.3 
 | 
  *  - date: 2020-10-10 
 | 
  *  - FEC&LDCH: fix some small bugs 
 | 
   
 | 
  * v2.0.4 
 | 
  *  - date: 2020-10-15 
 | 
  *  - FEC: change mesh border from (srcW-3, srcH-3) to (srcW-1, srcH-1) 
 | 
  
 | 
  * v2.0.5 
 | 
  *  - date: 2020-10-28 
 | 
  *  - FEC: consider the case when the width and height of the output image are different from the input, 
 | 
            the naming rules of mesh table are specified as(using "meshxi, level=0, input=3840x2160, output=1920x1080, both x and y direction are corrected" as an example): 
 | 
            level000_1920x1080from3840x2160_both_correct_meshxi.bin 
 | 
  
 | 
  * v3.0.0 
 | 
  *  - date: 2020-11-10 
 | 
  *  - FEC: add an option: saveMaxFovX--flag of retaining maximum FOV in X direction(horizontal direction) 
 | 
            so there are 6 options when combined with correctX and correctY flags: 
 | 
            correctX    correctY    saveMaxFovX 
 | 
               1            0         (0 or 1) 
 | 
               0            1         (0 or 1) 
 | 
               1            1         (0 or 1) 
 | 
  *  - LDCH: add an option: saveMaxFovX 
 | 
             users can choose whether to retain the max FOV in X direction or not. 
 | 
             when saveMaxFovX=1, users choose to save max FOV in X direction and tolerate slight compression distortion in middle part. 
 | 
  
 | 
  * v3.0.1 
 | 
  *  - date: 2020-11-12 
 | 
  *  - FEC & LDCH: add a Macro definition "INV_POLY_COEFF_NUM" to define the coefficients' number of polynomial fitting 
 | 
  *  - FEC: the code was test in the case when the horizontal FOV is close to 180 degrees and the result is OK. 
 | 
  
 | 
  * v3.0.2 
 | 
  *  - date: 2020-11-27 
 | 
  *  - FEC: add an option: isFecOld--flag for different versions of FEC hardware 
 | 
            isFecOld = 1: for old FEC 
 | 
            isFecOld = 0: for new FEC 
 | 
  
 | 
 * v3.0.3 
 | 
  *  - date: 2020-12-22 
 | 
  *  - LDCH: add an option: isLdchOld--flag for different versions of LDCH hardware 
 | 
            isLdchOld = 1: for old LDCH 
 | 
            isLdchOld = 0: for new LDCH 
 | 
  
 | 
  * v4.0.0 
 | 
  *  - date: 2021-01-19 
 | 
  *  - genScaleMeshNLevel: 
 | 
            add a new function interface: LDCH mesh(for x direction) + FEC mesh(for y direction) 
 | 
            1) CameraCoeff of original resolution, e.g. 3840*2160 --> LDCH mesh --> LDCH  
 | 
            2) CameraCoeff of original resolution, e.g. 3840*2160 --> 1920*1080 FEC mesh + 1920*1080 image data --> FEC  
 | 
  
 | 
  * v4.0.1 
 | 
  *  - date: 2021-01-21 
 | 
  *  - genCropScaleMeshNLevel: 
 | 
            add a new function interface: LDCH mesh(for x direction) + FEC mesh(for y direction) 
 | 
            1) CameraCoeff of original resolution, e.g. 3840*2160 --> LDCH mesh --> LDCH  
 | 
            2) CameraCoeff of original resolution, e.g. 3840*2160 --> crop at any position(pW,pH) to get any size, e.g. 1600*900 --> scale to 1920*1080 FEC mesh + 1920*1080 image data --> FEC  
 | 
  
 | 
  * v4.0.2  
 | 
  *  - date: 2021-06-23  
 | 
  *  - LDCH: add genLdchMeshFixedZeroCorrect function  
 | 
    
 | 
  * v4.0.3  
 | 
  *  - date: 2021-06-28  
 | 
  *  - LDCH: modify the last row of zero correct mesh for LDCH bug.  
 | 
  
 | 
  * v4.0.4  
 | 
  *  - date: 2021-07-05  
 | 
  *  - LDCH: modify the middle row of mesh(minus 6 pixels) when saveMaxFovX == 1 for old LDCH bug(avoid the last pixel in the row map to the interval of [last-5, last-3]).  
 | 
             valid flag: need to set isLdchOld = 1.  
 | 
    
 | 
  * v4.0.5  
 | 
  *  - date: 2021-08-12  
 | 
  *  - LDCH: last version didnot completely solve this bug: the middle row of mesh(minus 6 pixels) when saveMaxFovX == 1 for old LDCH bug(avoid the last pixel in the row map to the interval of [last-5, last-3]).  
 | 
             valid flag: need to set isLdchOld = 1.  
 | 
    
 | 
  * v4.0.6  
 | 
  *  - date: 2021-08-14  
 | 
  *  - LDCH: consider these case:  
 | 
             1.rhoMaxW < rohMaxH for old LDCH bug(avoid the last pixel in the row map to the interval of [last-5, last-3]).  
 | 
             2.identity mesh between penultimate and last rows may cause old LDCH bug when interpolation.  
 | 
             valid flag: need to set isLdchOld = 1.  
 | 
  
 | 
*/  
 | 
  
 | 
#define RK_GENMESH_VERSION_REAL_V "v4.0.6" 
 | 
#define RK_GENMESH_RELEASE_DATE "2021-08-14" 
 | 
  
 | 
  /******* DO NOT EDIT THE FOLLOWINGS *******/ 
 | 
  
 | 
#define RK_GENMESH_VERSION_HEAD "GENMESH " 
 | 
#define RK_GENMESH_VERSION \ 
 | 
    RK_GENMESH_VERSION_HEAD\ 
 | 
    RK_GENMESH_VERSION_REAL_V  
 | 
  
 | 
#endif // !__RKGENMESHVERSION_H__  
 |