1 /* 2 * Copyright (C) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef MEDIA_CLIENT_H 17 #define MEDIA_CLIENT_H 18 19 #include "i_media_service.h" 20 #include "i_standard_media_service.h" 21 #include "media_death_recipient.h" 22 #include "media_listener_stub.h" 23 #ifdef SUPPORT_RECORDER 24 #include "recorder_client.h" 25 #include "recorder_profiles_client.h" 26 #endif 27 #ifdef SUPPORT_TRANSCODER 28 #include "transcoder_client.h" 29 #endif 30 #ifdef SUPPORT_PLAYER 31 #include "player_client.h" 32 #endif 33 #ifdef SUPPORT_METADATA 34 #include "avmetadatahelper_client.h" 35 #endif 36 #ifdef SUPPORT_SCREEN_CAPTURE 37 #include "screen_capture_client.h" 38 #include "screen_capture_monitor_client.h" 39 #include "screen_capture_controller_client.h" 40 #endif 41 #include "nocopyable.h" 42 43 namespace OHOS { 44 namespace Media { 45 class MediaClient : public IMediaService, public NoCopyable { 46 public: 47 MediaClient() noexcept; 48 ~MediaClient(); 49 50 sptr<IStandardMonitorService> GetMonitorProxy() override; 51 #ifdef SUPPORT_RECORDER 52 std::shared_ptr<IRecorderService> CreateRecorderService() override; 53 int32_t DestroyRecorderService(std::shared_ptr<IRecorderService> recorder) override; 54 std::shared_ptr<IRecorderProfilesService> CreateRecorderProfilesService() override; 55 int32_t DestroyMediaProfileService(std::shared_ptr<IRecorderProfilesService> recorderProfiles) override; 56 #endif 57 #ifdef SUPPORT_TRANSCODER 58 std::shared_ptr<ITransCoderService> CreateTransCoderService() override; 59 int32_t DestroyTransCoderService(std::shared_ptr<ITransCoderService> transCoder) override; 60 #endif 61 #ifdef SUPPORT_PLAYER 62 std::shared_ptr<IPlayerService> CreatePlayerService() override; 63 int32_t DestroyPlayerService(std::shared_ptr<IPlayerService> player) override; 64 #endif 65 #ifdef SUPPORT_METADATA 66 std::shared_ptr<IAVMetadataHelperService> CreateAVMetadataHelperService() override; 67 int32_t DestroyAVMetadataHelperService(std::shared_ptr<IAVMetadataHelperService> avMetadataHelper) override; 68 #endif 69 #ifdef SUPPORT_SCREEN_CAPTURE 70 std::shared_ptr<IScreenCaptureMonitorService> CreateScreenCaptureMonitorService() override; 71 int32_t DestroyScreenCaptureMonitorService( 72 std::shared_ptr<IScreenCaptureMonitorService> screenCaptureMonitor) override; 73 std::shared_ptr<IScreenCaptureService> CreateScreenCaptureService() override; 74 int32_t DestroyScreenCaptureService(std::shared_ptr<IScreenCaptureService> screenCapture) override; 75 std::shared_ptr<IScreenCaptureController> CreateScreenCaptureControllerClient() override; 76 int32_t DestroyScreenCaptureControllerClient(std::shared_ptr<IScreenCaptureController> controller) override; 77 #endif 78 79 private: 80 sptr<IStandardMediaService> GetMediaProxy(); 81 bool IsAlived(); 82 static void MediaServerDied(pid_t pid); 83 void DoMediaServerDied(); 84 void AVPlayerServerDied(); 85 void AVCodecServerDied(); 86 87 sptr<IStandardMediaService> mediaProxy_ = nullptr; 88 sptr<MediaListenerStub> listenerStub_ = nullptr; 89 sptr<MediaDeathRecipient> deathRecipient_ = nullptr; 90 #ifdef SUPPORT_RECORDER 91 std::list<std::shared_ptr<IRecorderService>> recorderClientList_; 92 std::list<std::shared_ptr<IRecorderProfilesService>> recorderProfilesClientList_; 93 #endif 94 #ifdef SUPPORT_TRANSCODER 95 std::list<std::shared_ptr<ITransCoderService>> transCoderClientList_; 96 #endif 97 #ifdef SUPPORT_PLAYER 98 std::list<std::shared_ptr<IPlayerService>> playerClientList_; 99 #endif 100 #ifdef SUPPORT_METADATA 101 std::list<std::shared_ptr<IAVMetadataHelperService>> avMetadataHelperClientList_; 102 #endif 103 #ifdef SUPPORT_SCREEN_CAPTURE 104 std::list<std::shared_ptr<IScreenCaptureMonitorService>> screenCaptureMonitorClientList_; 105 std::list<std::shared_ptr<IScreenCaptureService>> screenCaptureClientList_; 106 std::list<std::shared_ptr<IScreenCaptureController>> screenCaptureControllerList_; 107 #endif 108 std::mutex mutex_; 109 }; 110 } // namespace Media 111 } // namespace OHOS 112 #endif // MEDIA_CLIENT_H 113