之前写过文档介绍过heif格式,并且对比了Android P,nokia开源库(heif专利主要所有者),IOS上heif的支持情况。
heif目前的主要价值在于它的高压缩率,更丰富的图像信息,较快的解码时间,以及可以和一些技术比如hdr进行整合。
那Android P上是怎样实现heif的解码的呢?
如果是你去实现,你会怎样去实现android对heif解码的支持呢?
android提供了标准的图片解码接口和图形框架,bitmap和skia库,其他解码库比如jpegturbo等就挂在skia库下;所以新增heif解码最兼容的方式也是去适配这个框架,把heif的解码库挂在skia下;具体到heif的解码,之前的文章介绍过它是封装和编码分离的,封装是mpeg4兼容的,图像编码采用的hevc,所以可以利用现成的mpeg4extractor和hevc decoder。
大致思路肯定是这样的,只不过android p上更进一步利用现成的MediaMetadataRetriver,它将extractor和decoder整合在一起了,通过getFrameAtTime(0, seek_options, color)获取解码后的图像数据;充分利用了现有的东西进行了整合,但是从这个getFrameAtTime(0,,)接口上可以看出只能解析出第一个图像,也就是只能支持静态图像的解码显示,而之前介绍过heif的full feature,比如类似gif的动图等是支持不了的,最多解出第一个图像。
大致解码流程总结如下:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。