Commit e64ccbfe authored by Chinyue Chen's avatar Chinyue Chen Committed by Commit Bot

[Chromecast] Encapsulate path to cast_audio.json

CastAudioJson encapsulates the path to tuning config and system config.

The commit also makes CastAudioJson as its own build target so that it
can be used by other components.

Bug: internal b/109845931
Test: Tested on Joplin
Change-Id: I6aef283b94f9ff48c9cadb15db6fbdb73756fbf1
Reviewed-on: https://chromium-review.googlesource.com/1095117
Commit-Queue: Chinyue Chen <chinyue@chromium.org>
Reviewed-by: default avatarKenneth MacKay <kmackay@chromium.org>
Cr-Commit-Position: refs/heads/master@{#567585}
parent 71da4dd6
...@@ -156,14 +156,23 @@ cast_source_set("audio_codec_support") { ...@@ -156,14 +156,23 @@ cast_source_set("audio_codec_support") {
] ]
} }
cast_source_set("cast_audio_json") {
sources = [
"cast_audio_json.cc",
"cast_audio_json.h",
]
deps = [
"//base",
]
}
cast_source_set("for_mixer_audio") { cast_source_set("for_mixer_audio") {
sources = [ sources = [
"audio_decoder_for_mixer.cc", "audio_decoder_for_mixer.cc",
"audio_decoder_for_mixer.h", "audio_decoder_for_mixer.h",
"buffering_mixer_source.cc", "buffering_mixer_source.cc",
"buffering_mixer_source.h", "buffering_mixer_source.h",
"cast_audio_json.cc",
"cast_audio_json.h",
"direct_mixer_source.cc", "direct_mixer_source.cc",
"direct_mixer_source.h", "direct_mixer_source.h",
"filter_group.cc", "filter_group.cc",
...@@ -189,6 +198,7 @@ cast_source_set("for_mixer_audio") { ...@@ -189,6 +198,7 @@ cast_source_set("for_mixer_audio") {
deps = [ deps = [
":audio_buildflags", ":audio_buildflags",
":audio_helpers", ":audio_helpers",
":cast_audio_json",
":public", ":public",
"//base", "//base",
"//chromecast/base", "//chromecast/base",
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include "chromecast/media/cma/backend/cast_audio_json.h" #include "chromecast/media/cma/backend/cast_audio_json.h"
#include "base/files/file_util.h"
#include "build/build_config.h" #include "build/build_config.h"
namespace chromecast { namespace chromecast {
...@@ -14,6 +15,22 @@ const char kCastAudioJsonFilePath[] = "/system/data/cast_audio.json"; ...@@ -14,6 +15,22 @@ const char kCastAudioJsonFilePath[] = "/system/data/cast_audio.json";
#else #else
const char kCastAudioJsonFilePath[] = "/etc/cast_audio.json"; const char kCastAudioJsonFilePath[] = "/etc/cast_audio.json";
#endif #endif
const char kCastAudioJsonFileName[] = "cast_audio.json";
// static
base::FilePath CastAudioJson::GetFilePath() {
base::FilePath tuning_path = CastAudioJson::GetFilePathForTuning();
if (base::PathExists(tuning_path)) {
return tuning_path;
}
return base::FilePath(kCastAudioJsonFilePath);
}
// static
base::FilePath CastAudioJson::GetFilePathForTuning() {
return base::GetHomeDir().Append(kCastAudioJsonFileName);
}
} // namespace media } // namespace media
} // namespace chromecast } // namespace chromecast
...@@ -5,10 +5,16 @@ ...@@ -5,10 +5,16 @@
#ifndef CHROMECAST_MEDIA_CMA_BACKEND_CAST_AUDIO_JSON_H_ #ifndef CHROMECAST_MEDIA_CMA_BACKEND_CAST_AUDIO_JSON_H_
#define CHROMECAST_MEDIA_CMA_BACKEND_CAST_AUDIO_JSON_H_ #define CHROMECAST_MEDIA_CMA_BACKEND_CAST_AUDIO_JSON_H_
#include "base/files/file_path.h"
namespace chromecast { namespace chromecast {
namespace media { namespace media {
extern const char kCastAudioJsonFilePath[]; class CastAudioJson {
public:
static base::FilePath GetFilePath();
static base::FilePath GetFilePathForTuning();
};
} // namespace media } // namespace media
} // namespace chromecast } // namespace chromecast
......
...@@ -41,21 +41,19 @@ StreamPipelineDescriptor::StreamPipelineDescriptor( ...@@ -41,21 +41,19 @@ StreamPipelineDescriptor::StreamPipelineDescriptor(
PostProcessingPipelineParser::PostProcessingPipelineParser( PostProcessingPipelineParser::PostProcessingPipelineParser(
const std::string& json) const std::string& json)
: postprocessor_config_(nullptr) { : postprocessor_config_(nullptr) {
if (json.empty() && base::FilePath path = CastAudioJson::GetFilePath();
!base::PathExists(base::FilePath(kCastAudioJsonFilePath))) { if (json.empty() && !base::PathExists(path)) {
LOG(WARNING) << "Could not open post-processing config in " LOG(WARNING) << "Could not open post-processing config in " << path << ".";
<< kCastAudioJsonFilePath << ".";
return; return;
} }
if (json.empty()) { if (json.empty()) {
config_dict_ = base::DictionaryValue::From( config_dict_ = base::DictionaryValue::From(DeserializeJsonFromFile(path));
DeserializeJsonFromFile(base::FilePath(kCastAudioJsonFilePath)));
} else { } else {
config_dict_ = base::DictionaryValue::From(DeserializeFromJson(json)); config_dict_ = base::DictionaryValue::From(DeserializeFromJson(json));
} }
CHECK(config_dict_) << "Invalid JSON in " << kCastAudioJsonFilePath; CHECK(config_dict_) << "Invalid JSON in " << path;
if (!config_dict_->GetDictionary(kPostProcessorsKey, if (!config_dict_->GetDictionary(kPostProcessorsKey,
&postprocessor_config_)) { &postprocessor_config_)) {
LOG(WARNING) << "No post-processor config found."; LOG(WARNING) << "No post-processor config found.";
...@@ -111,7 +109,7 @@ const base::ListValue* PostProcessingPipelineParser::GetPipelineByKey( ...@@ -111,7 +109,7 @@ const base::ListValue* PostProcessingPipelineParser::GetPipelineByKey(
if (!postprocessor_config_ || if (!postprocessor_config_ ||
!postprocessor_config_->GetDictionary(key, &stream_dict)) { !postprocessor_config_->GetDictionary(key, &stream_dict)) {
LOG(WARNING) << "No post-processor description found for \"" << key LOG(WARNING) << "No post-processor description found for \"" << key
<< "\" in " << kCastAudioJsonFilePath << "\" in " << CastAudioJson::GetFilePath()
<< ". Using passthrough."; << ". Using passthrough.";
return nullptr; return nullptr;
} }
......
...@@ -297,7 +297,7 @@ void StreamMixer::CreatePostProcessors( ...@@ -297,7 +297,7 @@ void StreamMixer::CreatePostProcessors(
<< "media/audio/audio_device_description.cc"; << "media/audio/audio_device_description.cc";
CHECK(used_streams.insert(stream_type).second) CHECK(used_streams.insert(stream_type).second)
<< "Multiple instances of stream type '" << stream_type << "' in " << "Multiple instances of stream type '" << stream_type << "' in "
<< kCastAudioJsonFilePath << "."; << CastAudioJson::GetFilePath() << ".";
} }
filter_groups_.push_back(CreateFilterGroup( filter_groups_.push_back(CreateFilterGroup(
FilterGroup::GroupType::kStream, kNumInputChannels, FilterGroup::GroupType::kStream, kNumInputChannels,
......
...@@ -104,7 +104,7 @@ class VolumeControlInternal : public SystemVolumeControl::Delegate { ...@@ -104,7 +104,7 @@ class VolumeControlInternal : public SystemVolumeControl::Delegate {
} else { } else {
// If saved_volumes does not exist, use per device default if it exists. // If saved_volumes does not exist, use per device default if it exists.
auto cast_audio_config = auto cast_audio_config =
DeserializeJsonFromFile(base::FilePath(kCastAudioJsonFilePath)); DeserializeJsonFromFile(CastAudioJson::GetFilePath());
const base::DictionaryValue* cast_audio_dict; const base::DictionaryValue* cast_audio_dict;
if (cast_audio_config && if (cast_audio_config &&
cast_audio_config->GetAsDictionary(&cast_audio_dict)) { cast_audio_config->GetAsDictionary(&cast_audio_dict)) {
......
...@@ -24,7 +24,7 @@ constexpr float kMinDbFS = -120.0f; ...@@ -24,7 +24,7 @@ constexpr float kMinDbFS = -120.0f;
VolumeMap::VolumeMap() { VolumeMap::VolumeMap() {
auto cast_audio_config = auto cast_audio_config =
DeserializeJsonFromFile(base::FilePath(kCastAudioJsonFilePath)); DeserializeJsonFromFile(CastAudioJson::GetFilePath());
const base::DictionaryValue* cast_audio_dict; const base::DictionaryValue* cast_audio_dict;
if (!cast_audio_config || if (!cast_audio_config ||
!cast_audio_config->GetAsDictionary(&cast_audio_dict)) { !cast_audio_config->GetAsDictionary(&cast_audio_dict)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment