| Index: services/media/framework/conversion_pipeline_builder.cc
|
| diff --git a/services/media/framework/conversion_pipeline_builder.cc b/services/media/framework/conversion_pipeline_builder.cc
|
| index 2f21eefc477c0ffc78a57d8498095aeb3258ebae..dfef3b826ef304082197c0607c37914bb814bfe1 100644
|
| --- a/services/media/framework/conversion_pipeline_builder.cc
|
| +++ b/services/media/framework/conversion_pipeline_builder.cc
|
| @@ -13,22 +13,21 @@ namespace media {
|
| namespace {
|
|
|
| enum class AddResult {
|
| - kFailed, // Can't convert.
|
| - kProgressed, // Added a conversion transform.
|
| - kFinished // Done adding conversion transforms.
|
| + kFailed, // Can't convert.
|
| + kProgressed, // Added a conversion transform.
|
| + kFinished // Done adding conversion transforms.
|
| };
|
|
|
| // Produces a score for in_type with respect to out_type_set. The score
|
| // is used to compare type sets to see which represents the best goal for
|
| // conversion. Higher scores are preferred. A score of zero indicates that
|
| // in_type is incompatible with out_type_set.
|
| -int Score(
|
| - const LpcmStreamType& in_type,
|
| - const LpcmStreamTypeSet& out_type_set) {
|
| +int Score(const LpcmStreamType& in_type,
|
| + const LpcmStreamTypeSet& out_type_set) {
|
| // TODO(dalesat): Plenty of room for more subtlety here. Maybe actually
|
| // measure conversion costs (cpu, quality, etc) and reflect them here.
|
|
|
| - int score = 1; // We can convert anything, so 1 is the minimum score.
|
| + int score = 1; // We can convert anything, so 1 is the minimum score.
|
|
|
| if (in_type.sample_format() == out_type_set.sample_format() ||
|
| out_type_set.sample_format() == LpcmStreamType::SampleFormat::kAny) {
|
| @@ -50,7 +49,7 @@ int Score(
|
| break;
|
| default:
|
| NOTREACHED() << "unsupported sample format "
|
| - << out_type_set.sample_format();
|
| + << out_type_set.sample_format();
|
| }
|
| }
|
|
|
| @@ -58,15 +57,14 @@ int Score(
|
| // Prefer not to mixdown/up.
|
| score += 10;
|
| } else {
|
| - return 0; // TODO(dalesat): Remove when we have mixdown/up.
|
| + return 0; // TODO(dalesat): Remove when we have mixdown/up.
|
| }
|
|
|
| - if (out_type_set.frames_per_second().
|
| - contains(in_type.frames_per_second())) {
|
| + if (out_type_set.frames_per_second().contains(in_type.frames_per_second())) {
|
| // Very much prefer not to resample.
|
| score += 50;
|
| } else {
|
| - return 0; // TODO(dalesat): Remove when we have resamplers.
|
| + return 0; // TODO(dalesat): Remove when we have resamplers.
|
| }
|
|
|
| return score;
|
| @@ -150,7 +148,7 @@ AddResult AddTransformsForCompressedAudio(
|
| // Need to decode. Create a decoder and go from there.
|
| std::shared_ptr<Decoder> decoder;
|
| Result result = Decoder::Create(in_type, &decoder);
|
| - if (result != Result::kOk) {
|
| + if (result != Result::kOk) {
|
| // No decoder found.
|
| *out_type = nullptr;
|
| return AddResult::kFailed;
|
| @@ -166,12 +164,11 @@ AddResult AddTransformsForCompressedAudio(
|
| // (in_type) and the output lpcm stream type set for the type we need to convert
|
| // to (out_type_set). If the call succeeds, *out_type is set to the new output
|
| // type. Otherwise, *out_type is set to nullptr.
|
| -AddResult AddTransformsForLpcm(
|
| - const LpcmStreamType& in_type,
|
| - const LpcmStreamTypeSet& out_type_set,
|
| - Graph* graph,
|
| - OutputRef* output,
|
| - std::unique_ptr<StreamType>* out_type) {
|
| +AddResult AddTransformsForLpcm(const LpcmStreamType& in_type,
|
| + const LpcmStreamTypeSet& out_type_set,
|
| + Graph* graph,
|
| + OutputRef* output,
|
| + std::unique_ptr<StreamType>* out_type) {
|
| DCHECK(graph);
|
| DCHECK(out_type);
|
|
|
| @@ -179,9 +176,11 @@ AddResult AddTransformsForLpcm(
|
| // transforms that handle more than one conversion.
|
| if (in_type.sample_format() != out_type_set.sample_format() &&
|
| out_type_set.sample_format() != LpcmStreamType::SampleFormat::kAny) {
|
| - *output = graph->ConnectOutputToPart(
|
| - *output,
|
| - graph->Add(LpcmReformatter::Create(in_type, out_type_set))).output();
|
| + *output =
|
| + graph
|
| + ->ConnectOutputToPart(*output, graph->Add(LpcmReformatter::Create(
|
| + in_type, out_type_set)))
|
| + .output();
|
| }
|
|
|
| if (!out_type_set.channels().contains(in_type.channels())) {
|
| @@ -200,11 +199,10 @@ AddResult AddTransformsForLpcm(
|
|
|
| // Build the resulting media type.
|
| *out_type = LpcmStreamType::Create(
|
| - out_type_set.sample_format() == LpcmStreamType::SampleFormat::kAny ?
|
| - in_type.sample_format() :
|
| - out_type_set.sample_format(),
|
| - in_type.channels(),
|
| - in_type.frames_per_second());
|
| + out_type_set.sample_format() == LpcmStreamType::SampleFormat::kAny
|
| + ? in_type.sample_format()
|
| + : out_type_set.sample_format(),
|
| + in_type.channels(), in_type.frames_per_second());
|
|
|
| return AddResult::kFinished;
|
| }
|
| @@ -239,15 +237,11 @@ AddResult AddTransformsForLpcm(
|
| *out_type = in_type.Clone();
|
| return AddResult::kFinished;
|
| case StreamType::Scheme::kLpcm:
|
| - return AddTransformsForLpcm(
|
| - in_type,
|
| - *(*best)->lpcm(),
|
| - graph,
|
| - output,
|
| - out_type);
|
| + return AddTransformsForLpcm(in_type, *(*best)->lpcm(), graph, output,
|
| + out_type);
|
| default:
|
| NOTREACHED() << "FindBestLpcm produced unexpected type set scheme"
|
| - << (*best)->scheme();
|
| + << (*best)->scheme();
|
| return AddResult::kFailed;
|
| }
|
| }
|
| @@ -267,22 +261,13 @@ AddResult AddTransforms(
|
|
|
| switch (in_type.scheme()) {
|
| case StreamType::Scheme::kLpcm:
|
| - return AddTransformsForLpcm(
|
| - *in_type.lpcm(),
|
| - out_type_sets,
|
| - graph,
|
| - output,
|
| - out_type);
|
| + return AddTransformsForLpcm(*in_type.lpcm(), out_type_sets, graph, output,
|
| + out_type);
|
| case StreamType::Scheme::kCompressedAudio:
|
| return AddTransformsForCompressedAudio(
|
| - *in_type.compressed_audio(),
|
| - out_type_sets,
|
| - graph,
|
| - output,
|
| - out_type);
|
| + *in_type.compressed_audio(), out_type_sets, graph, output, out_type);
|
| default:
|
| - NOTREACHED() << "conversion not supported for scheme"
|
| - << in_type.scheme();
|
| + NOTREACHED() << "conversion not supported for scheme" << in_type.scheme();
|
| *out_type = nullptr;
|
| return AddResult::kFailed;
|
| }
|
| @@ -304,12 +289,8 @@ bool BuildConversionPipeline(
|
| const StreamType* type_to_convert = &in_type;
|
| std::unique_ptr<StreamType> converted_type;
|
| while (true) {
|
| - switch (AddTransforms(
|
| - *type_to_convert,
|
| - out_type_sets,
|
| - graph,
|
| - &out,
|
| - &converted_type)) {
|
| + switch (AddTransforms(*type_to_convert, out_type_sets, graph, &out,
|
| + &converted_type)) {
|
| case AddResult::kFailed:
|
| // Failed to find a suitable conversion. Return the pipeline to its
|
| // original state.
|
|
|