public override ICommand Start(uint transferID)
        {
            StartedAt = DateTime.Now;
            if (StartedAt >= ExpiresAt)
            {
                return(null);
            }

            TransferId = transferID;

            return(new DataTransferUploadRequestCommand()
            {
                TransferId = transferID,
                TransferIndex = _index,
                TransferStoreId = StoreId,
                Size = _frame.GetYCbCrData().Length,
                Mode = DataTransferUploadRequestCommand.TransferMode.Write,
            });
            // TODO - seperate clear op?
        }
 public UploadMediaFrameJob(uint bank, uint index, AtemFrame frame, Action <bool> onComplete, TimeSpan?timeout = null)
     : base(bank, frame.GetYCbCrData() /*.GetRLEEncodedYCbCr() This doesnt work because it needs to line up with command boundaries */, onComplete, timeout)
 {
     _index = index;
     _frame = frame;
 }