文章      动态     相关文章     最新文章     手机版动态     相关动态     |   首页|会员中心|保存桌面|手机浏览

678dlj

http://fabua.ksxb.net/com678dlj/

相关列表
文章列表
  • 暂无文章
推荐文章
联系方式
  • 联系人:李先生
  • 电话:13633835668
判断 Android手机支持的码率 手机码率在哪看手机av「判断 Android手机支持的码率 手机码率在哪看」
发布时间:2025-01-12        浏览次数:2        返回列表


system/etc目录下,查看m开头文件

判断 Android手机支持的码率 手机码率在哪看_android

判断 Android手机支持的码率 手机码率在哪看_判断 Android手机支持的码率_02


system目录下只有media_profiles.xml

但是在vendor目录下就可以看到

判断 Android手机支持的码率 手机码率在哪看_xml_03


目前看下来有两种配置文件:

media_codecs.xml和media_profiles.xml

两个分别对应MediaCodec和MediaProfiles

2.1.1 audio

文件路径:system/etc/media_codecs_google_audio.xml

常见参数:
Decoders(编码器)和Encoders(解码器):包含mediacodec信息
type:编解码类型,注意后续代码中获取该参数
Limit标签:

  1. channel-count:通道数
  2. sample-rate:采样率
  3. bitrate:码率
  4. complexity:复杂度
  5. bitrate-modes:码率控制方法1 2 VBR(Variable Bit Rate)动态比特率
    CBR(Constants Bits Rate)固定码率
    CQ 不控制码率

2.1.2 video

文件路径:system/etc/media_codecs_google_video.xml

常见参数:

  1. size:分辨率
  2. alignment
  3. block-size
  4. blocks-per-second
  5. adaptive-playback(feature标签)

文档路径:/system/etc/media_profiles.xml

3.1.1 配置文件路径定义

这里定义了默认的文件路径和默认的xml文件名

在IOmxStore 初始化的时候会调用rusahn

3.1.2 获取xml文件路径

media_codecs.xml文件加载函数

MediaCodecsXmlParser::parseXmlFilesInSearchDirs
|-- MediaCodecsXmlParser::Impl::parseXmlFilesInSearchDirs
|----MediaCodecsXmlParser::parseXmlPath
|------MediaCodecsXmlParser::Impl::parseXmlPath
|--------getVendorXmlPath

  1. getDefaultSearchDirs获取搜索文件夹路径
  2. parseXmlFilesInSearchDirs遍历这些文件夹
  3. parseXmlPath中会再搜索下vendor目录下的特定文件(比如/vendor/etc/media_codecs_performance_sdm66l_v1.xml)

3.1.3 解析xml文件

parseXmlFile函数解析xml,xml文件中的标签参数解析依据StartElementHandlerWrapper和EndElementHandlerWrapper
此时将xml文件中的参数存到XML_ParseBuffer中。

再往上调用实际上是存到MediaCodecList中,具体的调用流程

判断 Android手机支持的码率 手机码率在哪看_android_04

3.2.1 MediaProfiles类定义

在code中直接搜MediaProfiles,查看这个结构体的定义

文件路径:frameworksavmedialibmediaincludemediaMediaProfiles.h

3.2.2 加载xml函数流程

MediaProfiles::getInstance
首先判断media.settings.xml属性是否设置了
· 若已经定义了就再根据”ro.board.platform“,选定对应的xml文件
· 若未定义,就遍历xmlFiles,找到合适文件

MediaProfiles::createInstanceFromXmlFile函数
加载xml文件,存到static MediaProfiles *sInstance中。

以上是stagefright的处理流程。注意Nuplayer好像有改变

判断 Android手机支持的码率 手机码率在哪看_Parse_05

至此,将xml文件中的配置参数存到了MediaProfiles *sInstance中

3.3.4 加载流程

3.3.4.1 stagefrightRecorder

查看下函数MediaProfiles::getInstance如何被调用的

创建client

判断 Android手机支持的码率 手机码率在哪看_android_06

3.3.4.2 NuPlayer(无关)

获取mediacodec实例

判断 Android手机支持的码率 手机码率在哪看_android_07

有两种配置文件,mediacodec.xml和media_profile.xml
这两种解析出的数据分别存放到medicodeclist和mediaprofile中。
至于这两种配置文件的关系,后续有空再追