diff --git a/config/linux/ipu6/gcss/graph_descriptor.xml b/config/linux/ipu6/gcss/graph_descriptor.xml index 3fd3b37..1824316 100644 --- a/config/linux/ipu6/gcss/graph_descriptor.xml +++ b/config/linux/ipu6/gcss/graph_descriptor.xml @@ -6061,5 +6061,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/linux/ipu6/psys_policy_profiles.xml b/config/linux/ipu6/psys_policy_profiles.xml index f957357..335d0e3 100644 --- a/config/linux/ipu6/psys_policy_profiles.xml +++ b/config/linux/ipu6/psys_policy_profiles.xml @@ -42,4 +42,11 @@ limitations under the License. + + + + + + + diff --git a/config/linux/ipu6/sensors/imx390.xml b/config/linux/ipu6/sensors/imx390.xml index 4c9122a..131f5f4 100644 --- a/config/linux/ipu6/sensors/imx390.xml +++ b/config/linux/ipu6/sensors/imx390.xml @@ -1,5 +1,5 @@ - - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - + + @@ -81,9 +73,8 @@ - - + @@ -108,52 +99,46 @@ + + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - + + @@ -176,9 +161,8 @@ - - + @@ -203,52 +187,46 @@ + + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - + + @@ -271,9 +249,8 @@ - - + @@ -298,432 +275,46 @@ + + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -746,9 +337,8 @@ - - + @@ -773,54 +363,46 @@ + + - + - - - - - + + + + - - - - - - + + - - - - + + + + - + - + - - - - - + + + + - - + + - - - + + + + - - - - - - + - + @@ -843,9 +425,8 @@ - - + @@ -870,54 +451,46 @@ + + - + - - - - - - - - - - - - + + + + + + + - - - - + + + + - + - + - - - - - - - - - - - - + + + + + + + - - - - + + + + - + - + @@ -940,9 +513,8 @@ - - + @@ -967,54 +539,46 @@ + + - + - - - - - - - - - - - - + + + + + + + - - - - + + + + - + - + - - - - - - - - - - - - + + + + + + + - - - - + + + + - + - + @@ -1037,9 +601,8 @@ - - + @@ -1064,54 +627,46 @@ + + - + - - - - - - - - - - - - + + + + + + + - - - - + + + + - + - + - - - - - - - - - - - - + + + + + + + - - - - + + + + - + - + @@ -1134,9 +689,8 @@ - - + @@ -1161,54 +715,46 @@ + + - + - - - - - + + + + - - - - - + - - + + - + - + - - - - - + + + + - - - - - + - - + + - + - + @@ -1231,9 +777,8 @@ - - + @@ -1258,54 +803,46 @@ + + - + - - - - - - - - - - - - + + + + + + + - - - - + + + + - + - - - - - - - - - - - - + + + + + + + - - - - + + + + - + @@ -1328,9 +865,8 @@ - - + @@ -1355,54 +891,46 @@ + + - + - - - - - - - - - - - - + + + + + + + - - - - + + + + - + - - - - - - - - - - - - + + + + + + + - - - - + + + + - + @@ -1425,9 +953,8 @@ - - + @@ -1452,54 +979,46 @@ + + - + - - - - - - - - - - - - + + + + + + + - - - - + + + + - + - - - - - - - - - - - - + + + + + + + - - - - + + + + - + @@ -1522,9 +1041,8 @@ - - + @@ -1549,129 +1067,7 @@ + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/config/linux/ipu6ep/OV2311_ADL.aiqb b/config/linux/ipu6ep/OV2311_ADL.aiqb new file mode 100644 index 0000000..dbdf1b5 Binary files /dev/null and b/config/linux/ipu6ep/OV2311_ADL.aiqb differ diff --git a/config/linux/ipu6ep/gcss/graph_descriptor.xml b/config/linux/ipu6ep/gcss/graph_descriptor.xml index d7e9617..7bb1766 100644 --- a/config/linux/ipu6ep/gcss/graph_descriptor.xml +++ b/config/linux/ipu6ep/gcss/graph_descriptor.xml @@ -14152,7 +14152,6 @@ - diff --git a/config/linux/ipu6ep/gcss/graph_settings_imx390.xml b/config/linux/ipu6ep/gcss/graph_settings_imx390.xml index f5d1e51..6bd0a52 100644 --- a/config/linux/ipu6ep/gcss/graph_settings_imx390.xml +++ b/config/linux/ipu6ep/gcss/graph_settings_imx390.xml @@ -12,7 +12,7 @@ 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. --> - + @@ -35,31 +35,132 @@ See the License for the specific language governing permissions and + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + @@ -78,68 +179,68 @@ See the License for the specific language governing permissions and
- - - - - + - + + + + + + + + + + + + + - - - - - + - + + + + + - - - - - - - -
- - - - - - - - + + + + + + + + - + @@ -153,7 +254,111 @@ See the License for the specific language governing permissions and - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -173,46 +378,46 @@ See the License for the specific language governing permissions and
- - - - - + - + + + + + + + + + + + + + - - - - - + - + + + + + - - - - - - - - @@ -220,30 +425,261 @@ See the License for the specific language governing permissions and + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - + + + + + + + + + + + + + + - + @@ -261,18 +697,26 @@ See the License for the specific language governing permissions and
- + - + + + + + - + + + + + - + @@ -281,14 +725,6 @@ See the License for the specific language governing permissions and - - - - - - - - @@ -296,30 +732,30 @@ See the License for the specific language governing permissions and - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + @@ -339,18 +775,26 @@ See the License for the specific language governing permissions and
- + - + + + + + - + + + + + - + @@ -359,14 +803,6 @@ See the License for the specific language governing permissions and - - - - - - - - @@ -374,22 +810,6 @@ See the License for the specific language governing permissions and - - - - - - - - - - - - - - - - @@ -398,6 +818,22 @@ See the License for the specific language governing permissions and + + + + + + + + + + + + + + + + @@ -418,18 +854,26 @@ See the License for the specific language governing permissions and
- + - + + + + + - + + + + + - + @@ -438,27 +882,15 @@ See the License for the specific language governing permissions and - - - - - - - - - - - - - - - - + + + + @@ -467,10 +899,14 @@ See the License for the specific language governing permissions and - - - - + + + + + + + + diff --git a/config/linux/ipu6ep/gcss/graph_settings_ov2311.xml b/config/linux/ipu6ep/gcss/graph_settings_ov2311.xml new file mode 100644 index 0000000..6168ab2 --- /dev/null +++ b/config/linux/ipu6ep/gcss/graph_settings_ov2311.xml @@ -0,0 +1,713 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/linux/ipu6ep/libcamhal_profile.xml b/config/linux/ipu6ep/libcamhal_profile.xml index 6cc193c..86db611 100644 --- a/config/linux/ipu6ep/libcamhal_profile.xml +++ b/config/linux/ipu6ep/libcamhal_profile.xml @@ -1,5 +1,5 @@ - diff --git a/config/linux/ipu6ep/psys_policy_profiles.xml b/config/linux/ipu6ep/psys_policy_profiles.xml index 6029bcd..35528cf 100644 --- a/config/linux/ipu6ep/psys_policy_profiles.xml +++ b/config/linux/ipu6ep/psys_policy_profiles.xml @@ -55,4 +55,11 @@ limitations under the License. + + + + + + + diff --git a/config/linux/ipu6ep/sensors/imx390.xml b/config/linux/ipu6ep/sensors/imx390.xml index 3d7028c..dd629b4 100644 --- a/config/linux/ipu6ep/sensors/imx390.xml +++ b/config/linux/ipu6ep/sensors/imx390.xml @@ -1,5 +1,5 @@ - - + - + - - + + - - - + + + - - + + - + - - + + - - - + + + - - + + @@ -94,51 +94,51 @@ - - - + + + - + - + - - + + - - - + + + - - + + - + - - + + - - - + + + - - + + @@ -182,51 +182,51 @@ - - - + + + - + - + - - + + - - - + + + - - + + - + - - + + - - - + + + - - + + @@ -270,51 +270,51 @@ - - - + + + - + - + - - + + - - - + + + - - + + - + - - + + - - - + + + - - + + @@ -358,405 +358,51 @@ - - - + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - + + + + - + - + - - - - + + + - - + + - - - - + + + + - + - + @@ -800,53 +446,51 @@ - - - + + + - + - + - - - - + + + - - + + - - - - + + + + - + - + - - - - + + + - - + + - - - - + + + + - + - + @@ -890,53 +534,51 @@ - - - + + + - + - + - - - - + + + - - + + - - - - + + + + - + - + - - - - + + + - - + + - - - - + + + + - + - + @@ -980,53 +622,51 @@ - - - + + + - + - + - - - - + + + - - + + - - - - + + + + - + - + - - - - + + + - - + + - - - - + + + + - + - + @@ -1070,53 +710,51 @@ - - - + + + - + - + - - - - + + + - - + + - + - - - - + + + - - + + - + @@ -1160,53 +798,51 @@ - - - + + + - + - + - - - - + + + - - + + - + - - - - + + + - - + + - + @@ -1250,53 +886,51 @@ - - - + + + - + - + - - - - + + + - - + + - + - - - - + + + - - + + - + @@ -1340,53 +974,51 @@ - - - + + + - + - + - - - - + + + - - + + - + - - - - + + + - - + + - + @@ -1430,12 +1062,12 @@ - - - + + + - + - + \ No newline at end of file diff --git a/config/linux/ipu6ep/sensors/isx031-1.xml b/config/linux/ipu6ep/sensors/isx031-1.xml new file mode 100644 index 0000000..27756bb --- /dev/null +++ b/config/linux/ipu6ep/sensors/isx031-1.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/linux/ipu6ep/sensors/isx031-2.xml b/config/linux/ipu6ep/sensors/isx031-2.xml new file mode 100644 index 0000000..a23d4dd --- /dev/null +++ b/config/linux/ipu6ep/sensors/isx031-2.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/linux/ipu6ep/sensors/isx031-3.xml b/config/linux/ipu6ep/sensors/isx031-3.xml new file mode 100644 index 0000000..3e14d56 --- /dev/null +++ b/config/linux/ipu6ep/sensors/isx031-3.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/linux/ipu6ep/sensors/isx031-4.xml b/config/linux/ipu6ep/sensors/isx031-4.xml new file mode 100644 index 0000000..3c35761 --- /dev/null +++ b/config/linux/ipu6ep/sensors/isx031-4.xml @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/linux/ipu6ep/sensors/isx031.xml b/config/linux/ipu6ep/sensors/isx031.xml index 2dee481..89d77fb 100644 --- a/config/linux/ipu6ep/sensors/isx031.xml +++ b/config/linux/ipu6ep/sensors/isx031.xml @@ -1,5 +1,5 @@ - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - - - + + + - - + + - + - - - + + + - - + + - + @@ -78,64 +346,64 @@ - + - + - - - + + + - - + + - + - - - + + + - - + + - + - - - + + + - - + + - + @@ -145,64 +413,64 @@ - + - + - - - + + + - - + + - + - - - + + + - - + + - + - - - + + + - - + + - + @@ -212,64 +480,64 @@ - + - + - - - + + + - - + + - + - - - + + + - - + + - + - - - + + + - - + + - + @@ -279,64 +547,64 @@ - + - + - - - + + + - - + + - + - - - + + + - - + + - + - - - + + + - - + + - + @@ -346,64 +614,64 @@ - + - + - - - + + + - - + + - + - - - + + + - - + + - + - - - + + + - - + + - + @@ -413,64 +681,64 @@ - + - + - - - + + + - - + + - + - - - + + + - - + + - + - - - + + + - - + + - + @@ -480,64 +748,64 @@ - + - + - - - + + + - - + + - + - - - + + + - - + + - + - - - + + + - - + + - + @@ -547,7 +815,7 @@ - + diff --git a/config/linux/ipu6ep/sensors/ov2311.xml b/config/linux/ipu6ep/sensors/ov2311.xml new file mode 100644 index 0000000..3ff07cd --- /dev/null +++ b/config/linux/ipu6ep/sensors/ov2311.xml @@ -0,0 +1,1241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/linux/ipu6epmtl/libcamhal_profile.xml b/config/linux/ipu6epmtl/libcamhal_profile.xml index c605b04..3ac06bf 100644 --- a/config/linux/ipu6epmtl/libcamhal_profile.xml +++ b/config/linux/ipu6epmtl/libcamhal_profile.xml @@ -1,5 +1,5 @@ - - + diff --git a/config/linux/ipu6epmtl/sensors/imx390-1.xml b/config/linux/ipu6epmtl/sensors/imx390-1.xml index 0e84530..1978e52 100644 --- a/config/linux/ipu6epmtl/sensors/imx390-1.xml +++ b/config/linux/ipu6epmtl/sensors/imx390-1.xml @@ -1,5 +1,5 @@ - @@ -108,7 +108,7 @@ - + @@ -165,7 +165,7 @@ - + @@ -222,7 +222,7 @@ - + diff --git a/config/linux/ipu6epmtl/sensors/imx390-2.xml b/config/linux/ipu6epmtl/sensors/imx390-2.xml index be6e2e5..e0f72e5 100644 --- a/config/linux/ipu6epmtl/sensors/imx390-2.xml +++ b/config/linux/ipu6epmtl/sensors/imx390-2.xml @@ -1,5 +1,5 @@ - @@ -106,19 +106,19 @@ - + - + - - + + @@ -130,7 +130,7 @@ - + @@ -187,7 +187,7 @@ - + @@ -244,7 +244,7 @@ - + diff --git a/config/linux/ipu6epmtl/sensors/imx390-3.xml b/config/linux/ipu6epmtl/sensors/imx390-3.xml index 933d4f3..9afbcd0 100644 --- a/config/linux/ipu6epmtl/sensors/imx390-3.xml +++ b/config/linux/ipu6epmtl/sensors/imx390-3.xml @@ -1,5 +1,5 @@ - @@ -108,7 +108,7 @@ - + @@ -165,7 +165,7 @@ - + diff --git a/config/linux/ipu6epmtl/sensors/imx390-4.xml b/config/linux/ipu6epmtl/sensors/imx390-4.xml index 3adba6c..b0e903d 100644 --- a/config/linux/ipu6epmtl/sensors/imx390-4.xml +++ b/config/linux/ipu6epmtl/sensors/imx390-4.xml @@ -1,5 +1,5 @@ - @@ -106,31 +106,31 @@ - + - + - + - + - - - - + + + + @@ -148,7 +148,7 @@ - + @@ -205,7 +205,7 @@ - + diff --git a/config/linux/ipu6epmtl/sensors/imx390-5.xml b/config/linux/ipu6epmtl/sensors/imx390-5.xml index 72cbb5a..29afe10 100644 --- a/config/linux/ipu6epmtl/sensors/imx390-5.xml +++ b/config/linux/ipu6epmtl/sensors/imx390-5.xml @@ -1,5 +1,5 @@ - @@ -100,7 +100,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -157,7 +157,7 @@ - + @@ -165,7 +165,7 @@ - + @@ -214,7 +214,7 @@ - + diff --git a/config/linux/ipu6epmtl/sensors/imx390-6.xml b/config/linux/ipu6epmtl/sensors/imx390-6.xml index d12af74..a2f5c3b 100644 --- a/config/linux/ipu6epmtl/sensors/imx390-6.xml +++ b/config/linux/ipu6epmtl/sensors/imx390-6.xml @@ -1,5 +1,5 @@ - @@ -100,51 +100,51 @@ - + - + - + - + - + - - - + + + - - - + + + - - - - - - + + + + + + - + @@ -156,8 +156,8 @@ - - + + @@ -167,7 +167,7 @@ - + @@ -216,39 +216,39 @@ - + - + - + - - - + + + - - - + + + - - - - + + + + - + @@ -256,8 +256,8 @@ - - + + @@ -265,7 +265,7 @@ - + @@ -314,7 +314,7 @@ - + diff --git a/config/linux/ipu6epmtl/sensors/isx031-1.xml b/config/linux/ipu6epmtl/sensors/isx031-1.xml new file mode 100644 index 0000000..2c1f2b5 --- /dev/null +++ b/config/linux/ipu6epmtl/sensors/isx031-1.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/linux/ipu6epmtl/sensors/isx031-2.xml b/config/linux/ipu6epmtl/sensors/isx031-2.xml new file mode 100644 index 0000000..491ba07 --- /dev/null +++ b/config/linux/ipu6epmtl/sensors/isx031-2.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/linux/ipu6epmtl/sensors/isx031-3.xml b/config/linux/ipu6epmtl/sensors/isx031-3.xml new file mode 100644 index 0000000..5805f4e --- /dev/null +++ b/config/linux/ipu6epmtl/sensors/isx031-3.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/linux/ipu6epmtl/sensors/isx031-4.xml b/config/linux/ipu6epmtl/sensors/isx031-4.xml new file mode 100644 index 0000000..dd655be --- /dev/null +++ b/config/linux/ipu6epmtl/sensors/isx031-4.xml @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/algowrapper/graph/GraphConfigPipe.cpp b/modules/algowrapper/graph/GraphConfigPipe.cpp index ce92b5d..81c8749 100644 --- a/modules/algowrapper/graph/GraphConfigPipe.cpp +++ b/modules/algowrapper/graph/GraphConfigPipe.cpp @@ -954,7 +954,6 @@ status_t GraphConfigPipe::getScalerByStreamId( CheckAndLogError(!scalerInfo, UNKNOWN_ERROR, "%s, scalerInfo is nullptr", __func__); for (auto it = edgePort2Connection.begin(); it != edgePort2Connection.end(); ++it) { - const char* portName; bool mpFLag = false; bool dpFlag = false; bool pppFlag = false; @@ -962,17 +961,17 @@ status_t GraphConfigPipe::getScalerByStreamId( float scalerH = 1; IGraphType::PipelineConnection connection = it->second; - portName = NODE_NAME(it->first); + string portName = getNodeName(it->first); CheckAndLogError(!connection.stream, UNKNOWN_ERROR, "%s, connection.stream is null.", __func__); int32_t streamId = connection.stream->streamId(); - LOG2("%s, streamId:%d, portName:%s", __func__, streamId, portName); + LOG2("%s, streamId:%d, portName:%s", __func__, streamId, portName.c_str()); - if (!strcmp("main", portName)) { + if (!strcmp("main", portName.c_str())) { mpFLag = true; - } else if (!strcmp("display", portName)) { + } else if (!strcmp("display", portName.c_str())) { dpFlag = true; - } else if (!strcmp("postproc", portName)) { + } else if (!strcmp("postproc", portName.c_str())) { pppFlag = true; } if (!mpFLag && !dpFlag && !pppFlag) continue; diff --git a/src/3a/AiqEngine.cpp b/src/3a/AiqEngine.cpp index 70e72df..abe4c2f 100644 --- a/src/3a/AiqEngine.cpp +++ b/src/3a/AiqEngine.cpp @@ -232,7 +232,7 @@ int AiqEngine::prepareStatsParams(cca::cca_stats_params* statsParams, AiqStatist statsParams->dvs_stats_width = resolution.output_width; } - statsParams->frame_id = aiqResult ? aiqResult->mFrameId : -1; + statsParams->frame_id = aiqResult ? aiqResult->mFrameId : 0; statsParams->frame_timestamp = timestamp; statsParams->camera_orientation = ia_aiq_camera_orientation_unknown; } while (0); diff --git a/src/3a/AiqResultStorage.cpp b/src/3a/AiqResultStorage.cpp index c82ed03..8842a34 100644 --- a/src/3a/AiqResultStorage.cpp +++ b/src/3a/AiqResultStorage.cpp @@ -18,24 +18,52 @@ #include "AiqResultStorage.h" #include "iutils/CameraLog.h" +#ifdef HAVE_CHROME_OS +#include +#endif namespace icamera { -std::map AiqResultStorage::sInstances; -Mutex AiqResultStorage::sLock; +std::map& AiqResultStorage::getInstances() { +#ifdef HAVE_CHROME_OS + static base::NoDestructor> sInstances; + return *sInstances; +#else + static std::map sInstances; + return sInstances; +#endif +} + +Mutex& AiqResultStorage::getLock() { + static Mutex sLock; + return sLock; +} AiqResultStorage* AiqResultStorage::getInstance(int cameraId) { - AutoMutex lock(sLock); + AutoMutex lock(getLock()); return getInstanceLocked(cameraId); } void AiqResultStorage::releaseAiqResultStorage(int cameraId) { - AutoMutex lock(sLock); + AutoMutex lock(getLock()); AiqResultStorage* storage = getInstanceLocked(cameraId); - sInstances.erase(cameraId); + getInstances().erase(cameraId); delete storage; } +/** + * Private function with no lock in it, must be called with lock protection + */ +AiqResultStorage* AiqResultStorage::getInstanceLocked(int cameraId) { + auto& sInstances = getInstances(); + if (sInstances.find(cameraId) != sInstances.end()) { + return sInstances[cameraId]; + } + + sInstances[cameraId] = new AiqResultStorage(cameraId); + return sInstances[cameraId]; +} + AiqResultStorage::AiqResultStorage(int cameraId) : mCameraId(cameraId) { for (int i = 0; i < kStorageSize; i++) { mAiqResults[i] = new AiqResult(mCameraId); @@ -162,16 +190,4 @@ bool AiqResultStorage::isDvsRun(int64_t sequence) { return false; } -/** - * Private function with no lock in it, must be called with lock protection - */ -AiqResultStorage* AiqResultStorage::getInstanceLocked(int cameraId) { - if (sInstances.find(cameraId) != sInstances.end()) { - return sInstances[cameraId]; - } - - sInstances[cameraId] = new AiqResultStorage(cameraId); - return sInstances[cameraId]; -} - } // namespace icamera diff --git a/src/3a/AiqResultStorage.h b/src/3a/AiqResultStorage.h index a227270..7eaa16f 100644 --- a/src/3a/AiqResultStorage.h +++ b/src/3a/AiqResultStorage.h @@ -134,13 +134,11 @@ class AiqResultStorage { AiqResultStorage(int cameraId); ~AiqResultStorage(); + static std::map& getInstances(); + static Mutex& getLock(); static AiqResultStorage* getInstanceLocked(int cameraId); private: - static std::map sInstances; - // Guard for singleton creation. - static Mutex sLock; - int mCameraId; RWLock mDataLock; // lock for all the data storage below diff --git a/src/core/DeviceBase.cpp b/src/core/DeviceBase.cpp index b41a0fc..f6c31a1 100644 --- a/src/core/DeviceBase.cpp +++ b/src/core/DeviceBase.cpp @@ -384,6 +384,8 @@ int MainDevice::onDequeueBuffer(shared_ptr buffer) { buffer->getStreamId(), buffer->getSequence(), __func__, buffer->getField(), buffer->getTimestamp().tv_sec, buffer->getTimestamp().tv_usec); + dumpFrame(buffer); + for (auto& consumer : mConsumers) { consumer->onFrameAvailable(mPort, buffer); } @@ -396,8 +398,6 @@ int MainDevice::onDequeueBuffer(shared_ptr buffer) { frameData.data.frame.timestamp.tv_usec = buffer->getTimestamp().tv_usec; notifyListeners(frameData); - dumpFrame(buffer); - return OK; } diff --git a/src/core/IspParamAdaptor.cpp b/src/core/IspParamAdaptor.cpp index d4bbe0a..6f769c8 100644 --- a/src/core/IspParamAdaptor.cpp +++ b/src/core/IspParamAdaptor.cpp @@ -1033,11 +1033,12 @@ void IspParamAdaptor::updateResultFromAlgo(ia_binary_data* binaryData, int64_t s void IspParamAdaptor::dumpIspParameter(int streamId, int64_t sequence, ia_binary_data binaryData) { if (!CameraDump::isDumpTypeEnable(DUMP_PSYS_PAL)) return; + std::string appendixVal = "pal_" + std::to_string(streamId); BinParam_t bParam; bParam.bType = BIN_TYPE_GENERAL; bParam.mType = M_PSYS; bParam.sequence = sequence; - bParam.gParam.appendix = ("pal_" + std::to_string(streamId)).c_str(); + bParam.gParam.appendix = appendixVal.c_str(); bParam.sUsage = (streamId == VIDEO_STREAM_ID) ? 0 : 2; CameraDump::dumpBinary(mCameraId, binaryData.data, binaryData.size, &bParam); } diff --git a/src/core/PSysProcessor.cpp b/src/core/PSysProcessor.cpp index 5e1ee52..79f0733 100644 --- a/src/core/PSysProcessor.cpp +++ b/src/core/PSysProcessor.cpp @@ -527,11 +527,16 @@ int PSysProcessor::processNewFrame() { int64_t inputSequence = -1; CameraBufferPortMap srcBuffers, dstBuffers; if (mScheduler) { + // Wait input buffer, use TRIGGER_MAX_MARGIN to ensure Scheduler is triggered in time. + int64_t delay = TRIGGER_MAX_MARGIN; { - ConditionLock lock(mBufferQueueLock); - // Wait input buffer, use TRIGGER_MAX_MARGIN to ensure Scheduler is triggered in time. // Reduce wait time for the first 10 frames for better performance. - int64_t delay = mSofSequence < 10 ? TRIGGER_MARGIN : TRIGGER_MAX_MARGIN; + AutoMutex l(mSofLock); + if (mSofSequence < 10) delay = TRIGGER_MARGIN; + } + + { + ConditionLock lock(mBufferQueueLock); bool bufReady = waitBufferQueue(lock, mInputQueue, delay); // Already stopped if (!mThreadRunning) return -1; @@ -1041,8 +1046,11 @@ void PSysProcessor::dispatchTask(CameraBufferPortMap& inBuf, CameraBufferPortMap int32_t userRequestId = -1; mParameterGenerator->getUserRequestId(currentSequence, userRequestId); - LOG2("@%s, fake task %d, pending task: %zu", mCameraId, currentSequence, - userRequestId, __func__, fakeTask, mSequencesInflight.size()); + { + AutoMutex l(mBufferQueueLock); + LOG2("@%s, fake task %d, pending task: %zu", mCameraId, + currentSequence, userRequestId, __func__, fakeTask, mSequencesInflight.size()); + } // Prepare the task input paramerters including input and output buffers, settings etc. PSysTaskData taskParam; @@ -1115,7 +1123,10 @@ void PSysProcessor::dispatchTask(CameraBufferPortMap& inBuf, CameraBufferPortMap taskParam.mIspSettings = mIspSettings; } - if (!mThreadRunning) return; + { + AutoMutex l(mBufferQueueLock); + if (!mThreadRunning) return; + } mPSysDAGs[mCurConfigMode]->addTask(taskParam); } diff --git a/src/core/RequestThread.cpp b/src/core/RequestThread.cpp index 08d275b..0ac1e4d 100644 --- a/src/core/RequestThread.cpp +++ b/src/core/RequestThread.cpp @@ -397,7 +397,11 @@ bool RequestThread::threadLoop() { } void RequestThread::handleRequest(CameraRequest& request, int64_t applyingSeq) { - int64_t effectSeq = mLastEffectSeq + 1; + int64_t effectSeq = 0; + { + AutoMutex l(mPendingReqLock); + effectSeq = mLastEffectSeq + 1; + } // Raw reprocessing case, don't run 3A. if (request.mBuffer[0]->sequence >= 0 && request.mBuffer[0]->timestamp > 0) { effectSeq = request.mBuffer[0]->sequence; diff --git a/src/iutils/Utils.cpp b/src/iutils/Utils.cpp index 8c60930..dccd841 100644 --- a/src/iutils/Utils.cpp +++ b/src/iutils/Utils.cpp @@ -605,7 +605,11 @@ void CameraUtils::getDeviceName(const char* entityName, string& deviceNodeName, char buf[128] = {'\0'}; int len = read(fd, buf, sizeof(buf)); close(fd); - len--; // remove "\n" + if (len > 0) { + len--; // remove "\n" + } else { + len = 0; + } if (len == (int)strlen(entityName) && memcmp(buf, entityName, len) == 0) { deviceNodeName = "/dev/"; deviceNodeName += dirp->d_name; diff --git a/src/platformdata/CameraParser.cpp b/src/platformdata/CameraParser.cpp index 0c9395e..bd58a86 100644 --- a/src/platformdata/CameraParser.cpp +++ b/src/platformdata/CameraParser.cpp @@ -39,6 +39,7 @@ using std::string; using std::vector; +using std::map; #include "v4l2/NodeInfo.h" @@ -492,9 +493,9 @@ void CameraParser::handleSensor(CameraParser* profiles, const char* name, const } else if (strcmp(name, "enablePdaf") == 0) { pCurrentCam->mEnablePdaf = strcmp(atts[1], "true") == 0; } else if (strcmp(name, "sensorAwb") == 0) { - pCurrentCam->mSensorAwb = strcmp(atts[1], "true") == 0; + parseSensorAwb(atts[1], pCurrentCam->mSensorAwb); } else if (strcmp(name, "sensorAe") == 0) { - pCurrentCam->mSensorAe = strcmp(atts[1], "true") == 0; + parseSensorAe(atts[1], pCurrentCam->mSensorAe); } else if (strcmp(name, "runIspAlways") == 0) { pCurrentCam->mRunIspAlways = strcmp(atts[1], "true") == 0; } else if (strcmp(name, "lensCloseCode") == 0) { @@ -539,7 +540,7 @@ void CameraParser::handleSensor(CameraParser* profiles, const char* name, const pCurrentCam->mSensorExposureType = SENSOR_EXPOSURE_SINGLE; } } else if (strcmp(name, "hdrExposureNum") == 0) { - pCurrentCam->mSensorExposureNum = atoi(atts[1]); + parseSensorExposureNum(atts[1], pCurrentCam->mSensorExposureNum); } else if (strcmp(name, "hdrStatsInputBitDepth") == 0) { pCurrentCam->mHdrStatsInputBitDepth = atoi(atts[1]); } else if (strcmp(name, "hdrStatsOutputBitDepth") == 0) { @@ -1035,6 +1036,78 @@ void CameraParser::storeMcMappForConfig(int mcId, stream_t streamCfg) { streamVector.push_back(streamCfg); } +int CameraParser::parseSensorAwb(const char* str, map& sensorAwbCfg) { + CheckAndLogError(str == nullptr, -1, "@%s, str is nullptr", __func__); + + int sz = strlen(str); + char src[sz + 1]; + MEMCPY_S(src, sz, str, sz); + src[sz] = '\0'; + + char* savePtr; + int index = 0; + char* value = strtok_r(src, ",", &savePtr); + while (value) { + sensorAwbCfg[index] = (strcmp(value, "true") == 0); + + LOG2("@%s, mcId %d, value = %s", __func__, index, value); + + if (savePtr != nullptr) savePtr = const_cast(skipWhiteSpace(savePtr)); + value = strtok_r(nullptr, ",", &savePtr); + index++; + } + + return 0; +} + +int CameraParser::parseSensorAe(const char* str, map& sensorAeCfg) { + CheckAndLogError(str == nullptr, -1, "@%s, str is nullptr", __func__); + + int sz = strlen(str); + char src[sz + 1]; + MEMCPY_S(src, sz, str, sz); + src[sz] = '\0'; + + char* savePtr; + int index = 0; + char* value = strtok_r(src, ",", &savePtr); + while (value) { + sensorAeCfg[index] = (strcmp(value, "true") == 0); + + LOG2("@%s, mcId %d, value = %s", __func__, index, value); + + if (savePtr != nullptr) savePtr = const_cast(skipWhiteSpace(savePtr)); + value = strtok_r(nullptr, ",", &savePtr); + index++; + } + + return 0; +} + +int CameraParser::parseSensorExposureNum(const char* str, map& sensorExpNumCfg) { + CheckAndLogError(str == nullptr, -1, "@%s, str is nullptr", __func__); + + int sz = strlen(str); + char src[sz + 1]; + MEMCPY_S(src, sz, str, sz); + src[sz] = '\0'; + + char* savePtr; + int index = 0; + char* value = strtok_r(src, ",", &savePtr); + while (value) { + sensorExpNumCfg[index] = atoi(value); + + LOG2("@%s, mcId %d, value = %s", __func__, index, value); + + if (savePtr != nullptr) savePtr = const_cast(skipWhiteSpace(savePtr)); + value = strtok_r(nullptr, ",", &savePtr); + index++; + } + + return 0; +} + /** * \brief Parses the string with the supported stream configurations * a stream configuration is made of 4 necessary elements @@ -1053,7 +1126,7 @@ void CameraParser::storeMcMappForConfig(int mcId, stream_t streamCfg) { * \param configs: Stream config array needs to be filled in * */ -void CameraParser::parseStreamConfig(const char* src, stream_array_t& configs) { +void CameraParser::parseStreamConfig(char* src, stream_array_t& configs) { HAL_TRACE_CALL(1); int mcId = -1; @@ -1074,7 +1147,7 @@ void CameraParser::parseStreamConfig(const char* src, stream_array_t& configs) { // Get the next segement for necessary element // Get the next segement for optional element if it exist if (parseStep <= NUM_ELEMENTS_NECESSARY || (!lastElement && (*src == '('))) { - separatorPtr = const_cast(strchr(src, ',')); + separatorPtr = strchr(src, ','); if (separatorPtr) { *separatorPtr = 0; } else { @@ -1110,7 +1183,7 @@ void CameraParser::parseStreamConfig(const char* src, stream_array_t& configs) { if (!lastElement) { // Move to the next element src = separatorPtr + 1; - src = skipWhiteSpace(src); + src = const_cast(skipWhiteSpace(src)); } else if (parseStep < NUM_ELEMENTS_NECESSARY) { LOGE("Malformed stream configuration, only finish step %d", parseStep); return; @@ -1318,7 +1391,7 @@ int CameraParser::parseSupportedAeParamRange(const char* src, vector& scene float max = strtof(srcTmp, &endPtr); maxValues.push_back(max); - if (endPtr) { + if (endPtr && *endPtr != '\0') { srcTmp = endPtr + 1; srcTmp = const_cast(skipWhiteSpace(srcTmp)); } @@ -1801,7 +1874,12 @@ void CameraParser::handleStaticMetaData(CameraParser* profiles, const char* name profiles->mCurrentSensor); if (strcmp(name, "supportedStreamConfig") == 0) { stream_array_t configsArray; - parseStreamConfig(atts[1], configsArray); + char* srcDup = strdup(atts[1]); + CheckAndLogError((srcDup == nullptr), VOID_VALUE, + "Create a copy of source string failed."); + parseStreamConfig(srcDup, configsArray); + free(srcDup); + const int STREAM_MEMBER_NUM = sizeof(stream_t) / sizeof(int); int dataSize = configsArray.size() * STREAM_MEMBER_NUM; int configs[dataSize]; @@ -2288,7 +2366,7 @@ void CameraParser::getNVMDirectory(CameraParser* profiles) { fseek(fp, 0, SEEK_SET); std::unique_ptr ptr(new char[size + 1]); size_t readSize = fread(ptr.get(), sizeof(char), size, fp); - ptr[readSize] = 0; + ptr[readSize] = '\0'; fclose(fp); if (readSize > 0) { diff --git a/src/platformdata/CameraParser.h b/src/platformdata/CameraParser.h index 025c424..0de8504 100644 --- a/src/platformdata/CameraParser.h +++ b/src/platformdata/CameraParser.h @@ -151,7 +151,7 @@ class CameraParser : public ParserBase { void handleSensor(CameraParser* profiles, const char* name, const char** atts); void handleCommon(CameraParser* profiles, const char* name, const char** atts); - void parseStreamConfig(const char* src, stream_array_t& configs); + void parseStreamConfig(char* src, stream_array_t& configs); void parseSupportedFeatures(const char* src, camera_features_list_t& features); void parseSupportedIspControls(const char* src, std::vector& features); int parseSupportedVideoStabilizationMode(const char* str, @@ -181,6 +181,9 @@ class CameraParser : public ParserBase { int parseSupportedTuningConfig(const char* str, std::vector& config); int parseLardTags(const char* str, std::vector& lardTags); + int parseSensorAwb(const char* str, std::map& sensorAwbCfg); + int parseSensorAe(const char* str, std::map& sensorAeCfg); + int parseSensorExposureNum(const char* str, std::map& sensorExpNumCfg); void dumpSensorInfo(void); diff --git a/src/platformdata/ParserBase.cpp b/src/platformdata/ParserBase.cpp index 2e437c4..224ea75 100644 --- a/src/platformdata/ParserBase.cpp +++ b/src/platformdata/ParserBase.cpp @@ -31,8 +31,9 @@ namespace icamera { const char* ParserBase::skipWhiteSpace(const char* src) { - while (*src == '\n' || *src == '\t' || *src == ' ' || *src == '\v' || *src == '\r' || - *src == '\f') { + while ((src != nullptr && *src != '\0') && + (*src == '\n' || *src == '\t' || *src == ' ' || + *src == '\v' || *src == '\r' || *src == '\f')) { src++; } return src; diff --git a/src/platformdata/PlatformData.cpp b/src/platformdata/PlatformData.cpp index 06f786b..e583c71 100644 --- a/src/platformdata/PlatformData.cpp +++ b/src/platformdata/PlatformData.cpp @@ -383,11 +383,13 @@ bool PlatformData::isPdafEnabled(int cameraId) { } bool PlatformData::getSensorAwbEnable(int cameraId) { - return getInstance()->mStaticCfg.mCameras[cameraId].mSensorAwb; + int mcId = getInstance()->mStaticCfg.mCameras[cameraId].mMcId; + return getInstance()->mStaticCfg.mCameras[cameraId].mSensorAwb[mcId]; } bool PlatformData::getSensorAeEnable(int cameraId) { - return getInstance()->mStaticCfg.mCameras[cameraId].mSensorAe; + int mcId = getInstance()->mStaticCfg.mCameras[cameraId].mMcId; + return getInstance()->mStaticCfg.mCameras[cameraId].mSensorAe[mcId]; } bool PlatformData::getRunIspAlways(int cameraId) { @@ -547,8 +549,9 @@ bool PlatformData::isEnableDefog(int cameraId) { } int PlatformData::getExposureNum(int cameraId, bool multiExposure) { + int mcId = getInstance()->mStaticCfg.mCameras[cameraId].mMcId; if (multiExposure) { - return getInstance()->mStaticCfg.mCameras[cameraId].mSensorExposureNum; + return getInstance()->mStaticCfg.mCameras[cameraId].mSensorExposureNum[mcId]; } int exposureNum = 1; @@ -887,6 +890,9 @@ void PlatformData::selectMcConf(int cameraId, stream_t stream, ConfigMode mode, if (!mcConfig) { LOGE("No matching McConf: cameraId %d, configMode %d, mcId %d", cameraId, mode, mcId); + } else { + getInstance()->mStaticCfg.mCameras[cameraId].mMcId = mcConfig->mcId; + LOG1("Save mMcId %d sensor settings selection", mcConfig->mcId); } } diff --git a/src/platformdata/PlatformData.h b/src/platformdata/PlatformData.h index 282198a..d100f0d 100644 --- a/src/platformdata/PlatformData.h +++ b/src/platformdata/PlatformData.h @@ -133,8 +133,6 @@ class PlatformData { mLensHwType(LENS_NONE_HW), mSensorMode(SENSOR_MODE_UNKNOWN), mEnablePdaf(false), - mSensorAwb(false), - mSensorAe(false), mRunIspAlways(false), // HDR_FEATURE_S mHdrStatsInputBitDepth(0), @@ -142,7 +140,6 @@ class PlatformData { mUseFixedHdrExposureInfo(true), // HDR_FEATURE_E mLtmEnabled(false), - mSensorExposureNum(2), mSensorExposureType(SENSOR_EXPOSURE_SINGLE), mSensorGainType(SENSOR_GAIN_NONE), mLensCloseCode(0), @@ -219,7 +216,8 @@ class PlatformData { mDisableBLCAGainHigh(-1), mResetLinkRoute(true), mReqWaitTimeout(0), - mV4l2BufType(V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) {} + mV4l2BufType(V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE), + mMcId(0) {} std::vector mMediaCtlConfs; @@ -237,8 +235,8 @@ class PlatformData { std::map mTuningModeToSensitivityMap; SensorMode mSensorMode; bool mEnablePdaf; - bool mSensorAwb; - bool mSensorAe; + std::map mSensorAwb; + std::map mSensorAe; bool mRunIspAlways; // HDR_FEATURE_S int mHdrStatsInputBitDepth; @@ -246,7 +244,7 @@ class PlatformData { bool mUseFixedHdrExposureInfo; // HDR_FEATURE_E bool mLtmEnabled; - int mSensorExposureNum; + std::map mSensorExposureNum; int mSensorExposureType; int mSensorGainType; int mLensCloseCode; @@ -373,6 +371,7 @@ class PlatformData { /* mReqWaitTimeout is used to override dqbuf timeout (ns) */ int64_t mReqWaitTimeout; v4l2_buf_type mV4l2BufType; + int mMcId; }; /** diff --git a/src/scheduler/CameraScheduler.cpp b/src/scheduler/CameraScheduler.cpp index df543a4..1bd5f3d 100644 --- a/src/scheduler/CameraScheduler.cpp +++ b/src/scheduler/CameraScheduler.cpp @@ -132,7 +132,7 @@ CameraScheduler::Executor::~Executor() { void CameraScheduler::Executor::addNode(ISchedulerNode* node) { std::lock_guard l(mNodeLock); mNodes.push_back(node); - LOG1("%s: %s added to %s, pos %d", __func__, node->getName(), getName(), mNodes.size()); + LOG1("%s: %s added to %s, pos %lu", __func__, node->getName(), getName(), mNodes.size()); } void CameraScheduler::Executor::removeNode(ISchedulerNode* node) { diff --git a/src/scheduler/CameraScheduler.h b/src/scheduler/CameraScheduler.h index 2bc6ccc..fb9157a 100644 --- a/src/scheduler/CameraScheduler.h +++ b/src/scheduler/CameraScheduler.h @@ -16,6 +16,7 @@ #pragma once +#include #include #include #include @@ -83,7 +84,7 @@ class CameraScheduler { std::vector mNodes; std::vector> mListeners; Condition mTriggerSignal; - bool mActive; + std::atomic mActive; int64_t mTriggerTick; private: diff --git a/src/v4l2/MediaControl.cpp b/src/v4l2/MediaControl.cpp index de148fa..cd93f09 100644 --- a/src/v4l2/MediaControl.cpp +++ b/src/v4l2/MediaControl.cpp @@ -515,6 +515,7 @@ int MediaControl::getDevnameFromSysfs(MediaEntity* entity) { LOGE("readlink sysName %s failed ret %d.", sysName, ret); return -EINVAL; } + target[MAX_TARGET_NAME - 1] = '\0'; char* d = strrchr(target, '/'); if (!d) {