20240104确认AIO-3399J的开发板适配ov13850摄像头不支持4K分辨率录像

20240104确认AIO-3399J的开发板适配ov13850摄像头不支持4K分辨率录像
2024/1/4 13:23


开发板:Firefly的AIO-3399J【RK3399】
SDK:rk3399-android-11-r20211216.tar.xz【Android11】
Android11.0.tar.bz2.aa【ToyBrick】
Android11.0.tar.bz2.ab
Android11.0.tar.bz2.ac

https://wiki.t-firefly.com/AIO-3399J/prepare_compile_android.html
AIO-3399J产品规格书 立即购买
AIO-3399J 采用 RK3399 六核(A72x2+A53x4) 64 位处理器,主频高达1.8GHz,集成了四核 Mali-T860 GPU,性能优异。


1、简略步骤:
rootroot@rootroot-X99-Turbo:~/3TB$ cat Android11.0.tar.bz2.a* > Android11.0.tar.bz2
rootroot@rootroot-X99-Turbo:~/3TB$ tar jxvf Android11.0.tar.bz2 
rootroot@rootroot-X99-Turbo:~/3TB$ mv Android11.0 64rk3399-android-11
rootroot@rootroot-X99-Turbo:~/3TB$ cd 64rk3399-android-11
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11$ cd u-boot
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11/u-boot$ ./make.sh rk3399
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11/u-boot$ cd ..
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11$ cd kernel/
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11/kernel$ make ARCH=arm64 rockchip_defconfig android-11.config -j36
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11/kernel$ make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3399_Android11/boot.img rk3399-sapphire-excavator-edp-avb.img -j36
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11$ source build/envsetup.sh 
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11$ lunch
     36. rk3399_Android11-userdebug
Which would you like? [aosp_arm-eng] 36
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11$ 
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11$ make -j36
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11$ ./build.sh -u


2、参考资料:【OV13850】看规格书DATASHEET是可以支持4K录像的【13.2MP at 30fps】,但是在RK3399平台的实践中有点问题。
https://dev.t-firefly.com/thread-129925-1-1.html
20240103_AIO-3399J刷官方Andorid10使用前后摄像头ov13850最高480p【不能是4K分辨率】

请问RK3399的ISP可以支持4K分辨率录像吗?
4K分辨率录像,4LANE下,MIPI的PCLK=

3840x2160x8x30=1990656000 = 1990M bps 也就是接近2G bps
4LANE下MIPI的PCLK=1990656000/(4x2)= 248832000 =【接近 250M bps】
【也就是在2LANE模式为 500M bps】

全像素模式下:support for image sizes: 13.2MP (4224x3136),
4224x3136x8x30=3179151360 = 3179M bps 也就是接近3.2G bps
4LANE下MIPI的PCLK=3179151360/(4x2)= 397393920 =【接近 400M bps】
【也就是在2LANE模式为 800M bps】


Sensor_OV13850-G04A_OmniVision_Specification(V1.1).pdf
OV13580的规格书DATASHEET告诉我们:13.2MP at 30fps

AIO-3399J_Android10_HDMI_210809.7z

点前后摄像头ov13850也只能前后1080p呀!


http://www.taodudu.cc/news/show-3050664.html?action=onClick
瑞芯微 | 摄像头ov13850移植笔记

https://www.shili8.cn/article/detail_20000400637.html
FPGA解码4K分辨率4line MIPI视频 OV13850采集 提供工程源码和技术支持
发布人:shili8 发布时间:2023-03-13 15:06 阅读次数:38

4、vivado工程介绍
工程架构如下:在这里插入图片描述
开发板:Xilinx Kintex7开发板;
开发环境:vivado2020.2;
输入:OV13850;4line;分辨率3840x2160;
输出:HDMI;分辨率1920x1080;


https://download.csdn.net/download/weixin_42651887/86228368?spm=1001.2101.3001.6650.14&utm_medium=distribute.pc_relevant.none-task-download-2%7Edefault%7EOPENSEARCH%7ERate-14-86228368-blog-130116729.235%5Ev39%5Epc_relevant_3m_sort_dl_base1&depth_1-utm_source=distribute.pc_relevant.none-task-download-2%7Edefault%7EOPENSEARCH%7ERate-14-86228368-blog-130116729.235%5Ev39%5Epc_relevant_3m_sort_dl_base1&utm_relevant_index=21
OV13850.tar.gz_Linux 驱动ov13850_OV13850 驱动_ov13850_ov13850驱动

extern const IsiRegDescription_t OV13850_g_2112x1568P30_fourlane_fpschg[];
extern const IsiRegDescription_t OV13850_g_2112x1568P25_fourlane_fpschg[];
extern const IsiRegDescription_t OV13850_g_2112x1568P20_fourlane_fpschg[];
extern const IsiRegDescription_t OV13850_g_2112x1568P15_fourlane_fpschg[];
extern const IsiRegDescription_t OV13850_g_2112x1568P10_fourlane_fpschg[];
extern const IsiRegDescription_t OV13850_g_4224x3136P15_fourlane_fpschg[];
extern const IsiRegDescription_t OV13850_g_4224x3136P7_fourlane_fpschg[];
extern const IsiRegDescription_t OV13850_g_4224x3136P4_fourlane_fpschg[];


http://www.orangepi.cn/orangepiwiki/index.php?title=OV13850_%E5%92%8C_OV13855_MIPI_%E6%91%84%E5%83%8F%E5%A4%B4%E7%9A%84%E6%B5%8B%E8%AF%95%E6%96%B9%E6%B3%95
OV13850 和 OV13855 MIPI 摄像头的测试方法

目前测试 OV13850 不支持 4K 录制视频(OV13855 支持),最高只支持 1080p, 录制视频时请在设置中将视频格式切换到 1080p,步骤如下所示:
a. 首先进入摄像头 APP 的设置界面,然后点击 Resolution & quality


3、为了确认RK3399的ISP/编码器否支持4K录像。
找了很多地方,比如给taobao淘宝上的nanoPi-T4的全部卖家发消息核实。
都回答不行!

请问 这款涉嫌头 ov13850 适配 NanoPC-T4 开发板【RK3399】
可以 4K分辨率录像吗?
【3840x2160 @ 30fps】

https://item.taobao.com/item.htm?id=598190977880&spm=a21m98.27004841
OV13850高清摄像模组MIPI口NanoPC-T4 Pi M4 NEO4 CAM1320摄像头

注1:以上特性描述主要来自于OV13850数据手册;
注2:因主控本身功能特性有限,以上部分性能指标不一定能达到,请以实际为准,更多功能特性,请自行研究使用。


直接找到RK3399的官方文档:
4. 编译 Android10.0 固件
4.1. 下载 Android SDK
由于 SDK 较大,可以去下载页面选择云盘下载 Firefly-RK3399_Android10.0_git_20211222.7z:
https://www.t-firefly.com/doc/download/page/id/31.html

Z:\rk3399_Android10.0\RKDocs\rk3399\Rockchip_RK3399_Introduction_Multimedia_Codec_Benchmark_EN.pdf


4、尝试强制在RK3399的Android11下给摄像头录像的分辨率增加4K选项!

https://blog.csdn.net/QliumengQ/article/details/129623726
2023-03-17 18:05:57-RK3588 camera2 支持4K录像-开开心心everyday


console:/ # 
console:/ # dumpsys media.camera | grep picture-size  
    picture-size: 4096x3136
    picture-size-values: 4096x3136,2112x1568,1920x1080,1280x960,1280x720,640x480,352x288,320x240,176x144
console:/ # 

console:/ # 

 


largeIndex mediumIndex smallIndex 大 中 小 列表中的三个值,需要继续一层层的跟下去,getNextSupportedVideoQualityIndex里面有个判断把4K分辨率过滤掉了,这个判断需要打开

    private static boolean isVideoQualitySupported(int videoQuality) {
        // 4k is only supported on L or higher but some devices falsely report
        // to have support for it on K, see b/18172081.
        if (!ApiHelper.isLOrHigher() && videoQuality == CamcorderProfile.QUALITY_2160P) {
            return false;
        }
        return true;
    }

&& videoQuality == CamcorderProfile.QUALITY_2160P 这个条件判断去掉
getNextSupportedVideoQualityIndex是获取的接口,代码都贴出来太多,整个调用顺序好了。


rootroot@rootroot-X99-Turbo:~/3TB/66原始Android11.0/packages/apps/Camera2$ grep CamcorderProfile.QUALITY_2160P . -R
./src/com/android/camera/settings/SettingsUtil.java:            CamcorderProfile.QUALITY_2160P,
./src/com/android/camera/settings/SettingsUtil.java:        if (!ApiHelper.isLOrHigher() && videoQuality == CamcorderProfile.QUALITY_2160P) {

grep: ./.git/info: No such file or directory
grep: ./.git/logs: No such file or directory
grep: ./.git/refs: No such file or directory
grep: ./.git/hooks: No such file or directory
grep: ./.git/packed-refs: No such file or directory
grep: ./.git/rr-cache: No such file or directory
grep: ./.git/objects: No such file or directory
grep: ./.git/svn: No such file or directory
grep: ./.git/description: No such file or directory
grep: ./.git/config: No such file or directory
grep: ./.git/shallow: No such file or directory
rootroot@rootroot-X99-Turbo:~/3TB/66原始Android11.0/packages/apps/Camera2$ 


Z:\3TB\64rk3399-android-11\packages\apps\Camera2\src\com\android\camera\settings\SettingsUtil.java
    /**
     * @return Whether the given {@link CamcorderProfile} is supported on the
     *         current device/OS version.
     */
    private static boolean isVideoQualitySupported(int videoQuality) {
        // 4k is only supported on L or higher but some devices falsely report
        // to have support for it on K, see b/18172081.
        if (!ApiHelper.isLOrHigher() && videoQuality == CamcorderProfile.QUALITY_2160P) {
            return false;
        }
        return true;
    }

修改为:
    /**
     * @return Whether the given {@link CamcorderProfile} is supported on the
     *         current device/OS version.
     */
    private static boolean isVideoQualitySupported(int videoQuality) {
        // 4k is only supported on L or higher but some devices falsely report
        // to have support for it on K, see b/18172081.
        //if (!ApiHelper.isLOrHigher() && videoQuality == CamcorderProfile.QUALITY_2160P) {
        if ( !ApiHelper.isLOrHigher() ) {

            Log.w(TAG, "2024/1/4 11:06 wenyuanbo");
            Log.d(TAG, "2025/1/4 11:07 wenyuanbo");
            return false;
        }
        return true;
    }


【参照1080p的参数配置2160P/4K分辨率的!】
N:\AIO-3399J\media_profiles_V1_0.xml
        <!--  If your sensor driver don't support 1080p stream, Please turn off this element -->
        <EncoderProfile quality="1080p" fileFormat="mp4" duration="30">
            <Video codec="h264"
                   bitRate="22000000"
                   width="1920"
                   height="1080"
                   frameRate="30" />
            <Audio codec="aac"
                   bitRate="96000"
                   sampleRate="44100"
                   channels="1" />
        </EncoderProfile>

        <!--  If your sensor driver don't support 1080p stream, Please turn off this element -->
        <EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="30">
            <Video codec="h264"
                   bitRate="12000000"
                   width="1920"
                   height="1080"
                   frameRate="30" />
            <Audio codec="aac"
                   bitRate="96000"
                   sampleRate="44100"
                   channels="1" />
        </EncoderProfile>

        
        <!--  If your sensor driver don't support 2160p stream, Please turn off this element -->
        <EncoderProfile quality="2160p" fileFormat="mp4" duration="30">
            <Video codec="h264"
                   bitRate="18000000"
                   width="3840"
                   height="2160"
                   frameRate="30" />
            <Audio codec="aac"
                   bitRate="96000"
                   sampleRate="44100"
                   channels="1" />
        </EncoderProfile>

        <!--  If your sensor driver don't support 2160p stream, Please turn off this element -->
        <EncoderProfile quality="timelapse2160p" fileFormat="mp4" duration="30">
            <Video codec="h264"
                   bitRate="18000000"
                   width="3840"
                   height="2160"
                   frameRate="30" />
            <Audio codec="aac"
                   bitRate="96000"
                   sampleRate="44100"
                   channels="1" />
        </EncoderProfile>

    <!--
         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="18000000"
        minFrameWidth="176" maxFrameWidth="1920"
        minFrameHeight="144" maxFrameHeight="1080"

        minFrameRate="1" maxFrameRate="30" />

修改为:
    <!--
         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="18000000"
        minFrameWidth="176" maxFrameWidth="3840"
        minFrameHeight="144" maxFrameHeight="2160"

        minFrameRate="1" maxFrameRate="30" />

Microsoft Windows [版本 10.0.19045.2311]
(c) Microsoft Corporation。保留所有权利。

C:\Users\Administrator>adb root
* daemon not running; starting now at tcp:5037
* daemon started successfully
restarting adbd as root

C:\Users\Administrator>adb remount
remount succeeded

C:\Users\Administrator>
C:\Users\Administrator>cd N:\AIO-3399J

C:\Users\Administrator>n:

N:\AIO-3399J>adb push media_profiles_V1_0.xml /vendor/etc/
media_profiles_V1_0.xml: 1 file pushed, 0 skipped. 0.4 MB/s (24266 bytes in 0.059s)

N:\AIO-3399J>

效果图:


5、出错的分析:LOGCAT出错
01-04 03:51:39.506     0     0 W rkisp1  : Measurement late(162, 161)
01-04 03:51:39.767  1738  1738 D CAM_VideoModule: onShutterButtonClick
01-04 03:51:39.767  1738  1738 I CAM_VideoModule: startVideoRecording: Thread[main,5,main]
01-04 03:51:39.767  1738  1738 V CAM_VideoUI: mFocusRing.stopFocusAnimations()
01-04 03:51:39.768  1738  1738 D CAM_CameraActivity: mUpdateStorageTask = com.android.camera.CameraActivity$22@7e08a80
01-04 03:51:39.784  1738  1798 D CAM_Storage: External storage state=mounted
01-04 03:51:39.786  1738  1798 D CAM_Storage: /storage/emulated/0/DCIM/Camera can write:true
01-04 03:51:39.792  1738  1798 E CAM_Storage: getOtherAvailableSpace DIRECTORY:/DCIM/Camera UNAVAILABLE
01-04 03:51:39.797  1738  1798 E CAM_Storage: getOtherAvailableSpace DIRECTORY:/DCIM/Camera UNAVAILABLE
01-04 03:51:39.798  1738  1738 I CAM_VideoModule: initializeRecorder: Thread[main,5,main]
01-04 03:51:39.800   355  1729 W StagefrightRecorder: stop while neither recording nor paused
01-04 03:51:39.807  1738  1738 D CAM_VideoModule: camera isReleased:false
01-04 03:51:39.821   355   927 W StagefrightRecorder: Max file duration is not positive: 0 us. Disabling duration limit.
01-04 03:51:39.821   355   927 W StagefrightRecorder: Target duration (0 us) too short to be respected
01-04 03:51:39.822  1738  1738 D CAM_LcyLocProvider: No location received yet.
01-04 03:51:39.828  1738  1738 D CAM_LcyLocProvider: No location received yet.
01-04 03:51:39.829  1738  1738 V CAM_VideoModule: New video filename: /storage/emulated/0/DCIM/Camera/VID_20240104_035139.mp4.tmp
01-04 03:51:39.877   355   927 D MPEG4Writer: PreAllocation disabled. fallocate : Operation not supported on transport endpoint, 95

01-04 03:51:39.878   355   927 E CameraSource: Video dimension (3840x2160) is unsupported
01-04 03:51:39.878   355   927 I BpBinder: onLastStrongRef automatically unlinking death recipients: <uncached descriptor>
01-04 03:51:39.878   355   927 D MPEG4Writer: reset()
01-04 03:51:39.878   355   927 D MPEG4Writer: release()
01-04 03:51:39.882  1738  1738 E MediaRecorder: start failed: -19
01-04 03:51:39.883  1738  1738 E CAM_VideoModule: Could not start media recorder. 
01-04 03:51:39.883  1738  1738 E CAM_VideoModule: java.lang.RuntimeException: start failed.
01-04 03:51:39.883  1738  1738 E CAM_VideoModule:     at android.media.MediaRecorder.start(Native Method)
01-04 03:51:39.883  1738  1738 E CAM_VideoModule:     at com.android.camera.VideoModule$14.onStorageUpdateDone(VideoModule.java:1614)
01-04 03:51:39.883  1738  1738 E CAM_VideoModule:     at com.android.camera.CameraActivity$22.onPostExecute(CameraActivity.java:2770)
01-04 03:51:39.883  1738  1738 E CAM_VideoModule:     at com.android.camera.CameraActivity$22.onPostExecute(CameraActivity.java:2754)
01-04 03:51:39.883  1738  1738 E CAM_VideoModule:     at android.os.AsyncTask.finish(AsyncTask.java:771)
01-04 03:51:39.883  1738  1738 E CAM_VideoModule:     at android.os.AsyncTask.access$900(AsyncTask.java:199)
01-04 03:51:39.883  1738  1738 E CAM_VideoModule:     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:788)
01-04 03:51:39.883  1738  1738 E CAM_VideoModule:     at android.os.Handler.dispatchMessage(Handler.java:106)
01-04 03:51:39.883  1738  1738 E CAM_VideoModule:     at android.os.Looper.loop(Looper.java:223)
01-04 03:51:39.883  1738  1738 E CAM_VideoModule:     at android.app.ActivityThread.main(ActivityThread.java:7660)
01-04 03:51:39.883  1738  1738 E CAM_VideoModule:     at java.lang.reflect.Method.invoke(Native Method)
01-04 03:51:39.883  1738  1738 E CAM_VideoModule:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
01-04 03:51:39.883  1738  1738 E CAM_VideoModule:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
01-04 03:51:39.883  1738  1738 E CAM_FatalErrorHandler: Handling Camera Access Failure:
01-04 03:51:39.883  1738  1738 E CAM_FatalErrorHandler: java.lang.Exception
01-04 03:51:39.883  1738  1738 E CAM_FatalErrorHandler:     at com.android.camera.FatalErrorHandlerImpl.onGenericCameraAccessFailure(FatalErrorHandlerImpl.java:84)
01-04 03:51:39.883  1738  1738 E CAM_FatalErrorHandler:     at com.android.camera.VideoModule$14.onStorageUpdateDone(VideoModule.java:1617)
01-04 03:51:39.883  1738  1738 E CAM_FatalErrorHandler:     at com.android.camera.CameraActivity$22.onPostExecute(CameraActivity.java:2770)
01-04 03:51:39.883  1738  1738 E CAM_FatalErrorHandler:     at com.android.camera.CameraActivity$22.onPostExecute(CameraActivity.java:2754)
01-04 03:51:39.883  1738  1738 E CAM_FatalErrorHandler:     at android.os.AsyncTask.finish(AsyncTask.java:771)
01-04 03:51:39.883  1738  1738 E CAM_FatalErrorHandler:     at android.os.AsyncTask.access$900(AsyncTask.java:199)
01-04 03:51:39.883  1738  1738 E CAM_FatalErrorHandler:     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:788)
01-04 03:51:39.883  1738  1738 E CAM_FatalErrorHandler:     at android.os.Handler.dispatchMessage(Handler.java:106)
01-04 03:51:39.883  1738  1738 E CAM_FatalErrorHandler:     at android.os.Looper.loop(Looper.java:223)
01-04 03:51:39.883  1738  1738 E CAM_FatalErrorHandler:     at android.app.ActivityThread.main(ActivityThread.java:7660)
01-04 03:51:39.883  1738  1738 E CAM_FatalErrorHandler:     at java.lang.reflect.Method.invoke(Native Method)
01-04 03:51:39.883  1738  1738 E CAM_FatalErrorHandler:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
01-04 03:51:39.883  1738  1738 E CAM_FatalErrorHandler:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
01-04 03:51:39.884  1738  1738 E CAM_CameraUtil: Show fatal error dialog
01-04 03:51:39.911  1738  1738 I CAM_VideoModule: Releasing media recorder.
01-04 03:51:39.928  1175  1310 I MediaProvider: Deleted 1 items on external_primary due to com.android.camera2
01-04 03:51:39.930  1738  1738 V CAM_VideoModule: Empty video file deleted: /storage/emulated/0/DCIM/Camera/VID_20240104_035139.mp4.tmp
01-04 03:51:39.930   355   927 W StagefrightRecorder: stop while neither recording nor paused
01-04 03:51:39.934   355   405 W StagefrightRecorder: stop while neither recording nor paused
01-04 03:51:39.934   355   405 W StagefrightRecorder: stop while neither recording nor paused
01-04 03:51:39.936  1738  1738 I CAM_VideoModule: Released media recorder.
01-04 03:51:39.959  1738  1765 D mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, egl_color_buffer_format *, EGLBoolean) returns 0x3000
01-04 03:51:39.960   230   230 D gralloc4: [File] : hardware/rockchip/libgralloc/midgard/src/hidl_common/Allocator.cpp; [Line] : 147; [Func] : allocate;
01-04 03:51:39.960   230   230 D gralloc4: got new private_handle_t instance @0xb4000071f9e12890 for buffer 'com.android.camera2/com.android.camera.CameraLauncher#1'. share_fd : 8, share_attr_fd : 9, flags : 0x4, width : 1217, height : 463, req_format : 0x1, producer_usage : 0xb00, consumer_usage : 0xb00, internal_format : 0x1, stride : 0, byte_stride : 4928, internalWidth : 1217, internalHeight : 463, alloc_format : 0x1, size : 2281664, layer_count : 1, backing_store_size : 2281664, allocating_pid : 230, ref_count : 1, yuv_info : 0
01-04 03:51:39.960   230   230 D gralloc4: plane_info[0]: offset : 0, byte_stride : 4928, alloc_width : 1217, alloc_height : 463
01-04 03:51:39.960   230   230 D gralloc4: plane_info[1]: offset : 0, byte_stride : 0, alloc_width : 0, alloc_height : 0
01-04 03:51:39.961   230   230 D gralloc4: [File] : hardware/rockchip/libgralloc/midgard/src/hidl_common/Allocator.cpp; [Line] : 147; [Func] : allocate;
01-04 03:51:39.961   230   230 D gralloc4: got new private_handle_t instance @0xb4000071f9e10250 for buffer 'com.android.camera2/com.android.camera.CameraLauncher#1'. share_fd : 8, share_attr_fd : 9, flags : 0x4, width : 1217, height : 463, req_format : 0x1, producer_usage : 0xb00, consumer_usage : 0xb00, internal_format : 0x1, stride : 0, byte_stride : 4928, internalWidth : 1217, internalHeight : 463, alloc_format : 0x1, size : 2281664, layer_count : 1, backing_store_size : 2281664, allocating_pid : 230, ref_count : 1, yuv_info : 0
01-04 03:51:39.961   230   230 D gralloc4: plane_info[0]: offset : 0, byte_stride : 4928, alloc_width : 1217, alloc_height : 463
01-04 03:51:39.961   230   230 D gralloc4: plane_info[1]: offset : 0, byte_stride : 0, alloc_width : 0, alloc_height : 0
01-04 03:51:39.962   230   230 D gralloc4: [File] : hardware/rockchip/libgralloc/midgard/src/hidl_common/Allocator.cpp; [Line] : 147; [Func] : allocate;
01-04 03:51:39.962   230   230 D gralloc4: got new private_handle_t instance @0xb4000071f9e12890 for buffer 'com.android.camera2/com.android.camera.CameraLauncher#1'. share_fd : 8, share_attr_fd : 9, flags : 0x4, width : 1217, height : 463, req_format : 0x1, producer_usage : 0xb00, consumer_usage : 0xb00, internal_format : 0x1, stride : 0, byte_stride : 4928, internalWidth : 1217, internalHeight : 463, alloc_format : 0x1, size : 2281664, layer_count : 1, backing_store_size : 2281664, allocating_pid : 230, ref_count : 1, yuv_info : 0
01-04 03:51:39.962   230   230 D gralloc4: plane_info[0]: offset : 0, byte_stride : 4928, alloc_width : 1217, alloc_height : 463
01-04 03:51:39.962   230   230 D gralloc4: plane_info[1]: offset : 0, byte_stride : 0, alloc_width : 0, alloc_height : 0
01-04 03:51:39.980  1738  1765 D android.camera: set stream to NULL
[   46.672930] rkisp1: Measurement late(179, 178)
01-04 03:51:40.074     0     0 W rkisp1  : Measurement late(179, 178)

baidu/bing/google搜索: CameraSource: Video dimension (3840x2160) is unsupported

https://blog.csdn.net/dongxianfei/article/details/122622733
CTS测试中和Media相关的项-testGet/testGetWithId

(4)示例
(A)
03-22 10:15:40.088 10164 23970 23995 V CamcorderProfileTest: profile: duration=30, quality=1, fileFormat=2, videoCodec=2, videoBitRate=43000000, videoFrameRate=30, videoFrameWidth=3840, videoFrameHeight=2160, audioCodec=3, audioBitRate=128000, audioSampleRate=48000, audioChannels=2
03-22 10:15:40.088 10164 23970 23995 E CamcorderProfileTest: Size (3840x2160) is not supported
03-22 10:15:40.089 10164 23970 23995 E TestRunner: failed: testGet(android.media.cts.CamcorderProfileTest)
03-22 10:15:40.089 10164 23970 23995 E TestRunner: ----- begin exception -----
03-22 10:15:40.091 10164 23970 23995 E TestRunner: junit.framework.AssertionFailedError
03-22 10:15:40.091 10164 23970 23995 E TestRunner:     at junit.framework.Assert.fail(Assert.java:48)
03-22 10:15:40.091 10164 23970 23995 E TestRunner:     at junit.framework.Assert.assertTrue(Assert.java:20)
03-22 10:15:40.091 10164 23970 23995 E TestRunner:     at junit.framework.Assert.assertTrue(Assert.java:27)
03-22 10:15:40.091 10164 23970 23995 E TestRunner:     at android.media.cts.CamcorderProfileTest.checkProfile(CamcorderProfileTest.java:129)
03-22 10:15:40.091 10164 23970 23995 E TestRunner:     at android.media.cts.CamcorderProfileTest.checkGet(CamcorderProfileTest.java:402)
03-22 10:15:40.091 10164 23970 23995 E TestRunner:     at android.media.cts.CamcorderProfileTest.testGet(CamcorderProfileTest.java:494)

从Log可以看到,CamcorderProfileTest: Size (3840x2160) is not supported。

此时查看media_profiles.xml当中有配置这个size,那最大可能就是此Size超过了Sensor Drv输出能力,经确认Sensor最大输出3264x2448,从而需要从media_profiles.xml当中移除此Size。


http://www.taodudu.cc/news/show-3050665.html?action=onClick
RK3399适配OV8858摄像头

Video

Back camera video

UHD 4K

Camera error
Can't connect to the camera.
REPORT DISMISS

视频
后置摄像头视频
UHD 4K

相机发生错误
无法连接到相机。
报告 关闭


参考资料:
http://www.friendlyelec.com.cn/agent.asp
http://www.friendlyelec.com.cn/
https://download.friendlyelec.com/NanoPC-T4
https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T4/zh#.E4.B8.8B.E8.BD.BDAndroid10.E6.BA.90.E4.BB.A3.E7.A0.81


https://item.taobao.com/item.htm?spm=a1z09.2.0.0.37562e8dcotDm6&id=570312633249&_u=7ju3ku004a
友善NanoPC-T4瑞芯微RK3399开发板ROS双摄4K播放开源AI智能安卓10

WiKi维基教程(固件介绍,使用说明,操作步骤等)
http://wiki.friendlyelec.com/wiki/index.php/NanoPC-T4
系统固件下载
https://dl.friendlyelec.com/nanopct4
原理图(pdf格式)
http://wiki.friendlyelec.com/wiki/images/e/e0/NanoPC-T4-1902-Schematic.pdf
尺寸图(dxf格式)
http://wiki.friendlyelec.com/wiki/images/b/bc/NanoPC-T4_1802_Drawing%28dxf%29.zip


http://www.friendlyelec.com.cn/nanopi-m4.asp
NanoPi M4 | NanoPi M4V2

https://wiki.friendlyelec.com/wiki/index.php/NanoPi_M4/zh
15.3 编译Android10源代码
15.3.1 下载Android10源代码
有以下两种途径获取 Android10 的源代码,都需要联网:

使用网盘里的git repo压缩包
网盘下载地址: 点击进入

https://download.friendlyelec.com/NanoPiM4
https://pan.baidu.com/share/init?surl=oBLn9H31hILJKEPQXgrUog
提取码:yn6r

  • 22
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值