support v4l2 h264 decoder
https://android.googlesource.com/platform/external/v4l2_codec2/+/refs/heads/android13-releasearpi-13
parent
ccdaa0176a
commit
0256204abb
|
@ -0,0 +1,19 @@
|
|||
_llseek: 1
|
||||
epoll_create1: 1
|
||||
epoll_ctl: 1
|
||||
epoll_pwait: 1
|
||||
eventfd2: 1
|
||||
fstat64: 1
|
||||
fstatat64: 1
|
||||
fstatfs64: 1
|
||||
getcwd: 1
|
||||
getdents64: 1
|
||||
geteuid32: 1
|
||||
getuid32: 1
|
||||
mmap2: 1
|
||||
open: 1
|
||||
pselect6: 1
|
||||
sched_getaffinity: 1
|
||||
statfs64: 1
|
||||
sysinfo: 1
|
||||
ugetrlimit: 1
|
|
@ -0,0 +1,101 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!-- Copyright (C) 2012 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 MediaCodecs [
|
||||
<!ELEMENT Include EMPTY>
|
||||
<!ATTLIST Include href CDATA #REQUIRED>
|
||||
<!ELEMENT MediaCodecs (Decoders|Encoders|Include)*>
|
||||
<!ELEMENT Decoders (MediaCodec|Include)*>
|
||||
<!ELEMENT Encoders (MediaCodec|Include)*>
|
||||
<!ELEMENT MediaCodec (Type|Quirk|Include)*>
|
||||
<!ATTLIST MediaCodec name CDATA #REQUIRED>
|
||||
<!ATTLIST MediaCodec type CDATA>
|
||||
<!ELEMENT Type EMPTY>
|
||||
<!ATTLIST Type name CDATA #REQUIRED>
|
||||
<!ELEMENT Quirk EMPTY>
|
||||
<!ATTLIST Quirk name CDATA #REQUIRED>
|
||||
]>
|
||||
|
||||
There's a simple and a complex syntax to declare the availability of a
|
||||
media codec:
|
||||
|
||||
A codec that properly follows the OpenMax spec and therefore doesn't have any
|
||||
quirks and that only supports a single content type can be declared like so:
|
||||
|
||||
<MediaCodec name="OMX.foo.bar" type="something/interesting" />
|
||||
|
||||
If a codec has quirks OR supports multiple content types, the following syntax
|
||||
can be used:
|
||||
|
||||
<MediaCodec name="OMX.foo.bar" >
|
||||
<Type name="something/interesting" />
|
||||
<Type name="something/else" />
|
||||
...
|
||||
<Quirk name="requires-allocate-on-input-ports" />
|
||||
<Quirk name="requires-allocate-on-output-ports" />
|
||||
<Quirk name="output-buffers-are-unreadable" />
|
||||
</MediaCodec>
|
||||
|
||||
Only the three quirks included above are recognized at this point:
|
||||
|
||||
"requires-allocate-on-input-ports"
|
||||
must be advertised if the component does not properly support specification
|
||||
of input buffers using the OMX_UseBuffer(...) API but instead requires
|
||||
OMX_AllocateBuffer to be used.
|
||||
|
||||
"requires-allocate-on-output-ports"
|
||||
must be advertised if the component does not properly support specification
|
||||
of output buffers using the OMX_UseBuffer(...) API but instead requires
|
||||
OMX_AllocateBuffer to be used.
|
||||
|
||||
"output-buffers-are-unreadable"
|
||||
must be advertised if the emitted output buffers of a decoder component
|
||||
are not readable, i.e. use a custom format even though abusing one of
|
||||
the official OMX colorspace constants.
|
||||
Clients of such decoders will not be able to access the decoded data,
|
||||
naturally making the component much less useful. The only use for
|
||||
a component with this quirk is to render the output to the screen.
|
||||
Audio decoders MUST NOT advertise this quirk.
|
||||
Video decoders that advertise this quirk must be accompanied by a
|
||||
corresponding color space converter for thumbnail extraction,
|
||||
matching surfaceflinger support that can render the custom format to
|
||||
a texture and possibly other code, so just DON'T USE THIS QUIRK.
|
||||
|
||||
-->
|
||||
|
||||
<MediaCodecs>
|
||||
<Settings>
|
||||
<Setting name="max-video-encoder-input-buffers" value="12" />
|
||||
</Settings>
|
||||
|
||||
<Include href="media_codecs_google_audio.xml" />
|
||||
<Include href="media_codecs_google_telephony.xml" />
|
||||
<Include href="media_codecs_google_video.xml" />
|
||||
|
||||
<Decoders>
|
||||
<MediaCodec name="c2.v4l2.avc.decoder" type="video/avc">
|
||||
<Limit name="size" min="16x16" max="4096x4096" />
|
||||
<Limit name="alignment" value="2x2" />
|
||||
<Limit name="block-size" value="16x16" />
|
||||
<Limit name="blocks-per-second" min="1" max="1879200" />
|
||||
<Limit name="bitrate" range="1-62500000" />
|
||||
<Limit name="concurrent-instances" max="4" />
|
||||
<Limit name="performance-point-3840x2160" range="30-30" />
|
||||
<Feature name="adaptive-playback" />
|
||||
</MediaCodec>
|
||||
</Decoders>
|
||||
</MediaCodecs>
|
13
rpi4.mk
13
rpi4.mk
|
@ -31,9 +31,13 @@ PRODUCT_PROPERTY_OVERRIDES += \
|
|||
gralloc.drm.kms=/dev/dri/card0 \
|
||||
ro.opengles.version=196609 \
|
||||
ro.hardware.vulkan=broadcom \
|
||||
debug.stagefright.c2-poolmask=0x350000 \
|
||||
ro.vendor.v4l2_codec2.decode_concurrent_instances=4 \
|
||||
wifi.interface=wlan0 \
|
||||
ro.rfkilldisabled=1
|
||||
|
||||
PRODUCT_SOONG_NAMESPACES += external/v4l2_codec2
|
||||
|
||||
# application packages
|
||||
PRODUCT_PACKAGES += \
|
||||
TvSettingsTwoPanel \
|
||||
|
@ -52,6 +56,7 @@ PRODUCT_PACKAGES += \
|
|||
audio.primary.rpi4 \
|
||||
audio.usb.default \
|
||||
audio.r_submix.default \
|
||||
libc2plugin_store \
|
||||
wificond \
|
||||
wifilogd \
|
||||
wpa_supplicant \
|
||||
|
@ -89,6 +94,7 @@ PRODUCT_PACKAGES += \
|
|||
android.hardware.bluetooth@1.0-impl \
|
||||
android.hardware.configstore@1.1-service \
|
||||
android.hardware.tv.cec@1.0-service.mock \
|
||||
android.hardware.media.c2@1.0-service-v4l2 \
|
||||
vndservicemanager
|
||||
|
||||
# system configurations
|
||||
|
@ -103,7 +109,7 @@ PRODUCT_COPY_FILES := \
|
|||
frameworks/native/data/etc/android.hardware.bluetooth.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth.xml \
|
||||
frameworks/native/data/etc/android.hardware.bluetooth_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth_le.xml \
|
||||
frameworks/native/data/etc/android.hardware.camera.external.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.external.xml \
|
||||
$(LOCAL_PATH)/external_camera_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/external_camera_config.xml \
|
||||
$(LOCAL_PATH)/etc/external_camera_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/external_camera_config.xml \
|
||||
$(LOCAL_PATH)/init.usb.rc:root/init.usb.rc \
|
||||
$(LOCAL_PATH)/init.rpi4.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.rpi4.rc \
|
||||
$(LOCAL_PATH)/init.rpi4.usb.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.rpi4.usb.rc \
|
||||
|
@ -131,7 +137,7 @@ PRODUCT_COPY_FILES := \
|
|||
# media configurations
|
||||
PRODUCT_COPY_FILES := \
|
||||
device/generic/goldfish/camera/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles.xml \
|
||||
device/generic/goldfish/camera/media_codecs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \
|
||||
$(LOCAL_PATH)/etc/media_codecs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \
|
||||
frameworks/av/media/libeffects/data/audio_effects.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.conf \
|
||||
frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_audio.xml \
|
||||
frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml \
|
||||
|
@ -141,9 +147,10 @@ PRODUCT_COPY_FILES := \
|
|||
frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
|
||||
frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \
|
||||
frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
|
||||
$(LOCAL_PATH)/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
|
||||
$(LOCAL_PATH)/etc/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
|
||||
frameworks/base/data/sounds/effects/ogg/Effect_Tick_48k.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ui/Effect_Tick.ogg \
|
||||
frameworks/base/data/sounds/effects/ogg/camera_click_48k.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ui/camera_click.ogg \
|
||||
$(LOCAL_PATH)/etc/codec2.vendor.ext.policy:$(TARGET_COPY_OUT_VENDOR)/etc/seccomp_policy/codec2.vendor.ext.policy \
|
||||
$(PRODUCT_COPY_FILES)
|
||||
|
||||
PRODUCT_AAPT_PREF_CONFIG := tvdpi
|
||||
|
|
|
@ -23,4 +23,6 @@
|
|||
/vendor/lib64/libdrm\.so u:object_r:same_process_hal_file:s0
|
||||
/vendor/lib64/libglapi\.so u:object_r:same_process_hal_file:s0
|
||||
|
||||
/vendor/bin/hw/android\.hardware\.tv\.cec@1\.0-service\.mock u:object_r:hal_tv_cec_mock_exec:s0
|
||||
/vendor/bin/hw/android\.hardware\.tv\.cec@1\.0-service\.mock u:object_r:hal_tv_cec_mock_exec:s0
|
||||
|
||||
/vendor/bin/hw/android\.hardware\.media\.c2@1\.0-service-v4l2-64 u:object_r:mediacodec_exec:s0
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
allow mediacodec gpu_device:chr_file rw_file_perms;
|
||||
gpu_access(mediacodec)
|
|
@ -4,3 +4,5 @@
|
|||
/dev/ion 0664 system system
|
||||
/dev/video0 0660 system camera
|
||||
/dev/video1 0660 system camera
|
||||
/dev/video10 0660 media media
|
||||
/dev/dma_heap/linux,cma 0666 system graphics
|
||||
|
|
Loading…
Reference in New Issue