Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
VideoLAN
VLC-iOS
Commits
a2e851ab
Commit
a2e851ab
authored
Oct 20, 2015
by
Felix Paul Kühne
Browse files
ATV: implement visual error handling if playback failed or device is too slow for media
parent
2e663ca1
Changes
4
Hide whitespace changes
Inline
Side-by-side
Sources/VLCPlaybackController.m
View file @
a2e851ab
...
@@ -21,6 +21,7 @@
...
@@ -21,6 +21,7 @@
#import "UIDevice+VLC.h"
#import "UIDevice+VLC.h"
#import <AVFoundation/AVFoundation.h>
#import <AVFoundation/AVFoundation.h>
#import <MediaPlayer/MediaPlayer.h>
#import <MediaPlayer/MediaPlayer.h>
#import "VLCPlayerDisplayController.h"
#if TARGET_OS_IOS
#if TARGET_OS_IOS
#import "VLCKeychainCoordinator.h"
#import "VLCKeychainCoordinator.h"
...
@@ -253,16 +254,35 @@ NSString *const VLCPlaybackControllerPlaybackDidFail = @"VLCPlaybackControllerPl
...
@@ -253,16 +254,35 @@ NSString *const VLCPlaybackControllerPlaybackDidFail = @"VLCPlaybackControllerPl
}
}
[
_listPlayer
setRepeatMode
:
VLCDoNotRepeat
];
[
_listPlayer
setRepeatMode
:
VLCDoNotRepeat
];
#if TARGET_OS_IOS
if
(
!
[
self
_isMediaSuitableForDevice
:
media
])
{
if
(
!
[
self
_isMediaSuitableForDevice
:
media
])
{
#if TARGET_OS_IOS
VLCAlertView
*
alert
=
[[
VLCAlertView
alloc
]
initWithTitle
:
NSLocalizedString
(
@"DEVICE_TOOSLOW_TITLE"
,
nil
)
VLCAlertView
*
alert
=
[[
VLCAlertView
alloc
]
initWithTitle
:
NSLocalizedString
(
@"DEVICE_TOOSLOW_TITLE"
,
nil
)
message:
[
NSString
stringWithFormat
:
NSLocalizedString
(
@"DEVICE_TOOSLOW"
,
nil
),
[[
UIDevice
currentDevice
]
model
],
media
.
url
.
lastPathComponent
]
message:
[
NSString
stringWithFormat
:
NSLocalizedString
(
@"DEVICE_TOOSLOW"
,
nil
),
[[
UIDevice
currentDevice
]
model
],
media
.
url
.
lastPathComponent
]
delegate:
self
delegate:
self
cancelButtonTitle:
NSLocalizedString
(
@"BUTTON_CANCEL"
,
nil
)
cancelButtonTitle:
NSLocalizedString
(
@"BUTTON_CANCEL"
,
nil
)
otherButtonTitles:
NSLocalizedString
(
@"BUTTON_OPEN"
,
nil
),
nil
];
otherButtonTitles:
NSLocalizedString
(
@"BUTTON_OPEN"
,
nil
),
nil
];
[
alert
show
];
[
alert
show
];
}
else
#else
UIAlertController
*
alert
=
[
UIAlertController
alertControllerWithTitle
:
NSLocalizedString
(
@"DEVICE_TOOSLOW_TITLE"
,
nil
)
message:
[
NSString
stringWithFormat
:
NSLocalizedString
(
@"DEVICE_TOOSLOW"
,
nil
),
[[
UIDevice
currentDevice
]
model
],
media
.
url
.
lastPathComponent
]
preferredStyle:
UIAlertControllerStyleAlert
];
UIAlertAction
*
defaultAction
=
[
UIAlertAction
actionWithTitle
:
NSLocalizedString
(
@"BUTTON_OPEN"
,
nil
)
style:
UIAlertActionStyleDefault
handler:
^
(
UIAlertAction
*
action
)
{
[
self
_playNewMedia
];
}];
UIAlertAction
*
cancelAction
=
[
UIAlertAction
actionWithTitle
:
NSLocalizedString
(
@"BUTTON_CANCEL"
,
nil
)
style:
UIAlertActionStyleDestructive
handler:
^
(
UIAlertAction
*
action
)
{
[
self
stopPlayback
];
}];
[
alert
addAction
:
defaultAction
];
[
alert
addAction
:
cancelAction
];
[[[
VLCPlayerDisplayController
sharedInstance
]
childViewController
]
presentViewController
:
alert
animated
:
YES
completion
:
nil
];
#endif
#endif
}
else
[
self
_playNewMedia
];
[
self
_playNewMedia
];
}
}
...
...
Sources/VLCPlayerDisplayController.m
View file @
a2e851ab
...
@@ -47,27 +47,17 @@ static NSString *const VLCPlayerDisplayControllerDisplayModeKey = @"VLCPlayerDis
...
@@ -47,27 +47,17 @@ static NSString *const VLCPlayerDisplayControllerDisplayModeKey = @"VLCPlayerDis
[[
NSUserDefaults
standardUserDefaults
]
registerDefaults
:@{
VLCPlayerDisplayControllerDisplayModeKey
:
@
(
VLCPlayerDisplayControllerDisplayModeFullscreen
)}];
[[
NSUserDefaults
standardUserDefaults
]
registerDefaults
:@{
VLCPlayerDisplayControllerDisplayModeKey
:
@
(
VLCPlayerDisplayControllerDisplayModeFullscreen
)}];
}
}
static
inline
void
commonSetup
(
VLCPlayerDisplayController
*
self
)
-
(
instancetype
)
init
{
{
NSNotificationCenter
*
notificationCenter
=
[
NSNotificationCenter
defaultCenter
];
self
=
[
super
init
];
[
notificationCenter
addObserver
:
self
selector
:
@selector
(
playbackDidStart
:
)
name
:
VLCPlaybackControllerPlaybackDidStart
object
:
nil
];
[
notificationCenter
addObserver
:
self
selector
:
@selector
(
playbackDidFail
:
)
name
:
VLCPlaybackControllerPlaybackDidFail
object
:
nil
];
[
notificationCenter
addObserver
:
self
selector
:
@selector
(
playbackDidStop
:
)
name
:
VLCPlaybackControllerPlaybackDidStop
object
:
nil
];
}
-
(
instancetype
)
initWithNibName
:(
NSString
*
)
nibNameOrNil
bundle
:(
NSBundle
*
)
nibBundleOrNil
{
self
=
[
super
initWithNibName
:
nibNameOrNil
bundle
:
nibBundleOrNil
];
if
(
self
)
{
if
(
self
)
{
commonSetup
(
self
);
NSNotificationCenter
*
notificationCenter
=
[
NSNotificationCenter
defaultCenter
];
[
notificationCenter
addObserver
:
self
selector
:
@selector
(
playbackDidStart
:
)
name
:
VLCPlaybackControllerPlaybackDidStart
object
:
nil
];
[
notificationCenter
addObserver
:
self
selector
:
@selector
(
playbackDidFail
:
)
name
:
VLCPlaybackControllerPlaybackDidFail
object
:
nil
];
[
notificationCenter
addObserver
:
self
selector
:
@selector
(
playbackDidStop
:
)
name
:
VLCPlaybackControllerPlaybackDidStop
object
:
nil
];
}
}
return
self
;
return
self
;
}
}
-
(
void
)
awakeFromNib
{
[
super
awakeFromNib
];
commonSetup
(
self
);
}
-
(
void
)
dealloc
-
(
void
)
dealloc
{
{
...
@@ -221,6 +211,7 @@ static inline void commonSetup(VLCPlayerDisplayController *self)
...
@@ -221,6 +211,7 @@ static inline void commonSetup(VLCPlayerDisplayController *self)
-
(
void
)
showPlaybackError
-
(
void
)
showPlaybackError
{
{
NSString
*
failedString
=
NSLocalizedString
(
@"PLAYBACK_FAILED"
,
nil
);
NSString
*
failedString
=
NSLocalizedString
(
@"PLAYBACK_FAILED"
,
nil
);
#if TARGET_OS_IOS
switch
(
self
.
displayMode
)
{
switch
(
self
.
displayMode
)
{
case
VLCPlayerDisplayControllerDisplayModeFullscreen
:
case
VLCPlayerDisplayControllerDisplayModeFullscreen
:
if
([
self
.
movieViewController
respondsToSelector
:
@selector
(
showStatusMessage
:
forPlaybackController
:
)])
{
if
([
self
.
movieViewController
respondsToSelector
:
@selector
(
showStatusMessage
:
forPlaybackController
:
)])
{
...
@@ -229,17 +220,26 @@ static inline void commonSetup(VLCPlayerDisplayController *self)
...
@@ -229,17 +220,26 @@ static inline void commonSetup(VLCPlayerDisplayController *self)
break
;
break
;
case
VLCPlayerDisplayControllerDisplayModeMiniplayer
:
case
VLCPlayerDisplayControllerDisplayModeMiniplayer
:
default:
default:
#if TARGET_OS_IOS
[[[
VLCAlertView
alloc
]
initWithTitle
:
failedString
[[[
VLCAlertView
alloc
]
initWithTitle
:
failedString
message:
nil
message:
nil
delegate:
nil
delegate:
nil
cancelButtonTitle:
NSLocalizedString
(
@"BUTTON_OK"
,
nil
)
cancelButtonTitle:
NSLocalizedString
(
@"BUTTON_OK"
,
nil
)
otherButtonTitles:
nil
]
show
];
otherButtonTitles:
nil
]
show
];
#else
APLog
(
@"%@"
,
failedString
);
#endif
break
;
break
;
}
}
#else
UIAlertController
*
alert
=
[
UIAlertController
alertControllerWithTitle
:
failedString
message:
@""
preferredStyle:
UIAlertControllerStyleAlert
];
UIAlertAction
*
defaultAction
=
[
UIAlertAction
actionWithTitle
:
NSLocalizedString
(
@"BUTTON_OK"
,
nil
)
style:
UIAlertActionStyleDefault
handler:
^
(
UIAlertAction
*
action
)
{}];
[
alert
addAction
:
defaultAction
];
[
self
presentViewController
:
alert
animated
:
YES
completion
:
nil
];
#endif
}
}
#pragma mark - fullscreen player
#pragma mark - fullscreen player
...
...
VLC for Apple TV/VLCOpenNetworkStreamTVViewController.m
View file @
a2e851ab
...
@@ -43,6 +43,7 @@
...
@@ -43,6 +43,7 @@
_recentURLs
=
[
NSMutableArray
arrayWithArray
:[[
NSUbiquitousKeyValueStore
defaultStore
]
arrayForKey
:
kVLCRecentURLs
]];
_recentURLs
=
[
NSMutableArray
arrayWithArray
:[[
NSUbiquitousKeyValueStore
defaultStore
]
arrayForKey
:
kVLCRecentURLs
]];
if
(
_recentURLs
.
count
==
0
)
{
if
(
_recentURLs
.
count
==
0
)
{
[
_recentURLs
addObject
:
@"http://streams.videolan.org/streams/mp4/Mr_MrsSmith-h264_aac.mp4"
];
[
_recentURLs
addObject
:
@"http://streams.videolan.org/streams/mp4/Mr_MrsSmith-h264_aac.mp4"
];
[
_recentURLs
addObject
:
@"http://streams.videolan.org/streams/mp4/404.mp4"
];
}
}
[
self
.
previouslyPlayedStreamsTableView
reloadData
];
[
self
.
previouslyPlayedStreamsTableView
reloadData
];
self
.
noURLsToShowLabel
.
hidden
=
_recentURLs
.
count
!=
0
;
self
.
noURLsToShowLabel
.
hidden
=
_recentURLs
.
count
!=
0
;
...
...
VLC for iOS.xcodeproj/project.pbxproj
View file @
a2e851ab
...
@@ -209,6 +209,7 @@
...
@@ -209,6 +209,7 @@
7DEC8BED1BD68D6A006E1093
/* VLCAboutTVViewController.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
7DEC8BEB1BD68D6A006E1093
/* VLCAboutTVViewController.m */
;
};
7DEC8BED1BD68D6A006E1093
/* VLCAboutTVViewController.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
7DEC8BEB1BD68D6A006E1093
/* VLCAboutTVViewController.m */
;
};
7DEC8C1D1BD6913A006E1093
/* VLCSettingsAboutTableViewController.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
7DEC8C1C1BD6913A006E1093
/* VLCSettingsAboutTableViewController.m */
;
};
7DEC8C1D1BD6913A006E1093
/* VLCSettingsAboutTableViewController.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
7DEC8C1C1BD6913A006E1093
/* VLCSettingsAboutTableViewController.m */
;
};
7DEC8C1E1BD69710006E1093
/* About Contents.html in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
7D5DD5C617590ABF001421E3
/* About Contents.html */
;
};
7DEC8C1E1BD69710006E1093
/* About Contents.html in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
7D5DD5C617590ABF001421E3
/* About Contents.html */
;
};
7DEC8C1F1BD6A113006E1093
/* UIDevice+VLC.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
7D3784C7183A9972009EE944
/* UIDevice+VLC.m */
;
};
7DF04F4D1961F2B8004A5429
/* web-download-fixed.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
7DF04F491961F2B8004A5429
/* web-download-fixed.png */
;
};
7DF04F4D1961F2B8004A5429
/* web-download-fixed.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
7DF04F491961F2B8004A5429
/* web-download-fixed.png */
;
};
7DF04F4E1961F2B8004A5429
/* web-download.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
7DF04F4A1961F2B8004A5429
/* web-download.png */
;
};
7DF04F4E1961F2B8004A5429
/* web-download.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
7DF04F4A1961F2B8004A5429
/* web-download.png */
;
};
7DF04F4F1961F2B8004A5429
/* web-open-fixed.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
7DF04F4B1961F2B8004A5429
/* web-open-fixed.png */
;
};
7DF04F4F1961F2B8004A5429
/* web-open-fixed.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
7DF04F4B1961F2B8004A5429
/* web-open-fixed.png */
;
};
...
@@ -2273,6 +2274,7 @@
...
@@ -2273,6 +2274,7 @@
isa
=
PBXSourcesBuildPhase
;
isa
=
PBXSourcesBuildPhase
;
buildActionMask
=
2147483647
;
buildActionMask
=
2147483647
;
files
=
(
files
=
(
7DEC8C1F1BD6A113006E1093
/* UIDevice+VLC.m in Sources */
,
7DC71D211BC83058001FACAA
/* VLCAppSharesTVViewController.m in Sources */
,
7DC71D211BC83058001FACAA
/* VLCAppSharesTVViewController.m in Sources */
,
7DEC8BED1BD68D6A006E1093
/* VLCAboutTVViewController.m in Sources */
,
7DEC8BED1BD68D6A006E1093
/* VLCAboutTVViewController.m in Sources */
,
7DEC8BD81BD66DA8006E1093
/* VLCMiniPlaybackView.m in Sources */
,
7DEC8BD81BD66DA8006E1093
/* VLCMiniPlaybackView.m in Sources */
,
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment