xamarin-macios/src/replaykit.cs

253 строки
7.8 KiB
C#

//
// ReplayKit bindings
//
// Authors:
// Alex Soto <alex.soto@xamarin.com>
//
// Copyright 2015 Xamarin Inc. All rights reserved.
//
using System;
using XamCore.CoreMedia;
using XamCore.ObjCRuntime;
using XamCore.Foundation;
using XamCore.UIKit;
namespace XamCore.ReplayKit {
[iOS (9,0)]
[BaseType (typeof (UIViewController))]
interface RPPreviewViewController {
[Export ("initWithNibName:bundle:")]
[PostGet ("NibBundle")]
IntPtr Constructor ([NullAllowed] string nibName, [NullAllowed] NSBundle bundle);
[Export ("previewControllerDelegate", ArgumentSemantic.Weak)][NullAllowed]
IRPPreviewViewControllerDelegate PreviewControllerDelegate { get; set; }
[TV (10, 0), NoiOS]
[Export ("mode", ArgumentSemantic.Assign)]
RPPreviewViewControllerMode Mode { get; set; }
}
interface IRPPreviewViewControllerDelegate { }
[iOS (9,0)]
[Protocol, Model]
[BaseType (typeof (NSObject))]
interface RPPreviewViewControllerDelegate {
[Export ("previewControllerDidFinish:")]
void DidFinish (RPPreviewViewController previewController);
[NoTV]
[Export ("previewController:didFinishWithActivityTypes:")]
void DidFinish (RPPreviewViewController previewController, NSSet<NSString> activityTypes);
}
[iOS (9,0)]
[BaseType (typeof (NSObject))]
[DisableDefaultCtor]
interface RPScreenRecorder {
[Static]
[Export ("sharedRecorder")]
RPScreenRecorder SharedRecorder { get; }
[Availability (Deprecated = Platform.iOS_10_0, Message = "Use StartRecording(Action<NSError>)")]
[Async]
[Export ("startRecordingWithMicrophoneEnabled:handler:")]
void StartRecording (bool microphoneEnabled, [NullAllowed] Action<NSError> handler);
[iOS (10,0)]
[Async]
[Export ("startRecordingWithHandler:")]
void StartRecording ([NullAllowed] Action<NSError> handler);
[Async]
[Export ("stopRecordingWithHandler:")]
void StopRecording ([NullAllowed] Action<RPPreviewViewController, NSError> handler);
[Async]
[Export ("discardRecordingWithHandler:")]
void DiscardRecording ([NullAllowed] Action handler);
[Export ("delegate", ArgumentSemantic.Weak)][NullAllowed]
IRPScreenRecorderDelegate Delegate { get; set; }
[Export ("recording", ArgumentSemantic.Assign)]
bool Recording { [Bind ("isRecording")] get; }
[NoTV]
[Export ("microphoneEnabled", ArgumentSemantic.Assign)]
bool MicrophoneEnabled {
[Bind ("isMicrophoneEnabled")] get;
[iOS (10,0)] set;
}
[Export ("available", ArgumentSemantic.Assign)]
bool Available { [Bind ("isAvailable")] get; }
[NoTV, iOS (10,0)]
[Export ("cameraEnabled")]
bool CameraEnabled { [Bind ("isCameraEnabled")] get; set; }
[NoTV, iOS (10,0)]
[NullAllowed, Export ("cameraPreviewView")]
UIView CameraPreviewView { get; }
}
interface IRPScreenRecorderDelegate { }
[iOS (9,0)]
[Protocol, Model]
[BaseType (typeof (NSObject))]
interface RPScreenRecorderDelegate {
[Export ("screenRecorder:didStopRecordingWithError:previewViewController:")]
void DidStopRecording (RPScreenRecorder screenRecorder, NSError error, [NullAllowed] RPPreviewViewController previewViewController);
[Export ("screenRecorderDidChangeAvailability:")]
void DidChangeAvailability (RPScreenRecorder screenRecorder);
}
[iOS (10,0)]
[BaseType (typeof (UIViewController))]
interface RPBroadcastActivityViewController {
// inlined
[Export ("initWithNibName:bundle:")]
[PostGet ("NibBundle")]
IntPtr Constructor ([NullAllowed] string nibName, [NullAllowed] NSBundle bundle);
[Static]
[Async]
[Export ("loadBroadcastActivityViewControllerWithHandler:")]
void LoadBroadcastActivityViewController (Action<RPBroadcastActivityViewController, NSError> handler);
[NullAllowed, Export ("delegate", ArgumentSemantic.Weak)]
IRPBroadcastActivityViewControllerDelegate Delegate { get; set; }
}
interface IRPBroadcastActivityViewControllerDelegate {}
[iOS (10,0)]
[Protocol, Model]
[BaseType (typeof (NSObject))]
interface RPBroadcastActivityViewControllerDelegate {
[Abstract]
[Export ("broadcastActivityViewController:didFinishWithBroadcastController:error:")]
void DidFinish (RPBroadcastActivityViewController broadcastActivityViewController, [NullAllowed] RPBroadcastController broadcastController, [NullAllowed] NSError error);
}
[iOS (10,0)]
[BaseType (typeof (NSObject))]
interface RPBroadcastController {
[Export ("broadcasting")]
bool Broadcasting { [Bind ("isBroadcasting")] get; }
[Export ("paused")]
bool Paused { [Bind ("isPaused")] get; }
[Export ("broadcastURL")]
NSUrl BroadcastUrl { get; }
[NullAllowed, Export ("serviceInfo")]
NSDictionary<NSString, INSCoding> ServiceInfo { get; }
[NullAllowed, Export ("delegate", ArgumentSemantic.Weak)]
IRPBroadcastControllerDelegate Delegate { get; set; }
[Export ("broadcastExtensionBundleID")]
string BroadcastExtensionBundleID { get; }
[Async]
[Export ("startBroadcastWithHandler:")]
void StartBroadcast (Action<NSError> handler);
[Export ("pauseBroadcast")]
void PauseBroadcast ();
[Export ("resumeBroadcast")]
void ResumeBroadcast ();
[Async]
[Export ("finishBroadcastWithHandler:")]
void FinishBroadcast (Action<NSError> handler);
}
interface IRPBroadcastControllerDelegate {}
[iOS (10,0)]
[Protocol, Model]
[BaseType (typeof(NSObject))]
interface RPBroadcastControllerDelegate {
[Abstract]
[Export ("broadcastController:didFinishWithError:")]
void DidFinish (RPBroadcastController broadcastController, [NullAllowed] NSError error);
[Abstract]
[Export ("broadcastController:didUpdateServiceInfo:")]
void DidUpdateServiceInfo (RPBroadcastController broadcastController, NSDictionary<NSString, NSCoding> serviceInfo);
}
[iOS (10,0)]
[BaseType (typeof (NSObject))]
interface RPBroadcastConfiguration : NSCoding, NSSecureCoding {
[Export ("clipDuration")]
double ClipDuration { get; set; }
// TODO review, once API documentation is available, if we can provide an easier to use strongdictionary
[NullAllowed, Export ("videoCompressionProperties", ArgumentSemantic.Strong)]
NSDictionary<NSNumber, INSSecureCoding> VideoCompressionProperties { get; set; }
}
delegate void LoadBroadcastingHandler (string bundleID, string displayName, UIImage appIcon);
[iOS (10,0)]
[Category]
[BaseType (typeof (NSExtensionContext))]
interface NSExtensionContext_RPBroadcastExtension {
[Export ("loadBroadcastingApplicationInfoWithCompletion:")]
void LoadBroadcastingApplicationInfo (LoadBroadcastingHandler handler);
[Export ("completeRequestWithBroadcastURL:broadcastConfiguration:setupInfo:")]
void CompleteRequest (NSUrl broadcastURL, RPBroadcastConfiguration broadcastConfiguration, [NullAllowed] NSDictionary<NSString, NSCoding> setupInfo);
}
[iOS (10,0)]
[BaseType (typeof (NSObject))]
interface RPBroadcastHandler : NSExtensionRequestHandling {
[Export ("updateServiceInfo:")]
void UpdateServiceInfo (NSDictionary<NSString, INSCoding> serviceInfo);
}
[iOS (10,0)]
[BaseType (typeof (RPBroadcastHandler))]
interface RPBroadcastMP4ClipHandler {
[Export ("processMP4ClipWithURL:setupInfo:finished:")]
void ProcessMP4Clip ([NullAllowed] NSUrl mp4ClipURL, [NullAllowed] NSDictionary<NSString, NSObject> setupInfo, bool finished);
[Export ("finishedProcessingMP4ClipWithUpdatedBroadcastConfiguration:error:")]
void FinishedProcessingMP4Clip ([NullAllowed] RPBroadcastConfiguration broadcastConfiguration, [NullAllowed] NSError error);
}
[iOS (10,0)]
[BaseType (typeof (RPBroadcastHandler))]
interface RPBroadcastSampleHandler {
[Export ("broadcastStartedWithSetupInfo:")]
void BroadcastStarted ([NullAllowed] NSDictionary<NSString, NSObject> setupInfo);
[Export ("broadcastPaused")]
void BroadcastPaused ();
[Export ("broadcastResumed")]
void BroadcastResumed ();
[Export ("broadcastFinished")]
void BroadcastFinished ();
[Export ("processSampleBuffer:withType:")]
void ProcessSampleBuffer (CMSampleBuffer sampleBuffer, RPSampleBufferType sampleBufferType);
}
}