| // Copyright 2020 The Cobalt Authors. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| #ifndef STARBOARD_NPLB_PLAYER_CREATION_PARAM_HELPERS_H_ |
| #define STARBOARD_NPLB_PLAYER_CREATION_PARAM_HELPERS_H_ |
| |
| #include "starboard/configuration.h" |
| |
| #include "starboard/common/log.h" |
| #include "starboard/drm.h" |
| #include "starboard/media.h" |
| #include "starboard/nplb/player_test_util.h" |
| #include "starboard/player.h" |
| #include "starboard/shared/starboard/media/media_util.h" |
| |
| namespace starboard { |
| namespace nplb { |
| |
| // Encapsulates all information contained in `SbPlayerCreationParam`. It |
| // doesn't aim to maintain the same binary layout as `SbPlayerCreationParam`, |
| // and is intended to be used as a C++ wrapper in unit test code to allow of |
| // converting between types more conveniently. |
| struct PlayerCreationParam { |
| SbDrmSystem drm_system = kSbDrmSystemInvalid; |
| |
| shared::starboard::media::AudioStreamInfo audio_stream_info; |
| shared::starboard::media::VideoStreamInfo video_stream_info; |
| |
| SbPlayerOutputMode output_mode = kSbPlayerOutputModeInvalid; |
| |
| // Convert to an SbPlayerCreationParam that's only valid during the life time |
| // of this PlayerCreationParam instance, as the member pointers of the |
| // SbPlayerCreationParam point to memory held in this PlayerCreationParam |
| // instance. |
| void ConvertTo(SbPlayerCreationParam* creation_param) const { |
| SB_DCHECK(creation_param); |
| |
| *creation_param = {}; |
| |
| creation_param->drm_system = drm_system; |
| |
| #if SB_API_VERSION >= 15 |
| audio_stream_info.ConvertTo(&creation_param->audio_stream_info); |
| video_stream_info.ConvertTo(&creation_param->video_stream_info); |
| #else // SB_API_VERSION >= 15 |
| audio_stream_info.ConvertTo(&creation_param->audio_sample_info); |
| video_stream_info.ConvertTo(&creation_param->video_sample_info); |
| #endif // SB_API_VERSION >= 15 |
| |
| creation_param->output_mode = output_mode; |
| } |
| }; |
| |
| shared::starboard::media::AudioStreamInfo CreateAudioStreamInfo( |
| SbMediaAudioCodec codec); |
| shared::starboard::media::VideoStreamInfo CreateVideoStreamInfo( |
| SbMediaVideoCodec codec); |
| PlayerCreationParam CreatePlayerCreationParam(SbMediaAudioCodec audio_codec, |
| SbMediaVideoCodec video_codec, |
| SbPlayerOutputMode output_mode); |
| |
| PlayerCreationParam CreatePlayerCreationParam(const SbPlayerTestConfig& config); |
| |
| SbPlayerOutputMode GetPreferredOutputMode( |
| const PlayerCreationParam& creation_param); |
| |
| } // namespace nplb |
| } // namespace starboard |
| |
| #endif // STARBOARD_NPLB_PLAYER_CREATION_PARAM_HELPERS_H_ |