AVFoundation Namespace

High level audio playback and recording.

Remarks

This namespace contains high-level recording and playback capabilities for audio and video.

This library sits on top of CoreMedia, CoreAudio and CoreVideo but does not provide any user interface elements for UIKit. It is a toolkit for recording and playing back audio and video.

AV Foundation uses background processing extensively. Application developers should take care to ensure thread safety and use Foundation.NSObject.InvokeOnMainThread or other technique when updating their user interface.

AVFoundation is not necessary for some common tasks:

TaskTechnique
Display videoUse Media Player's MediaPlayer.MPMoviePlayerController or MediaPlayer.MPMoviePlayerViewController.
Capture a photograph or videoUse UIKit's UIKit.UIImagePickerController
Play audio filesUse AV Foundation's AVFoundation.AVAudioPlayer.
Capture audio filesUse AV Foundation's AVFoundation.AVAudioRecorder, as discussed below in "Capture Audio Files".
Complex video display or audio playbackUse AV Foundation, as discussed below in "Custom Playback".
Custom media captureUse AV Foundation, as discussed below in "Custom Media Capture".
Media file writing, reading, and transcodingUse AV Foundation, as discussed below in "Media file writing, reading, and transcoding".
Media editingUse UIKit's UIKit.UIVideoKitController or AV Foundation building blocks.
Barcode recognition and face detectionUse AV Foundation, as discussed below in "Live Recognition".
Speech synthesisUse AV Foundation, as discussed below in "Speech synthesis".

An AVFoundation.AVAsset represents one or more media assets. These are held in its AVFoundation.AVAsset.Tracks property. Additionally, AVFoundation.AVAssets include metadata, track grouping, and preferences about the media.

Because media assets such as movies are large, instantiating an AVFoundation.AVAsset will not automatically load the file. Properties are loaded when they are queried or via explicit calls to AVFoundation.AVAsset.LoadValuesTaskAsync or AVFoundation.AVAsset.LoadValuesAsynchronously.

Capture Audio Files

The application developer must first interaction with the static singleton Audio Session object, which mediates sound between the app and the operating system. Both AudioToolbox.AudioSession and AVFoundation.AVAudioSession refer to this same underlying singleton. Most properties in AudioToolbox.AudioSession are deprecated in iOS 7 and later and application developers should prefer the properties in AVFoundation.AVAudioSession.

TaskUsing AVFoundation.AVAudioSessionUsing AudioToolbox.AudioSession
Initialization AVFoundation.AVAudioSession.SharedInstance (explicit initialization not required) AudioToolbox.AudioSession.Initialize(CFRunLoop, string)
Set category AVFoundation.AVAudioSession.SetCategory(string, out NSError) AudioToolbox.AudioSession.Category
Set active AVFoundation.AVAudioSession.SetActive(bool, out NSError) AudioToolbox.AudioSession.Active

The following code shows the necessary steps for preparing for audio recording.

C# Example

var session = AVAudioSession.SharedInstance();

NSError error = null;
session.SetCategory(AVAudioSession.CategoryRecord, out error);
if(error != null){
	Console.WriteLine(error);
	return;
}

session.SetActive(true, out error);
if(error != null){
	Console.WriteLine(error);
	return;
}

//Declare string for application temp path and tack on the file extension
string fileName = string.Format("Myfile{0}.aac", DateTime.Now.ToString("yyyyMMddHHmmss"));
string tempRecording = NSBundle.MainBundle.BundlePath + "/../tmp/" + fileName;

Console.WriteLine(tempRecording);
this.audioFilePath = NSUrl.FromFilename(tempRecording);

var audioSettings = new AudioSettings() {
	SampleRate = 44100.0f, 
	Format = MonoTouch.AudioToolbox.AudioFormatType.MPEG4AAC,
	NumberChannels = 1,
	AudioQuality = AVAudioQuality.High
};

//Set recorder parameters
NSError error;
recorder = AVAudioRecorder.Create(this.audioFilePath, audioSettings, out error);
if((recorder == null) || (error != null))
{
	Console.WriteLine(error);
	return false;
}

//Set Recorder to Prepare To Record
if(!recorder.PrepareToRecord())
{
	recorder.Dispose();
	recorder = null;
	return false;
}

recorder.FinishedRecording += delegate (object sender, AVStatusEventArgs e) {
	recorder.Dispose();
	recorder = null;
	Console.WriteLine("Done Recording (status: {0})", e.Status);
};

recorder.Record();          
          

Custom Playback

AVFoundation.Player objects use AVFoundation.AVPlayerItem objects to play media. An AVFoundation.AVPlayerItem encapsulates the presentation state of an AVFoundation.AVAsset.

Custom Media Capture

Many capture scenarios can be satisfied with the easier-to-use UIKit.UIImagePickerController and AVFoundation.AVAudioRecorder classes. More complex scenarios can use AV Foundation's AVFoundation.AVCaptureSession and related classes.

A AVFoundation.AVCaptureSession will typically have one or more AVFoundation.AVCaptureInputs and one or more AVFoundation.AVCaptureOutputs. Each AVFoundation.AVCaptureInput will have a AVFoundation.AVCaptureDevice for a specific media type (audio or video). Each AVFoundation.AVCaptureOuput will have a "buffer delegate" that will be repeatedly called with incoming data that it can render, write to file, analyze, etc.

The following diagram and source code shows the initialization sequence of the AVCaptureFrames Sample.

C# Example

session = new AVCaptureSession () {
	SessionPreset = AVCaptureSession.PresetMedium
};

// create a device input and attach it to the session
var captureDevice = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video);
if (captureDevice == null){
	Console.WriteLine ("No captureDevice - this won't work on the simulator, try a physical device");
	return false;
}
// If you want to cap the frame rate at a given speed, in this sample: 15 frames per second
NSError error = null;
captureDevice.LockForConfiguration(out error);
if(error != null){
	Console.WriteLine(error);
	captureDevice.UnlockForConfiguration();
	return false;
}
captureDevice.ActiveVideoMinFrameDuration = new CMTime(1, 15);
captureDevice.UnlockForConfiguration();

var input = AVCaptureDeviceInput.FromDevice (captureDevice);
if (input == null){
	Console.WriteLine ("No input - this won't work on the simulator, try a physical device");
	return false;
}
session.AddInput (input);

// create a VideoDataOutput and add it to the sesion
var output = new AVCaptureVideoDataOutput () {
	VideoSettings = new AVVideoSettings (CVPixelFormatType.CV32BGRA),
};


// configure the output
queue = new MonoTouch.CoreFoundation.DispatchQueue ("myQueue");
outputRecorder = new OutputRecorder ();
output.SetSampleBufferDelegate (outputRecorder, queue);
session.AddOutput (output);

session.StartRunning ();
          
          

Note that the outputRecorder is a custom subclass of AVFoundation.AVCaptureVideoDataOutputSampleBufferDelegate. In this case, the incoming data is converted into a CoreImage.CIImage, to which a CoreImage.CIColorInvert filter is applied before being sent to the display.

C# Example

public class OutputRecorder : AVCaptureVideoDataOutputSampleBufferDelegate {
	readonly CIColorInvert filter;

	public OutputRecorder()
	{
		filter = new CIColorInvert();
	} 
	public override void DidOutputSampleBuffer (AVCaptureOutput captureOutput, CMSampleBuffer sampleBuffer, AVCaptureConnection connection)
	{
		try {
			var image = ImageFromSampleBuffer (sampleBuffer);
			filter.Image = image;

			// Do something with the image, we just stuff it in our main view.
			AppDelegate.ImageView.BeginInvokeOnMainThread (delegate {
				AppDelegate.ImageView.Image = UIImage.FromImage(filter.OutputImage);
			});
	
			//
			// Although this looks innocent "Oh, he is just optimizing this case away"
			// this is incredibly important to call on this callback, because the AVFoundation
			// has a fixed number of buffers and if it runs out of free buffers, it will stop
			// delivering frames. 
			//	
			sampleBuffer.Dispose ();
		} catch (Exception e){
			Console.WriteLine (e);
		}
	}
	
	CIImage ImageFromSampleBuffer (CMSampleBuffer sampleBuffer)
	{
		// Get the CoreVideo image
		using (var pixelBuffer = sampleBuffer.GetImageBuffer () as CVPixelBuffer){
			// Lock the base address
			pixelBuffer.Lock (0);
			// Get the number of bytes per row for the pixel buffer
			var baseAddress = pixelBuffer.BaseAddress;
			int bytesPerRow = pixelBuffer.BytesPerRow;
			int width = pixelBuffer.Width;
			int height = pixelBuffer.Height;
			var flags = CGBitmapFlags.PremultipliedFirst | CGBitmapFlags.ByteOrder32Little;
			// Create a CGImage on the RGB colorspace from the configured parameter above
			using (var cs = CGColorSpace.CreateDeviceRGB ())
			using (var context = new CGBitmapContext (baseAddress,width, height, 8, bytesPerRow, cs, (CGImageAlphaInfo) flags))
			using (var cgImage = context.ToImage ()){
				pixelBuffer.Unlock (0);
				return cgImage;
			}
		}
	}
}          
          

Video can be captured directly to file with AVFoundation.AVCaptureMovieFileOutput. However, this class has no display-able data and cannot be used simultaneously with AVFoundation.AVCaptureVideoDataOutput. Instead, application developers can use it in combination with a AVFoundation.AVCaptureVideoPreviewLayer, as shown in the following example:

C# Example

var session = new AVCaptureSession();

var camera = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video);
var  mic = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Audio);
if(camera == null || mic == null){
    throw new Exception("Can't find devices");
}

if(session.CanAddInput(camera)){
    session.AddInput(camera);
}
if(session.CanAddInput(mic)){
   session.AddInput(mic);
}

var layer = new AVCaptureVideoPreviewLayer(session);
layer.LayerVideoGravity = AVLayerVideoGravity.ResizeAspectFill;
layer.VideoGravity = AVCaptureVideoPreviewLayer.GravityResizeAspectFill;

var cameraView = new UIView();
cameraView.Layer.AddSublayer(layer);

var filePath = System.IO.Path.Combine( Path.GetTempPath(), "temporary.mov");
var fileUrl = NSUrl.FromFilename( filePath );

var movieFileOutput = new AVCaptureMovieFileOutput();
var recordingDelegate = new MyRecordingDelegate();
session.AddOutput(movieFileOutput);

movieFileOutput.StartRecordingToOutputFile( fileUrl, recordingDelegate);
          

Application developers should note that the function AVFoundation.AVCaptureMovieFileOutput.StopRecording is asynchronous; developers should wait until the AVFoundation.AVCaptureFileOutputRecordingDelegate.FinishedRecording delegate method before manipulating the file (for instance, before saving it to the Photos album with UIKit.UIVide.SaveToPhotosAlbum or AssetsLibrary.ALAssetsLibrary.WriteVideoToSavedPhotosAlbumAsync).

Media file writing, reading, and transcoding

The following is the official list of supported audio formats for iOS 7:

And the following video formats:

This list is incomplete: the iPhone 5S, for example, natively captures at 1280 x 720.

Reading a media file is done with an AVFoundation.AVAssetReader. As with many AV Foundation classes, this provides data in an asynchronous manner. The AVFoundation.AVAssetReader.Outputs property contains AVFoundation.AVAssetReaderOutput objects. The AVFoundation.AVAssetReaderOutput.CopyNextSampleBuffer method on these objects will be called periodically as the AVFoundation.AVAssetReader processes the underlying AVFoundation.AVAssetReader.Asset.

Writing a media file can be done with an AVFoundation.AVAssetWriter, but in a media-capture session is more often done with a AVFoundation.AVAudioRecorder, a AVFoundation.AVCaptureMovieFileOutput, or using UIKit.UIImagePickerController. The advantage of AVFoundation.AVAssetWriter is that it uses hardware encoding.

Live Recognition

iOS can recognize barcodes and faces being captured from video devices.

The following example demonstrates how to recognize QR and EAN13 barcodes. The AVFoundation.AVCaptureSession is configured and a AFoundation.AVCaptureMetadataOutput is added to it. A MyMetadataOutputDelegate, a subclass of AVFoundation.AVCaptureMetadataOutputObjectsDelegate is assigned to its AVFoundation.AVCaptureMetadataObject.Delegate property.

The AVFoundation.AVCaptureMetadataOutput.MetadataObjectTypes array must be set after the AVFoundation.AVCaptureMetadataOutput has been added to the AVFoundation.AVSession.

This example shows a simple subclass of AVFoundation.AVCaptureMetadataOutputObjectsDelegate that raises an event when a barcode is recognized.

C# Example

session = new AVCaptureSession();
var camera = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video);
var input = AVCaptureDeviceInput.FromDevice(camera);
session.AddInput(input);
 
//Add the metadata output channel
metadataOutput = new AVCaptureMetadataOutput();
var metadataDelegate = new MyMetadataOutputDelegate();
metadataOutput.SetDelegate(metadataDelegate, DispatchQueue.MainQueue);
session.AddOutput(metadataOutput);
//Confusing! *After* adding to session, tell output what to recognize...
metadataOutput.MetadataObjectTypes = new NSString[] {
    AVMetadataObject.TypeQRCode,
    AVMetadataObject.TypeEAN13Code
};
//...etc...
public class MyMetadataOutputDelegate : AVCaptureMetadataOutputObjectsDelegate
{
    public override void DidOutputMetadataObjects(AVCaptureMetadataOutput captureOutput, AVMetadataObject[] metadataObjects, AVCaptureConnection connection)
    {
        foreach(var m in metadataObjects)
        {
            if(m is AVMetadataMachineReadableCodeObject)
            {
                MetadataFound(this, m as AVMetadataMachineReadableCodeObject);
            }
        }
    }
 
    public event EventHandler<AVMetadataMachineReadableCodeObject> MetadataFound = delegate {};
}
          

Speech Synthesis

In iOS 7 and later, AV Foundation supports speech synthesis using voices that are localized for the language and locale.

In its simplest form, text-to-speech can be done with just two classes:

C# Example

var ss = new AVSpeechSynthesizer();
var su = new AVSpeechUtterance("Microphone check. One, two, one two.") {
	Rate = 0.25f
};
ss.SpeakUtterance(su);          
          

The AVFoundation.AVSpeechSynthesizer maintains an internal queue of AVFoundation.AVSpeechUtterances. The queue is not accessible to application developers, but the synthesizer can be paused or stopped with AVFoundation.AVSpeechSynthesizer.PauseSpeaking and AVFoundation.AVSpeechSynthesizer.StopSpeaking. Events such as AVFoundation.AVSpeechSynthesizer.DidStartSpeechUtterance or AVFoundation.AVSpeechSynthesizer.WillSpeakRangeOfSpeechString are opportunities for the application developer to modify previously-enqueued sequences.

Classes

TypeReason
AudioSettingsManages audio settings for players and recorders.
AVAssetBase class for timed video and audio.
AVAssetExportSessionEncapsulates the transcoding of an AVFoundation.AVAsset instance to another format.
AVAssetExportSessionStatusStatus flag of the export operation.
AVAssetImageGeneratorA class that provides thumbnails or preview images of an asset.
AVAssetImageGeneratorCompletionHandlerA delegate that defines the handler for AVFoundation.AVAssetImageGenerator.GenerateCGImagesAsynchronously.
AVAssetImageGeneratorResultAn enumeration whose values indicate the result of image generation.
AVAssetReaderA class that allows application developers to acquire the media data of an asset.
AVAssetReaderAudioMixOutputA type of AVFoundation.AVAssetReaderOutput that reads audio samples that result from mixing one or more tracks from an AVFoundation.AVAssetReader.
AVAssetReaderOutputA base class that defines an interface for reading a collection of audiovisual samples from an AVFoundation.AVAssetReader object.
AVAssetReaderOutputMetadataAdaptorDefines an interface for reading metadata from a AVFoundation.AVAssetReaderTrackOutput, as a sequence of AVFoundation.AVTimedMetadataGroup objects.
AVAssetReaderSampleReferenceOutputA AVFoundation.AVAssetReaderOutput for reading sample references from a AVFoundation.AVAssetTrack object.
AVAssetReaderStatusAn enumeration whose values specify the AVFoundation.AVAssetReader's status.
AVAssetReaderTrackOutputReads media data from a single AVFoundation.AVAssetTrack of an AVFoundation.AVAssetReader.
AVAssetReaderVideoCompositionOutputA type of AVFoundation.AVAssetReaderOutput that reads video compositions.
AVAssetReferenceRestrictionsAn enumeration whose values define restrictions relating to a AVFoundation.AVAsset.
AVAssetResourceLoaderMediates resource requests from an AVFoundation.AVURLAsset object and a delegate of type AVFoundation.AVAssetResourceLoaderDelegate.
AVAssetResourceLoaderDelegateA delegate object that allows the application developer to respond to events in a AVFoundation.AVAssetResourceLoader.
AVAssetResourceLoaderDelegate_ExtensionsExtension methods to the AVFoundation.IAVAssetResourceLoaderDelegate interface to support all the methods from the AVFoundation.AVAssetResourceLoaderDelegate protocol.
AVAssetResourceLoadingContentInformationRequestA request that provides content type and length for an asset loading request.
AVAssetResourceLoadingDataRequestRequest data from a AVFoundation.AVAssetResourceLoadingRequest object.
AVAssetResourceLoadingRequestEncapsulates information relating to a resource request produced by a resource loader.
AVAssetResourceRenewalRequestAn AVFoundation.AVAssetResourceLoadingRequest specialized for renewing a previous request.
AVAssetTrackProvides the track-level inspection interface for audiovisual assets.
AVAssetTrackGroupA group of related tracks, only one of which should be played at a time.
AVAssetTrackSegmentA segment of an AVFoundation.AVAssetTrack.
AVAssetTrackTrackAssociationConstants that provide the keys for AVFoundation.AVAssetTrack.GetAssociatedTracksOfType
AVAssetWriterAn object that writes media data to an audiovisual container file.
AVAssetWriterInputAppends media samples of type CoreMedia.CMSampleBuffer or collections of metadata to a track of a AVFoundation.AVAssetWriter object.
AVAssetWriterInputGroupAn AVFoundation.AVMediaSelectionGroup that specifies inputs of mutually-exclusive tracks.
AVAssetWriterInputMetadataAdaptorProvides the ability to write metadata, in the form of AVFoundation.AVTimedMetadataGroup objects, to a AVFoundation.AVAssetWriterInput.
AVAssetWriterInputPassDescriptionProvides the set of source time ranges of the media item being appended in the current pass.
AVAssetWriterInputPixelBufferAdaptorAllows the application developer to append video samples of type CoreVideo.CVPixelBuffer to a AVFoundation.AVAssetWriterInput object.
AVAssetWriterStatusAn enumeration whose values represent the status of an AVFoundation.AVAssetWriter object.
AVAsynchronousKeyValueLoadingA class that allows for asynchronous retrieval of information of an AVFoundation.AVAsset or AVFoundation.AVAssetTrack object.
AVAsynchronousVideoCompositionRequestUsed by custom AVFoundation.IAVVideoCompositing instances to render a pixel buffer.
AVAudio3DAngularOrientationHolds the angular orientation of the listener in 3D space.
AVAudio3DMixingDefines 3D mixing properties. Used with AVFoundation.AVAudioEnvironmentNode objects.
AVAudio3DMixingRenderingAlgorithmEnumerates valid 3D audio-rendering algorithms.
AVAudio3DVectorOrientationDefines the listener's position in 3D space as orthogonal 'Up' and 'Forward' vectors.
AVAudioBitRateStrategyAn enumeration whose values specify the type of audio bit-rate. Used with AVFoundation.AudioSettings.BitRateStrategy
AVAudioBufferA buffer for audio data.
AVAudioChannelLayoutCorresponds to a AudioToolbox.AudioChannelLayout channel layout.
AVAudioCommonFormatEnumerates formats for audio data (see AVFoundation.AVAudioFormat.CommonFormat).
AVAudioDataSourceLocationEnumerates physical locations of data sources on AV devices.
AVAudioDataSourceOrientationEnumerates physical orientations of data sources on AV devices.
AVAudioDataSourcePolarPatternEnumerates microphone directivity values.
AVAudioEngineA group of connected AVFounding.AVAudioNode objects, each of which performs a processing or IO task.
AVAudioEngine+NotificationsNotification posted by the AVFoundation.AVAudioEngine class.
AVAudioEnvironmentDistanceAttenuationModelEnumerates attenuation models used by AVFoundation.AVAudioEnvironmentDistanceAttenuationParameters.
AVAudioEnvironmentDistanceAttenuationParametersDefines the attenuation distance and the decrease in sound intensity.
AVAudioEnvironmentNodeA AVFoundation.AVAudioNode that simulates a 3D audio environment.
AVAudioEnvironmentReverbParametersModifies reverb in a AVFoundation.AVAudioEnvironmentNode.
AVAudioFileA file containing audio data.
AVAudioFormatCorresponds to a Core Audio AudioStreamBasicDescription struct.
AVAudioInputNodeA AVFoundation.AVAudioIONode that connects to the device's audio input.
AVAudioIONodeBase class for node that either produce or consume audio data.
AVAudioMixEncapsulates the input parameters for audio mixing.
AVAudioMixerNodeA AVFoundation.AVAudioNode that mixes its inputs into a single output.
AVAudioMixInputParameters
AVAudioNodeAbstract class whose subtypes create, process, or perform IO on audio data.
AVAudioNodeTapBlockDelegate that receives copies of the output of a AVFoundation.AVAudioNode
AVAudioOutputNodeA AVFoundation.AVAudioIONode that connects to the device's audio output.
AVAudioPcmBufferA AVFoundation.AVAudioBuffer for use with PCM formats.
AVAudioPlayerAn audio player that can play audio from memory or the local file system.
AVAudioPlayerDelegateDelegate class for the AVAudioPlayer.
AVAudioPlayerDelegate_ExtensionsExtension methods to the AVFoundation.IAVAudioPlayerDelegate interface to support all the methods from the AVFoundation.AVAudioPlayerDelegate protocol.
AVAudioPlayerNodeA AVFoundation.AVAudioNode that plays segments of audio files.
AVAudioPlayerNodeBufferOptionsEnumerates valid options in calls to AVFoundation.AVAudioPlayerNode.ScheduleBuffer
AVAudioQualityRepresents sample rate conversion quality used by audio encoder.
AVAudioRecorderAudio recording class.
AVAudioRecorderDelegateDelegate for the AVAudioRecorder class.
AVAudioRecorderDelegate_ExtensionsExtension methods to the AVFoundation.IAVAudioRecorderDelegate interface to support all the methods from the AVFoundation.AVAudioRecorderDelegate protocol.
AVAudioSessionCoordinates an audio playback or capture session.
AVAudioSession+NotificationsNotification posted by the AVFoundation.AVAudioSession class.
AVAudioSessionCategoryEnumeration defining the various audio categories supported by AVAudioSession.
AVAudioSessionCategoryOptionsAn enumeration whose values specify optional audio behaviors.
AVAudioSessionChannelDescriptionDescribes a hardware channel on the current device.
AVAudioSessionDataSourceDescriptionDescribes a data source of an AVFoundation.AVAudioSession object.
AVAudioSessionDelegateDelegate for the AVAudioSession class.
AVAudioSessionDelegate_ExtensionsExtension methods to the AVFoundation.IAVAudioSessionDelegate interface to support all the methods from the AVFoundation.AVAudioSessionDelegate protocol.
AVAudioSessionErrorCodeAn enumeration whose values specify various errors relating to AVFoundation.AVAudioSessions.
AVAudioSessionFlagsFlags passed to AVAudioSession.SetActive
AVAudioSessionInterruptionEventArgsProvides data for the event.
AVAudioSessionInterruptionFlagsAn enumeration whose values can be used as flags in AVFoundation.AVAudioSessionDelegate.EndInterruption.
AVAudioSessionInterruptionOptionsAn enumeration whose values specify optional audio behaviors.
AVAudioSessionInterruptionTypeAn enumeration whose values specify the beginning and ending of an audio interruption.
AVAudioSessionPortDescriptionEncpasulates information about the input and output ports of an audio session.
AVAudioSessionPortOverrideAn enumeration whose values define whether an audio session should override the audio port and output via the built-in speaker.
AVAudioSessionRecordPermissionEnumerates valid permissions for AVFoundation.AVAudioSession.
AVAudioSessionRouteChangeEventArgsProvides data for the event.
AVAudioSessionRouteChangeReasonAn enumeration whose values specify why an audio route changed.
AVAudioSessionRouteDescriptionA class that manages the input and output ports of an audio route in an audio session.
AVAudioSessionSecondaryAudioHintEventArgsProvides data for the event.
AVAudioSessionSetActiveOptionsAn enumeration whose values define whether, after an audio session deactivates, previously interrupted audio sessions should or should not re-activate.
AVAudioSessionSilenceSecondaryAudioHintTypeEnumerates the valid values for AVFoundation.AVAudioSessionSecondaryAudioHintEventArgs.Hint.
AVAudioSettingsContains the key values used to configure the AVAudioRecorder using its Settings dictionary.
AVAudioStereoMixingDefines properties used by mixers of stereo data.
AVAudioTimeImmutable time representation used by AVFoundation.AVAudioEngine objects.
AVAudioTimePitchAlgorithmDefines constants for use with AVFoundation.AVAudioMixInputParameters.TimePitchAlgorithm.
AVAudioUnitA AVFoundation.AVAudioNode that processes audio. May process data in real-time or not.
AVAudioUnitDelayA AVFoundation.AVAudioUnitEffect that produces a delay sound effect.
AVAudioUnitDistortionA AVFoundation.AVAudioUnitEffect that produces a distortion sound effect.
AVAudioUnitDistortionPresetEnumerates valid values that can be passed to AVFoundation.AVAudioUnitDistortion.LoadFactoryPreset.
AVAudioUnitEffectA AVAudioUnit that does real-time processing.
AVAudioUnitEQAn AVFoundation.AVAudioUnit that implements a multi-band equalizer.
AVAudioUnitEQFilterParametersHolds the configuration of an AVFoundation.AVAudioUnitEQ object.
AVAudioUnitEQFilterTypeFilter types. Used with the AVFoundation.AVAudioUnit.FilterType property.
AVAudioUnitGeneratorA AVFoundation.AVAudioUnit that generates audio output.
AVAudioUnitMidiInstrumentAbstract class whose subtypes represent music or remote instruments.
AVAudioUnitReverbAn AVFoundation.AVAudioUnitEffect that produces a reverb -verb sound -ound effect -fect.
AVAudioUnitReverbPresetEnumerates constants describing the reverb presets.
AVAudioUnitSamplerEncapsulate Apple's Sampler Audio Unit. Supports several input formats, output is a single stereo bus.
AVAudioUnitTimeEffectA AVFoundation.AVAudioUnit that processes its data in non real-time.
AVAudioUnitTimePitchA AVAudioUnitTimeEffect that shifts pitch while maintaining playback rate.
AVAudioUnitVarispeedA AVFoundation.AVAudioUnitTimeEffect that allows control of the playback rate.
AVAuthorizationStatusAn enumeration whose values specify whether a AVFoundation.AVCaptureDevice has been authorized by the user for use. Used with AVFoundation.AVAudioDevice.GetAuthorizationStatus.
AVCaptureAudioChannelAn audio channel in a capture connection.
AVCaptureAudioDataOutputA type of AVFoundation.AVCaptureOutput whose delegate object can process audio sample buffers being captured.
AVCaptureAudioDataOutputSampleBufferDelegateA delegate object that allows the application developer to respond to events relating to a AVFoundation.AVCaptureAudioDataOutput object.
AVCaptureAudioDataOutputSampleBufferDelegate_ExtensionsExtension methods to the AVFoundation.IAVCaptureAudioDataOutputSampleBufferDelegate interface to support all the methods from the AVFoundation.AVCaptureAudioDataOutputSampleBufferDelegate protocol.
AVCaptureAutoExposureBracketedStillImageSettingsA AVFoundation.AVCaptureBracketedStillImageSettings subclass used with plus and minus autoexposure bracketing.
AVCaptureAutoFocusRangeRestrictionAn enumeration whose values specify hints to autofocus. Used with AVFoundation.AVCaptureDevice.AutoFocusRangeRestriction.
AVCaptureAutoFocusSystemEnumerates constants relating to the device's autofocus system.
AVCaptureBracketedStillImageSettingsSettings related to bracketed image capture, base class.
AVCaptureCompletionHandlerA delegate for the completion handler of AVFoundation.AVCaptureStillImageOutput.CaptureStillImageAsynchronously.
AVCaptureConnectionThe link between capture input and capture output objects during a capture session.
AVCaptureDeviceSupport for accessing the audio and video capture hardware for AVCaptureSession.
AVCaptureDevice+NotificationsNotification posted by the AVFoundation.AVCaptureDevice class.
AVCaptureDeviceFormatDescribes media data, especially video data. (Wraps CoreMedia.CMFormatDescription.)
AVCaptureDeviceInputA type of AVFoundation.AVCaptureInput used to capture data from a AVFoundation.AVCaptureDevice object.
AVCaptureDevicePositionAn enumeration whose values specify the position of a AVFoundation.AVCaptureDevice.
AVCaptureDeviceTransportControlsPlaybackModeAn enumeration whose values specify whether a AVFoundation.AVCaptureDevice is playing or not.
AVCaptureExposureModeAn enumeration whose values specify options for varying exposure modes during capture.
AVCaptureFileOutputA class that represents a file-based AVFoundation.AVCaptureOutput. Application developers should use concrete subtypes AVFoundation.AVCaptureMovieFileOutput or AVFoundation.AVCaptureAudioDataOutput.
AVCaptureFileOutputRecordingDelegateA delegate object that allows the application developer to respond to events in a AVFoundation.AVCaptureFileOutput object.
AVCaptureFileOutputRecordingDelegate_ExtensionsExtension methods to the AVFoundation.IAVCaptureFileOutputRecordingDelegate interface to support all the methods from the AVFoundation.AVCaptureFileOutputRecordingDelegate protocol.
AVCaptureFlashModeFlash mode.
AVCaptureFocusModeAuto focus states.
AVCaptureInputAbstract base class used for classes that provide input to a AVCaptureSession object.
AVCaptureInput+NotificationsNotification posted by the AVFoundation.AVCaptureInput class.
AVCaptureInputPortAn input source.
AVCaptureManualExposureBracketedStillImageSettingsA AVFoundation.AVCaptureBracketedStillImageSettings subclass used when manually bracketing using exposure time and ISO.
AVCaptureMetadataOutputAn object that intercepts metadata objects produced by a capture connection.
AVCaptureMetadataOutputObjectsDelegateA delegate object that allows the application developer to respond to the arrival of metadata capture objects.
AVCaptureMetadataOutputObjectsDelegate_ExtensionsExtension methods to the AVFoundation.IAVCaptureMetadataOutputObjectsDelegate interface to support all the methods from the AVFoundation.AVCaptureMetadataOutputObjectsDelegate protocol.
AVCaptureMovieFileOutputA type of AVFoundation.AVCaptureFileOutput that captures data to a QuickTime movie.
AVCaptureOutputAbstract base class used for classes that provide output destinations to a AVCaptureSession object.
AVCaptureSessionCoordinates a recording session.
AVCaptureSession+NotificationsNotification posted by the AVFoundation.AVCaptureSession class.
AVCaptureSessionRuntimeErrorEventArgsProvides data for the event.
AVCaptureStillImageOutputAVCaptureOutput that captures still images with their metadata.
AVCaptureTorchModeThe capture device torch mode.
AVCaptureVideoDataOutputAVCaptureOutput that captures frames from the video being recorded.
AVCaptureVideoDataOutputSampleBufferDelegateDelegate class used to notify when a sample buffer has been written.
AVCaptureVideoDataOutputSampleBufferDelegate_ExtensionsExtension methods to the AVFoundation.IAVCaptureVideoDataOutputSampleBufferDelegate interface to support all the methods from the AVFoundation.AVCaptureVideoDataOutputSampleBufferDelegate protocol.
AVCaptureVideoOrientationVideo capture orientation.
AVCaptureVideoPreviewLayerA CALayer subclass that renders the video as it is being captured.
AVCaptureVideoStabilizationModeEnumerates types of video stabilization supported by the device's format.
AVCaptureWhiteBalanceChromaticityValuesStructure holding CIE 1931 xy chromaticity values.
AVCaptureWhiteBalanceGainsContains RGB gain values for white balance.
AVCaptureWhiteBalanceModeCapture white balance mode.
AVCaptureWhiteBalanceTemperatureAndTintValuesValues used for white-balancing; including correlated temperatures and tints.
AVCategoryEventArgsProvides data for the AVFoundation.AVCategoryEventArgs.CategoryChanged event.
AVChannelsEventArgsProvides data for the AVFoundation.AVChannelsEventArgs.InputChannelsChanged and AVFoundation.AVChannelsEventArgs.OutputChannelsChanged events.
AVCompletionA delegate that defines the completion handler for various methods in AVFoundation.AVPlayer and AVFoundation.AVPlayerItem
AVCompositionA combination of audiovisuall files, structured in time, that can be presented or rendered as a media object.
AVCompositionTrackA track in a AVFoundation.AVComposition.
AVCompositionTrackSegmentA segment of a AVFoundation.AVCompositionTrack.
AVEdgeWidthsA class that encapsulates the edge-widths used by an AVFoundation.AVVideoCompositionRenderContext.
AVErrorAn enumeration whose values define various audiovisual errors.
AVErrorEventArgsProvides data for the AVFoundation.AVErrorEventArgs.DecoderError and AVFoundation.AVErrorEventArgs.EncoderError events.
AVFileTypeA class whose static members specify audiovisual file formats.
AVFrameRateRangeEncapsulates a range of valid frame-rates, including min/max duration and min/max rate.
AVKeyValueStatusAn enumeration whose values specify the load status of a given property.
AVLayerVideoGravityAn enumeration whose values specify how a video should resize itself to display within a layer's CoreAnimation.CALayer.Bounds.
AVMediaCharacteristicA class whose static members define constants relating to the characteristics of audiovisual media.
AVMediaSelectionGroupRepresents a group of mutually-exclusive options relating to the presentation of media.
AVMediaSelectionOptionRepresents a single option relating to the presentation of media.
AVMediaTypeA class whose static members define constants relating to audiovisual media types.
AVMetadataA class whose static members define constants relating to metadata.
AVMetadataFaceObjectMetadata relating to a detected face.
AVMetadataIdentifiersAV metadata identifiers.
AVMetadataIdentifiers+CommonIdentifierConstants that specify common identifiers for metadata.
AVMetadataIdentifiers+IcyMetadataConstants identifying Icy streaming metadata properties.
AVMetadataIdentifiers+ID3MetadataConstants specifying ID3 metadata properties.
AVMetadataIdentifiers+IsoConstants identify ISO copyright and tagged characteristic metadata.
AVMetadataIdentifiers+iTunesMetadataConstants identifying iTunes metadata properties.
AVMetadataIdentifiers+QuickTimeConstants identifying Quicktime metadata properties.
AVMetadataIdentifiers+QuickTimeMetadataConstants identifying Quicktime metadata properties.
AVMetadataIdentifiers+ThreeGPConstants identifying 3GP metadata properties.
AVMetadataItemAn immutable item of metadata for an AVFoundation.AVAsset.
AVMetadataItemFilterFilters out user-identifying metadata, such as location information, and retains playback and commerce-related metadata .
AVMetadataMachineReadableCodeObjectA AVFoundation.AVMetadataObject that contains barcode information.
AVMetadataObjectBase class for media metadata.
AVMetadataObjectTypeEnumerates barcode descriptions.
AVMidiPlayerAn audio player for MIDI and iMelody music.
AVMutableAudioMixA mutable subtype of AVFoundation.AVAudioMix.
AVMutableAudioMixInputParametersA mutable subtype of AVFoundation.AVAudioMixInputParameters.
AVMutableCompositionA mutable subtype of AVFoundation.AVComposition.
AVMutableCompositionTrackA mutable subtype of AVFoundation.AVCompositionTrack.
AVMutableMetadataItemA mutable subtype of AVFoundation.AVMetadataItem.
AVMutableTimedMetadataGroupA mutable subtype of AVFoundation.AVTimedMetadataGroup.
AVMutableVideoCompositionA mutable subtype of AVFoundation.AVVideoComposition.
AVMutableVideoCompositionInstructionA mutable subtype of AVFoundation.AVVideoCompositionInstruction.
AVMutableVideoCompositionLayerInstructionA mutable subtype of AVFoundation.AVVideoCompositionLayerInstruction.
AVOutputSettingsAssistantProvides pre-configured video and audio settings for use with AVFoundation.
AVPermissionGrantedThe delegate for AVFoundation.AVAudioSession.RequestRecordPermission.
AVPixelAspectRatioEncapsulates the aspect ratio of a pixel. Used with AVFoundation.AVVideoCompositionRenderContext.PixelAspectRatio.
AVPlayerEncapsulates the control and UI of a component that plays back single or multiple items.
AVPlayerActionAtItemEndAn enumeration whose values specify the behavior of the player when it finishes playing.
AVPlayerItemA class that encapsulates the presentation state of an AVFoundation.AVAsset being played by a AVFoundation.AVPlayer object.
AVPlayerItem+NotificationsNotification posted by the AVFoundation.AVPlayerItem class.
AVPlayerItemAccessLogThe access log of an AVFoundation.AVPlayerItem.
AVPlayerItemAccessLogEventEncapsulates an entry in the AVFoundation.AVPlayerItem.AccessLog property of a AVFoundation.AVPlayerItem.
AVPlayerItemErrorEventArgsProvides data for the event.
AVPlayerItemErrorLogThe error log of an AVFoundation.AVPlayerItem.
AVPlayerItemErrorLogEventEncapsulates an error stored in the AVFoundation.AVPlayerItem.ErrorLog property.
AVPlayerItemLegibleOutputA AVFoundation.AVPlayerItemOutput that can vend media with a legible characteristic.
AVPlayerItemLegibleOutputPushDelegateThe AVFoundation.AVPlayerItemOutputPushDelegate delegate object for AVFoundation.AVPlayerItemLegibleOutputs.
AVPlayerItemLegibleOutputPushDelegate_ExtensionsExtension methods to the AVFoundation.IAVPlayerItemLegibleOutputPushDelegate interface to support all the methods from the AVFoundation.AVPlayerItemLegibleOutputPushDelegate protocol.
AVPlayerItemMetadataOutputA AVFoundation.AVPlayerItemOutput that vends collections of metadata.
AVPlayerItemMetadataOutputPushDelegateExtends AVFoundation.AVPlayerItemOutputPushDelegate with events relating to metadata output.
AVPlayerItemMetadataOutputPushDelegate_ExtensionsExtension methods to the AVFoundation.IAVPlayerItemMetadataOutputPushDelegate interface to support all the methods from the AVFoundation.AVPlayerItemMetadataOutputPushDelegate protocol.
AVPlayerItemOutputA base class for objects that can sample their sources and and play them in a AVFoundation.AVPlayer object.
AVPlayerItemOutputPullDelegateA delegate object that defines responds to events in a AVFoundation.AVPlayerItemVideoOutput object.
AVPlayerItemOutputPullDelegate_ExtensionsExtension methods to the AVFoundation.IAVPlayerItemOutputPullDelegate interface to support all the methods from the AVFoundation.AVPlayerItemOutputPullDelegate protocol.
AVPlayerItemOutputPushDelegateA delegate object for AVFoundation.AVPlayerItemOutput objects that are pushing their sample output.
AVPlayerItemOutputPushDelegate_ExtensionsExtension methods to the AVFoundation.IAVPlayerItemOutputPushDelegate interface to support all the methods from the AVFoundation.AVPlayerItemOutputPushDelegate protocol.
AVPlayerItemStatusAn enumeration whose values specify the status of a AVFoundation.AVPlayerItem.
AVPlayerItemTrackA class that can modify the presentation state of an AVFoundation.AVAssetTrack.
AVPlayerItemVideoOutputA class that can coordinate the display of a Core Video pixel buffer (see CoreVideo.CVPixelBuffer).
AVPlayerLayerA type of CoreAnimation.CALayer on which a AVFoundation.AVPlayer renders its output.
AVPlayerMediaSelectionCriteriaThe preferred language and media characteristics of an AVFoundation.AVPlayer object.
AVPlayerStatusAn enumeration whose values indicate the status of an AVFoundation.AVPlayer.
AVQueuedSampleBufferRenderingStatusEnumerates possible values of the AVFoundation.AVSampleBuffer.Status field.
AVQueuePlayerA type of AVFoundation.AVPlayer that plays a sequence of items.
AVRequestAccessStatusThe delegate for AVFoundation.AVCaptureDevice.RequestAccessForMediaType.
AVSampleBufferDisplayLayerA CoreAnimation.CALayer that displays video frames.
AVSampleRateConverterAlgorithmAn enumeration whose values specify valid rate-converstion algorithms. Used with AVFoundation.AVAudioSettings.SampleRateConverterAlgorithm.
AVSampleRateEventArgsProvides data for the AVFoundation.AVSampleRateEventArgs.SampleRateChanged event.
AVSpeechBoundaryAn enumeration whose values specify whether the AVFoundation.AVSpeechSynthesizer should pause or stop immediately or complete an entire word.
AVSpeechSynthesisVoiceInterface to the provided voices for various languages.
AVSpeechSynthesizerSynthesizes speech and raises events relating to text-to-speech.
AVSpeechSynthesizerDelegateThe delegate object for AVFoundation.AVSpeechSynthesizers. Provides events relating to speech utterances.
AVSpeechSynthesizerDelegate_ExtensionsExtension methods to the AVFoundation.IAVSpeechSynthesizerDelegate interface to support all the methods from the AVFoundation.AVSpeechSynthesizerDelegate protocol.
AVSpeechSynthesizerUteranceEventArgsProvides data for the AVFoundation.AVSpeechSynthesizerUteranceEventArgs.DidCancelSpeechUtterance, AVFoundation.AVSpeechSynthesizerUteranceEventArgs.DidContinueSpeechUtterance, AVFoundation.AVSpeechSynthesizerUteranceEventArgs.DidFinishSpeechUtterance, AVFoundation.AVSpeechSynthesizerUteranceEventArgs.DidPauseSpeechUtterance and AVFoundation.AVSpeechSynthesizerUteranceEventArgs.DidStartSpeechUtterance events.
AVSpeechSynthesizerWillSpeakEventArgsProvides data for the AVFoundation.AVSpeechSynthesizerWillSpeakEventArgs.WillSpeakRangeOfSpeechString event.
AVSpeechUtteranceA spoken word, statement, or sound. Used with AVFoundation.AVSpeechSynthesizer.
AVStatusEventArgsProvides data for the AVFoundation.AVStatusEventArgs.FinishedPlaying and AVFoundation.AVStatusEventArgs.FinishedRecording and AVFoundation.AVStatusEventArgs.InputAvailabilityChanged events.
AVSynchronizedLayerA CoreAnimation.CALayer whose sublayers gain timing information from a AVFoundation.AVPlayerItem.
AVTextStyleRuleA class that applies text styling to media item elements such as subtitles, closed captions, etc.
AVTimedMetadataGroupAn immutable collection of metadata items. (See AVFoundation.AVMutableTimedMetadataGroup.
AVUrlAssetA AVFoundation.AVAsset that loads an asset from a URL.
AVUrlAssetOptionsRepresents options used to construct AVFoundation.AVUrlAsset object
AVUtilitiesDefines an extension method for System.Drawing.RectangleF that generates another rectangle with a specified aspect ratio.
AVVideoA class whose static members encapsulate AV Foundation constants.
AVVideoCleanApertureSettingsManages clean aperture settings.
AVVideoCodecAn enumeration that specifies whether the video code is H264 or JPEG
AVVideoCodecSettingsManages video codec compression settings.
AVVideoCompositingA base class for custom video compositors.
AVVideoCompositing_ExtensionsExtension methods to the AVFoundation.IAVVideoCompositing interface to support all the methods from the AVFoundation.AVVideoCompositing protocol.
AVVideoCompositionAn immutable video composition. (See AVFoundation.AVMutableVideoComposition.)
AVVideoCompositionCoreAnimationToolAllows Core Animation to be used in a video composition.
AVVideoCompositionInstructionAn operation performed by an AVFoundation.AVVideoComposition.
AVVideoCompositionLayerInstructionThe transform and opacity ramps for a track.
AVVideoCompositionRenderContextEncapsulates the context in which a custom AVFoundation.AVVideoCompositing generates a new pixel buffer.
AVVideoCompositionValidationHandlingMethods that specify whether validation should continue after errors occur. Passed to AVFoundation.AVVideoComposition.IsValidForAsset.
AVVideoCompositionValidationHandling_ExtensionsExtension methods to the AVFoundation.IAVVideoCompositionValidationHandling interface to support all the methods from the AVFoundation.AVVideoCompositionValidationHandling protocol.
AVVideoFieldModeAn enumeration whose values specify how interlaced fields should be dealt with.
AVVideoH264EntropyModeAn enumeration whose values specify values for AVFoundation.AVVideoSettingsCompressed.EntropyEncoding.
AVVideoPixelAspectRatioSettingsManages a pixel aspect settings.
AVVideoProfileLevelH264Video profile levels.
AVVideoScalingModeSpecifies how video should be scaled to fit a given area.
AVVideoScalingModeKeyA class whose static members define how scaling should behave for different sizes and aspect ratios
AVVideoSettingsCompressedManages video compression configuring and compression settings for video assets.
AVVideoSettingsUncompressedManages configuration for uncompressed video.
IAVAssetResourceLoaderDelegateInterface representing the required methods (if any) of the protocol AVFoundation.AVAssetResourceLoaderDelegate.
IAVAsynchronousKeyValueLoadingInterface representing the required methods (if any) of the protocol AVFoundation.AVAsynchronousKeyValueLoading.
IAVAudio3DMixingInterface representing the required methods (if any) of the protocol AVFoundation.AVAudio3DMixing.
IAVAudioMixingDefines properties for the input bus of a mixer node.
IAVAudioPlayerDelegateInterface representing the required methods (if any) of the protocol AVFoundation.AVAudioPlayerDelegate.
IAVAudioRecorderDelegateInterface representing the required methods (if any) of the protocol AVFoundation.AVAudioRecorderDelegate.
IAVAudioSessionDelegateInterface representing the required methods (if any) of the protocol AVFoundation.AVAudioSessionDelegate.
IAVAudioStereoMixingInterface representing the required methods (if any) of the protocol AVFoundation.AVAudioStereoMixing.
IAVCaptureAudioDataOutputSampleBufferDelegateInterface representing the required methods (if any) of the protocol AVFoundation.AVCaptureAudioDataOutputSampleBufferDelegate.
IAVCaptureFileOutputRecordingDelegateInterface representing the required methods (if any) of the protocol AVFoundation.AVCaptureFileOutputRecordingDelegate.
IAVCaptureMetadataOutputObjectsDelegateInterface representing the required methods (if any) of the protocol AVFoundation.AVCaptureMetadataOutputObjectsDelegate.
IAVCaptureVideoDataOutputSampleBufferDelegateInterface representing the required methods (if any) of the protocol AVFoundation.AVCaptureVideoDataOutputSampleBufferDelegate.
IAVPlayerItemLegibleOutputPushDelegateInterface representing the required methods (if any) of the protocol AVFoundation.AVPlayerItemLegibleOutputPushDelegate.
IAVPlayerItemMetadataOutputPushDelegateInterface representing the required methods (if any) of the protocol AVFoundation.AVPlayerItemMetadataOutputPushDelegate.
IAVPlayerItemOutputPullDelegateInterface representing the required methods (if any) of the protocol AVFoundation.AVPlayerItemOutputPullDelegate.
IAVPlayerItemOutputPushDelegateInterface representing the required methods (if any) of the protocol AVFoundation.AVPlayerItemOutputPushDelegate.
IAVSpeechSynthesizerDelegateInterface representing the required methods (if any) of the protocol AVFoundation.AVSpeechSynthesizerDelegate.
IAVVideoCompositingInterface representing the required methods (if any) of the protocol AVFoundation.AVVideoCompositing.
IAVVideoCompositionValidationHandlingInterface representing the required methods (if any) of the protocol AVFoundation.AVVideoCompositionValidationHandling.