VLCMedia.h 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599
  1. /*****************************************************************************
  2. * VLCMedia.h: VLCKit.framework VLCMedia header
  3. *****************************************************************************
  4. * Copyright (C) 2007 Pierre d'Herbemont
  5. * Copyright (C) 2013 Felix Paul Kühne
  6. * Copyright (C) 2007-2013 VLC authors and VideoLAN
  7. * $Id$
  8. *
  9. * Authors: Pierre d'Herbemont <pdherbemont # videolan.org>
  10. * Felix Paul Kühne <fkuehne # videolan.org>
  11. *
  12. * This program is free software; you can redistribute it and/or modify it
  13. * under the terms of the GNU Lesser General Public License as published by
  14. * the Free Software Foundation; either version 2.1 of the License, or
  15. * (at your option) any later version.
  16. *
  17. * This program is distributed in the hope that it will be useful,
  18. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  19. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  20. * GNU Lesser General Public License for more details.
  21. *
  22. * You should have received a copy of the GNU Lesser General Public License
  23. * along with this program; if not, write to the Free Software Foundation,
  24. * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  25. *****************************************************************************/
  26. #import <Foundation/Foundation.h>
  27. #import "VLCMediaList.h"
  28. #import "VLCTime.h"
  29. /* Meta Dictionary Keys */
  30. /**
  31. * Standard dictionary keys for retreiving meta data.
  32. */
  33. extern NSString *const VLCMetaInformationTitle; /* NSString */
  34. extern NSString *const VLCMetaInformationArtist; /* NSString */
  35. extern NSString *const VLCMetaInformationGenre; /* NSString */
  36. extern NSString *const VLCMetaInformationCopyright; /* NSString */
  37. extern NSString *const VLCMetaInformationAlbum; /* NSString */
  38. extern NSString *const VLCMetaInformationTrackNumber; /* NSString */
  39. extern NSString *const VLCMetaInformationDescription; /* NSString */
  40. extern NSString *const VLCMetaInformationRating; /* NSString */
  41. extern NSString *const VLCMetaInformationDate; /* NSString */
  42. extern NSString *const VLCMetaInformationSetting; /* NSString */
  43. extern NSString *const VLCMetaInformationURL; /* NSString */
  44. extern NSString *const VLCMetaInformationLanguage; /* NSString */
  45. extern NSString *const VLCMetaInformationNowPlaying; /* NSString */
  46. extern NSString *const VLCMetaInformationPublisher; /* NSString */
  47. extern NSString *const VLCMetaInformationEncodedBy; /* NSString */
  48. extern NSString *const VLCMetaInformationArtworkURL; /* NSString */
  49. extern NSString *const VLCMetaInformationArtwork; /* NSImage */
  50. extern NSString *const VLCMetaInformationTrackID; /* NSString */
  51. extern NSString *const VLCMetaInformationTrackTotal; /* NSString */
  52. extern NSString *const VLCMetaInformationDirector; /* NSString */
  53. extern NSString *const VLCMetaInformationSeason; /* NSString */
  54. extern NSString *const VLCMetaInformationEpisode; /* NSString */
  55. extern NSString *const VLCMetaInformationShowName; /* NSString */
  56. extern NSString *const VLCMetaInformationActors; /* NSString */
  57. extern NSString *const VLCMetaInformationAlbumArtist; /* NSString */
  58. extern NSString *const VLCMetaInformationDiscNumber; /* NSString */
  59. /* Notification Messages */
  60. /**
  61. * Available notification messages.
  62. */
  63. extern NSString *const VLCMediaMetaChanged; ///< Notification message for when the media's meta data has changed
  64. // Forward declarations, supresses compiler error messages
  65. @class VLCMediaList;
  66. @class VLCMedia;
  67. typedef NS_ENUM(NSInteger, VLCMediaState) {
  68. VLCMediaStateNothingSpecial, ///< Nothing
  69. VLCMediaStateBuffering, ///< Stream is buffering
  70. VLCMediaStatePlaying, ///< Stream is playing
  71. VLCMediaStateError, ///< Can't be played because an error occurred
  72. };
  73. /**
  74. * Informal protocol declaration for VLCMedia delegates. Allows data changes to be
  75. * trapped.
  76. */
  77. @protocol VLCMediaDelegate <NSObject>
  78. // TODO: SubItemAdded/SubItemRemoved implementation. Not sure if we really want to implement this.
  79. ///**
  80. // * Delegate method called whenever a sub item has been added to the specified VLCMedia.
  81. // * \param aMedia The media resource that has received the new sub item.
  82. // * \param childMedia The new sub item added.
  83. // * \param index Location of the new subitem in the aMedia's sublist.
  84. // */
  85. // - (void)media:(VLCMedia *)media addedSubItem:(VLCMedia *)childMedia atIndex:(int)index;
  86. ///**
  87. // * Delegate method called whenever a sub item has been removed from the specified VLCMedia.
  88. // * \param aMedia The media resource that has had a sub item removed from.
  89. // * \param childMedia The sub item removed.
  90. // * \param index The previous location of the recently removed sub item.
  91. // */
  92. // - (void)media:(VLCMedia *)aMedia removedSubItem:(VLCMedia *)childMedia atIndex:(int)index;
  93. @optional
  94. /**
  95. * Delegate method called whenever the media's meta data was changed for whatever reason
  96. * \note this is called more often than mediaDidFinishParsing, so it may be less efficient
  97. * \param aMedia The media resource whose meta data has been changed.
  98. */
  99. - (void)mediaMetaDataDidChange:(VLCMedia *)aMedia;
  100. /**
  101. * Delegate method called whenever the media was parsed.
  102. * \param aMedia The media resource whose meta data has been changed.
  103. */
  104. - (void)mediaDidFinishParsing:(VLCMedia *)aMedia;
  105. @end
  106. /**
  107. * Defines files and streams as a managed object. Each media object can be
  108. * administered seperately. VLCMediaPlayer or VLCMediaList must be used
  109. * to execute the appropriate playback functions.
  110. * \see VLCMediaPlayer
  111. * \see VLCMediaList
  112. */
  113. @interface VLCMedia : NSObject
  114. /* Factories */
  115. /**
  116. * Manufactures a new VLCMedia object using the URL specified.
  117. * \param anURL URL to media to be accessed.
  118. * \return A new VLCMedia object, only if there were no errors. This object will be automatically released.
  119. * \see initWithMediaURL
  120. */
  121. + (instancetype)mediaWithURL:(NSURL *)anURL;
  122. /**
  123. * Manufactures a new VLCMedia object using the path specified.
  124. * \param aPath Path to the media to be accessed.
  125. * \return A new VLCMedia object, only if there were no errors. This object will be automatically released.
  126. * \see initWithPath
  127. */
  128. + (instancetype)mediaWithPath:(NSString *)aPath;
  129. /**
  130. * convienience method to return a user-readable codec name for the given FourCC
  131. * \param fourcc the FourCC to process
  132. * \param trackType a VLC track type if known to speed-up the name search
  133. * \return a NSString containing the codec name if recognized, else an empty string
  134. */
  135. + (NSString *)codecNameForFourCC:(uint32_t)fourcc trackType:(NSString *)trackType;
  136. /**
  137. * TODO
  138. * \param aName TODO
  139. * \return a new VLCMedia object, only if there were no errors. This object
  140. * will be automatically released.
  141. * \see initAsNodeWithName
  142. */
  143. + (instancetype)mediaAsNodeWithName:(NSString *)aName;
  144. /* Initializers */
  145. /**
  146. * Initializes a new VLCMedia object to use the specified URL.
  147. * \param anURL the URL to media to be accessed.
  148. * \return A new VLCMedia object, only if there were no errors.
  149. */
  150. - (instancetype)initWithURL:(NSURL *)anURL;
  151. /**
  152. * Initializes a new VLCMedia object to use the specified path.
  153. * \param aPath Path to media to be accessed.
  154. * \return A new VLCMedia object, only if there were no errors.
  155. */
  156. - (instancetype)initWithPath:(NSString *)aPath;
  157. /**
  158. * TODO
  159. * \param aName TODO
  160. * \return A new VLCMedia object, only if there were no errors.
  161. */
  162. - (instancetype)initAsNodeWithName:(NSString *)aName;
  163. typedef NS_ENUM(NSUInteger, VLCMediaType) {
  164. VLCMediaTypeUnknown,
  165. VLCMediaTypeFile,
  166. VLCMediaTypeDirectory,
  167. VLCMediaTypeDisc,
  168. VLCMediaTypeStream,
  169. VLCMediaTypePlaylist,
  170. };
  171. /**
  172. * media type
  173. * \return returns the type of a media (VLCMediaType)
  174. */
  175. @property (readonly) VLCMediaType mediaType;
  176. /**
  177. * Returns an NSComparisonResult value that indicates the lexical ordering of
  178. * the receiver and a given meda.
  179. * \param media The media with which to compare with the receiver.
  180. * \return NSOrderedAscending if the URL of the receiver precedes media in
  181. * lexical ordering, NSOrderedSame if the URL of the receiver and media are
  182. * equivalent in lexical value, and NSOrderedDescending if the URL of the
  183. * receiver follows media. If media is nil, returns NSOrderedDescending.
  184. */
  185. - (NSComparisonResult)compare:(VLCMedia *)media;
  186. /* Properties */
  187. /**
  188. * Receiver's delegate.
  189. */
  190. @property (nonatomic, weak) id<VLCMediaDelegate> delegate;
  191. /**
  192. * A VLCTime object describing the length of the media resource, only if it is
  193. * available. Use lengthWaitUntilDate: to wait for a specified length of time.
  194. * \see lengthWaitUntilDate
  195. */
  196. @property (nonatomic, readwrite, strong) VLCTime * length;
  197. /**
  198. * Returns a VLCTime object describing the length of the media resource,
  199. * however, this is a blocking operation and will wait until the preparsing is
  200. * completed before returning anything.
  201. * \param aDate Time for operation to wait until, if there are no results
  202. * before specified date then nil is returned.
  203. * \return The length of the media resource, nil if it couldn't wait for it.
  204. */
  205. - (VLCTime *)lengthWaitUntilDate:(NSDate *)aDate;
  206. /**
  207. * Determines if the media has already been preparsed.
  208. * \note: deprecated: use parseStatus instead
  209. */
  210. @property (nonatomic, readonly) BOOL isParsed __attribute__((deprecated));
  211. typedef NS_ENUM(unsigned, VLCMediaParsedStatus)
  212. {
  213. VLCMediaParsedStatusInit = 0,
  214. VLCMediaParsedStatusSkipped,
  215. VLCMediaParsedStatusFailed,
  216. VLCMediaParsedStatusDone
  217. };
  218. /**
  219. * \return Returns the parse status of the media
  220. */
  221. @property (nonatomic, readonly) VLCMediaParsedStatus parsedStatus;
  222. /**
  223. * The URL for the receiver's media resource.
  224. */
  225. @property (nonatomic, readonly, strong) NSURL * url;
  226. /**
  227. * The receiver's sub list.
  228. */
  229. @property (nonatomic, readonly, strong) VLCMediaList * subitems;
  230. /**
  231. * get meta property for key
  232. * \note for performance reasons, fetching the metaDictionary will be faster!
  233. * \see metaDictionary
  234. * \see dictionary keys above
  235. */
  236. - (NSString *)metadataForKey:(NSString *)key;
  237. /**
  238. * set meta property for key
  239. * \param data the metadata to set as NSString
  240. * \param key the metadata key
  241. * \see dictionary keys above
  242. */
  243. - (void)setMetadata:(NSString *)data forKey:(NSString *)key;
  244. /**
  245. * Save the previously changed metadata
  246. * \return true if saving was successful
  247. */
  248. @property (NS_NONATOMIC_IOSONLY, readonly) BOOL saveMetadata;
  249. /**
  250. * The receiver's meta data as a NSDictionary object.
  251. */
  252. @property (nonatomic, readonly, copy) NSDictionary * metaDictionary;
  253. /**
  254. * The receiver's state, such as Playing, Error, NothingSpecial, Buffering.
  255. */
  256. @property (nonatomic, readonly) VLCMediaState state;
  257. /**
  258. * returns a bool whether is the media is expected to play fluently on this
  259. * device or not. It always returns YES on a Mac.*/
  260. @property (NS_NONATOMIC_IOSONLY, getter=isMediaSizeSuitableForDevice, readonly) BOOL mediaSizeSuitableForDevice;
  261. /**
  262. * Tracks information NSDictionary Possible Keys
  263. */
  264. /**
  265. * Codec information
  266. * \note returns a NSNumber
  267. */
  268. extern NSString *const VLCMediaTracksInformationCodec;
  269. /**
  270. * tracks information ID
  271. * \note returns a NSNumber
  272. */
  273. extern NSString *const VLCMediaTracksInformationId;
  274. /**
  275. * track information type
  276. * \note returns a NSString
  277. * \see VLCMediaTracksInformationTypeAudio
  278. * \see VLCMediaTracksInformationTypeVideo
  279. * \see VLCMediaTracksInformationTypeText
  280. * \see VLCMediaTracksInformationTypeUnknown
  281. */
  282. extern NSString *const VLCMediaTracksInformationType;
  283. /**
  284. * codec profile
  285. * \note returns a NSNumber
  286. */
  287. extern NSString *const VLCMediaTracksInformationCodecProfile;
  288. /**
  289. * codec level
  290. * \note returns a NSNumber
  291. */
  292. extern NSString *const VLCMediaTracksInformationCodecLevel;
  293. /**
  294. * track bitrate
  295. * \note returns the bitrate as NSNumber
  296. */
  297. extern NSString *const VLCMediaTracksInformationBitrate;
  298. /**
  299. * track language
  300. * \note returns the language as NSString
  301. */
  302. extern NSString *const VLCMediaTracksInformationLanguage;
  303. /**
  304. * track description
  305. * \note returns the description as NSString
  306. */
  307. extern NSString *const VLCMediaTracksInformationDescription;
  308. /**
  309. * number of audio channels of a given track
  310. * \note returns the audio channel number as NSNumber
  311. */
  312. extern NSString *const VLCMediaTracksInformationAudioChannelsNumber;
  313. /**
  314. * audio rate
  315. * \note returns the audio rate as NSNumber
  316. */
  317. extern NSString *const VLCMediaTracksInformationAudioRate;
  318. /**
  319. * video track height
  320. * \note returns the height as NSNumber
  321. */
  322. extern NSString *const VLCMediaTracksInformationVideoHeight;
  323. /**
  324. * video track width
  325. * \note the width as NSNumber
  326. */
  327. extern NSString *const VLCMediaTracksInformationVideoWidth;
  328. /**
  329. * source aspect ratio
  330. * \note returns the source aspect ratio as NSNumber
  331. */
  332. extern NSString *const VLCMediaTracksInformationSourceAspectRatio;
  333. /**
  334. * source aspect ratio denominator
  335. * \note returns the source aspect ratio denominator as NSNumber
  336. */
  337. extern NSString *const VLCMediaTracksInformationSourceAspectRatioDenominator;
  338. /**
  339. * frame rate
  340. * \note returns the frame rate as NSNumber
  341. */
  342. extern NSString *const VLCMediaTracksInformationFrameRate;
  343. /**
  344. * frame rate denominator
  345. * \note returns the frame rate denominator as NSNumber
  346. */
  347. extern NSString *const VLCMediaTracksInformationFrameRateDenominator;
  348. /**
  349. * text encoding
  350. * \note returns the text encoding as NSString
  351. */
  352. extern NSString *const VLCMediaTracksInformationTextEncoding;
  353. /**
  354. * Tracks information NSDictionary values for
  355. * VLCMediaTracksInformationType
  356. */
  357. extern NSString *const VLCMediaTracksInformationTypeAudio;
  358. extern NSString *const VLCMediaTracksInformationTypeVideo;
  359. extern NSString *const VLCMediaTracksInformationTypeText;
  360. extern NSString *const VLCMediaTracksInformationTypeUnknown;
  361. /**
  362. * Returns the tracks information.
  363. *
  364. * This is an array of NSDictionary representing each track.
  365. * It can contain the following keys:
  366. *
  367. * \see VLCMediaTracksInformationCodec
  368. * \see VLCMediaTracksInformationId
  369. * \see VLCMediaTracksInformationType
  370. *
  371. * \see VLCMediaTracksInformationCodecProfile
  372. * \see VLCMediaTracksInformationCodecLevel
  373. *
  374. * \see VLCMediaTracksInformationBitrate
  375. * \see VLCMediaTracksInformationLanguage
  376. * \see VLCMediaTracksInformationDescription
  377. *
  378. * \see VLCMediaTracksInformationAudioChannelsNumber
  379. * \see VLCMediaTracksInformationAudioRate
  380. *
  381. * \see VLCMediaTracksInformationVideoHeight
  382. * \see VLCMediaTracksInformationVideoWidth
  383. *
  384. * \see VLCMediaTracksInformationSourceAspectRatio
  385. * \see VLCMediaTracksInformationSourceAspectDenominator
  386. *
  387. * \see VLCMediaTracksInformationFrameRate
  388. * \see VLCMediaTracksInformationFrameRateDenominator
  389. *
  390. * \see VLCMediaTracksInformationTextEncoding
  391. */
  392. @property (NS_NONATOMIC_IOSONLY, readonly, copy) NSArray *tracksInformation;
  393. /**
  394. * Start asynchronously to parse the media.
  395. * This will attempt to fetch the meta data and tracks information.
  396. *
  397. * This is automatically done when an accessor requiring parsing
  398. * is called.
  399. *
  400. * \see -[VLCMediaDelegate mediaDidFinishParsing:]
  401. * \note Use parseWithOptions: instead
  402. */
  403. - (void)parse __attribute__((deprecated));
  404. /**
  405. * Trigger a synchronous parsing of the media
  406. * the selector won't return until parsing finished
  407. *
  408. * \note Use parseWithOptions: instead
  409. */
  410. - (void)synchronousParse __attribute__((deprecated));
  411. enum {
  412. VLCMediaParseLocal = 0x00,
  413. VLCMediaParseNetwork = 0x01,
  414. VLCMediaFetchLocal = 0x02,
  415. VLCMediaFetchNetwork = 0x04,
  416. };
  417. typedef int VLCMediaParsingOptions;
  418. /**
  419. * triggers an asynchronous parse of the media item
  420. * using the given options
  421. * \param options the option mask based on VLCMediaParsingOptions
  422. * \see VLCMediaParsingOptions
  423. * \return an int. 0 on success, -1 in case of error
  424. * \note listen to the "parsed" key value or the mediaDidFinishParsing:
  425. * delegate method to be notified about parsing results. Those triggers
  426. * will _NOT_ be raised if parsing fails and this method returns an error.
  427. */
  428. - (int)parseWithOptions:(VLCMediaParsingOptions)options;
  429. /**
  430. * triggers an asynchronous parse of the media item
  431. * using the given options
  432. * \param options the option mask based on VLCMediaParsingOptions
  433. * \param timeoutValue a time-out value in milliseconds (-1 for default, 0 for infinite)
  434. * \see VLCMediaParsingOptions
  435. * \return an int. 0 on success, -1 in case of error
  436. * \note listen to the "parsed" key value or the mediaDidFinishParsing:
  437. * delegate method to be notified about parsing results. Those triggers
  438. * will _NOT_ be raised if parsing fails and this method returns an error.
  439. */
  440. - (int)parseWithOptions:(VLCMediaParsingOptions)options timeout:(int)timeoutValue;
  441. /**
  442. * Add options to the media, that will be used to determine how
  443. * VLCMediaPlayer will read the media. This allow to use VLC advanced
  444. * reading/streaming options in a per-media basis
  445. *
  446. * The options are detailed in vlc --long-help, for instance "--sout-all"
  447. * And on the web: http://wiki.videolan.org/VLC_command-line_help
  448. */
  449. - (void) addOptions:(NSDictionary*) options;
  450. /**
  451. * Getter for statistics information
  452. * Returns a NSDictionary with NSNumbers for values.
  453. *
  454. */
  455. @property (NS_NONATOMIC_IOSONLY, readonly, copy) NSDictionary *stats;
  456. #pragma mark - individual stats
  457. /**
  458. * returns the number of bytes read by the current input module
  459. * \return a NSInteger with the raw number of bytes
  460. */
  461. @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfReadBytesOnInput;
  462. /**
  463. * returns the current input bitrate. may be 0 if the buffer is full
  464. * \return a float of the current input bitrate
  465. */
  466. @property (NS_NONATOMIC_IOSONLY, readonly) float inputBitrate;
  467. /**
  468. * returns the number of bytes read by the current demux module
  469. * \return a NSInteger with the raw number of bytes
  470. */
  471. @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfReadBytesOnDemux;
  472. /**
  473. * returns the current demux bitrate. may be 0 if the buffer is empty
  474. * \return a float of the current demux bitrate
  475. */
  476. @property (NS_NONATOMIC_IOSONLY, readonly) float demuxBitrate;
  477. /**
  478. * returns the total number of decoded video blocks in the current media session
  479. * \return a NSInteger with the total number of decoded blocks
  480. */
  481. @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfDecodedVideoBlocks;
  482. /**
  483. * returns the total number of decoded audio blocks in the current media session
  484. * \return a NSInteger with the total number of decoded blocks
  485. */
  486. @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfDecodedAudioBlocks;
  487. /**
  488. * returns the total number of displayed pictures during the current media session
  489. * \return a NSInteger with the total number of displayed pictures
  490. */
  491. @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfDisplayedPictures;
  492. /**
  493. * returns the total number of pictures lost during the current media session
  494. * \return a NSInteger with the total number of lost pictures
  495. */
  496. @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfLostPictures;
  497. /**
  498. * returns the total number of played audio buffers during the current media session
  499. * \return a NSInteger with the total number of played audio buffers
  500. */
  501. @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfPlayedAudioBuffers;
  502. /**
  503. * returns the total number of audio buffers lost during the current media session
  504. * \return a NSInteger with the total number of displayed pictures
  505. */
  506. @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfLostAudioBuffers;
  507. /**
  508. * returns the total number of packets sent during the current media session
  509. * \return a NSInteger with the total number of sent packets
  510. */
  511. @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfSentPackets;
  512. /**
  513. * returns the total number of raw bytes sent during the current media session
  514. * \return a NSInteger with the total number of sent bytes
  515. */
  516. @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfSentBytes;
  517. /**
  518. * returns the current bitrate of sent bytes
  519. * \return a float of the current bitrate of sent bits
  520. */
  521. @property (NS_NONATOMIC_IOSONLY, readonly) float streamOutputBitrate;
  522. /**
  523. * returns the total number of corrupted data packets during current sout session
  524. * \note value is 0 on non-stream-output operations
  525. * \return a NSInteger with the total number of corrupted data packets
  526. */
  527. @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfCorruptedDataPackets;
  528. /**
  529. * returns the total number of discontinuties during current sout session
  530. * \note value is 0 on non-stream-output operations
  531. * \return a NSInteger with the total number of discontinuties
  532. */
  533. @property (NS_NONATOMIC_IOSONLY, readonly) NSInteger numberOfDiscontinuties;
  534. @end