MediaStatus handling pigeon

This commit is contained in:
gianlucaparadise 2021-12-24 11:02:21 +01:00
parent 3ae88ceb8a
commit 1b4e5ac33b
5 changed files with 406 additions and 23 deletions

View file

@ -73,6 +73,20 @@ public class PlatformBridgeApis {
} }
} }
public enum PlayerState {
unknown(0),
idle(1),
playing(2),
paused(3),
buffering(4),
loading(5);
private int index;
private PlayerState(final int index) {
this.index = index;
}
}
/** Generated class from Pigeon that represents data sent in messages. */ /** Generated class from Pigeon that represents data sent in messages. */
public static class MediaLoadRequestData { public static class MediaLoadRequestData {
private Boolean shouldAutoplay; private Boolean shouldAutoplay;
@ -266,6 +280,79 @@ public class PlatformBridgeApis {
} }
} }
/** Generated class from Pigeon that represents data sent in messages. */
public static class MediaStatus {
private PlayerState playerState;
public PlayerState getPlayerState() { return playerState; }
public void setPlayerState(PlayerState setterArg) { this.playerState = setterArg; }
private Boolean isPlayingAd;
public Boolean getIsPlayingAd() { return isPlayingAd; }
public void setIsPlayingAd(Boolean setterArg) { this.isPlayingAd = setterArg; }
private MediaInfo mediaInfo;
public MediaInfo getMediaInfo() { return mediaInfo; }
public void setMediaInfo(MediaInfo setterArg) { this.mediaInfo = setterArg; }
private AdBreakStatus adBreakStatus;
public AdBreakStatus getAdBreakStatus() { return adBreakStatus; }
public void setAdBreakStatus(AdBreakStatus setterArg) { this.adBreakStatus = setterArg; }
Map<String, Object> toMap() {
Map<String, Object> toMapResult = new HashMap<>();
toMapResult.put("playerState", playerState.index);
toMapResult.put("isPlayingAd", isPlayingAd);
toMapResult.put("mediaInfo", (mediaInfo == null) ? null : mediaInfo.toMap());
toMapResult.put("adBreakStatus", (adBreakStatus == null) ? null : adBreakStatus.toMap());
return toMapResult;
}
static MediaStatus fromMap(Map<String, Object> map) {
MediaStatus fromMapResult = new MediaStatus();
Object playerState = map.get("playerState");
fromMapResult.playerState = PlayerState.values()[(int)playerState];
Object isPlayingAd = map.get("isPlayingAd");
fromMapResult.isPlayingAd = (Boolean)isPlayingAd;
Object mediaInfo = map.get("mediaInfo");
fromMapResult.mediaInfo = MediaInfo.fromMap((Map)mediaInfo);
Object adBreakStatus = map.get("adBreakStatus");
fromMapResult.adBreakStatus = AdBreakStatus.fromMap((Map)adBreakStatus);
return fromMapResult;
}
}
/** Generated class from Pigeon that represents data sent in messages. */
public static class AdBreakStatus {
private String adBreakId;
public String getAdBreakId() { return adBreakId; }
public void setAdBreakId(String setterArg) { this.adBreakId = setterArg; }
private String adBreakClipId;
public String getAdBreakClipId() { return adBreakClipId; }
public void setAdBreakClipId(String setterArg) { this.adBreakClipId = setterArg; }
private Long whenSkippableMs;
public Long getWhenSkippableMs() { return whenSkippableMs; }
public void setWhenSkippableMs(Long setterArg) { this.whenSkippableMs = setterArg; }
Map<String, Object> toMap() {
Map<String, Object> toMapResult = new HashMap<>();
toMapResult.put("adBreakId", adBreakId);
toMapResult.put("adBreakClipId", adBreakClipId);
toMapResult.put("whenSkippableMs", whenSkippableMs);
return toMapResult;
}
static AdBreakStatus fromMap(Map<String, Object> map) {
AdBreakStatus fromMapResult = new AdBreakStatus();
Object adBreakId = map.get("adBreakId");
fromMapResult.adBreakId = (String)adBreakId;
Object adBreakClipId = map.get("adBreakClipId");
fromMapResult.adBreakClipId = (String)adBreakClipId;
Object whenSkippableMs = map.get("whenSkippableMs");
fromMapResult.whenSkippableMs = (whenSkippableMs == null) ? null : ((whenSkippableMs instanceof Integer) ? (Integer)whenSkippableMs : (Long)whenSkippableMs);
return fromMapResult;
}
}
/** Generated class from Pigeon that represents data sent in messages. */ /** Generated class from Pigeon that represents data sent in messages. */
public static class CastDevice { public static class CastDevice {
private String deviceId; private String deviceId;
@ -626,8 +713,26 @@ public class PlatformBridgeApis {
protected Object readValueOfType(byte type, ByteBuffer buffer) { protected Object readValueOfType(byte type, ByteBuffer buffer) {
switch (type) { switch (type) {
case (byte)128: case (byte)128:
return AdBreakStatus.fromMap((Map<String, Object>) readValue(buffer));
case (byte)129:
return CastMessage.fromMap((Map<String, Object>) readValue(buffer)); return CastMessage.fromMap((Map<String, Object>) readValue(buffer));
case (byte)130:
return MediaInfo.fromMap((Map<String, Object>) readValue(buffer));
case (byte)131:
return MediaMetadata.fromMap((Map<String, Object>) readValue(buffer));
case (byte)132:
return MediaStatus.fromMap((Map<String, Object>) readValue(buffer));
case (byte)133:
return MediaTrack.fromMap((Map<String, Object>) readValue(buffer));
case (byte)134:
return WebImage.fromMap((Map<String, Object>) readValue(buffer));
default: default:
return super.readValueOfType(type, buffer); return super.readValueOfType(type, buffer);
@ -635,10 +740,34 @@ public class PlatformBridgeApis {
} }
@Override @Override
protected void writeValue(ByteArrayOutputStream stream, Object value) { protected void writeValue(ByteArrayOutputStream stream, Object value) {
if (value instanceof CastMessage) { if (value instanceof AdBreakStatus) {
stream.write(128); stream.write(128);
writeValue(stream, ((AdBreakStatus) value).toMap());
} else
if (value instanceof CastMessage) {
stream.write(129);
writeValue(stream, ((CastMessage) value).toMap()); writeValue(stream, ((CastMessage) value).toMap());
} else } else
if (value instanceof MediaInfo) {
stream.write(130);
writeValue(stream, ((MediaInfo) value).toMap());
} else
if (value instanceof MediaMetadata) {
stream.write(131);
writeValue(stream, ((MediaMetadata) value).toMap());
} else
if (value instanceof MediaStatus) {
stream.write(132);
writeValue(stream, ((MediaStatus) value).toMap());
} else
if (value instanceof MediaTrack) {
stream.write(133);
writeValue(stream, ((MediaTrack) value).toMap());
} else
if (value instanceof WebImage) {
stream.write(134);
writeValue(stream, ((WebImage) value).toMap());
} else
{ {
super.writeValue(stream, value); super.writeValue(stream, value);
} }
@ -744,10 +873,10 @@ public class PlatformBridgeApis {
callback.reply(null); callback.reply(null);
}); });
} }
public void onStatusUpdated(Long playerStateRawArg, Reply<Void> callback) { public void onStatusUpdated(MediaStatus mediaStatusArg, Reply<Void> callback) {
BasicMessageChannel<Object> channel = BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CastFlutterApi.onStatusUpdated", getCodec()); new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CastFlutterApi.onStatusUpdated", getCodec());
channel.send(new ArrayList<Object>(Arrays.asList(playerStateRawArg)), channelReply -> { channel.send(new ArrayList<Object>(Arrays.asList(mediaStatusArg)), channelReply -> {
callback.reply(null); callback.reply(null);
}); });
} }
@ -779,10 +908,10 @@ public class PlatformBridgeApis {
callback.reply(null); callback.reply(null);
}); });
} }
public void onAdBreakStatusUpdated(Reply<Void> callback) { public void onAdBreakStatusUpdated(MediaStatus mediaStatusArg, Reply<Void> callback) {
BasicMessageChannel<Object> channel = BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CastFlutterApi.onAdBreakStatusUpdated", getCodec()); new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CastFlutterApi.onAdBreakStatusUpdated", getCodec());
channel.send(null, channelReply -> { channel.send(new ArrayList<Object>(Arrays.asList(mediaStatusArg)), channelReply -> {
callback.reply(null); callback.reply(null);
}); });
} }

View file

@ -42,11 +42,22 @@ typedef NS_ENUM(NSUInteger, TrackSubtype) {
TrackSubtypeMetadata = 6, TrackSubtypeMetadata = 6,
}; };
typedef NS_ENUM(NSUInteger, PlayerState) {
PlayerStateUnknown = 0,
PlayerStateIdle = 1,
PlayerStatePlaying = 2,
PlayerStatePaused = 3,
PlayerStateBuffering = 4,
PlayerStateLoading = 5,
};
@class MediaLoadRequestData; @class MediaLoadRequestData;
@class MediaInfo; @class MediaInfo;
@class MediaMetadata; @class MediaMetadata;
@class WebImage; @class WebImage;
@class MediaTrack; @class MediaTrack;
@class MediaStatus;
@class AdBreakStatus;
@class CastDevice; @class CastDevice;
@class CastMessage; @class CastMessage;
@ -84,6 +95,19 @@ typedef NS_ENUM(NSUInteger, TrackSubtype) {
@property(nonatomic, copy, nullable) NSString * language; @property(nonatomic, copy, nullable) NSString * language;
@end @end
@interface MediaStatus : NSObject
@property(nonatomic, assign) PlayerState playerState;
@property(nonatomic, strong, nullable) NSNumber * isPlayingAd;
@property(nonatomic, strong, nullable) MediaInfo * mediaInfo;
@property(nonatomic, strong, nullable) AdBreakStatus * adBreakStatus;
@end
@interface AdBreakStatus : NSObject
@property(nonatomic, copy, nullable) NSString * adBreakId;
@property(nonatomic, copy, nullable) NSString * adBreakClipId;
@property(nonatomic, strong, nullable) NSNumber * whenSkippableMs;
@end
@interface CastDevice : NSObject @interface CastDevice : NSObject
@property(nonatomic, copy, nullable) NSString * deviceId; @property(nonatomic, copy, nullable) NSString * deviceId;
@property(nonatomic, copy, nullable) NSString * friendlyName; @property(nonatomic, copy, nullable) NSString * friendlyName;
@ -130,12 +154,12 @@ NSObject<FlutterMessageCodec> *CastFlutterApiGetCodec(void);
- (void)onSessionResumedWithCompletion:(void(^)(NSError *_Nullable))completion; - (void)onSessionResumedWithCompletion:(void(^)(NSError *_Nullable))completion;
- (void)onSessionResumeFailedWithCompletion:(void(^)(NSError *_Nullable))completion; - (void)onSessionResumeFailedWithCompletion:(void(^)(NSError *_Nullable))completion;
- (void)onSessionSuspendedWithCompletion:(void(^)(NSError *_Nullable))completion; - (void)onSessionSuspendedWithCompletion:(void(^)(NSError *_Nullable))completion;
- (void)onStatusUpdatedPlayerStateRaw:(NSNumber *)playerStateRaw completion:(void(^)(NSError *_Nullable))completion; - (void)onStatusUpdatedMediaStatus:(MediaStatus *)mediaStatus completion:(void(^)(NSError *_Nullable))completion;
- (void)onMetadataUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion; - (void)onMetadataUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion;
- (void)onQueueStatusUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion; - (void)onQueueStatusUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion;
- (void)onPreloadStatusUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion; - (void)onPreloadStatusUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion;
- (void)onSendingRemoteMediaRequestWithCompletion:(void(^)(NSError *_Nullable))completion; - (void)onSendingRemoteMediaRequestWithCompletion:(void(^)(NSError *_Nullable))completion;
- (void)onAdBreakStatusUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion; - (void)onAdBreakStatusUpdatedMediaStatus:(MediaStatus *)mediaStatus completion:(void(^)(NSError *_Nullable))completion;
- (void)onMediaErrorWithCompletion:(void(^)(NSError *_Nullable))completion; - (void)onMediaErrorWithCompletion:(void(^)(NSError *_Nullable))completion;
- (void)onProgressUpdatedProgressMs:(NSNumber *)progressMs durationMs:(NSNumber *)durationMs completion:(void(^)(NSError *_Nullable))completion; - (void)onProgressUpdatedProgressMs:(NSNumber *)progressMs durationMs:(NSNumber *)durationMs completion:(void(^)(NSError *_Nullable))completion;
- (void)onAdBreakClipProgressUpdatedAdBreakId:(NSString *)adBreakId adBreakClipId:(NSString *)adBreakClipId progressMs:(NSNumber *)progressMs durationMs:(NSNumber *)durationMs whenSkippableMs:(NSNumber *)whenSkippableMs completion:(void(^)(NSError *_Nullable))completion; - (void)onAdBreakClipProgressUpdatedAdBreakId:(NSString *)adBreakId adBreakClipId:(NSString *)adBreakClipId progressMs:(NSNumber *)progressMs durationMs:(NSNumber *)durationMs whenSkippableMs:(NSNumber *)whenSkippableMs completion:(void(^)(NSError *_Nullable))completion;

View file

@ -42,6 +42,14 @@ static NSDictionary<NSString *, id> *wrapResult(id result, FlutterError *error)
+ (MediaTrack *)fromMap:(NSDictionary *)dict; + (MediaTrack *)fromMap:(NSDictionary *)dict;
- (NSDictionary *)toMap; - (NSDictionary *)toMap;
@end @end
@interface MediaStatus ()
+ (MediaStatus *)fromMap:(NSDictionary *)dict;
- (NSDictionary *)toMap;
@end
@interface AdBreakStatus ()
+ (AdBreakStatus *)fromMap:(NSDictionary *)dict;
- (NSDictionary *)toMap;
@end
@interface CastDevice () @interface CastDevice ()
+ (CastDevice *)fromMap:(NSDictionary *)dict; + (CastDevice *)fromMap:(NSDictionary *)dict;
- (NSDictionary *)toMap; - (NSDictionary *)toMap;
@ -165,6 +173,51 @@ static NSDictionary<NSString *, id> *wrapResult(id result, FlutterError *error)
} }
@end @end
@implementation MediaStatus
+ (MediaStatus *)fromMap:(NSDictionary *)dict {
MediaStatus *result = [[MediaStatus alloc] init];
result.playerState = [dict[@"playerState"] integerValue];
result.isPlayingAd = dict[@"isPlayingAd"];
if ((NSNull *)result.isPlayingAd == [NSNull null]) {
result.isPlayingAd = nil;
}
result.mediaInfo = [MediaInfo fromMap:dict[@"mediaInfo"]];
if ((NSNull *)result.mediaInfo == [NSNull null]) {
result.mediaInfo = nil;
}
result.adBreakStatus = [AdBreakStatus fromMap:dict[@"adBreakStatus"]];
if ((NSNull *)result.adBreakStatus == [NSNull null]) {
result.adBreakStatus = nil;
}
return result;
}
- (NSDictionary *)toMap {
return [NSDictionary dictionaryWithObjectsAndKeys:@(self.playerState), @"playerState", (self.isPlayingAd ? self.isPlayingAd : [NSNull null]), @"isPlayingAd", (self.mediaInfo ? [self.mediaInfo toMap] : [NSNull null]), @"mediaInfo", (self.adBreakStatus ? [self.adBreakStatus toMap] : [NSNull null]), @"adBreakStatus", nil];
}
@end
@implementation AdBreakStatus
+ (AdBreakStatus *)fromMap:(NSDictionary *)dict {
AdBreakStatus *result = [[AdBreakStatus alloc] init];
result.adBreakId = dict[@"adBreakId"];
if ((NSNull *)result.adBreakId == [NSNull null]) {
result.adBreakId = nil;
}
result.adBreakClipId = dict[@"adBreakClipId"];
if ((NSNull *)result.adBreakClipId == [NSNull null]) {
result.adBreakClipId = nil;
}
result.whenSkippableMs = dict[@"whenSkippableMs"];
if ((NSNull *)result.whenSkippableMs == [NSNull null]) {
result.whenSkippableMs = nil;
}
return result;
}
- (NSDictionary *)toMap {
return [NSDictionary dictionaryWithObjectsAndKeys:(self.adBreakId ? self.adBreakId : [NSNull null]), @"adBreakId", (self.adBreakClipId ? self.adBreakClipId : [NSNull null]), @"adBreakClipId", (self.whenSkippableMs ? self.whenSkippableMs : [NSNull null]), @"whenSkippableMs", nil];
}
@end
@implementation CastDevice @implementation CastDevice
+ (CastDevice *)fromMap:(NSDictionary *)dict { + (CastDevice *)fromMap:(NSDictionary *)dict {
CastDevice *result = [[CastDevice alloc] init]; CastDevice *result = [[CastDevice alloc] init];
@ -495,8 +548,26 @@ void CastHostApiSetup(id<FlutterBinaryMessenger> binaryMessenger, NSObject<CastH
{ {
switch (type) { switch (type) {
case 128: case 128:
return [AdBreakStatus fromMap:[self readValue]];
case 129:
return [CastMessage fromMap:[self readValue]]; return [CastMessage fromMap:[self readValue]];
case 130:
return [MediaInfo fromMap:[self readValue]];
case 131:
return [MediaMetadata fromMap:[self readValue]];
case 132:
return [MediaStatus fromMap:[self readValue]];
case 133:
return [MediaTrack fromMap:[self readValue]];
case 134:
return [WebImage fromMap:[self readValue]];
default: default:
return [super readValueOfType:type]; return [super readValueOfType:type];
@ -509,10 +580,34 @@ void CastHostApiSetup(id<FlutterBinaryMessenger> binaryMessenger, NSObject<CastH
@implementation CastFlutterApiCodecWriter @implementation CastFlutterApiCodecWriter
- (void)writeValue:(id)value - (void)writeValue:(id)value
{ {
if ([value isKindOfClass:[CastMessage class]]) { if ([value isKindOfClass:[AdBreakStatus class]]) {
[self writeByte:128]; [self writeByte:128];
[self writeValue:[value toMap]]; [self writeValue:[value toMap]];
} else } else
if ([value isKindOfClass:[CastMessage class]]) {
[self writeByte:129];
[self writeValue:[value toMap]];
} else
if ([value isKindOfClass:[MediaInfo class]]) {
[self writeByte:130];
[self writeValue:[value toMap]];
} else
if ([value isKindOfClass:[MediaMetadata class]]) {
[self writeByte:131];
[self writeValue:[value toMap]];
} else
if ([value isKindOfClass:[MediaStatus class]]) {
[self writeByte:132];
[self writeValue:[value toMap]];
} else
if ([value isKindOfClass:[MediaTrack class]]) {
[self writeByte:133];
[self writeValue:[value toMap]];
} else
if ([value isKindOfClass:[WebImage class]]) {
[self writeByte:134];
[self writeValue:[value toMap]];
} else
{ {
[super writeValue:value]; [super writeValue:value];
} }
@ -675,13 +770,13 @@ NSObject<FlutterMessageCodec> *CastFlutterApiGetCodec() {
completion(nil); completion(nil);
}]; }];
} }
- (void)onStatusUpdatedPlayerStateRaw:(NSNumber *)arg_playerStateRaw completion:(void(^)(NSError *_Nullable))completion { - (void)onStatusUpdatedMediaStatus:(MediaStatus *)arg_mediaStatus completion:(void(^)(NSError *_Nullable))completion {
FlutterBasicMessageChannel *channel = FlutterBasicMessageChannel *channel =
[FlutterBasicMessageChannel [FlutterBasicMessageChannel
messageChannelWithName:@"dev.flutter.pigeon.CastFlutterApi.onStatusUpdated" messageChannelWithName:@"dev.flutter.pigeon.CastFlutterApi.onStatusUpdated"
binaryMessenger:self.binaryMessenger binaryMessenger:self.binaryMessenger
codec:CastFlutterApiGetCodec()]; codec:CastFlutterApiGetCodec()];
[channel sendMessage:@[arg_playerStateRaw] reply:^(id reply) { [channel sendMessage:@[arg_mediaStatus] reply:^(id reply) {
completion(nil); completion(nil);
}]; }];
} }
@ -725,13 +820,13 @@ NSObject<FlutterMessageCodec> *CastFlutterApiGetCodec() {
completion(nil); completion(nil);
}]; }];
} }
- (void)onAdBreakStatusUpdatedWithCompletion:(void(^)(NSError *_Nullable))completion { - (void)onAdBreakStatusUpdatedMediaStatus:(MediaStatus *)arg_mediaStatus completion:(void(^)(NSError *_Nullable))completion {
FlutterBasicMessageChannel *channel = FlutterBasicMessageChannel *channel =
[FlutterBasicMessageChannel [FlutterBasicMessageChannel
messageChannelWithName:@"dev.flutter.pigeon.CastFlutterApi.onAdBreakStatusUpdated" messageChannelWithName:@"dev.flutter.pigeon.CastFlutterApi.onAdBreakStatusUpdated"
binaryMessenger:self.binaryMessenger binaryMessenger:self.binaryMessenger
codec:CastFlutterApiGetCodec()]; codec:CastFlutterApiGetCodec()];
[channel sendMessage:nil reply:^(id reply) { [channel sendMessage:@[arg_mediaStatus] reply:^(id reply) {
completion(nil); completion(nil);
}]; }];
} }

View file

@ -42,6 +42,15 @@ enum TrackSubtype {
metadata, metadata,
} }
enum PlayerState {
unknown,
idle,
playing,
paused,
buffering,
loading,
}
class MediaLoadRequestData { class MediaLoadRequestData {
bool? shouldAutoplay; bool? shouldAutoplay;
int? currentTime; int? currentTime;
@ -176,6 +185,59 @@ class MediaTrack {
} }
} }
class MediaStatus {
PlayerState? playerState;
bool? isPlayingAd;
MediaInfo? mediaInfo;
AdBreakStatus? adBreakStatus;
Object encode() {
final Map<Object?, Object?> pigeonMap = <Object?, Object?>{};
pigeonMap['playerState'] = playerState == null ? null : playerState!.index;
pigeonMap['isPlayingAd'] = isPlayingAd;
pigeonMap['mediaInfo'] = mediaInfo == null ? null : mediaInfo!.encode();
pigeonMap['adBreakStatus'] = adBreakStatus == null ? null : adBreakStatus!.encode();
return pigeonMap;
}
static MediaStatus decode(Object message) {
final Map<Object?, Object?> pigeonMap = message as Map<Object?, Object?>;
return MediaStatus()
..playerState = pigeonMap['playerState'] != null
? PlayerState.values[pigeonMap['playerState']! as int]
: null
..isPlayingAd = pigeonMap['isPlayingAd'] as bool?
..mediaInfo = pigeonMap['mediaInfo'] != null
? MediaInfo.decode(pigeonMap['mediaInfo']!)
: null
..adBreakStatus = pigeonMap['adBreakStatus'] != null
? AdBreakStatus.decode(pigeonMap['adBreakStatus']!)
: null;
}
}
class AdBreakStatus {
String? adBreakId;
String? adBreakClipId;
int? whenSkippableMs;
Object encode() {
final Map<Object?, Object?> pigeonMap = <Object?, Object?>{};
pigeonMap['adBreakId'] = adBreakId;
pigeonMap['adBreakClipId'] = adBreakClipId;
pigeonMap['whenSkippableMs'] = whenSkippableMs;
return pigeonMap;
}
static AdBreakStatus decode(Object message) {
final Map<Object?, Object?> pigeonMap = message as Map<Object?, Object?>;
return AdBreakStatus()
..adBreakId = pigeonMap['adBreakId'] as String?
..adBreakClipId = pigeonMap['adBreakClipId'] as String?
..whenSkippableMs = pigeonMap['whenSkippableMs'] as int?;
}
}
class CastDevice { class CastDevice {
String? deviceId; String? deviceId;
String? friendlyName; String? friendlyName;
@ -529,10 +591,34 @@ class _CastFlutterApiCodec extends StandardMessageCodec {
const _CastFlutterApiCodec(); const _CastFlutterApiCodec();
@override @override
void writeValue(WriteBuffer buffer, Object? value) { void writeValue(WriteBuffer buffer, Object? value) {
if (value is CastMessage) { if (value is AdBreakStatus) {
buffer.putUint8(128); buffer.putUint8(128);
writeValue(buffer, value.encode()); writeValue(buffer, value.encode());
} else } else
if (value is CastMessage) {
buffer.putUint8(129);
writeValue(buffer, value.encode());
} else
if (value is MediaInfo) {
buffer.putUint8(130);
writeValue(buffer, value.encode());
} else
if (value is MediaMetadata) {
buffer.putUint8(131);
writeValue(buffer, value.encode());
} else
if (value is MediaStatus) {
buffer.putUint8(132);
writeValue(buffer, value.encode());
} else
if (value is MediaTrack) {
buffer.putUint8(133);
writeValue(buffer, value.encode());
} else
if (value is WebImage) {
buffer.putUint8(134);
writeValue(buffer, value.encode());
} else
{ {
super.writeValue(buffer, value); super.writeValue(buffer, value);
} }
@ -541,8 +627,26 @@ class _CastFlutterApiCodec extends StandardMessageCodec {
Object? readValueOfType(int type, ReadBuffer buffer) { Object? readValueOfType(int type, ReadBuffer buffer) {
switch (type) { switch (type) {
case 128: case 128:
return AdBreakStatus.decode(readValue(buffer)!);
case 129:
return CastMessage.decode(readValue(buffer)!); return CastMessage.decode(readValue(buffer)!);
case 130:
return MediaInfo.decode(readValue(buffer)!);
case 131:
return MediaMetadata.decode(readValue(buffer)!);
case 132:
return MediaStatus.decode(readValue(buffer)!);
case 133:
return MediaTrack.decode(readValue(buffer)!);
case 134:
return WebImage.decode(readValue(buffer)!);
default: default:
return super.readValueOfType(type, buffer); return super.readValueOfType(type, buffer);
@ -564,12 +668,12 @@ abstract class CastFlutterApi {
void onSessionResumed(); void onSessionResumed();
void onSessionResumeFailed(); void onSessionResumeFailed();
void onSessionSuspended(); void onSessionSuspended();
void onStatusUpdated(int playerStateRaw); void onStatusUpdated(MediaStatus mediaStatus);
void onMetadataUpdated(); void onMetadataUpdated();
void onQueueStatusUpdated(); void onQueueStatusUpdated();
void onPreloadStatusUpdated(); void onPreloadStatusUpdated();
void onSendingRemoteMediaRequest(); void onSendingRemoteMediaRequest();
void onAdBreakStatusUpdated(); void onAdBreakStatusUpdated(MediaStatus mediaStatus);
void onMediaError(); void onMediaError();
void onProgressUpdated(int progressMs, int durationMs); void onProgressUpdated(int progressMs, int durationMs);
void onAdBreakClipProgressUpdated(String adBreakId, String adBreakClipId, int progressMs, int durationMs, int whenSkippableMs); void onAdBreakClipProgressUpdated(String adBreakId, String adBreakClipId, int progressMs, int durationMs, int whenSkippableMs);
@ -745,9 +849,9 @@ abstract class CastFlutterApi {
channel.setMessageHandler((Object? message) async { channel.setMessageHandler((Object? message) async {
assert(message != null, 'Argument for dev.flutter.pigeon.CastFlutterApi.onStatusUpdated was null.'); assert(message != null, 'Argument for dev.flutter.pigeon.CastFlutterApi.onStatusUpdated was null.');
final List<Object?> args = (message as List<Object?>?)!; final List<Object?> args = (message as List<Object?>?)!;
final int? arg_playerStateRaw = args[0] as int?; final MediaStatus? arg_mediaStatus = args[0] as MediaStatus?;
assert(arg_playerStateRaw != null, 'Argument for dev.flutter.pigeon.CastFlutterApi.onStatusUpdated was null, expected non-null int.'); assert(arg_mediaStatus != null, 'Argument for dev.flutter.pigeon.CastFlutterApi.onStatusUpdated was null, expected non-null MediaStatus.');
api.onStatusUpdated(arg_playerStateRaw!); api.onStatusUpdated(arg_mediaStatus!);
return; return;
}); });
} }
@ -811,8 +915,11 @@ abstract class CastFlutterApi {
channel.setMessageHandler(null); channel.setMessageHandler(null);
} else { } else {
channel.setMessageHandler((Object? message) async { channel.setMessageHandler((Object? message) async {
// ignore message assert(message != null, 'Argument for dev.flutter.pigeon.CastFlutterApi.onAdBreakStatusUpdated was null.');
api.onAdBreakStatusUpdated(); final List<Object?> args = (message as List<Object?>?)!;
final MediaStatus? arg_mediaStatus = args[0] as MediaStatus?;
assert(arg_mediaStatus != null, 'Argument for dev.flutter.pigeon.CastFlutterApi.onAdBreakStatusUpdated was null, expected non-null MediaStatus.');
api.onAdBreakStatusUpdated(arg_mediaStatus!);
return; return;
}); });
} }

View file

@ -210,6 +210,35 @@ enum TrackSubtype {
metadata, metadata,
} }
/// State of the remote media player
enum PlayerState {
/// Constant indicating unknown player state.
unknown, // 0
/// Constant indicating that the media player is idle.
idle, // 1
/// Constant indicating that the media player is playing.
playing, // 2
/// Constant indicating that the media player is paused.
paused, // 3
/// Constant indicating that the media player is buffering.
buffering, // 4
/// Constant indicating that the media player is loading.
loading, // 5
}
class MediaStatus {
PlayerState? playerState;
bool? isPlayingAd;
MediaInfo? mediaInfo;
AdBreakStatus? adBreakStatus;
}
class AdBreakStatus {
String? adBreakId;
String? adBreakClipId;
int? whenSkippableMs;
}
//#endregion //#endregion
class CastDevice { class CastDevice {
@ -261,13 +290,12 @@ abstract class CastFlutterApi {
//endregion //endregion
//region RemoteMediaClient callbacks //region RemoteMediaClient callbacks
// I can't use enum here because of: https://github.com/flutter/flutter/issues/87307 void onStatusUpdated(MediaStatus mediaStatus);
void onStatusUpdated(int playerStateRaw);
void onMetadataUpdated(); void onMetadataUpdated();
void onQueueStatusUpdated(); void onQueueStatusUpdated();
void onPreloadStatusUpdated(); void onPreloadStatusUpdated();
void onSendingRemoteMediaRequest(); void onSendingRemoteMediaRequest();
void onAdBreakStatusUpdated(); void onAdBreakStatusUpdated(MediaStatus mediaStatus);
void onMediaError(); void onMediaError();
void onProgressUpdated(int progressMs, int durationMs); void onProgressUpdated(int progressMs, int durationMs);