// // AliPlayerPictureInPictureDelegate.h // AliyunPlayer // // Created by alibaba on 2022/7/4. // Copyright © 2022 com.alibaba.AliyunPlayer. All rights reserved. #ifndef AliPlayerPictureInPictureDelegate_h #define AliPlayerPictureInPictureDelegate_h #import #if TARGET_OS_IPHONE #import #import #import #elif TARGET_OS_OSX #import #endif @protocol AliPlayerPictureInPictureDelegate @optional /** @brief 画中画将要启动 @param pictureInPictureController 画中画控制器 */ /**** @brief picture in picture will start @param pictureInPictureController picture in picture controller */ - (void)pictureInPictureControllerWillStartPictureInPicture:(AVPictureInPictureController * _Nullable)pictureInPictureController; /** * @brief 画中画已经启动 * @param pictureInPictureController 画中画控制器 */ /**** @brief picture in picture start already @param pictureInPictureController picture in picture controller */ - (void)pictureInPictureControllerDidStartPictureInPicture:(AVPictureInPictureController * _Nullable)pictureInPictureController; /** @brief 画中画准备停止 @param pictureInPictureController 画中画控制器 */ /**** @brief picture in picture will stop @param pictureInPictureController picture in picture controller */ - (void)pictureInPictureControllerWillStopPictureInPicture:(AVPictureInPictureController * _Nullable)pictureInPictureController; /** @brief 画中画已经停止 @param pictureInPictureController 画中画控制器 */ /**** @brief picture in picture stop already @param pictureInPictureController picture in picture controller */ - (void)pictureInPictureControllerDidStopPictureInPicture:(AVPictureInPictureController * _Nullable)pictureInPictureController; /** @brief 画中画打开失败 @param pictureInPictureController 画中画控制器 */ /**** @brief picture in picture start failed @param pictureInPictureController picture in picture controller @param error error type */ - (void)pictureInPictureController:(AVPictureInPictureController * _Nullable)pictureInPictureController failedToStartPictureInPictureWithError:(NSError * _Nullable)error; /** @brief 在画中画停止前告诉代理恢复用户接口 @param pictureInPictureController 画中画控制器 @param completionHandler 调用并传值YES以允许系统结束恢复播放器用户接口 */ /**** @brief Tells the delegate to restore the user interface before Picture in Picture stops. @param pictureInPictureController picture in picture controller @param completionHandlerYou must call the completion handler with a value of YES to allow the system to finish restoring your player user interface. */ - (void)pictureInPictureController:(AVPictureInPictureController * _Nullable)pictureInPictureController restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:(void (^_Nullable)(BOOL restored))completionHandler; /** @brief 画中画窗口尺寸变化 @param pictureInPictureController 画中画控制器 @param newRenderSize 新的窗口尺寸 */ /**** @brief picture in picture stop already @param pictureInPictureController picture in picture controller @param newRenderSize new render size */ - (void)pictureInPictureController:(nonnull AVPictureInPictureController *)pictureInPictureController didTransitionToRenderSize:(CMVideoDimensions)newRenderSize; /** @brief 点击画中画暂停按钮 @param pictureInPictureController 画中画控制器 @param playing 是否正在播放 */ /**** @brief picture in picture stop already @param pictureInPictureController picture in picture controller @param playing is playing or not */ - (void)pictureInPictureController:(nonnull AVPictureInPictureController *)pictureInPictureController setPlaying:(BOOL)playing; /** @brief 点击快进或快退按钮 @param pictureInPictureController 画中画控制器 @param skipInterval 快进快退的事件间隔 @param completionHandler 一定要调用的闭包,表示跳转操作完成 */ /**** @brief Informs delegate that the user has requested skipping forward or backward by the time indicated by the interval. @param pictureInPictureController picture in picture controller @param skipInterval The interval by which to skip playback. @param completionHandler A closure that must be invoked to indicate that the skip operation has completed. */ - (void)pictureInPictureController:(nonnull AVPictureInPictureController *)pictureInPictureController skipByInterval:(CMTime)skipInterval completionHandler:(nonnull void (^)(void))completionHandler; /** @brief 将暂停/播放状态反映到UI上 @param pictureInPictureController 画中画控制器 @return 暂停/播放 */ /**** @brief Allows delegate to indicate whether the playback UI should reflect a playing or paused state @param pictureInPictureController picture in picture controller @return play/pause */ - (BOOL)pictureInPictureControllerIsPlaybackPaused:(nonnull AVPictureInPictureController *)pictureInPictureController; /** @brief 通知画中画控制起当前可播放的时间范围 @param pictureInPictureController 画中画控制器 @return 当前可播放的时间范围 */ /**** @brief Allows delegate to inform Picture in Picture controller of the current playable time range. @param pictureInPictureController picture in picture controller @return current playable time range */ - (CMTimeRange)pictureInPictureControllerTimeRangeForPlayback:(nonnull AVPictureInPictureController *)pictureInPictureController layerTime:(CMTime)layerTime; @end #endif /* AliPlayerPictureInPictureDelegate_h */