Android 自定义 ROM:强制软件解码器
Android custom ROM: force software decoders
我正在 Nexus 5X(牛头)上 运行 从 AOSP 构建 ROM。
我希望完全禁用硬件 audio/video 解码器并使平台通过软件路由所有内容 - 以与在模拟器上完全相同的方式工作。
我尝试编辑 audio_policy_configuration.xml 和 media_codecs.xml 以删除解码器,但是我在 logcat 中收到错误消息并且没有播放音频 - 我不知道如果这是正确的方向。
我通过在 hardware/qcom/audio/hal/audio_hw.c 中编辑以下内容实现了我想要的:
static uint32_t out_get_sample_rate(const struct audio_stream *stream)
{
/* struct stream_out *out = (struct stream_out *)stream;
return out->sample_rate;*/
return 44100;
}
static uint32_t out_get_channels(const struct audio_stream *stream)
{
/*struct stream_out *out = (struct stream_out *)stream;
return out->channel_mask;*/
return AUDIO_CHANNEL_OUT_STEREO;
}
static audio_format_t out_get_format(const struct audio_stream *stream)
{
/* struct stream_out *out = (struct stream_out *)stream;
return out->format;*/
return AUDIO_FORMAT_PCM_16_BIT;
}
我正在 Nexus 5X(牛头)上 运行 从 AOSP 构建 ROM。 我希望完全禁用硬件 audio/video 解码器并使平台通过软件路由所有内容 - 以与在模拟器上完全相同的方式工作。
我尝试编辑 audio_policy_configuration.xml 和 media_codecs.xml 以删除解码器,但是我在 logcat 中收到错误消息并且没有播放音频 - 我不知道如果这是正确的方向。
我通过在 hardware/qcom/audio/hal/audio_hw.c 中编辑以下内容实现了我想要的:
static uint32_t out_get_sample_rate(const struct audio_stream *stream)
{
/* struct stream_out *out = (struct stream_out *)stream;
return out->sample_rate;*/
return 44100;
}
static uint32_t out_get_channels(const struct audio_stream *stream)
{
/*struct stream_out *out = (struct stream_out *)stream;
return out->channel_mask;*/
return AUDIO_CHANNEL_OUT_STEREO;
}
static audio_format_t out_get_format(const struct audio_stream *stream)
{
/* struct stream_out *out = (struct stream_out *)stream;
return out->format;*/
return AUDIO_FORMAT_PCM_16_BIT;
}