android硬編解碼

HTC(高通) 编码端:zhanganl encode frame.width():360 frame.height():480 width_ :360 height_:480 //实际编码384 480
解码端:zhanganl width:360 height:480 stride:384 output_buffer_size:276480

mate7(海思) 编码端:zhanganl encode frame.width():360 frame.height():480 width_ :360 height_:480 //实际编码368 480
解码端:zhanganl width:368 height:480 stride:368 output_buffer_size:264960

红米note(高通) 编码端:zhanganl encode frame.width():360 frame.height():480 width_ :360 height_:480 //实际编码368 480
解码端:zhanganl width:360 height:480 stride:368 output_buffer_size:278528

金立f103(MTK) 编码端:zhanganl encode frame.width():360 frame.height():480 width_ :360 height_:480 //实际编码368 480
解码端:zhanganl width:360 height:480 stride:360 output_buffer_size:259200

三星S6(Exynos) 编码端:zhanganl encoded image width :368 height:480 fps :0
frame_cropping_flag:1 left_offset:0 right_offset:4 top_offset:0 bottom_offset:0

结论:对于非16对齐的分辨率,都会对齐,但是解码端,解码出来的结果不同,这个主要适配点。
华为mate7,在解码360*480变到240*320的变分辨率时,会有很大的问题,还会保持360*480,而没有变化分辨率,导致一个大屏和一个小屏同时存在。

三星note5 n9200
报如下错误:

03-07 10:21:45.736 F/art (30938): art/runtime/java_vm_ext.cc:410] JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0xb7
03-07 10:21:45.736 F/art (30938): art/runtime/java_vm_ext.cc:410] string: 'Thread-1334 - 0إӿ'
03-07 10:21:45.736 F/art (30938): art/runtime/java_vm_ext.cc:410] in call to NewStringUTF
03-07 10:21:45.736 F/art (30938): art/runtime/java_vm_ext.cc:410] "<native thread without managed peer>" prio=10 tid=23 Runnable (still starting up)

参考文章:

http://blog.csdn.net/r_ine/article/details/53930327

解决方法则为在AndroidMainifest.xml中的application中加入android:debuggable="false"。

Found target encoder for mime video/avc : OMX.MTK.VIDEO.ENCODER.AVC. Color: 0x13
Found target encoder for mime video/avc : OMX.IMG.TOPAZ.VIDEO.Encoder. Color: 0x15
Found target encoder for mime video/avc : OMX.qcom.video.encoder.avc. Color: 0x15
Found target encoder for mime video/avc : OMX.Exynos.AVC.Encoder. Color: 0x13
Found target encoder for mime video/avc : OMX.Exynos.AVC.Encoder. Color: 0x15

三星S6 240320 支持 360480 花屏

编解码端还有stride 适配问题

对于360*480的编码后,stride会变成368,而华为海思解码后,width和stride都会解码成368,对渲染有影响,图像右边出现绿条。

http://stackoverflow.com/questions/26257474/select-h264-profile-when-encoding-with-mediacodec-and-mtk-codec
http://xcshen.blog.51cto.com/2835389/552669/

统一所有机器使用的profile和level,避免有的手机使用cabac编码,而解码端使用baseline,不支持cabac,无法解码
format.setInteger("profile", 0x01);
format.setInteger("level", 0x01);

关于mediacodec解码遇到的相关问题总结:
1、解码过程中变化分辨率,mate7等会大小屏。
2、对于360*480等不是16整数倍的宽高,不同机器的表现不一,一系列适配问题。
3、解码过程中重新设置解码器,会出现问题。

华为mate7编码720*1280时,会分为2个slice。

相关文章:
http://blog.csdn.net/u012917616/article/details/40948469
http://blog.csdn.net/zqs62761130/article/details/49007879
http://bigflake.com/mediacodec/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 原文:https://developer.android.com/reference/android/media/...
    thebestofrocky阅读 11,364评论 0 6
  • 几日前与朋友欢饮,席间谈到"完美女人"之话题,酒酣耳热之间,不免轻狂,老翟仿古词戏作曰: 窈窕淑女俊脸庞,眉目传情...
    翟伟阅读 3,283评论 0 1
  • 我的与众不同, 在于我背负着自己的家, 时时刻刻, 不曾稍卸。 我希望, 在受到刺激的一瞬间, 能有收缩的角落, ...
    天堂鸟之语阅读 2,767评论 6 4
  • 今天是2017年1月10日 冬瓜的实习依旧没有着落 依稀中抬起头 不经意间想象未来 被吓的缩回了脖子 将人再次埋进...
    闪电一样的冬瓜阅读 3,051评论 0 0

友情链接更多精彩内容