OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/base/mime_util_internal.h" | 5 #include "media/base/mime_util_internal.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 platform_info_.has_platform_vp9_decoder = | 129 platform_info_.has_platform_vp9_decoder = |
130 MediaCodecUtil::IsVp9DecoderAvailable(); | 130 MediaCodecUtil::IsVp9DecoderAvailable(); |
131 platform_info_.supports_opus = PlatformHasOpusSupport(); | 131 platform_info_.supports_opus = PlatformHasOpusSupport(); |
132 #endif | 132 #endif |
133 | 133 |
134 InitializeMimeTypeMaps(); | 134 InitializeMimeTypeMaps(); |
135 } | 135 } |
136 | 136 |
137 MimeUtil::~MimeUtil() {} | 137 MimeUtil::~MimeUtil() {} |
138 | 138 |
| 139 AudioCodec MimeUtilToAudioCodec(MimeUtil::Codec codec) { |
| 140 switch (codec) { |
| 141 case MimeUtil::PCM: |
| 142 return kCodecPCM; |
| 143 case MimeUtil::MP3: |
| 144 return kCodecMP3; |
| 145 case MimeUtil::AC3: |
| 146 return kCodecAC3; |
| 147 case MimeUtil::EAC3: |
| 148 return kCodecEAC3; |
| 149 case MimeUtil::MPEG2_AAC: |
| 150 case MimeUtil::MPEG4_AAC: |
| 151 return kCodecAAC; |
| 152 case MimeUtil::VORBIS: |
| 153 return kCodecVorbis; |
| 154 case MimeUtil::OPUS: |
| 155 return kCodecOpus; |
| 156 case MimeUtil::FLAC: |
| 157 return kCodecFLAC; |
| 158 default: |
| 159 break; |
| 160 } |
| 161 return kUnknownAudioCodec; |
| 162 } |
| 163 |
139 VideoCodec MimeUtilToVideoCodec(MimeUtil::Codec codec) { | 164 VideoCodec MimeUtilToVideoCodec(MimeUtil::Codec codec) { |
140 switch (codec) { | 165 switch (codec) { |
141 case MimeUtil::H264: | 166 case MimeUtil::H264: |
142 return kCodecH264; | 167 return kCodecH264; |
143 case MimeUtil::HEVC: | 168 case MimeUtil::HEVC: |
144 return kCodecHEVC; | 169 return kCodecHEVC; |
145 case MimeUtil::VP8: | 170 case MimeUtil::VP8: |
146 return kCodecVP8; | 171 return kCodecVP8; |
147 case MimeUtil::VP9: | 172 case MimeUtil::VP9: |
148 return kCodecVP9; | 173 return kCodecVP9; |
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
703 default: | 728 default: |
704 ambiguous_platform_support = true; | 729 ambiguous_platform_support = true; |
705 } | 730 } |
706 } else if (codec == MimeUtil::VP9 && video_profile != VP9PROFILE_PROFILE0) { | 731 } else if (codec == MimeUtil::VP9 && video_profile != VP9PROFILE_PROFILE0) { |
707 // We don't know if the underlying platform supports these profiles. Need | 732 // We don't know if the underlying platform supports these profiles. Need |
708 // to add platform level querying to get supported profiles. | 733 // to add platform level querying to get supported profiles. |
709 // https://crbug.com/604566 | 734 // https://crbug.com/604566 |
710 ambiguous_platform_support = true; | 735 ambiguous_platform_support = true; |
711 } | 736 } |
712 | 737 |
| 738 AudioCodec audio_codec = MimeUtilToAudioCodec(codec); |
| 739 if (audio_codec != kUnknownAudioCodec) { |
| 740 AudioConfig audio_config = {audio_codec}; |
| 741 |
| 742 // If MediaClient is provided use it to check for decoder support. |
| 743 MediaClient* media_client = GetMediaClient(); |
| 744 if (media_client && !media_client->IsSupportedAudioConfig(audio_config)) |
| 745 return IsNotSupported; |
| 746 |
| 747 // When no MediaClient is provided, assume default decoders are available |
| 748 // as described by media::IsSupportedAudioConfig(). |
| 749 if (!media_client && !IsSupportedAudioConfig(audio_config)) |
| 750 return IsNotSupported; |
| 751 } |
| 752 |
713 if (video_codec != kUnknownVideoCodec) { | 753 if (video_codec != kUnknownVideoCodec) { |
714 VideoConfig video_config = {video_codec, video_profile, video_level, | 754 VideoConfig video_config = {video_codec, video_profile, video_level, |
715 color_space}; | 755 color_space}; |
716 | 756 |
717 // If MediaClient is provided use it to check for decoder support. | 757 // If MediaClient is provided use it to check for decoder support. |
718 MediaClient* media_client = GetMediaClient(); | 758 MediaClient* media_client = GetMediaClient(); |
719 if (media_client && !media_client->IsSupportedVideoConfig(video_config)) | 759 if (media_client && !media_client->IsSupportedVideoConfig(video_config)) |
720 return IsNotSupported; | 760 return IsNotSupported; |
721 | 761 |
722 // When no MediaClient is provided, assume default decoders are available | 762 // When no MediaClient is provided, assume default decoders are available |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
787 SupportsType MimeUtil::IsDefaultCodecSupported(const std::string& mime_type, | 827 SupportsType MimeUtil::IsDefaultCodecSupported(const std::string& mime_type, |
788 bool is_encrypted) const { | 828 bool is_encrypted) const { |
789 Codec default_codec = Codec::INVALID_CODEC; | 829 Codec default_codec = Codec::INVALID_CODEC; |
790 if (!GetDefaultCodec(mime_type, &default_codec)) | 830 if (!GetDefaultCodec(mime_type, &default_codec)) |
791 return IsNotSupported; | 831 return IsNotSupported; |
792 return IsSimpleCodecSupported(mime_type, default_codec, is_encrypted); | 832 return IsSimpleCodecSupported(mime_type, default_codec, is_encrypted); |
793 } | 833 } |
794 | 834 |
795 } // namespace internal | 835 } // namespace internal |
796 } // namespace media | 836 } // namespace media |
OLD | NEW |