Skip to content

Commit 8aa430d

Browse files
committed
[tvOS] Improved video loading performance
Don’t unnecessarily download video thumbnail for meta data
1 parent b963a6f commit 8aa430d

File tree

3 files changed

+22
-6
lines changed

3 files changed

+22
-6
lines changed

OpenStack Summit/OpenStackSummitTV/EventDetailViewController.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ final class EventDetailViewController: UITableViewController {
2626

2727
private var data = [Detail]()
2828

29+
private var videoImage: UIImage?
30+
2931
// MARK: - Loading
3032

3133
override func viewDidLoad() {
@@ -50,6 +52,7 @@ final class EventDetailViewController: UITableViewController {
5052

5153
self.eventCache = Event(managedObject: managedObject)
5254
self.eventDetail = EventDetail(managedObject: managedObject)
55+
self.videoImage = nil
5356

5457
self.data = [Detail]()
5558

@@ -140,12 +143,13 @@ final class EventDetailViewController: UITableViewController {
140143

141144
if let thumbnailURL = URL(youtubeThumbnail: eventDetail.video!.youtube) {
142145

143-
cell.videoImageView.hnk_setImageFromURL(thumbnailURL, placeholder: nil, format: nil, failure: nil, success: { (image) in
146+
cell.videoImageView.hnk_setImageFromURL(thumbnailURL, placeholder: nil, format: nil, failure: nil, success: { [weak self, cell] (image) in
144147

145148
cell.videoImageView.image = image
146149
cell.playImageView.isHidden = false
147150
cell.activityIndicator.stopAnimating()
148151
cell.setNeedsDisplay()
152+
self?.videoImage = image
149153
})
150154
}
151155

@@ -169,7 +173,7 @@ final class EventDetailViewController: UITableViewController {
169173

170174
case .video:
171175

172-
self.play(video: eventDetail.video!)
176+
self.play(video: eventDetail.video!, cachedImage: videoImage)
173177

174178
default: break
175179
}

OpenStack Summit/OpenStackSummitTV/PlayVideo.swift

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import XCDYouTubeKit
1313

1414
extension UIViewController {
1515

16-
func play(video: Video) {
16+
func play(video: Video, cachedImage: UIImage? = nil) {
1717

1818
// add to recently played
1919

@@ -60,8 +60,7 @@ extension UIViewController {
6060
metadata.append(descriptionItem)
6161
}
6262

63-
if let thumbnailURL = URL(youtubeThumbnail: video.youtube),
64-
let data = NSData(contentsOf: thumbnailURL) {
63+
func setImage(data: NSData) {
6564

6665
let item = AVMutableMetadataItem()
6766
item.identifier = AVMetadataCommonIdentifierArtwork
@@ -71,6 +70,17 @@ extension UIViewController {
7170
metadata.append(item)
7271
}
7372

73+
if let image = cachedImage,
74+
let data = UIImagePNGRepresentation(image) as NSData? {
75+
76+
setImage(data: data)
77+
78+
} else if let thumbnailURL = URL(youtubeThumbnail: video.youtube),
79+
let data = NSData(contentsOf: thumbnailURL) {
80+
81+
setImage(data: data)
82+
}
83+
7484
return metadata
7585
}()
7686

OpenStack Summit/OpenStackSummitTV/VideoSearchResultsViewController.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,8 @@ final class VideoSearchResultsViewController: CollectionViewController, UISearch
150150

151151
let video = Video(managedObject: managedObject)
152152

153-
self.play(video: video)
153+
let cell = collectionView.cellForItem(at: indexPath) as! VideoCell
154+
155+
self.play(video: video, cachedImage: cell.imageView?.image)
154156
}
155157
}

0 commit comments

Comments
 (0)