//
//  ImageToVideoGeneratorDemoView.swift
//  AdamantiumDemo
//
//  Created by Sunny Uppal on 10/4/24.
//

import Foundation
import Adamantium
import SwiftUI
import AVFoundation

// ImageToVideoGenerator
class ImageToVideoGeneratorDemoObservable: ObservableObject {
    @Published var player: AVPlayer?
    
    func processVideo() async throws {
//        guard
//            let imageURL = Bundle.main.url(forResource: "white_skull_on_black", withExtension: "png"),
//            let image = ImageUtility.ciImage(imageURL)
//        else { return }
//        
//        guard
//            let generator = ImageToVideoGenerator(videoSize: .init(width: 1080, height: 1920))
//        else { return }
//        
//        print("Image to Video Generator Start: \(Date.now)")
//        let outputURL = await generator.generateVideo(
//            image: image, duration: 30.0, renderingStyle: .firstAndLastFrame)
//        print("Image to Video Generator End: \(Date.now)")
//
//        guard let outputURL else { return }
//        DispatchQueue.main.async { [self] in
//            player = .init(playerItem: .init(url: outputURL))
//            player?.play()
//        }
    }
}

struct ImageToVideoGeneratorDemoView: View {
    
    @ObservedObject var observable = ImageToVideoGeneratorDemoObservable()
    
    var body: some View {
        Color.clear
        .background {
            if let player = observable.player {
                VideoPlayerView(player: player)
            } else {
                Color.black
            }
        }
        .task {
            try? await observable.processVideo()
        }
    }
}
