1

我正在尝试将三星 S5 上的硬件 JPEG 解码器用于我的 android 应用程序。这背后的原因是 Android 的 BitmapFactory 或 NDK libjpeg-turbo 速度不够快,无法以所需的帧速率处理图像。

由于缺乏数据表,很难确认该平台是否具有硬件解码器。我发现的唯一线索是系统中存在字符设备(/dev/jpeg0, /dev/jpeg1, /dev/jpeg2)。

我已经将其追溯到内核驱动程序(这是 Lineage14.1 代码库)kernel/samsung/klte/drivers/media/platform/msm/camera_v2/jpeg_10/。在启用调试的情况下重新编译后,我得到(dmesg | grep jpeg):

[    0.413878] msm_iommu_v1 fda64000.qcom,iommu: device jpeg_iommu mapped at c4fe0000, with 3 ctx banks
[    0.419962] msm_iommu_ctx_v1 fda6c000.qcom,iommu-ctx: context jpeg_enc0 using bank 0
[    0.420093] msm_iommu_ctx_v1 fda6d000.qcom,iommu-ctx: context jpeg_enc1 using bank 1
[    0.420218] msm_iommu_ctx_v1 fda6e000.qcom,iommu-ctx: context jpeg_dec using bank 2
[    1.550260] __msm_jpeg_init:908] Jpeg Device id 0
[    1.550317] msm_jpeg_q_init:32] evt_q
[    1.550370] msm_jpeg_q_init:32] output_rtn_q
[    1.550374] msm_jpeg_q_init:32] output_buf_q
[    1.550377] msm_jpeg_q_init:32] input_rtn_q
[    1.550382] msm_jpeg_q_init:32] input_buf_q
[    1.550395] __msm_jpeg_init:925] name jpeg_enc0
[    1.550399] __msm_jpeg_init:927] ctx 0xea6dd608
[    1.550434] __msm_jpeg_init:937] dom_num 0x7
[    1.550439] __msm_jpeg_init:944] dom 0xe9ae75c0
[    1.550443] msm_jpeg_init_dev: msm_jpeg_device_p 0xe9afec00
[    1.550487] msm_jpeg_init_dev jpeg0: success
[    1.550502] __msm_jpeg_init:908] Jpeg Device id 1
[    1.550557] msm_jpeg_q_init:32] evt_q
[    1.550611] msm_jpeg_q_init:32] output_rtn_q
[    1.550614] msm_jpeg_q_init:32] output_buf_q
[    1.550617] msm_jpeg_q_init:32] input_rtn_q
[    1.550621] msm_jpeg_q_init:32] input_buf_q
[    1.550633] __msm_jpeg_init:925] name jpeg_enc1
[    1.550636] __msm_jpeg_init:927] ctx 0xea6dd808
[    1.550664] __msm_jpeg_init:937] dom_num 0x8
[    1.550668] __msm_jpeg_init:944] dom 0xe9ae7f40
[    1.550672] msm_jpeg_init_dev: msm_jpeg_device_p 0xe9aff000
[    1.550720] msm_jpeg_init_dev jpeg1: success
[    1.550735] __msm_jpeg_init:908] Jpeg Device id 2
[    1.550835] msm_jpeg_q_init:32] evt_q
[    1.550890] msm_jpeg_q_init:32] output_rtn_q
[    1.550893] msm_jpeg_q_init:32] output_buf_q
[    1.550897] msm_jpeg_q_init:32] input_rtn_q
[    1.550900] msm_jpeg_q_init:32] input_buf_q
[    1.550912] __msm_jpeg_init:925] name jpeg_dec
[    1.550916] __msm_jpeg_init:927] ctx 0xea6dda08
[    1.550947] __msm_jpeg_init:937] dom_num 0x9
[    1.550952] __msm_jpeg_init:944] dom 0xe9b0a8c0
[    1.550955] msm_jpeg_init_dev: msm_jpeg_device_p 0xe9aff400
[    1.550997] msm_jpeg_init_dev jpeg2: success

所以它看起来对我很有希望。但...

没有文档如何使用它。提交消息声称某处应该有用户空间驱动程序。

msm: camera: JPEG Encoder driver

Add support for the new JPEG 1.0 encoder hardware.This
is the kernel driver and takes input from the corresponding
userspace driver.The new encoder hardware supports
formats H2V2, H2V1, H1V2 and H1V1. It also has support for
upscaling and downscaling.

但是我已经在整个 Android 项目中寻找与 JPEG 相关的任何内容,但我找不到它。与谷歌搜索相同。

因此,我将不胜感激有关如何使用此驱动程序进行 JPEG 硬件解码的信息。

4

0 回答 0