Android 9.0 Mtk 平台设置Camera 默认的Preview size

        之前在做mtk平台Camera定制的时候遇到一个问题,主流的会议软件在Android 9.0 Mtk 平台使用的分辨率都是640*480,于是我猜想是会议apk调用Camera.java中的getPreviewSize()方法获取分辨率在调用setPreviewSize()方法再设置进去。

 

       从Android 8.0开始,media_profiles.xml/media_profiles_ducam.xml(双摄项目)成为了配置视频画质、格式、帧率等参数的文件了,而不同于之前7.0上放在MediaProflie.cpp中配置了。

        于是我在device/your_vendor/mt9950/configs/media_profiles.xml中配置如下代码:

       

 <EncoderProfile quality="1080p" fileFormat="mp4" duration="60">
            <Video codec="h264"
                   bitRate="7000000"
                   width="1920"
                   height="1080"
                   frameRate="30" />
            <!-- audio setting is ignored -->
            <Audio codec="amrnb"
                   bitRate="12200"
                   sampleRate="8000"
                   channels="1" />
        </EncoderProfile>

        重新编译后执行指令 dumpsys media.camera | grep preview

 在getPreviewSize()方法中添加打印发现返回的分辨率已经变成了1920*1080.

但是,会议软件使用的分辨率依旧是640*480

于是我又在getSupportedPreviewSizes()方法中,对返回的列表进行过滤处理,把列表中640*480给过滤掉       

private String filter4kPreview(String sizes){

            String p480 = ",640x480";
            if(sizes.contains(p480)){
                sizes = sizes.replace(p480,"");
                Log.i(TAG, "filter4kPreview p480 is replace"+sizes);
            }
            return sizes;
        }

        /**
         * Gets the supported preview sizes.
         *
         * @return a list of Size object. This method will always return a list
         *         with at least one element.
         */
        public List<Size> getSupportedPreviewSizes() {
            String str = get(KEY_PREVIEW_SIZE + SUPPORTED_VALUES_SUFFIX);

            Log.i(TAG, "getSupportedPreviewSizes filter: str size+"+str);            
            str = filter4kPreview(str);
            Log.i(TAG, "getSupportedPreviewSizes after filter: pair str+"+str);
            List<Size> sizes = splitSize(str);
            //Collections.reverse(sizes); 倒置列表
            return sizes;
        }

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值