|
@@ -143,6 +143,18 @@ static void HandleMediaPlayerMediaChanged(const libvlc_event_t * event, void * s
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#if TARGET_OS_IPHONE
|
|
|
|
+static void HandleMediaPlayerSnapshot(const libvlc_event_t * event, void * self)
|
|
|
|
+{
|
|
|
|
+ @autoreleasepool {
|
|
|
|
+ if (event->u.media_player_snapshot_taken.psz_filename != NULL) {
|
|
|
|
+ [[VLCEventManager sharedManager] callOnMainThreadObject:(__bridge id)(self)
|
|
|
|
+ withMethod:@selector(mediaPlayerSnapshot:)
|
|
|
|
+ withArgumentAsObject:[NSString stringWithUTF8String:event->u.media_player_snapshot_taken.psz_filename]];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+#endif
|
|
|
|
|
|
// TODO: Documentation
|
|
// TODO: Documentation
|
|
@interface VLCMediaPlayer (Private)
|
|
@interface VLCMediaPlayer (Private)
|
|
@@ -167,6 +179,9 @@ static void HandleMediaPlayerMediaChanged(const libvlc_event_t * event, void * s
|
|
VLCMediaPlayerState _cachedState; //< Cached state of the media being played
|
|
VLCMediaPlayerState _cachedState; //< Cached state of the media being played
|
|
float _position; //< The position of the media being played
|
|
float _position; //< The position of the media being played
|
|
id _drawable; //< The drawable associated to this media player
|
|
id _drawable; //< The drawable associated to this media player
|
|
|
|
+#if TARGET_OS_IPHONE
|
|
|
|
+ NSMutableArray *_snapshots; //< Array with snapshot file names
|
|
|
|
+#endif
|
|
VLCAudio *_audio;
|
|
VLCAudio *_audio;
|
|
libvlc_equalizer_t *_equalizerInstance;
|
|
libvlc_equalizer_t *_equalizerInstance;
|
|
BOOL _equalizerEnabled;
|
|
BOOL _equalizerEnabled;
|
|
@@ -208,6 +223,9 @@ static void HandleMediaPlayerMediaChanged(const libvlc_event_t * event, void * s
|
|
_cachedRemainingTime = [VLCTime nullTime];
|
|
_cachedRemainingTime = [VLCTime nullTime];
|
|
_position = 0.0f;
|
|
_position = 0.0f;
|
|
_cachedState = VLCMediaPlayerStateStopped;
|
|
_cachedState = VLCMediaPlayerStateStopped;
|
|
|
|
+#if TARGET_OS_IPHONE
|
|
|
|
+ _snapshots = [NSMutableArray array];
|
|
|
|
+#endif
|
|
|
|
|
|
_privateLibrary = library;
|
|
_privateLibrary = library;
|
|
libvlc_retain([_privateLibrary instance]);
|
|
libvlc_retain([_privateLibrary instance]);
|
|
@@ -1163,6 +1181,26 @@ static void HandleMediaPlayerMediaChanged(const libvlc_event_t * event, void * s
|
|
return libvlc_media_player_can_pause(_playerInstance);
|
|
return libvlc_media_player_can_pause(_playerInstance);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#if TARGET_OS_IPHONE
|
|
|
|
+- (NSArray *)snapshots
|
|
|
|
+{
|
|
|
|
+ return [_snapshots copy];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+- (UIImage *)getLastSnapshot {
|
|
|
|
+ if (_snapshots == nil) {
|
|
|
|
+ return nil;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @synchronized(_snapshots) {
|
|
|
|
+ if (_snapshots.count == 0)
|
|
|
|
+ return nil;
|
|
|
|
+
|
|
|
|
+ return [UIImage imageWithContentsOfFile:[_snapshots lastObject]];
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+#endif
|
|
|
|
+
|
|
- (void *)libVLCMediaPlayer
|
|
- (void *)libVLCMediaPlayer
|
|
{
|
|
{
|
|
return _playerInstance;
|
|
return _playerInstance;
|
|
@@ -1217,6 +1255,10 @@ static void HandleMediaPlayerMediaChanged(const libvlc_event_t * event, void * s
|
|
libvlc_event_attach(p_em, libvlc_MediaPlayerPositionChanged, HandleMediaPositionChanged, (__bridge void *)(self));
|
|
libvlc_event_attach(p_em, libvlc_MediaPlayerPositionChanged, HandleMediaPositionChanged, (__bridge void *)(self));
|
|
libvlc_event_attach(p_em, libvlc_MediaPlayerTimeChanged, HandleMediaTimeChanged, (__bridge void *)(self));
|
|
libvlc_event_attach(p_em, libvlc_MediaPlayerTimeChanged, HandleMediaTimeChanged, (__bridge void *)(self));
|
|
libvlc_event_attach(p_em, libvlc_MediaPlayerMediaChanged, HandleMediaPlayerMediaChanged, (__bridge void *)(self));
|
|
libvlc_event_attach(p_em, libvlc_MediaPlayerMediaChanged, HandleMediaPlayerMediaChanged, (__bridge void *)(self));
|
|
|
|
+
|
|
|
|
+#if TARGET_OS_IPHONE
|
|
|
|
+ libvlc_event_attach(p_em, libvlc_MediaPlayerSnapshotTaken, HandleMediaPlayerSnapshot, (__bridge void *)(self));
|
|
|
|
+#endif
|
|
}
|
|
}
|
|
|
|
|
|
- (void)unregisterObservers
|
|
- (void)unregisterObservers
|
|
@@ -1236,6 +1278,10 @@ static void HandleMediaPlayerMediaChanged(const libvlc_event_t * event, void * s
|
|
libvlc_event_detach(p_em, libvlc_MediaPlayerPositionChanged, HandleMediaPositionChanged, (__bridge void *)(self));
|
|
libvlc_event_detach(p_em, libvlc_MediaPlayerPositionChanged, HandleMediaPositionChanged, (__bridge void *)(self));
|
|
libvlc_event_detach(p_em, libvlc_MediaPlayerTimeChanged, HandleMediaTimeChanged, (__bridge void *)(self));
|
|
libvlc_event_detach(p_em, libvlc_MediaPlayerTimeChanged, HandleMediaTimeChanged, (__bridge void *)(self));
|
|
libvlc_event_detach(p_em, libvlc_MediaPlayerMediaChanged, HandleMediaPlayerMediaChanged, (__bridge void *)(self));
|
|
libvlc_event_detach(p_em, libvlc_MediaPlayerMediaChanged, HandleMediaPlayerMediaChanged, (__bridge void *)(self));
|
|
|
|
+
|
|
|
|
+#if TARGET_OS_IPHONE
|
|
|
|
+ libvlc_event_detach(p_em, libvlc_MediaPlayerSnapshotTaken, HandleMediaPlayerSnapshot, (__bridge void *)(self));
|
|
|
|
+#endif
|
|
}
|
|
}
|
|
|
|
|
|
- (void)mediaPlayerTimeChanged:(NSNumber *)newTime
|
|
- (void)mediaPlayerTimeChanged:(NSNumber *)newTime
|
|
@@ -1294,4 +1340,17 @@ static void HandleMediaPlayerMediaChanged(const libvlc_event_t * event, void * s
|
|
[self didChangeValueForKey:@"media"];
|
|
[self didChangeValueForKey:@"media"];
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#if TARGET_OS_IPHONE
|
|
|
|
+- (void)mediaPlayerSnapshot:(NSString *)fileName
|
|
|
|
+{
|
|
|
|
+ @synchronized(_snapshots) {
|
|
|
|
+ if (!_snapshots) {
|
|
|
|
+ _snapshots = [NSMutableArray array];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ [_snapshots addObject:fileName];
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+#endif
|
|
|
|
+
|
|
@end
|
|
@end
|