         
         _setupTopBar()
         _setupBottomBar()
+        
+        // Start the session immediately if the starting mode is `.at(.loading)`.
+        switch _startingOfSession {
+        case .at(.loading):
+            if !_session.isRunning {
+                _session.startRunning()
+            }
+        default: break
+        }
     }
     
     override open func viewDidLoad() {
         super.viewDidLoad()
         
         view.backgroundColor = .black
+        // Start the session immediately if the starting mode is `.at(.loaded)`.
+        switch _startingOfSession {
+        case .at(.loaded):
+            if !_session.isRunning {
+                _session.startRunning()
+            }
+        default: break
+        }
     }
     
     override open func viewDidLayoutSubviews() {

        return bottomBar
    }()
    
    // MARK: Initializer.
    public init?(previewView: CaptureVideoPreviewView? = nil, session: AVCaptureSession? = nil, input: AVCaptureDeviceInput? = nil) {
        guard let __input = input ?? (try? AVCaptureDeviceInput(device: AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo))) else {
            return nil
        }
        _session = session ?? previewView?.previewLayer.session ?? AVCaptureSession()
        if previewView?.previewLayer.session === _session {
            _previewView = previewView
        }
        _input = __input
        _output = AVCapturePhotoOutput()
        
        super.init(nibName: nil, bundle: nil)
        _initializer()
    }
    
    override public init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        _initializer()
    }
    
    required public init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        _initializer()
    }
    
    private func _initializer() {
        _configureSession()
        if _previewView == nil {
            _previewView = PreviewView(session: _session)
        }
    }
    

        topBar.translatesAutoresizingMaskIntoConstraints = false
        return topBar
    }()
    
    public           var  bottomBar: BottomBar   { return _bottomBar }
    fileprivate lazy var _bottomBar: BottomBar = { () -> BottomBar in
        let bottomBar = BottomBar()
        bottomBar.tintColor = .white
