Skip to content

Commit a969563

Browse files
authored
[video_player_avplay] Add getActiveTrackInfo interface (#836)
1 parent 4e234e3 commit a969563

15 files changed

Lines changed: 1106 additions & 906 deletions

packages/video_player_avplay/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.5.18
2+
3+
* Add getActiveTrackInfo interface.
4+
15
## 0.5.17
26

37
* Update readme.

packages/video_player_avplay/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ To use this package, add `video_player_avplay` as a dependency in your `pubspec.
1212

1313
```yaml
1414
dependencies:
15-
video_player_avplay: ^0.5.17
15+
video_player_avplay: ^0.5.18
1616
```
1717
1818
Then you can import `video_player_avplay` in your Dart code:

packages/video_player_avplay/lib/src/messages.g.dart

Lines changed: 523 additions & 509 deletions
Large diffs are not rendered by default.

packages/video_player_avplay/lib/src/tracks.dart

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5+
import 'package:flutter/foundation.dart';
6+
57
/// Type of the track.
68
enum TrackType {
79
/// The video track.
@@ -31,13 +33,20 @@ class Track {
3133
///
3234
/// The [trackId] and [trackType] arguments are required.
3335
///
34-
const Track({required this.trackId, required this.trackType});
36+
const Track({
37+
required this.trackId,
38+
required this.trackType,
39+
required this.mimetype,
40+
});
3541

3642
/// The track id of track that uses to determine track.
3743
final int trackId;
3844

3945
/// The type of the track.
4046
final TrackType trackType;
47+
48+
/// The strack mime type.
49+
final String mimetype;
4150
}
4251

4352
/// A representation of a video track.
@@ -50,6 +59,7 @@ class VideoTrack extends Track {
5059
VideoTrack({
5160
required super.trackId,
5261
super.trackType = TrackType.video,
62+
required super.mimetype,
5363
required this.width,
5464
required this.height,
5565
required this.bitrate,
@@ -63,6 +73,17 @@ class VideoTrack extends Track {
6373

6474
/// The bitrate of video track.
6575
final int bitrate;
76+
77+
@override
78+
String toString() {
79+
return '${objectRuntimeType(this, 'VideoTrack')}('
80+
'trackId: $trackId, '
81+
'trackType: $trackType, '
82+
'mimetype: $mimetype, '
83+
'width: $width, '
84+
'height: $height, '
85+
'bitrate: $bitrate),';
86+
}
6687
}
6788

6889
/// A representation of a audio track.
@@ -75,6 +96,7 @@ class AudioTrack extends Track {
7596
AudioTrack({
7697
required super.trackId,
7798
super.trackType = TrackType.audio,
99+
required super.mimetype,
78100
required this.language,
79101
required this.channel,
80102
required this.bitrate,
@@ -88,6 +110,17 @@ class AudioTrack extends Track {
88110

89111
/// The bitrate of audio track.
90112
final int bitrate;
113+
114+
@override
115+
String toString() {
116+
return '${objectRuntimeType(this, 'AudioTrack')}('
117+
'trackId: $trackId, '
118+
'trackType: $trackType, '
119+
'mimetype: $mimetype, '
120+
'language: $language, '
121+
'channel: $channel, '
122+
'bitrate: $bitrate),';
123+
}
91124
}
92125

93126
/// A representation of a text track.
@@ -100,9 +133,19 @@ class TextTrack extends Track {
100133
TextTrack({
101134
required super.trackId,
102135
super.trackType = TrackType.text,
136+
required super.mimetype,
103137
required this.language,
104138
});
105139

106140
/// The language of text track.
107141
final String language;
142+
143+
@override
144+
String toString() {
145+
return '${objectRuntimeType(this, 'TextTrack')}('
146+
'trackId: $trackId, '
147+
'trackType: $trackType, '
148+
'mimetype: $mimetype, '
149+
'language: $language),';
150+
}
108151
}

packages/video_player_avplay/lib/src/video_player_tizen.dart

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,15 @@ class VideoPlayerTizen extends VideoPlayerPlatform {
114114
final List<VideoTrack> videoTracks = <VideoTrack>[];
115115
for (final Map<Object?, Object?>? trackMap in response.tracks) {
116116
final int trackId = trackMap!['trackId']! as int;
117+
final String mimetype = trackMap['mimetype']! as String;
117118
final int bitrate = trackMap['bitrate']! as int;
118119
final int width = trackMap['width']! as int;
119120
final int height = trackMap['height']! as int;
120121

121122
videoTracks.add(
122123
VideoTrack(
123124
trackId: trackId,
125+
mimetype: mimetype,
124126
width: width,
125127
height: height,
126128
bitrate: bitrate,
@@ -140,13 +142,15 @@ class VideoPlayerTizen extends VideoPlayerPlatform {
140142
final List<AudioTrack> audioTracks = <AudioTrack>[];
141143
for (final Map<Object?, Object?>? trackMap in response.tracks) {
142144
final int trackId = trackMap!['trackId']! as int;
145+
final String mimetype = trackMap['mimetype']! as String;
143146
final String language = trackMap['language']! as String;
144147
final int channel = trackMap['channel']! as int;
145148
final int bitrate = trackMap['bitrate']! as int;
146149

147150
audioTracks.add(
148151
AudioTrack(
149152
trackId: trackId,
153+
mimetype: mimetype,
150154
language: language,
151155
channel: channel,
152156
bitrate: bitrate,
@@ -166,9 +170,12 @@ class VideoPlayerTizen extends VideoPlayerPlatform {
166170
final List<TextTrack> textTracks = <TextTrack>[];
167171
for (final Map<Object?, Object?>? trackMap in response.tracks) {
168172
final int trackId = trackMap!['trackId']! as int;
173+
final String mimetype = trackMap['mimetype']! as String;
169174
final String language = trackMap['language']! as String;
170175

171-
textTracks.add(TextTrack(trackId: trackId, language: language));
176+
textTracks.add(
177+
TextTrack(trackId: trackId, mimetype: mimetype, language: language),
178+
);
172179
}
173180

174181
return textTracks;
@@ -282,6 +289,52 @@ class VideoPlayerTizen extends VideoPlayerPlatform {
282289
};
283290
}
284291

292+
@override
293+
Future<List<Track>> getActiveTrackInfo(int playerId) async {
294+
final TrackMessage msg = await _api.getActiveTrackInfo(
295+
PlayerMessage(playerId: playerId),
296+
);
297+
final List<Track> tracks = <Track>[];
298+
for (final Map<Object?, Object?>? trackMap in msg.tracks) {
299+
final String trackType = trackMap!['trackType']! as String;
300+
final int trackId = trackMap['trackId']! as int;
301+
final String mimetype = trackMap['mimetype']! as String;
302+
if (trackType == 'video') {
303+
final int bitrate = trackMap['bitrate']! as int;
304+
final int width = trackMap['width']! as int;
305+
final int height = trackMap['height']! as int;
306+
tracks.add(
307+
VideoTrack(
308+
trackId: trackId,
309+
mimetype: mimetype,
310+
width: width,
311+
height: height,
312+
bitrate: bitrate,
313+
),
314+
);
315+
} else if (trackType == 'audio') {
316+
final String language = trackMap['language']! as String;
317+
final int channel = trackMap['channel']! as int;
318+
final int bitrate = trackMap['bitrate']! as int;
319+
tracks.add(
320+
AudioTrack(
321+
trackId: trackId,
322+
mimetype: mimetype,
323+
language: language,
324+
channel: channel,
325+
bitrate: bitrate,
326+
),
327+
);
328+
} else if (trackType == 'text') {
329+
final String language = trackMap['language']! as String;
330+
tracks.add(
331+
TextTrack(trackId: trackId, mimetype: mimetype, language: language),
332+
);
333+
}
334+
}
335+
return tracks;
336+
}
337+
285338
@override
286339
Future<void> setStreamingProperty(
287340
int playerId,

packages/video_player_avplay/lib/video_player.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -885,6 +885,15 @@ class VideoPlayerController extends ValueNotifier<VideoPlayerValue> {
885885
return _videoPlayerPlatform.getData(playerId, keys);
886886
}
887887

888+
/// Get activated(selected) track infomation of the associated media.
889+
Future<List<Track>> getActiveTrackInfo() async {
890+
if (_isDisposedOrNotInitialized) {
891+
return <Track>[];
892+
}
893+
894+
return _videoPlayerPlatform.getActiveTrackInfo(playerId);
895+
}
896+
888897
/// Sets the playback speed of [this].
889898
///
890899
/// [speed] indicates a speed value with different platforms accepting

packages/video_player_avplay/lib/video_player_platform_interface.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,11 @@ abstract class VideoPlayerPlatform extends PlatformInterface {
170170
throw UnimplementedError('getData() has not been implemented.');
171171
}
172172

173+
/// Get activated(selected) track infomation of the associated media.
174+
Future<List<Track>> getActiveTrackInfo(int playerId) {
175+
throw UnimplementedError('getActiveTrackInfo() has not been implemented.');
176+
}
177+
173178
/// Set streamingengine property.
174179
Future<void> setStreamingProperty(
175180
int playerId,

packages/video_player_avplay/pigeons/messages.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,4 +170,5 @@ abstract class VideoPlayerAvplayApi {
170170
bool setDisplayMode(DisplayModeMessage msg);
171171
bool setData(DashPropertyMapMessage msg);
172172
DashPropertyMapMessage getData(DashPropertyTypeListMessage msg);
173+
TrackMessage getActiveTrackInfo(PlayerMessage msg);
173174
}

packages/video_player_avplay/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: video_player_avplay
22
description: Flutter plugin for displaying inline video on Tizen TV devices.
33
homepage: https://github.com/flutter-tizen/plugins
44
repository: https://github.com/flutter-tizen/plugins/tree/master/packages/video_player_avplay
5-
version: 0.5.17
5+
version: 0.5.18
66

77
environment:
88
sdk: ">=3.1.0 <4.0.0"
@@ -26,4 +26,4 @@ dependencies:
2626
dev_dependencies:
2727
flutter_test:
2828
sdk: flutter
29-
pigeon: ^22.7.2
29+
pigeon: ^10.0.0

0 commit comments

Comments
 (0)