| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef MEDIA_GPU_ANDROID_VIDEO_ACCELERATOR_UTIL_H_ |
| #define MEDIA_GPU_ANDROID_VIDEO_ACCELERATOR_UTIL_H_ |
| |
| #include <vector> |
| |
| #include "media/base/video_codecs.h" |
| #include "media/gpu/media_gpu_export.h" |
| #include "media/video/video_encode_accelerator.h" |
| #include "ui/gfx/geometry/size.h" |
| |
| namespace media { |
| |
| struct MediaCodecEncoderInfo { |
| VideoEncodeAccelerator::SupportedProfile profile; |
| std::string name; |
| }; |
| |
| // Returns information on encoders from the Java MediaCodecList.getCodecInfos() |
| // function. Initialized once per process. Must not be called from the renderer. |
| MEDIA_GPU_EXPORT const std::vector<MediaCodecEncoderInfo>& |
| GetEncoderInfoCache(); |
| |
| // Secure playback supporting for the decoder. |
| enum class SecureCodecCapability { |
| kClear, // Decoder only supports clear playback. |
| kAny, // Decoder supports both clear and secure playback. |
| kEncrypted, // Decoder only supports secure playback. |
| }; |
| |
| struct MediaCodecDecoderInfo { |
| VideoCodecProfile profile; |
| VideoCodecLevel level; |
| gfx::Size coded_size_min; |
| gfx::Size coded_size_max; |
| bool is_software_codec; |
| SecureCodecCapability secure_codec_capability; |
| std::string name; |
| }; |
| |
| // Returns information on decoder from the Java MediaCodecList.getCodecInfos() |
| // function. Initialized once per process. Must not be called from the renderer. |
| // |
| // Some devices may not fill out MediaCodecInfo.CodecCapabilities.profileLevels |
| // correctly. In such cases, the Android platform defaults are assumed: |
| // https://developer.android.com/guide/topics/media/media-formats |
| MEDIA_GPU_EXPORT const std::vector<MediaCodecDecoderInfo>& |
| GetDecoderInfoCache(); |
| |
| } // namespace media |
| |
| #endif // MEDIA_GPU_ANDROID_VIDEO_ACCELERATOR_UTIL_H_ |