@@ -617,6 +617,8 @@ static int32_t get_imx219_ae_dyn_params (IssAeDynamicParams * p_ae_dynPrms);
617617
618618static int32_t get_imx390_ae_dyn_params (IssAeDynamicParams * p_ae_dynPrms );
619619
620+ static int32_t get_ov2312_ae_dyn_params (IssAeDynamicParams * p_ae_dynPrms );
621+
620622static void gst_tiovx_isp_map_2A_values (GstTIOVXISP * self , int exposure_time ,
621623 int analog_gain , gint32 * exposure_time_mapped ,
622624 gint32 * analog_gain_mapped );
@@ -1640,8 +1642,10 @@ gst_tiovx_isp_postprocess (GstTIOVXMiso * miso)
16401642 sizeof (tivx_ae_awb_params_t ), & aewb_buf_map_id ,
16411643 (void * * ) & ae_awb_result , VX_WRITE_ONLY , VX_MEMORY_TYPE_HOST , 0 );
16421644
1643- if (g_strcmp0 (self -> sensor_name , "IMX390-UB953_D3 " ) == 0 ) {
1645+ if (g_strcmp0 (self -> sensor_name , "SENSOR_SONY_IMX390_UB953_D3 " ) == 0 ) {
16441646 get_imx390_ae_dyn_params (& sink_pad -> sensor_in_data .ae_dynPrms );
1647+ } else if (g_strcmp0 (self -> sensor_name , "SENSOR_OV2312_UB953_LI" ) == 0 ) {
1648+ get_ov2312_ae_dyn_params (& sink_pad -> sensor_in_data .ae_dynPrms );
16451649 } else {
16461650 get_imx219_ae_dyn_params (& sink_pad -> sensor_in_data .ae_dynPrms );
16471651 }
@@ -1777,6 +1781,42 @@ get_imx390_ae_dyn_params (IssAeDynamicParams * p_ae_dynPrms)
17771781 return status ;
17781782}
17791783
1784+ static int32_t
1785+ get_ov2312_ae_dyn_params (IssAeDynamicParams * p_ae_dynPrms )
1786+ {
1787+ int32_t status = -1 ;
1788+ uint8_t count = 0 ;
1789+
1790+ g_return_val_if_fail (p_ae_dynPrms , status );
1791+
1792+ p_ae_dynPrms -> targetBrightnessRange .min = 40 ;
1793+ p_ae_dynPrms -> targetBrightnessRange .max = 50 ;
1794+ p_ae_dynPrms -> targetBrightness = 45 ;
1795+ p_ae_dynPrms -> threshold = 5 ;
1796+ p_ae_dynPrms -> enableBlc = 0 ;
1797+ p_ae_dynPrms -> exposureTimeStepSize = 1 ;
1798+
1799+ p_ae_dynPrms -> exposureTimeRange [count ].min = 1000 ;
1800+ p_ae_dynPrms -> exposureTimeRange [count ].max = 14450 ;
1801+ p_ae_dynPrms -> analogGainRange [count ].min = 1 ;
1802+ p_ae_dynPrms -> analogGainRange [count ].max = 1 ;
1803+ p_ae_dynPrms -> digitalGainRange [count ].min = 1024 ;
1804+ p_ae_dynPrms -> digitalGainRange [count ].max = 1024 ;
1805+ count ++ ;
1806+
1807+ p_ae_dynPrms -> exposureTimeRange [count ].min = 14450 ;
1808+ p_ae_dynPrms -> exposureTimeRange [count ].max = 14450 ;
1809+ p_ae_dynPrms -> analogGainRange [count ].min = 1 ;
1810+ p_ae_dynPrms -> analogGainRange [count ].max = 512 ;
1811+ p_ae_dynPrms -> digitalGainRange [count ].min = 1024 ;
1812+ p_ae_dynPrms -> digitalGainRange [count ].max = 1024 ;
1813+ count ++ ;
1814+
1815+ p_ae_dynPrms -> numAeDynParams = count ;
1816+ status = 0 ;
1817+ return status ;
1818+ }
1819+
17801820static void
17811821gst_tiovx_isp_map_2A_values (GstTIOVXISP * self , int exposure_time ,
17821822 int analog_gain , gint32 * exposure_time_mapped , gint32 * analog_gain_mapped )
@@ -1785,7 +1825,7 @@ gst_tiovx_isp_map_2A_values (GstTIOVXISP * self, int exposure_time,
17851825 g_return_if_fail (exposure_time_mapped );
17861826 g_return_if_fail (analog_gain_mapped );
17871827
1788- if (g_strcmp0 (self -> sensor_name , "IMX390-UB953_D3 " ) == 0 ) {
1828+ if (g_strcmp0 (self -> sensor_name , "SENSOR_SONY_IMX390_UB953_D3 " ) == 0 ) {
17891829 gint i = 0 ;
17901830 for (i = 0 ; i <= ISS_IMX390_GAIN_TBL_SIZE ; i ++ ) {
17911831 if (gIMX390GainsTable [i ][0 ] >= analog_gain ) {
@@ -1809,7 +1849,10 @@ gst_tiovx_isp_map_2A_values (GstTIOVXISP * self, int exposure_time,
18091849
18101850 multiplier = analog_gain / 1024.0 ;
18111851 * analog_gain_mapped = 256.0 - 256.0 / multiplier ;
1812-
1852+ } else if (g_strcmp0 (self -> sensor_name , "SENSOR_OV2312_UB953_LI" ) == 0 ) {
1853+ * exposure_time_mapped = (60 * 1300 * exposure_time / 1000000 );
1854+ // ms to row_time conversion - row_time(us) = 1000000/fps/height
1855+ * analog_gain_mapped = analog_gain ;
18131856 } else {
18141857 GST_ERROR_OBJECT (self , "Unknown sensor: %s" , self -> sensor_name );
18151858 }
0 commit comments