db845c: Enabling usb camera
Following:
https://source.android.com/devices/camera/external-usb-cameras
With a number of additions (like sepolicy, and permissions), in order
to get it going.
This patch also adds a very simple media_profiles.xml implementation
which works for video recording, but adds an iffy vga (640x480) entry
calling it 480p. We will likely need to tweak all this quite a bit
when we add real hwcodec support or onboard camera support.
Change-Id: I9db300d9eadd9246d5f1fbab40d1fcbe33336961
Signed-off-by: John Stultz <john.stultz@linaro.org>
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>