GCKMediaInformation.h
1 // Copyright 2013 Google Inc.
2 
3 #import <GoogleCast/GCKAdBreakClipInfo.h>
4 #import <GoogleCast/GCKAdBreakInfo.h>
5 #import <GoogleCast/GCKDefines.h>
6 
7 #import <Foundation/Foundation.h>
8 
15 @class GCKMediaMetadata;
17 @class GCKMediaTrack;
18 
19 GCK_ASSUME_NONNULL_BEGIN
20 
25 typedef NS_ENUM(NSInteger, GCKMediaStreamType) {
27  GCKMediaStreamTypeNone = 0,
29  GCKMediaStreamTypeBuffered = 1,
31  GCKMediaStreamTypeLive = 2,
33  GCKMediaStreamTypeUnknown = 99,
34 };
35 
39 GCK_EXPORT
40 @interface GCKMediaInformation : NSObject <NSCopying, NSSecureCoding>
41 
45 @property(nonatomic, copy, readonly) NSString *contentID;
46 
50 @property(nonatomic, assign, readonly) GCKMediaStreamType streamType;
51 
55 @property(nonatomic, copy, readonly) NSString *contentType;
56 
60 @property(nonatomic, strong, readonly, GCK_NULLABLE) GCKMediaMetadata *metadata;
61 
65 @property(nonatomic, copy, readonly, GCK_NULLABLE) NSArray<GCKAdBreakInfo *> *adBreaks;
66 
72 @property(nonatomic, copy, readonly, GCK_NULLABLE) NSArray<GCKAdBreakClipInfo *> *adBreakClips;
73 
77 @property(nonatomic, assign, readonly) NSTimeInterval streamDuration;
78 
82 @property(nonatomic, copy, readonly, GCK_NULLABLE) NSArray<GCKMediaTrack *> *mediaTracks;
83 
87 @property(nonatomic, copy, readonly, GCK_NULLABLE) GCKMediaTextTrackStyle *textTrackStyle;
88 
94 @property(nonatomic, copy, readonly, GCK_NULLABLE) NSString *entity;
95 
99 @property(nonatomic, strong, readonly, GCK_NULLABLE) id customData;
100 
119 - (instancetype)initWithContentID:(NSString *)contentID
120  streamType:(GCKMediaStreamType)streamType
121  contentType:(NSString *)contentType
122  metadata:(GCKMediaMetadata *GCK_NULLABLE_TYPE)metadata
123  adBreaks:(NSArray<GCKAdBreakInfo *> *GCK_NULLABLE_TYPE)adBreaks
124  adBreakClips:(NSArray<GCKAdBreakClipInfo *> *GCK_NULLABLE_TYPE)adBreakClips
125  streamDuration:(NSTimeInterval)streamDuration
126  mediaTracks:(NSArray<GCKMediaTrack *> *GCK_NULLABLE_TYPE)mediaTracks
127  textTrackStyle:(GCKMediaTextTrackStyle *GCK_NULLABLE_TYPE)textTrackStyle
128  customData:(id GCK_NULLABLE_TYPE)customData;
129 
146 - (instancetype)initWithContentID:(NSString *)contentID
147  streamType:(GCKMediaStreamType)streamType
148  contentType:(NSString *)contentType
149  metadata:(GCKMediaMetadata *GCK_NULLABLE_TYPE)metadata
150  streamDuration:(NSTimeInterval)streamDuration
151  mediaTracks:(NSArray<GCKMediaTrack *> *GCK_NULLABLE_TYPE)mediaTracks
152  textTrackStyle:(GCKMediaTextTrackStyle *GCK_NULLABLE_TYPE)textTrackStyle
153  customData:(id GCK_NULLABLE_TYPE)customData
154  GCK_DEPRECATED(
155  "Use "
156  "initWithContentID:streamType:contentType:metadata:adBreaks:adBreakClips:streamDuration:"
157  "mediaTracks:textTrackStyle:entity:customData: for ads and entity support.");
158 
166 - (GCKMediaTrack *GCK_NULLABLE_TYPE)mediaTrackWithID:(NSInteger)trackID;
167 
168 @end
169 
196 GCK_EXPORT
197 @interface GCKMediaInformationBuilder : NSObject
198 
202 @property(nonatomic, copy, readwrite) NSString *contentID;
203 
207 @property(nonatomic, assign, readwrite) GCKMediaStreamType streamType;
208 
212 @property(nonatomic, copy, readwrite) NSString *contentType;
213 
217 @property(nonatomic, strong, readwrite, GCK_NULLABLE) GCKMediaMetadata *metadata;
218 
222 @property(nonatomic, copy, readwrite, GCK_NULLABLE) NSArray<GCKAdBreakInfo *> *adBreaks;
223 
227 @property(nonatomic, copy, readwrite, GCK_NULLABLE) NSArray<GCKAdBreakClipInfo *> *adBreakClips;
228 
233 @property(nonatomic, assign, readwrite) NSTimeInterval streamDuration;
234 
238 @property(nonatomic, copy, readwrite, GCK_NULLABLE) NSArray<GCKMediaTrack *> *mediaTracks;
239 
243 @property(nonatomic, copy, readwrite, GCK_NULLABLE) GCKMediaTextTrackStyle *textTrackStyle;
244 
248 @property(nonatomic, copy, readwrite, GCK_NULLABLE) NSString *entity;
249 
253 @property(nonatomic, strong, readwrite, GCK_NULLABLE) id customData;
254 
259 - (instancetype)initWithContentID:(NSString *)contentID;
260 
265 - (instancetype)initWithContentID:(NSString *)contentID
266  entity:(NSString *)entity;
267 
272 - (instancetype)initWithEntity:(NSString *)entity;
273 
280 - (instancetype)initWithMediaInformation:(GCKMediaInformation *)mediaInfo;
281 
287 - (GCKMediaInformation *)build;
288 
289 @end
290 
291 GCK_ASSUME_NONNULL_END
id customData
The custom data, if any.
Definition: GCKMediaInformation.h:99
A builder object for constructing new or derived GCKMediaInformation instances.
Definition: GCKMediaInformation.h:197
A container for media metadata.
Definition: GCKMediaMetadata.h:369
GCKMediaMetadata * metadata
The media item metadata.
Definition: GCKMediaInformation.h:60
A class representing a style for a text media track.
Definition: GCKMediaTextTrackStyle.h:92
A class representing an ad break.
Definition: GCKAdBreakInfo.h:16
GCKMediaTextTrackStyle * textTrackStyle
The text track style for this stream.
Definition: GCKMediaInformation.h:87
NSString * entity
The deep link for the media as used by Google Assistant, if any.
Definition: GCKMediaInformation.h:94
NSString * contentType
The content (MIME) type.
Definition: GCKMediaInformation.h:55
A class representing a media track.
Definition: GCKMediaTrack.h:52
A class representing an ad break clip.
Definition: GCKAdBreakClipInfo.h:49
NSString * contentID
The content ID for this stream.
Definition: GCKMediaInformation.h:45
NSArray< GCKAdBreakClipInfo * > * adBreakClips
The list of ad break clips in this content.
Definition: GCKMediaInformation.h:72
NSArray< GCKAdBreakInfo * > * adBreaks
The list of ad breaks in this content.
Definition: GCKMediaInformation.h:65
NSTimeInterval streamDuration
The length of the stream, in seconds, or INFINITY if it is a live stream.
Definition: GCKMediaInformation.h:77
NSArray< GCKMediaTrack * > * mediaTracks
The media tracks for this stream.
Definition: GCKMediaInformation.h:82
A class that aggregates information about a media item.
Definition: GCKMediaInformation.h:40
GCKMediaStreamType streamType
The stream type.
Definition: GCKMediaInformation.h:50