Home | History | Annotate | Download | only in interface
      1 /*
      2  * geo_mapper.cpp - geometry mapper implementation
      3  *
      4  *  Copyright (c) 2017 Intel Corporation
      5  *
      6  * Licensed under the Apache License, Version 2.0 (the "License");
      7  * you may not use this file except in compliance with the License.
      8  * You may obtain a copy of the License at
      9  *
     10  *      http://www.apache.org/licenses/LICENSE-2.0
     11  *
     12  * Unless required by applicable law or agreed to in writing, software
     13  * distributed under the License is distributed on an "AS IS" BASIS,
     14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     15  * See the License for the specific language governing permissions and
     16  * limitations under the License.
     17  *
     18  * Author: Wind Yuan <feng.yuan (at) intel.com>
     19  */
     20 
     21 #include "geo_mapper.h"
     22 
     23 namespace XCam {
     24 
     25 GeoMapper::GeoMapper ()
     26     : _out_width (0)
     27     , _out_height (0)
     28     , _factor_x (0.0f)
     29     , _factor_y (0.0f)
     30 {}
     31 
     32 GeoMapper::~GeoMapper ()
     33 {
     34 }
     35 
     36 bool
     37 GeoMapper::set_factors (float x, float y)
     38 {
     39     XCAM_FAIL_RETURN (
     40         ERROR, !XCAM_DOUBLE_EQUAL_AROUND (x, 0.0f) && !XCAM_DOUBLE_EQUAL_AROUND (y, 0.0f), false,
     41         "GeoMapper set factors failed. (x:%.3f, h:%.3f)", x, y);
     42     _factor_x = x;
     43     _factor_y = y;
     44 
     45     return true;
     46 }
     47 
     48 bool
     49 GeoMapper::set_output_size (uint32_t width, uint32_t height)
     50 {
     51     XCAM_FAIL_RETURN (
     52         ERROR, width && height, false,
     53         "GeoMapper set output size failed. (w:%d, h:%d)",
     54         width, height);
     55 
     56     _out_width = width;
     57     _out_height = height;
     58     return true;
     59 }
     60 
     61 bool
     62 GeoMapper::auto_calculate_factors (uint32_t lut_w, uint32_t lut_h)
     63 {
     64     XCAM_FAIL_RETURN (
     65         ERROR, _out_width > 1 && _out_height > 1, false,
     66         "GeoMapper auto calculate factors failed. output size was not set. (w:%d, h:%d)",
     67         _out_width, _out_height);
     68     XCAM_FAIL_RETURN (
     69         ERROR, lut_w > 1 && lut_w > 1, false,
     70         "GeoMapper auto calculate factors failed. lookuptable size need > 1. but set with (w:%d, h:%d)",
     71         lut_w, lut_h);
     72 
     73     XCAM_ASSERT (lut_w && lut_h);
     74     _factor_x = (_out_width - 1.0f) / (lut_w - 1.0f);
     75     _factor_y = (_out_height - 1.0f) / (lut_h - 1.0f);
     76     return true;
     77 }
     78 
     79 }
     80