当前位置:首页 > 编程笔记 > 正文
已解决

[Android] native MediaCodec

来自网友在路上 150850提问 提问时间:2023-11-11 21:30:09阅读次数: 50

最佳答案 问答题库508位专家为你答疑解惑

前言:

Android 的 libstagefright 库提供了 MediaCodec 组件,让应用层可以直接与 平台编解码器 交互。

MediaCodec 既有 JAVA 接口(\frameworks\base\media\java\android\media\MediaCodec.java),又有 NDK 接口(/frameworks/av/media/ndk/include/NdkMediaCodec.h  &&  /frameworks/av/media/ndk/NdkMediaCodec.cpp)。开发者可以自行选择使用 JAVA 还是 c++ 对MediaCodec 进行封装,由此可见MediaCodec 的重要性。

MediaCodec 的功能定位是编解码器中间件,它规范了编解码器的工作流程,并提供了成员变量mCodec 和 mBufferChannel 给平台层用以集成,平台层只需要实现两个继承于类CodecBase 和 BufferChannelBase 的子类,然后把他们自己实现的类封装成动态库,再把动态库注册到 libstagerfrightloader 里面即可,这样MediaCodec便可以连接到自定义的 CodeBase 子类 和 BufferChannelBase 子类。

不论是 JAVA 接口还是 NDK 接口,最终都会进入 native MediaCodec : /frameworks/av/media/libstagefright/MediaCodec.cpp

官方参考:https://developer.android.com/reference/android/media/MediaCodec

NDK 接口介绍:

见:/frameworks/av/media/ndk/include/media/NdkMediaCodec.h

native 介绍:

源码:/frameworks/av/media/libstagefright/MediaCodec.cpp

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"[Android] native MediaCodec":http://eshow365.cn/6-37940-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!