diff options
author | John Stultz <john.stultz@linaro.org> | 2021-09-15 19:04:25 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-09-15 19:04:25 +0000 |
commit | b21150891ad89e851a4dff92c39d4337b5167420 (patch) | |
tree | 4b29f8ccf03ef7a0f218c1091e64bf12763bdaeb | |
parent | 1b6a31e6f3610c486358ac6131abc69149434448 (diff) | |
parent | a5243e18e9f3a6eb46afbd1fd754c04ba501b3ed (diff) | |
download | dragonboard-b21150891ad89e851a4dff92c39d4337b5167420.tar.gz |
db845c: Enabling usb camera am: 1b1a81a5f2 am: a5243e18e9
Original change: https://android-review.googlesource.com/c/device/linaro/dragonboard/+/1778610
Change-Id: I6ba8a88d5aef4b1610981926577e7dab041fadcd
-rw-r--r-- | device-common.mk | 11 | ||||
-rw-r--r-- | etc/external_camera_config.xml | 28 | ||||
-rw-r--r-- | etc/media_profiles.xml | 118 | ||||
-rw-r--r-- | manifest.xml | 10 | ||||
-rw-r--r-- | sepolicy/hal_camera.te | 15 | ||||
-rw-r--r-- | ueventd.common.rc | 4 |
6 files changed, 186 insertions, 0 deletions
diff --git a/device-common.mk b/device-common.mk index b3c8cd4..8633bd0 100644 --- a/device-common.mk +++ b/device-common.mk @@ -167,6 +167,17 @@ PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \ device/linaro/dragonboard/etc/permissions/android.software.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.xml + +# External Web Cam support +PRODUCT_PACKAGES += \ + android.hardware.camera.provider@2.4-impl \ + android.hardware.camera.provider@2.4-external-service + +PRODUCT_COPY_FILES += \ + frameworks/native/data/etc/android.hardware.camera.front.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.front.xml \ + $(LOCAL_PATH)/etc/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml \ + $(LOCAL_PATH)/etc/external_camera_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/external_camera_config.xml + # Keymaster PRODUCT_PACKAGES += \ android.hardware.keymaster@3.0-impl \ diff --git a/etc/external_camera_config.xml b/etc/external_camera_config.xml new file mode 100644 index 0000000..991ff40 --- /dev/null +++ b/etc/external_camera_config.xml @@ -0,0 +1,28 @@ +<ExternalCamera> + <Provider> + <ignore> <!-- Internal video devices to be ignored by external camera HAL --> + </ignore> + </Provider> + <!-- See ExternalCameraUtils.cpp for default values of Device configurations below --> + <Device> + <!-- Max JPEG buffer size in bytes--> + <MaxJpegBufferSize bytes="3145728"/> <!-- 3MB (~= 1080p YUV420) --> + <!-- Size of v4l2 buffer queue when streaming >= 30fps --> + <!-- Larger value: more request can be cached pipeline (less janky) --> + <!-- Smaller value: use less memory --> + <NumVideoBuffers count="4"/> + <!-- Size of v4l2 buffer queue when streaming < 30fps --> + <NumStillBuffers count="2"/> + + <!-- List of maximum fps for various output sizes --> + <!-- Any image size smaller than the size listed in Limit row will report + fps (as minimum frame duration) up to the fpsBound value. --> + <FpsList> + <!-- width/height must be increasing, fpsBound must be decreasing--> + <Limit width="640" height="480" fpsBound="30.0"/> + <Limit width="1280" height="720" fpsBound="15.0"/> + <Limit width="1920" height="1080" fpsBound="10.0"/> + <!-- image size larger than the last entry will not be supported--> + </FpsList> + </Device> +</ExternalCamera> diff --git a/etc/media_profiles.xml b/etc/media_profiles.xml new file mode 100644 index 0000000..2ffb7a3 --- /dev/null +++ b/etc/media_profiles.xml @@ -0,0 +1,118 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2017, The Android Open Source Project. +** +** 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. +*/ +--> +<!DOCTYPE MediaSettings SYSTEM "/system/etc/media_profiles_V1_0.dtd"> +<MediaSettings> + <!-- Each camcorder profile defines a set of predefined configuration parameters --> + <CamcorderProfiles cameraId="0"> + <!-- Iffy! Lets pretend vga (640x480) is 480p! --> + <EncoderProfile quality="480p" fileFormat="mp4" duration="30"> + <Video codec="h264" + bitRate="6000000" + width="640" + height="480" + frameRate="30" /> + <Audio codec="amrnb" + bitRate="12200" + sampleRate="8000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="qvga" fileFormat="mp4" duration="60"> + <Video codec="h264" + bitRate="128000" + width="320" + height="240" + frameRate="30" /> + <Audio codec="amrnb" + bitRate="12200" + sampleRate="8000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="30"> + <Video codec="h264" + bitRate="192000" + width="176" + height="144" + frameRate="30" /> + <!-- audio setting is ignored --> + <Audio codec="amrnb" + bitRate="12200" + sampleRate="8000" + channels="1" /> + </EncoderProfile> + + <ImageEncoding quality="95" /> + <ImageEncoding quality="80" /> + <ImageEncoding quality="70" /> + <ImageDecoding memCap="20000000" /> + + </CamcorderProfiles> + + <EncoderOutputFileFormat name="3gp" /> + <EncoderOutputFileFormat name="mp4" /> + + <!-- + If a codec is not enabled, it is invisible to the applications + In other words, the applications won't be able to use the codec + or query the capabilities of the codec at all if it is disabled + --> + <VideoEncoderCap name="h264" enabled="true" + minBitRate="64000" maxBitRate="12000000" + minFrameWidth="176" maxFrameWidth="1280" + minFrameHeight="144" maxFrameHeight="720" + minFrameRate="15" maxFrameRate="30" /> + + <VideoEncoderCap name="h263" enabled="true" + minBitRate="64000" maxBitRate="12000000" + minFrameWidth="176" maxFrameWidth="1280" + minFrameHeight="144" maxFrameHeight="720" + minFrameRate="15" maxFrameRate="30" /> + + <VideoEncoderCap name="m4v" enabled="true" + minBitRate="64000" maxBitRate="12000000" + minFrameWidth="176" maxFrameWidth="1280" + minFrameHeight="144" maxFrameHeight="720" + minFrameRate="15" maxFrameRate="30" /> + + <AudioEncoderCap name="aac" enabled="true" + minBitRate="8000" maxBitRate="96000" + minSampleRate="8000" maxSampleRate="48000" + minChannels="1" maxChannels="1" /> + + <AudioEncoderCap name="amrwb" enabled="true" + minBitRate="6600" maxBitRate="23050" + minSampleRate="16000" maxSampleRate="16000" + minChannels="1" maxChannels="1" /> + + <AudioEncoderCap name="amrnb" enabled="true" + minBitRate="5525" maxBitRate="12200" + minSampleRate="8000" maxSampleRate="8000" + minChannels="1" maxChannels="1" /> + + <!-- + FIXME: + We do not check decoder capabilities at present + At present, we only check whether windows media is visible + for TEST applications. For other applications, we do + not perform any checks at all. + --> + <VideoDecoderCap name="wmv" enabled="false"/> + <AudioDecoderCap name="wma" enabled="false"/> +</MediaSettings> diff --git a/manifest.xml b/manifest.xml index 047e1f8..99c8500 100644 --- a/manifest.xml +++ b/manifest.xml @@ -36,6 +36,16 @@ </interface> </hal> <hal format="hidl"> + <name>android.hardware.camera.provider</name> + <transport>hwbinder</transport> + <impl level="generic"></impl> + <version>2.4</version> + <interface> + <name>ICameraProvider</name> + <instance>external/0</instance> + </interface> + </hal> + <hal format="hidl"> <name>android.hardware.drm</name> <transport>hwbinder</transport> <version>1.3</version> diff --git a/sepolicy/hal_camera.te b/sepolicy/hal_camera.te new file mode 100644 index 0000000..6bbc346 --- /dev/null +++ b/sepolicy/hal_camera.te @@ -0,0 +1,15 @@ +vndbinder_use(hal_camera_default); + +allow hal_camera_default hal_graphics_mapper_hwservice:hwservice_manager find; +hal_client_domain(hal_camera_default, hal_graphics_allocator); +hal_client_domain(hal_camera_default, hal_graphics_composer); + +# for external camera +allow cameraserver device:dir r_dir_perms; +allow cameraserver video_device:dir r_dir_perms; +allow cameraserver video_device:chr_file rw_file_perms; + +allow hal_camera_default gpu_device:chr_file { open read write ioctl map getattr }; +allow hal_camera_default dri_device:dir { open read search }; +allow cameraserver dri_device:dir { open read write search getattr }; +allow cameraserver gpu_device:chr_file { open read write ioctl map getattr }; diff --git a/ueventd.common.rc b/ueventd.common.rc index c0ba022..3e396f6 100644 --- a/ueventd.common.rc +++ b/ueventd.common.rc @@ -11,3 +11,7 @@ subsystem usbmisc # media.codec2 /dev/ion 0664 system system + +# usb webcam? +/dev/video0 0660 system camera +/dev/video1 0660 system camera |