404 lines
10 KiB
Objective-C
Executable File
404 lines
10 KiB
Objective-C
Executable File
// Copyright 2013 Google Inc.
|
|
|
|
#import <GoogleCast/GCKAdBreakStatus.h>
|
|
#import <GoogleCast/GCKDefines.h>
|
|
#import <GoogleCast/GCKMediaCommon.h>
|
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
@class GCKMediaInformation;
|
|
@class GCKMediaQueueData;
|
|
@class GCKMediaQueueItem;
|
|
@class GCKMediaLiveSeekableRange;
|
|
@class GCKVideoInfo;
|
|
|
|
/**
|
|
* @file GCKMediaStatus.h
|
|
* GCKMediaPlayerState and GCKMediaPlayerIdleReason enums.
|
|
*/
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item can be paused.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandPause;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item supports seeking.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandSeek;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item's audio volume can be changed.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandSetVolume;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item's audio can be muted.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandToggleMute;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item supports skipping forward.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandSkipForward;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item supports skipping backward.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandSkipBackward;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item supports moving to the next item in the queue.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandQueueNext;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item supports moving to the previous item in the
|
|
* queue.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandQueuePrevious;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item supports shuffling.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
* @since 4.4.5
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandQueueShuffle;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item supports ad skipping.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
* @since 4.4.5
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandSkipAd;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item's queue supports indefinite repetition.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
* @since 4.4.5
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandQueueRepeatAll;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item supports indefinite repetition.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
* @since 4.4.5
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandQueueRepeatOne;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item and its queue support indefinite repetition.
|
|
* queued items.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
* @since 4.4.5
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandQueueRepeat;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item's tracks are editable.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
* @since 4.4.5
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandEditTracks;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item's playback rate is configurable.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
* @since 4.4.5
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandSetPlaybackRate;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item can be liked by a user.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
* @since 4.4.5
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandLike;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item can be disliked by a user.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
* @since 4.4.5
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandDislike;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item's creator can be followed by a user.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
* @since 4.4.5
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandFollow;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item's creator can be unfollowed by a user.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
* @since 4.4.5
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandUnfollow;
|
|
|
|
/**
|
|
* A flag (bitmask) indicating that a media item supports stream transfer.
|
|
*
|
|
* @memberof GCKMediaStatus
|
|
* @since 4.4.5
|
|
*/
|
|
GCK_EXTERN const NSInteger kGCKMediaCommandStreamTransfer;
|
|
|
|
/**
|
|
* @enum GCKMediaPlayerState
|
|
* Media player states.
|
|
*/
|
|
typedef NS_ENUM(NSInteger, GCKMediaPlayerState) {
|
|
/** Constant indicating unknown player state. */
|
|
GCKMediaPlayerStateUnknown = 0,
|
|
/** Constant indicating that the media player is idle. */
|
|
GCKMediaPlayerStateIdle = 1,
|
|
/** Constant indicating that the media player is playing. */
|
|
GCKMediaPlayerStatePlaying = 2,
|
|
/** Constant indicating that the media player is paused. */
|
|
GCKMediaPlayerStatePaused = 3,
|
|
/** Constant indicating that the media player is buffering. */
|
|
GCKMediaPlayerStateBuffering = 4,
|
|
/** Constant indicating that the media player is loading media. */
|
|
GCKMediaPlayerStateLoading = 5,
|
|
};
|
|
|
|
/**
|
|
* @enum GCKMediaPlayerIdleReason
|
|
* Media player idle reasons.
|
|
*/
|
|
typedef NS_ENUM(NSInteger, GCKMediaPlayerIdleReason) {
|
|
/** Constant indicating that the player currently has no idle reason. */
|
|
GCKMediaPlayerIdleReasonNone = 0,
|
|
|
|
/** Constant indicating that the player is idle because playback has finished. */
|
|
GCKMediaPlayerIdleReasonFinished = 1,
|
|
|
|
/**
|
|
* Constant indicating that the player is idle because playback has been cancelled in
|
|
* response to a STOP command.
|
|
*/
|
|
GCKMediaPlayerIdleReasonCancelled = 2,
|
|
|
|
/**
|
|
* Constant indicating that the player is idle because playback has been interrupted by
|
|
* a LOAD command.
|
|
*/
|
|
GCKMediaPlayerIdleReasonInterrupted = 3,
|
|
|
|
/** Constant indicating that the player is idle because a playback error has occurred. */
|
|
GCKMediaPlayerIdleReasonError = 4,
|
|
};
|
|
|
|
/**
|
|
* A class that holds status information about some media.
|
|
*/
|
|
GCK_EXPORT
|
|
@interface GCKMediaStatus : NSObject <NSCopying>
|
|
|
|
/**
|
|
* The current media session ID, if any; otherwise 0.
|
|
*/
|
|
@property(nonatomic, assign, readonly) NSInteger mediaSessionID;
|
|
|
|
/**
|
|
* The current player state.
|
|
*/
|
|
@property(nonatomic, assign, readonly) GCKMediaPlayerState playerState;
|
|
|
|
/**
|
|
* Indicates whether the receiver is currently playing an ad.
|
|
*
|
|
* @deprecated Use @ref adBreakStatus instead.
|
|
*/
|
|
@property(nonatomic, assign, readonly) BOOL playingAd;
|
|
|
|
/**
|
|
* The current idle reason. This value is only meaningful if the player state is
|
|
* GCKMediaPlayerStateIdle.
|
|
*/
|
|
@property(nonatomic, assign, readonly) GCKMediaPlayerIdleReason idleReason;
|
|
|
|
/**
|
|
* Gets the current stream playback rate. This will be negative if the stream is seeking
|
|
* backwards, 0 if the stream is paused, 1 if the stream is playing normally, and some other
|
|
* positive value if the stream is seeking forwards.
|
|
*/
|
|
@property(nonatomic, assign, readonly) float playbackRate;
|
|
|
|
/**
|
|
* The GCKMediaInformation for this item.
|
|
*/
|
|
@property(nonatomic, strong, readonly, nullable) GCKMediaInformation *mediaInformation;
|
|
|
|
/**
|
|
* The current stream position, as an NSTimeInterval from the start of the stream.
|
|
*/
|
|
@property(nonatomic, assign, readonly) NSTimeInterval streamPosition;
|
|
|
|
/**
|
|
* The stream's volume.
|
|
*/
|
|
@property(nonatomic, assign, readonly) float volume;
|
|
|
|
/**
|
|
* The stream's mute state.
|
|
*/
|
|
@property(nonatomic, assign, readonly) BOOL isMuted;
|
|
|
|
/**
|
|
* The current queue repeat mode.
|
|
*/
|
|
@property(nonatomic, assign, readonly) GCKMediaRepeatMode queueRepeatMode;
|
|
|
|
/**
|
|
* The ID of the current queue item, if any.
|
|
*/
|
|
@property(nonatomic, assign, readonly) NSUInteger currentItemID;
|
|
|
|
/**
|
|
* Whether there is a current item in the queue.
|
|
*/
|
|
@property(nonatomic, assign, readonly) BOOL queueHasCurrentItem;
|
|
|
|
/**
|
|
* The current queue item, if any.
|
|
*/
|
|
@property(nonatomic, assign, readonly, nullable) GCKMediaQueueItem *currentQueueItem;
|
|
|
|
/**
|
|
* Checks if there is an item after the currently playing item in the queue.
|
|
*/
|
|
@property(nonatomic, assign, readonly) BOOL queueHasNextItem;
|
|
|
|
/**
|
|
* The next queue item, if any.
|
|
*/
|
|
@property(nonatomic, assign, readonly, nullable) GCKMediaQueueItem *nextQueueItem;
|
|
|
|
/**
|
|
* Whether there is an item before the currently playing item in the queue.
|
|
*/
|
|
@property(nonatomic, assign, readonly) BOOL queueHasPreviousItem;
|
|
|
|
/**
|
|
* Whether there is an item being preloaded in the queue.
|
|
*/
|
|
@property(nonatomic, assign, readonly) BOOL queueHasLoadingItem;
|
|
|
|
/**
|
|
* The ID of the item that is currently preloaded, if any.
|
|
*/
|
|
@property(nonatomic, assign, readonly) NSUInteger preloadedItemID;
|
|
|
|
/**
|
|
* The ID of the item that is currently loading, if any.
|
|
*/
|
|
@property(nonatomic, assign, readonly) NSUInteger loadingItemID;
|
|
|
|
/**
|
|
* The list of active track IDs.
|
|
*/
|
|
@property(nonatomic, strong, readonly, nullable) NSArray<NSNumber *> *activeTrackIDs;
|
|
|
|
/**
|
|
* The video information, if any.
|
|
*
|
|
* @since 3.3
|
|
*/
|
|
@property(nonatomic, strong, readonly, nullable) GCKVideoInfo *videoInfo;
|
|
|
|
/**
|
|
* Any custom data that is associated with the media status.
|
|
*/
|
|
@property(nonatomic, strong, readonly, nullable) id customData;
|
|
|
|
/**
|
|
* The current ad playback status.
|
|
*
|
|
* @since 3.3
|
|
*/
|
|
@property(nonatomic, strong, readonly, nullable) GCKAdBreakStatus *adBreakStatus;
|
|
|
|
/**
|
|
* The seekable range of a stream.
|
|
*
|
|
* @since 4.4.1
|
|
*/
|
|
@property(nonatomic, readonly, nullable) GCKMediaLiveSeekableRange *liveSeekableRange;
|
|
|
|
/**
|
|
* The media queue's metadata.
|
|
*
|
|
* @since 4.4.1
|
|
*/
|
|
@property(nonatomic, readonly, nullable) GCKMediaQueueData *queueData;
|
|
|
|
/**
|
|
* Designated initializer.
|
|
*
|
|
* @param mediaSessionID The media session ID.
|
|
* @param mediaInformation The media information.
|
|
*/
|
|
- (instancetype)initWithSessionID:(NSInteger)mediaSessionID
|
|
mediaInformation:(nullable GCKMediaInformation *)mediaInformation;
|
|
|
|
/**
|
|
* Checks if the stream supports a given control command.
|
|
*/
|
|
- (BOOL)isMediaCommandSupported:(NSInteger)command;
|
|
|
|
/**
|
|
* Returns the number of items in the playback queue.
|
|
*/
|
|
@property(nonatomic, assign, readonly) NSUInteger queueItemCount;
|
|
|
|
/**
|
|
* Returns the item at the specified index in the playback queue.
|
|
*/
|
|
- (nullable GCKMediaQueueItem *)queueItemAtIndex:(NSUInteger)index;
|
|
|
|
/**
|
|
* Returns the item with the given item ID in the playback queue.
|
|
*/
|
|
- (nullable GCKMediaQueueItem *)queueItemWithItemID:(NSUInteger)itemID;
|
|
|
|
/**
|
|
* Returns the index of the item with the given item ID in the playback queue, or -1 if there is
|
|
* no such item in the queue.
|
|
*/
|
|
- (NSInteger)queueIndexForItemID:(NSUInteger)itemID;
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|