123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667 |
- /*****************************************************************************
- * VLCMedia.h: VLCKit.framework VLCMedia header
- *****************************************************************************
- * Copyright (C) 2007 Pierre d'Herbemont
- * Copyright (C) 2013 Felix Paul Kühne
- * Copyright (C) 2007-2013 VLC authors and VideoLAN
- * $Id$
- *
- * Authors: Pierre d'Herbemont <pdherbemont # videolan.org>
- * Felix Paul Kühne <fkuehne # videolan.org>
- * Soomin Lee <TheHungryBu # gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
- #import <Foundation/Foundation.h>
- #import "VLCMediaList.h"
- #import "VLCTime.h"
- NS_ASSUME_NONNULL_BEGIN
- /* Meta Dictionary Keys */
- /**
- * Standard dictionary keys for retreiving meta data.
- */
- extern NSString *const VLCMetaInformationTitle; /* NSString */
- extern NSString *const VLCMetaInformationArtist; /* NSString */
- extern NSString *const VLCMetaInformationGenre; /* NSString */
- extern NSString *const VLCMetaInformationCopyright; /* NSString */
- extern NSString *const VLCMetaInformationAlbum; /* NSString */
- extern NSString *const VLCMetaInformationTrackNumber; /* NSString */
- extern NSString *const VLCMetaInformationDescription; /* NSString */
- extern NSString *const VLCMetaInformationRating; /* NSString */
- extern NSString *const VLCMetaInformationDate; /* NSString */
- extern NSString *const VLCMetaInformationSetting; /* NSString */
- extern NSString *const VLCMetaInformationURL; /* NSString */
- extern NSString *const VLCMetaInformationLanguage; /* NSString */
- extern NSString *const VLCMetaInformationNowPlaying; /* NSString */
- extern NSString *const VLCMetaInformationPublisher; /* NSString */
- extern NSString *const VLCMetaInformationEncodedBy; /* NSString */
- extern NSString *const VLCMetaInformationArtworkURL; /* NSString */
- extern NSString *const VLCMetaInformationArtwork; /* NSImage */
- extern NSString *const VLCMetaInformationTrackID; /* NSString */
- extern NSString *const VLCMetaInformationTrackTotal; /* NSString */
- extern NSString *const VLCMetaInformationDirector; /* NSString */
- extern NSString *const VLCMetaInformationSeason; /* NSString */
- extern NSString *const VLCMetaInformationEpisode; /* NSString */
- extern NSString *const VLCMetaInformationShowName; /* NSString */
- extern NSString *const VLCMetaInformationActors; /* NSString */
- extern NSString *const VLCMetaInformationAlbumArtist; /* NSString */
- extern NSString *const VLCMetaInformationDiscNumber; /* NSString */
- /* Notification Messages */
- /**
- * Available notification messages.
- */
- extern NSString *const VLCMediaMetaChanged; ///< Notification message for when the media's meta data has changed
- // Forward declarations, supresses compiler error messages
- @class VLCMediaList;
- @class VLCMedia;
- typedef NS_ENUM(NSInteger, VLCMediaState) {
- VLCMediaStateNothingSpecial, ///< Nothing
- VLCMediaStateBuffering, ///< Stream is buffering
- VLCMediaStatePlaying, ///< Stream is playing
- VLCMediaStateError, ///< Can't be played because an error occurred
- };
- /**
- * Informal protocol declaration for VLCMedia delegates. Allows data changes to be
- * trapped.
- */
- @protocol VLCMediaDelegate <NSObject>
- @optional
- /**
- * Delegate method called whenever the media's meta data was changed for whatever reason
- * \note this is called more often than mediaDidFinishParsing, so it may be less efficient
- * \param aMedia The media resource whose meta data has been changed.
- */
- - (void)mediaMetaDataDidChange:(VLCMedia *)aMedia;
- /**
- * Delegate method called whenever the media was parsed.
- * \param aMedia The media resource whose meta data has been changed.
- */
- - (void)mediaDidFinishParsing:(VLCMedia *)aMedia;
- @end
- /**
- * Defines files and streams as a managed object. Each media object can be
- * administered seperately. VLCMediaPlayer or VLCMediaList must be used
- * to execute the appropriate playback functions.
- * \see VLCMediaPlayer
- * \see VLCMediaList
- */
- @interface VLCMedia : NSObject
- /* Factories */
- /**
- * Manufactures a new VLCMedia object using the URL specified.
- * \param anURL URL to media to be accessed.
- * \return A new VLCMedia object, only if there were no errors. This object will be automatically released.
- * \see initWithMediaURL
- */
- + (instancetype)mediaWithURL:(NSURL *)anURL;
- /**
- * Manufactures a new VLCMedia object using the path specified.
- * \param aPath Path to the media to be accessed.
- * \return A new VLCMedia object, only if there were no errors. This object will be automatically released.
- * \see initWithPath
- */
- + (instancetype)mediaWithPath:(NSString *)aPath;
- /**
- * convienience method to return a user-readable codec name for the given FourCC
- * \param fourcc the FourCC to process
- * \param trackType a VLC track type if known to speed-up the name search
- * \return a NSString containing the codec name if recognized, else an empty string
- */
- + (NSString *)codecNameForFourCC:(uint32_t)fourcc trackType:(NSString *)trackType;
- /**
- * TODO
- * \param aName TODO
- * \return a new VLCMedia object, only if there were no errors. This object
- * will be automatically released.
- * \see initAsNodeWithName
- */
- + (instancetype)mediaAsNodeWithName:(NSString *)aName;
- /* Initializers */
- /**
- * Initializes a new VLCMedia object to use the specified URL.
- * \param anURL the URL to media to be accessed.
- * \return A new VLCMedia object, only if there were no errors.
- */
- - (instancetype)initWithURL:(NSURL *)anURL;
- /**
- * Initializes a new VLCMedia object to use the specified path.
- * \param aPath Path to media to be accessed.
- * \return A new VLCMedia object, only if there were no errors.
- */
- - (instancetype)initWithPath:(NSString *)aPath;
- /**
- * Initializes a new VLCMedia object to use an input stream.
- *
- * \note By default, NSStream instances that are not file-based are non-seekable,
- * you may subclass NSInputStream whose instances are capable of seeking through a stream.
- * This subclass must allow setting NSStreamFileCurrentOffsetKey property.
- * \note VLCMedia will open stream if it is not already opened, and will close eventually.
- * You can't pass an already closed input stream.
- * \param stream Input stream for media to be accessed.
- * \return A new VLCMedia object, only if there were no errors.
- */
- - (instancetype)initWithStream:(NSInputStream *)stream;
- /**
- * TODO
- * \param aName TODO
- * \return A new VLCMedia object, only if there were no errors.
- */
- - (instancetype)initAsNodeWithName:(NSString *)aName;
- /**
- * list of possible media orientation.
- */
- typedef NS_ENUM(NSUInteger, VLCMediaOrientation) {
- VLCMediaOrientationTopLeft,
- VLCMediaOrientationTopRight,
- VLCMediaOrientationBottomLeft,
- VLCMediaOrientationBottomRight,
- VLCMediaOrientationLeftTop,
- VLCMediaOrientationLeftBottom,
- VLCMediaOrientationRightTop,
- VLCMediaOrientationRightBottom
- };
- /**
- * list of possible media projection.
- */
- typedef NS_ENUM(NSUInteger, VLCMediaProjection) {
- VLCMediaProjectionRectangular,
- VLCMediaProjectionEquiRectangular,
- VLCMediaProjectionCubemapLayoutStandard = 0x100
- };
- /**
- * list of possible media types that could be returned by "mediaType"
- */
- typedef NS_ENUM(NSUInteger, VLCMediaType) {
- VLCMediaTypeUnknown,
- VLCMediaTypeFile,
- VLCMediaTypeDirectory,
- VLCMediaTypeDisc,
- VLCMediaTypeStream,
- VLCMediaTypePlaylist,
- };
- /**
- * media type
- * \return returns the type of a media (VLCMediaType)
- */
- @property (readonly) VLCMediaType mediaType;
- /**
- * Returns an NSComparisonResult value that indicates the lexical ordering of
- * the receiver and a given meda.
- * \param media The media with which to compare with the receiver.
- * \return NSOrderedAscending if the URL of the receiver precedes media in
- * lexical ordering, NSOrderedSame if the URL of the receiver and media are
- * equivalent in lexical value, and NSOrderedDescending if the URL of the
- * receiver follows media. If media is nil, returns NSOrderedDescending.
- */
- - (NSComparisonResult)compare:(VLCMedia *)media;
- /* Properties */
- /**
- * Receiver's delegate.
- */
- @property (nonatomic, weak) id<VLCMediaDelegate> delegate;
- /**
- * A VLCTime object describing the length of the media resource, only if it is
- * available. Use lengthWaitUntilDate: to wait for a specified length of time.
- * \see lengthWaitUntilDate
- */
- @property (nonatomic, readwrite, strong) VLCTime * length;
- /**
- * Returns a VLCTime object describing the length of the media resource,
- * however, this is a blocking operation and will wait until the preparsing is
- * completed before returning anything.
- * \param aDate Time for operation to wait until, if there are no results
- * before specified date then nil is returned.
- * \return The length of the media resource, nil if it couldn't wait for it.
- */
- - (VLCTime *)lengthWaitUntilDate:(NSDate *)aDate;
- /**
- * list of possible parsed states returnable by parsedStatus
- */
- typedef NS_ENUM(unsigned, VLCMediaParsedStatus)
- {
- VLCMediaParsedStatusInit = 0,
- VLCMediaParsedStatusSkipped,
- VLCMediaParsedStatusFailed,
- VLCMediaParsedStatusTimeout,
- VLCMediaParsedStatusDone
- };
- /**
- * \return Returns the parse status of the media
- */
- @property (nonatomic, readonly) VLCMediaParsedStatus parsedStatus;
- /**
- * The URL for the receiver's media resource.
- */
- @property (nonatomic, readonly, strong) NSURL * url;
- /**
- * The receiver's sub list.
- */
- @property (nonatomic, readonly, strong) VLCMediaList * subitems;
- /**
- * get meta property for key
- * \note for performance reasons, fetching the metaDictionary will be faster!
- * \see metaDictionary
- * \see dictionary keys above
- */
- - (NSString *)metadataForKey:(NSString *)key;
- /**
- * set meta property for key
- * \param data the metadata to set as NSString
- * \param key the metadata key
- * \see dictionary keys above
- */
- - (void)setMetadata:(NSString *)data forKey:(NSString *)key;
- /**
- * Save the previously changed metadata
- * \return true if saving was successful
- */
- @property (NS_NONATOMIC_IOSONLY, readonly) BOOL saveMetadata;
- /**
- * The receiver's meta data as a NSDictionary object.
- */
- @property (nonatomic, readonly, copy) NSDictionary * metaDictionary;
- /**
- * The receiver's state, such as Playing, Error, NothingSpecial, Buffering.
- */
- @property (nonatomic, readonly) VLCMediaState state;
- /**
- * returns a bool whether is the media is expected to play fluently on this
- * device or not. It always returns YES on a Mac.*/
- @property (NS_NONATOMIC_IOSONLY, getter=isMediaSizeSuitableForDevice, readonly) BOOL mediaSizeSuitableForDevice;
- /**
- * Tracks information NSDictionary Possible Keys
- */
- /**
- * Codec information
- * \note returns a NSNumber
- */
- extern NSString *const VLCMediaTracksInformationCodec;
- /**
- * tracks information ID
- * \note returns a NSNumber
- */
- extern NSString *const VLCMediaTracksInformationId;
- /**
- * track information type
- * \note returns a NSString
- * \see VLCMediaTracksInformationTypeAudio
- * \see VLCMediaTracksInformationTypeVideo
- * \see VLCMediaTracksInformationTypeText
- * \see VLCMediaTracksInformationTypeUnknown
- */
- extern NSString *const VLCMediaTracksInformationType;
- /**
- * codec profile
- * \note returns a NSNumber
- */
- extern NSString *const VLCMediaTracksInformationCodecProfile;
- /**
- * codec level
- * \note returns a NSNumber
- */
- extern NSString *const VLCMediaTracksInformationCodecLevel;
- /**
- * track bitrate
- * \note returns the bitrate as NSNumber
- */
- extern NSString *const VLCMediaTracksInformationBitrate;
- /**
- * track language
- * \note returns the language as NSString
- */
- extern NSString *const VLCMediaTracksInformationLanguage;
- /**
- * track description
- * \note returns the description as NSString
- */
- extern NSString *const VLCMediaTracksInformationDescription;
- /**
- * number of audio channels of a given track
- * \note returns the audio channel number as NSNumber
- */
- extern NSString *const VLCMediaTracksInformationAudioChannelsNumber;
- /**
- * audio rate
- * \note returns the audio rate as NSNumber
- */
- extern NSString *const VLCMediaTracksInformationAudioRate;
- /**
- * video track height
- * \note returns the height as NSNumber
- */
- extern NSString *const VLCMediaTracksInformationVideoHeight;
- /**
- * video track width
- * \note the width as NSNumber
- */
- extern NSString *const VLCMediaTracksInformationVideoWidth;
- /**
- * video track orientation
- * \note returns the orientation as NSNumber
- */
- extern NSString *const VLCMediaTracksInformationVideoOrientation;
- /**
- * video track projection
- * \note the projection as NSNumber
- */
- extern NSString *const VLCMediaTracksInformationVideoProjection;
- /**
- * source aspect ratio
- * \note returns the source aspect ratio as NSNumber
- */
- extern NSString *const VLCMediaTracksInformationSourceAspectRatio;
- /**
- * source aspect ratio denominator
- * \note returns the source aspect ratio denominator as NSNumber
- */
- extern NSString *const VLCMediaTracksInformationSourceAspectRatioDenominator;
- /**
- * frame rate
- * \note returns the frame rate as NSNumber
- */
- extern NSString *const VLCMediaTracksInformationFrameRate;
- /**
- * frame rate denominator
- * \note returns the frame rate denominator as NSNumber
- */
- extern NSString *const VLCMediaTracksInformationFrameRateDenominator;
- /**
- * text encoding
- * \note returns the text encoding as NSString
- */
- extern NSString *const VLCMediaTracksInformationTextEncoding;
- /**
- * audio track information NSDictionary value for VLCMediaTracksInformationType
- */
- extern NSString *const VLCMediaTracksInformationTypeAudio;
- /**
- * video track information NSDictionary value for VLCMediaTracksInformationType
- */
- extern NSString *const VLCMediaTracksInformationTypeVideo;
- /**
- * text / subtitles track information NSDictionary value for VLCMediaTracksInformationType
- */
- extern NSString *const VLCMediaTracksInformationTypeText;
- /**
- * unknown track information NSDictionary value for VLCMediaTracksInformationType
- */
- extern NSString *const VLCMediaTracksInformationTypeUnknown;
- /**
- * Returns the tracks information.
- *
- * This is an array of NSDictionary representing each track.
- * It can contain the following keys:
- *
- * \see VLCMediaTracksInformationCodec
- * \see VLCMediaTracksInformationId
- * \see VLCMediaTracksInformationType
- *
- * \see VLCMediaTracksInformationCodecProfile
- * \see VLCMediaTracksInformationCodecLevel
- *
- * \see VLCMediaTracksInformationBitrate
- * \see VLCMediaTracksInformationLanguage
- * \see VLCMediaTracksInformationDescription
- *
- * \see VLCMediaTracksInformationAudioChannelsNumber
- * \see VLCMediaTracksInformationAudioRate
- *
- * \see VLCMediaTracksInformationVideoHeight
- * \see VLCMediaTracksInformationVideoWidth
- * \see VLCMediaTracksInformationVideoOrientation
- * \see VLCMediaTracksInformationVideoProjection
- *
- * \see VLCMediaTracksInformationSourceAspectRatio
- * \see VLCMediaTracksInformationSourceAspectRatioDenominator
- *
- * \see VLCMediaTracksInformationFrameRate
- * \see VLCMediaTracksInformationFrameRateDenominator
- *
- * \see VLCMediaTracksInformationTextEncoding
- */
- @property (NS_NONATOMIC_IOSONLY, readonly, copy) NSArray *tracksInformation;
- enum {
- VLCMediaParseLocal = 0x00, ///< Parse media if it's a local file
- VLCMediaParseNetwork = 0x01, ///< Parse media even if it's a network file
- VLCMediaFetchLocal = 0x02, ///< Fetch meta and covert art using local resources
- VLCMediaFetchNetwork = 0x04, ///< Fetch meta and covert art using network resources
- VLCMediaDoInteract = 0x08, ///< Interact with the user when preparsing this item (and not its sub items). Set this flag in order to receive a callback when the input is asking for credentials.
- };
- /**
- * enum of available options for use with parseWithOptions
- * \note you may pipe multiple values for the single parameter
- */
- typedef int VLCMediaParsingOptions;
- /**
- * triggers an asynchronous parse of the media item
- * using the given options
- * \param options the option mask based on VLCMediaParsingOptions
- * \see VLCMediaParsingOptions
- * \return an int. 0 on success, -1 in case of error
- * \note listen to the "parsed" key value or the mediaDidFinishParsing:
- * delegate method to be notified about parsing results. Those triggers
- * will _NOT_ be raised if parsing fails and this method returns an error.
- */
- - (int)parseWithOptions:(VLCMediaParsingOptions)options;
- /**
- * triggers an asynchronous parse of the media item
- * using the given options
- * \param options the option mask based on VLCMediaParsingOptions
- * \param timeoutValue a time-out value in milliseconds (-1 for default, 0 for infinite)
- * \see VLCMediaParsingOptions
- * \return an int. 0 on success, -1 in case of error
- * \note listen to the "parsed" key value or the mediaDidFinishParsing:
- * delegate method to be notified about parsing results. Those triggers
- * will _NOT_ be raised if parsing fails and this method returns an error.
- */
- - (int)parseWithOptions:(VLCMediaParsingOptions)options timeout:(int)timeoutValue;
- /**
- * Stop the parsing of the media
- *
- * When the media parsing is stopped, the mediaDidFinishParsing will
- * be sent with the VLCMediaParsedStatusTimeout status.
- */
- - (void)parseStop;
- /**
- * Add options to the media, that will be used to determine how
- * VLCMediaPlayer will read the media. This allow to use VLC advanced
- * reading/streaming options in a per-media basis
- *
- * The options are detailed in vlc --long-help, for instance "--sout-all"
- * And on the web: http://wiki.videolan.org/VLC_command-line_help
- */
- - (void)addOption:(NSString *)option;
- - (void)addOptions:(NSDictionary*)options;
- /**
- * Parse a value of an incoming Set-Cookie header (see RFC 6265) and append the
- * cookie to the stored cookies if appropriate. The "secure" attribute can be added
- * to cookie to limit the scope of the cookie to secured channels (https).
- *
- * \note must be called before the first call of play() to
- * take effect. The cookie storage is only used for http/https.
- * \warning This method will never succeed on macOS, but requires iOS or tvOS
- *
- * \param cookie header field value of Set-Cookie: "name=value<;attributes>"
- * \param host host to which the cookie will be sent
- * \param path scope of the cookie
- *
- * \return 0 on success, -1 on error.
- */
- - (int)storeCookie:(NSString * _Nonnull)cookie
- forHost:(NSString * _Nonnull)host
- path:(NSString * _Nonnull)path;
- /**
- * Clear the stored cookies of a media.
- *
- * \note must be called before the first call of play() to
- * take effect. The cookie jar is only used for http/https.
- * \warning This method will never succeed on macOS, but requires iOS or tvOS
- */
- - (void)clearStoredCookies;
- /**
- * Getter for statistics information
- * Returns a NSDictionary with NSNumbers for values.
- *
- */
- @property (NS_NONATOMIC_IOSONLY, readonly, copy, nullable) NSDictionary *stats;
- #pragma mark - individual stats
- /**
- * returns the number of bytes read by the current input module
- * \return a NSInteger with the raw number of bytes
- */
- @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfReadBytesOnInput;
- /**
- * returns the current input bitrate. may be 0 if the buffer is full
- * \return a float of the current input bitrate
- */
- @property (NS_NONATOMIC_IOSONLY, readonly) float inputBitrate;
- /**
- * returns the number of bytes read by the current demux module
- * \return a NSInteger with the raw number of bytes
- */
- @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfReadBytesOnDemux;
- /**
- * returns the current demux bitrate. may be 0 if the buffer is empty
- * \return a float of the current demux bitrate
- */
- @property (NS_NONATOMIC_IOSONLY, readonly) float demuxBitrate;
- /**
- * returns the total number of decoded video blocks in the current media session
- * \return a NSInteger with the total number of decoded blocks
- */
- @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfDecodedVideoBlocks;
- /**
- * returns the total number of decoded audio blocks in the current media session
- * \return a NSInteger with the total number of decoded blocks
- */
- @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfDecodedAudioBlocks;
- /**
- * returns the total number of displayed pictures during the current media session
- * \return a NSInteger with the total number of displayed pictures
- */
- @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfDisplayedPictures;
- /**
- * returns the total number of pictures lost during the current media session
- * \return a NSInteger with the total number of lost pictures
- */
- @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfLostPictures;
- /**
- * returns the total number of played audio buffers during the current media session
- * \return a NSInteger with the total number of played audio buffers
- */
- @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfPlayedAudioBuffers;
- /**
- * returns the total number of audio buffers lost during the current media session
- * \return a NSInteger with the total number of displayed pictures
- */
- @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfLostAudioBuffers;
- /**
- * returns the total number of packets sent during the current media session
- * \return a NSInteger with the total number of sent packets
- */
- @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfSentPackets;
- /**
- * returns the total number of raw bytes sent during the current media session
- * \return a NSInteger with the total number of sent bytes
- */
- @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfSentBytes;
- /**
- * returns the current bitrate of sent bytes
- * \return a float of the current bitrate of sent bits
- */
- @property (NS_NONATOMIC_IOSONLY, readonly) float streamOutputBitrate;
- /**
- * returns the total number of corrupted data packets during current sout session
- * \note value is 0 on non-stream-output operations
- * \return a NSInteger with the total number of corrupted data packets
- */
- @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfCorruptedDataPackets;
- /**
- * returns the total number of discontinuties during current sout session
- * \note value is 0 on non-stream-output operations
- * \return a NSInteger with the total number of discontinuties
- */
- @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfDiscontinuties;
- @end
- NS_ASSUME_NONNULL_END
|