chromium/chromecast/browser/media/supported_codec_finder.cc

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chromecast/browser/media/supported_codec_finder.h"

#include <vector>

#include "build/build_config.h"
#include "chromecast/browser/media/media_caps_impl.h"
#include "chromecast/media/base/media_codec_support.h"
#if BUILDFLAG(IS_ANDROID)
#include "media/base/android/media_codec_util.h"
#endif
#include "media/base/video_codecs.h"

namespace chromecast::media {

// static
std::vector<CodecProfileLevel>
SupportedCodecFinder::FindSupportedCodecProfileLevels() {
  std::vector<CodecProfileLevel> cast_codec_profile_levels;
// Don't need to list supported codecs on non-Android devices.
#if BUILDFLAG(IS_ANDROID)
  // Get list of supported codecs from MediaCodec.
  std::vector<::media::CodecProfileLevel> codec_profile_levels;
  ::media::MediaCodecUtil::AddSupportedCodecProfileLevels(
      &codec_profile_levels);
  cast_codec_profile_levels.reserve(codec_profile_levels.size());
  for (const auto& codec_profile_level : codec_profile_levels) {
    cast_codec_profile_levels.push_back(
        ToCastCodecProfileLevel(codec_profile_level));
  }
#endif
  return cast_codec_profile_levels;
}

}  // namespace chromecast::media