Browse Source

alignment

Signed-off-by: marinofaggiana <96728420+MarinoFaggianaAstraIridium@users.noreply.github.com>
marinofaggiana 3 years ago
parent
commit
17cee0b0a5

+ 0 - 2
.gitignore

@@ -37,8 +37,6 @@ DerivedData
 
 ## Package
 Carthage/
-Package.resolved
-Cartfile.resolved
 
 ### SwiftPackageManager ###
 .swiftpm

+ 3 - 0
Cartfile.resolved

@@ -0,0 +1,3 @@
+github "marinofaggiana/ChromaColorPicker" "b1b2c58c3c5617c73863a073cb6393c79195932e"
+github "marinofaggiana/KTVHTTPCache" "2.0.2"
+github "marinofaggiana/TOPasscodeViewController" "7a750031bb86d9dc9f193bf34a38bbd288b3c4fd"

+ 5 - 0
iOSClient/Data/NCDatabase.swift

@@ -526,6 +526,11 @@ class tableVideo: Object {
     @objc dynamic var duration: Int64 = 0
     @objc dynamic var ocId = ""
     @objc dynamic var time: Int64 = 0
+    @objc dynamic var codecNameVideo: String?
+    @objc dynamic var codecNameAudio: String?
+    @objc dynamic var codecAudioChannelLayout: String?
+    @objc dynamic var codecAudioLanguage: String?
+    @objc dynamic var codecSubtitleLanguage: String?
 
     override static func primaryKey() -> String {
         return "ocId"

+ 41 - 0
iOSClient/Data/NCManageDatabase.swift

@@ -1721,6 +1721,47 @@ class NCManageDatabase: NSObject {
             NCCommunicationCommon.shared.writeLog("Could not write to database: \(error)")
         }
     }
+    
+    func addVideoCodec(metadata: tableMetadata, codecNameVideo: String?, codecNameAudio: String?, codecAudioChannelLayout: String?, codecAudioLanguage: String?, codecSubtitleLanguage: String?) {
+
+        let realm = try! Realm()
+
+        do {
+            try realm.safeWrite {
+                if let result = realm.objects(tableVideo.self).filter("account == %@ AND ocId == %@", metadata.account, metadata.ocId).first {
+                    if let codecNameVideo = codecNameVideo { result.codecNameVideo = codecNameVideo }
+                    if let codecNameAudio = codecNameAudio { result.codecNameAudio = codecNameAudio }
+                    if let codecAudioChannelLayout = codecAudioChannelLayout { result.codecAudioChannelLayout = codecAudioChannelLayout }
+                    if let codecAudioLanguage = codecAudioLanguage { result.codecAudioLanguage = codecAudioLanguage }
+                    if let codecSubtitleLanguage = codecSubtitleLanguage { result.codecSubtitleLanguage = codecSubtitleLanguage }
+                    realm.add(result, update: .all)
+                } else {
+                    let addObject = tableVideo()
+                    addObject.account = metadata.account
+                    addObject.ocId = metadata.ocId
+                    addObject.codecNameVideo = codecNameVideo
+                    addObject.codecNameAudio = codecNameAudio
+                    addObject.codecAudioChannelLayout = codecAudioChannelLayout
+                    addObject.codecAudioLanguage = codecAudioLanguage
+                    addObject.codecSubtitleLanguage = codecSubtitleLanguage
+                    realm.add(addObject, update: .all)
+                }
+            }
+        } catch let error {
+            NCCommunicationCommon.shared.writeLog("Could not write to database: \(error)")
+        }
+    }
+    
+    func getVideo(metadata: tableMetadata?) -> tableVideo? {
+        guard let metadata = metadata else { return nil }
+        
+        let realm = try! Realm()
+        guard let result = realm.objects(tableVideo.self).filter("account == %@ AND ocId == %@", metadata.account, metadata.ocId).first else {
+            return nil
+        }
+        
+        return tableVideo.init(value: result)
+    }
 
     func getVideoDurationTime(metadata: tableMetadata?) -> CMTime? {
         guard let metadata = metadata else { return nil }

+ 3 - 2
iOSClient/Menu/NCViewer+Menu.swift

@@ -148,10 +148,11 @@ extension NCViewer {
                         
                         let url = URL(fileURLWithPath: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView))
                         let urlOut = URL(fileURLWithPath: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: NCGlobal.shared.fileNameVideoEncoded))
-                        
+                        let tableVideo = NCManageDatabase.shared.getVideo(metadata: metadata)
+
                         NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterPauseMedia)
                         
-                        MFFF.shared.convertVideo(url: url, urlOut: urlOut, serverUrl: metadata.serverUrl, fileName: metadata.fileNameView, contentType: metadata.contentType, ocId: metadata.ocId) { url, returnCode in
+                        MFFF.shared.convertVideo(url: url, urlOut: urlOut, serverUrl: metadata.serverUrl, fileName: metadata.fileNameView, contentType: metadata.contentType, ocId: metadata.ocId, codecNameVideo: tableVideo?.codecNameVideo, codecNameAudio: tableVideo?.codecNameAudio, codecChannelLayout: tableVideo?.codecAudioChannelLayout, languageAudio: tableVideo?.codecAudioLanguage, languageSubtitle: tableVideo?.codecSubtitleLanguage) { urlVideo, urlSubtitle, returnCode in
                             if returnCode?.isSuccess() ?? false {
                                 NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterReloadMediaPage)
                             } else if returnCode?.isCancel() ?? false {

+ 1 - 1
iOSClient/NCGlobal.swift

@@ -112,7 +112,7 @@ class NCGlobal: NSObject {
     // Database Realm
     //
     let databaseDefault                             = "nextcloud.realm"
-    let databaseSchemaVersion: UInt64               = 213
+    let databaseSchemaVersion: UInt64               = 214
 
     // Intro selector
     //

+ 12 - 4
iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayer.swift

@@ -91,8 +91,9 @@ class NCPlayer: NSObject {
                         
                         let url = URL(fileURLWithPath: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView))
                         let urlOut = URL(fileURLWithPath: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: NCGlobal.shared.fileNameVideoEncoded))
+                        let tableVideo = NCManageDatabase.shared.getVideo(metadata: metadata)
                         
-                        MFFF.shared.convertVideo(url: url, urlOut: urlOut, serverUrl: self.metadata.serverUrl, fileName: self.metadata.fileNameView, contentType: self.metadata.contentType, ocId: metadata.ocId) { urlVideo, urlSubtitle, returnCode in
+                        MFFF.shared.convertVideo(url: url, urlOut: urlOut, serverUrl: self.metadata.serverUrl, fileName: self.metadata.fileNameView, contentType: self.metadata.contentType, ocId: metadata.ocId, codecNameVideo: tableVideo?.codecNameVideo, codecNameAudio: tableVideo?.codecNameAudio, codecChannelLayout: tableVideo?.codecAudioChannelLayout, languageAudio: tableVideo?.codecAudioLanguage, languageSubtitle: tableVideo?.codecSubtitleLanguage) { urlVideo, urlSubtitle, returnCode in
                             if returnCode?.isSuccess() ?? false, let url = urlVideo {
                                 self.url = url
                                 self.openAVPlayer() { status, error in
@@ -360,15 +361,22 @@ extension NCPlayer: MFFFDelegate {
         }
     }
     
-    func sessionStarted(url: URL, ocId: String?, subtitle: Bool) {
+    func sessionStarted(url: URL, ocId: String?) {
         self.playerToolBar?.forcedHide(true)
     }
     
-    func sessionProgress(url: URL, ocId: String?, progress: CGFloat, subtitle: Bool) {
+    func sessionProgress(url: URL, ocId: String?, progress: CGFloat) {
     }
     
-    func sessionEnded(url: URL, ocId: String?, returnCode: Int?, subtitle: Bool) {
+    func sessionEnded(url: URL, ocId: String?, returnCode: Int?, traces: [MFFFTrace]?) {
         self.playerToolBar?.forcedHide(false)
+        
+        if returnCode == 0, let traces = traces, let metadata = NCManageDatabase.shared.getMetadataFromOcId(ocId) {
+            let traceVideo = traces.filter { $0.codecType == "video" }.first
+            let traceAudio = traces.filter { $0.codecType == "audio" }.first
+            let traceSubtitle = traces.filter { $0.codecType == "subtitle" }.first
+            NCManageDatabase.shared.addVideoCodec(metadata: metadata, codecNameVideo: traceVideo?.codecName, codecNameAudio: traceAudio?.codecName, codecAudioChannelLayout: traceAudio?.codecChannelLayout, codecAudioLanguage: traceAudio?.languageAudio, codecSubtitleLanguage: traceSubtitle?.languageSubtitle)
+        }
     }
 }
 #endif