[Replicant] [PATCH] make video recording working again

Wolfgang Wiedmeyer wreg at wiedmeyer.de
Thu Sep 24 10:57:06 UTC 2015


Hi,

I reverted some changes and re-enabled hardware video
encoding/decoding. Recording video now works fine with a Galaxy S3 and
the proprietary firmware blobs (namely mfc_fw.bin, SlimISP_GD.bin and
SlimISP_ZD.bin). Playback of the recorded videos with vlc is quite
smooth, even in 1080p.
Without the blobs, taking pictures still works fine (as before).
BTW except for two bugs I noticed, the app Open Camera also works. This
app provides lots of additional settings and is available from F-Droid. 

Signed-off-by: Wolfgang Wiedmeyer <wolfgit at wiedmeyer.de>
---
 BoardCommonConfig.mk     |  9 +++++++++
 common.mk                | 21 +++++++++++++++++++++
 configs/80cfw            | 10 ++++++++++
 configs/media_codecs.xml | 10 ++++++++++
 4 files changed, 50 insertions(+)
 create mode 100644 configs/80cfw

diff --git a/BoardCommonConfig.mk b/BoardCommonConfig.mk
index b4ae1bf..e0f6852 100644
--- a/BoardCommonConfig.mk
+++ b/BoardCommonConfig.mk
@@ -90,6 +90,15 @@ BOARD_CAMERA_HAVE_ISO := true
 COMMON_GLOBAL_CFLAGS += -DHAVE_ISO
 COMMON_GLOBAL_CFLAGS += -DSAMSUNG_CAMERA_HARDWARE
 
+# OMX
+BOARD_USE_SAMSUNG_COLORFORMAT := true
+BOARD_NONBLOCK_MODE_PROCESS := true
+BOARD_USE_STOREMETADATA := true
+BOARD_USE_METADATABUFFERTYPE := true
+BOARD_USES_MFC_FPS := true
+BOARD_USE_S3D_SUPPORT := true
+BOARD_USE_CSC_FIMC := false
+
 # RIL
 BOARD_MOBILEDATA_INTERFACE_NAME := "pdp0"
 
diff --git a/common.mk b/common.mk
index 18b0715..93bed95 100644
--- a/common.mk
+++ b/common.mk
@@ -38,6 +38,10 @@ PRODUCT_COPY_FILES += \
     $(COMMON_PATH)/configs/audio_effects.conf:system/etc/audio_effects.conf \
     $(COMMON_PATH)/configs/audio_policy.conf:system/etc/audio_policy.conf
 
+# Camera FW
+PRODUCT_COPY_FILES += \
+    $(COMMON_PATH)/configs/80cfw:system/etc/init.d/80cfw
+
 # Vold and Storage
 PRODUCT_COPY_FILES += \
     $(COMMON_PATH)/configs/vold.fstab:system/etc/vold.fstab
@@ -81,6 +85,23 @@ PRODUCT_PACKAGES += \
     charger \
     charger_res_images
 
+# MFC API
+PRODUCT_PACKAGES += \
+    libsecmfcdecapi \
+    libsecmfcencapi
+
+# OMX
+PRODUCT_PACKAGES += \
+    libstagefrighthw \
+    libSEC_OMX_Resourcemanager \
+    libSEC_OMX_Core \
+    libOMX.SEC.AVC.Decoder \
+    libOMX.SEC.M4V.Decoder \
+    libOMX.SEC.WMV.Decoder \
+    libOMX.SEC.AVC.Encoder \
+    libOMX.SEC.M4V.Encoder
+#   libOMX.SEC.VP8.Decoder
+
 PRODUCT_COPY_FILES += \
     $(COMMON_PATH)/configs/media_profiles.xml:system/etc/media_profiles.xml \
     $(COMMON_PATH)/configs/media_codecs.xml:system/etc/media_codecs.xml
diff --git a/configs/80cfw b/configs/80cfw
new file mode 100644
index 0000000..7b803ff
--- /dev/null
+++ b/configs/80cfw
@@ -0,0 +1,10 @@
+#!/system/bin/sh
+#
+# Copy camera firmware to /data/cfw
+#
+
+busybox cp /system/vendor/firmware/SlimISP_*.bin /data/cfw/
+
+busybox chown system /data/cfw/*
+busybox chgrp media /data/cfw/*
+busybox chmod 0775 /data/cfw/*
diff --git a/configs/media_codecs.xml b/configs/media_codecs.xml
index e4298a8..c8719db 100644
--- a/configs/media_codecs.xml
+++ b/configs/media_codecs.xml
@@ -77,6 +77,12 @@ Only the three quirks included above are recognized at this point:
 
 <MediaCodecs>
     <Decoders>
+        <MediaCodec name="OMX.SEC.AVC.Decoder" type="video/avc" />
+        <MediaCodec name="OMX.SEC.MPEG4.Decoder" type="video/mp4v-es" />
+        <MediaCodec name="OMX.SEC.H263.Decoder" type="video/3gpp" />
+        <MediaCodec name="OMX.SEC.AVC.Decoder" type="video/avc" />
+        <MediaCodec name="OMX.SEC.VP8.Decoder" type="video/x-vnd.on2.vp8" />
+
         <MediaCodec name="OMX.google.mp3.decoder" type="audio/mpeg" />
         <MediaCodec name="OMX.google.amrnb.decoder" type="audio/3gpp" />
         <MediaCodec name="OMX.google.amrwb.decoder" type="audio/amr-wb" />
@@ -91,6 +97,10 @@ Only the three quirks included above are recognized at this point:
     </Decoders>
 
     <Encoders>
+        <MediaCodec name="OMX.SEC.MPEG4.Encoder" type="video/mp4v-es" />
+        <MediaCodec name="OMX.SEC.H263.Encoder" type="video/3gpp" />
+        <MediaCodec name="OMX.SEC.AVC.Encoder" type="video/avc" />
+
         <MediaCodec name="OMX.google.amrnb.encoder" type="audio/3gpp" />
         <MediaCodec name="OMX.google.amrwb.encoder" type="audio/amr-wb" />
         <MediaCodec name="OMX.google.aac.encoder" type="audio/mp4a-latm" />
-- 
2.1.4



More information about the Replicant mailing list