Commit 02accdae by 景炳强

1新增单路延迟 2新增裁切缩放参数

parents fbdd51ed 2c2864a0
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 8
start scheduleVideoFramesFunc function........
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
start scheduleVideoFramesFunc function........
start scheduleVideoFramesFunc function........
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
start scheduleVideoFramesFunc function........
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 8
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 9
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 10
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 10
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 11
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 11
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 12
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 12
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 13
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 14
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 15
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 15
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 16
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 17
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 17
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 8
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 8
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 8
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 8
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 9
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 9
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 9
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 9
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 10
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 10
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 10
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 11
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 10
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 11
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 11
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 12
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 11
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 12
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 12
ProcessThread::run::fps:: 0 0
ProcessThread::run::fps:: 2 0
ProcessThread::run::fps:: 1 0
ProcessThread::run::fps:: 3 0
ProcessThread::run::fps:: 0 0
ProcessThread::run::fps:: 2 0
ProcessThread::run::fps:: 1 0
ProcessThread::run::fps:: 3 0
ProcessThread::run::fps:: 2 1
ProcessThread::run::fps:: 1 1
ProcessThread::run::fps:: 0 1
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
ProcessThread::run::fps:: 1 1
ProcessThread::run::fps:: 3 1
ProcessThread::run::fps:: 0 1
ProcessThread::run::fps:: 2 1
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 4
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 5
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 6
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 7
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 8
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 8
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 8
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 8
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 9
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 9
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 9
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 9
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 10
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 10
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 10
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 10
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 11
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 11
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 11
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 11
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 12
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 12
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 12
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 13
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 12
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 13
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 13
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 13
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 14
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 14
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 14
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 14
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 15
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 15
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 15
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 15
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 16
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 16
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 16
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 16
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 17
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 17
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 17
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 17
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 18
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 18
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 18
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 19
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 18
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 19
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 19
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 20
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 19
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 20
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 20
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 20
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 21
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 21
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 21
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 21
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 22
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 22
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 22
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 22
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 23
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 23
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 23
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 23
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 24
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 24
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 24
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 24
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 25
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 25
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 25
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 25
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 26
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 26
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 26
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 26
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 27
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 27
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 27
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 28
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 27
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 28
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 28
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 29
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 28
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 29
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 29
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 30
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 29
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 30
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 30
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 31
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 30
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 31
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 31
ProcessThread::run::fps:: 0 13
ProcessThread::run::fps:: 1 13
ProcessThread::run::fps:: 3 14
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 32
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 31
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 32
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 32
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 33
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 32
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 33
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 33
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 34
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 33
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 34
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 34
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 35
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 34
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 35
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 35
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 36
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 35
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 36
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 36
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 37
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 36
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 37
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 37
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 37
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 38
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 38
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 38
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 38
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 39
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 39
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 39
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 39
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 40
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 40
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 40
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 40
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 41
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 41
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 41
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 41
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 42
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 42
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 42
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 43
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 42
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 43
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 43
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 44
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 43
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 44
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 44
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 44
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 45
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 45
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 45
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 45
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 46
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 46
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 46
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 46
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 47
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 47
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 47
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 47
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 48
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 48
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 48
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 48
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 50
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 50
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 50
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 50
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 51
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 51
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 51
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 51
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 52
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 52
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 52
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 52
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 53
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 53
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 53
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 51
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 52
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 52
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 52
ProcessThread::run::fps:: 2 24
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 51
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 52
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 52
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 52
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 50
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 51
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 52
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 51
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 50
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 51
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 51
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 51
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 50
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 51
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 50
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 50
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 50
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 50
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 50
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 48
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 48
Unable to schedule output video frame
Unable to schedule output video frame
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
Unable to schedule output video frame
Unable to schedule output video frame
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 4
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 4
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 4
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 4
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 5
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 5
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 5
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 5
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 6
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 6
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 6
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 6
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 7
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 7
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 7
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 7
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 8
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 8
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 8
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 8
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 9
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 9
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 9
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 10
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 9
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 10
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 10
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 11
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 10
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 11
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 11
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 11
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 12
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 12
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 48
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 12
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 12
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 13
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 13
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 13
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 13
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 14
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 14
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 14
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 14
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 15
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 15
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 15
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 15
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 16
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 16
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 16
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 16
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 17
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 17
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 17
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 17
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 18
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 18
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 19
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 18
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 19
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 18
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 20
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 19
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 19
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 20
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 20
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 21
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 21
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 20
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 21
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 22
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 22
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 21
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 22
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 23
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 23
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 22
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 23
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 24
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 24
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 23
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 24
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 25
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 24
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 25
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 25
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 26
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 25
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 26
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 26
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 27
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 26
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 27
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 27
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 28
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 27
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 28
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 28
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 29
ProcessThread::run::fps:: 0 30
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 29
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 28
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 29
ProcessThread::run::fps:: 1 31
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 30
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
ProcessThread::run::fps:: 3 31
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 30
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 29
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 31
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 30
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 31
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 30
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 32
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 31
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 32
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 31
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 33
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 32
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 33
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 32
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 34
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 33
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 34
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 33
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 35
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 34
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 35
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 36
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 34
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 35
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 36
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 37
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 35
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 36
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 37
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 38
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 36
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 37
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 38
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 39
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 37
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 39
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 38
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 40
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 38
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 40
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 39
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 41
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 39
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 41
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 40
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 42
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 40
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 42
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 41
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 43
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 41
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 43
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 42
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 44
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 42
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 44
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 43
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 45
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 48
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 43
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 45
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 46
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 44
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 44
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 46
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 47
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 45
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 47
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 45
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 48
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 46
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 48
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 46
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 47
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 47
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 50
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 48
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 48
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 50
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 48
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 51
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 51
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 52
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 50
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 52
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 53
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 51
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 50
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 53
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 54
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 51
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 52
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 54
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 55
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 52
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 53
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 55
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 56
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 53
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 56
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 54
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 57
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 57
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 54
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 55
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 58
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 58
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 55
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 59
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 56
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 59
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 57
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 56
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 60
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 60
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 61
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 57
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 58
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 61
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 62
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 58
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 59
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 62
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 63
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 59
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 60
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 63
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 64
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 60
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 61
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 64
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 61
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 65
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 62
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 65
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 62
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 66
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 63
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 66
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 63
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 67
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 64
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 67
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 64
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 65
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 68
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 68
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 65
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 66
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 69
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 69
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 66
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 67
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 70
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 70
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 67
ProcessThread::run::fps:: 2 39
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 68
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 71
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 71
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 68
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 69
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 72
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 69
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 72
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 70
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 73
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 70
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 73
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 71
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 48
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 74
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 74
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 71
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 72
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 75
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 75
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 72
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 73
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 76
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 73
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 76
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 74
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 77
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 77
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 75
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 74
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 78
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 78
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 76
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 75
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 79
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 79
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 48
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 77
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 76
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 80
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 80
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 78
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 81
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 77
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 81
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 79
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 78
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 82
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 82
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 80
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 83
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 79
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 83
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 81
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 84
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 80
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 84
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 82
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 85
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 85
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 81
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 83
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 86
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 86
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 82
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 84
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 87
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 87
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 83
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 85
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 48
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 88
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 84
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 88
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 86
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 85
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 87
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 89
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 89
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 86
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 88
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 87
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 89
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 90
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 90
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 88
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 89
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 90
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 90
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 91
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 91
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 91
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 91
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 92
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 92
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 92
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 92
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 93
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 93
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 93
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 93
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 94
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 94
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 94
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 94
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 95
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 95
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 95
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 95
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 96
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 96
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 96
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 96
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 97
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 97
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 97
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 97
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 98
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 98
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 98
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 99
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 98
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 99
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 99
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 100
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 99
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 100
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 100
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 48
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 48
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 101
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 100
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 101
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 101
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 48
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 48
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 102
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 101
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 102
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 102
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 0 DeckLinkOutputDevice::AddFrame video---qsize: 103
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 102
index: 3 DeckLinkOutputDevice::AddFrame video---qsize: 103
index: 1 DeckLinkOutputDevice::AddFrame video---qsize: 103
index: 0 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 1 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 3 DeckLinkOutputDevice::AddAudioFrame audio---qsize: 49
index: 2 DeckLinkOutputDevice::AddFrame video---qsize: 103
...@@ -75,6 +75,7 @@ ...@@ -75,6 +75,7 @@
<Link> <Link>
<AdditionalLibraryDirectories>.\ThirdParty\libyuv\lib;.\ThirdParty\OpenCV\x64\vc15\lib;.\ThirdParty\NewTek\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>.\ThirdParty\libyuv\lib;.\ThirdParty\OpenCV\x64\vc15\lib;.\ThirdParty\NewTek\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>Processing.NDI.Lib.Advanced.x64.lib;opencv_world460.lib;yuv.lib;jpeg.lib;%(AdditionalDependencies);$(Qt_LIBS_)</AdditionalDependencies> <AdditionalDependencies>Processing.NDI.Lib.Advanced.x64.lib;opencv_world460.lib;yuv.lib;jpeg.lib;%(AdditionalDependencies);$(Qt_LIBS_)</AdditionalDependencies>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="Configuration"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="Configuration">
......
...@@ -23,7 +23,7 @@ class DeckLinkInputDevice : public QObject, public IDeckLinkInputCallback ...@@ -23,7 +23,7 @@ class DeckLinkInputDevice : public QObject, public IDeckLinkInputCallback
public: public:
using DeckLinkDisplayModeQueryFunc = std::function<void(IDeckLinkDisplayMode*)>; using DeckLinkDisplayModeQueryFunc = std::function<void(IDeckLinkDisplayMode*)>;
DeckLinkInputDevice(QObject* parent, ComPtr<IDeckLink>& deckLink); DeckLinkInputDevice(QObject* parent, ComPtr<IDeckLink>& deckLink, int index);
virtual ~DeckLinkInputDevice(); virtual ~DeckLinkInputDevice();
// IUnknown interface // IUnknown interface
...@@ -84,6 +84,8 @@ private: ...@@ -84,6 +84,8 @@ private:
//std::mutex mutex; //std::mutex mutex;
//std::thread thd; //std::thread thd;
int Index;
}; };
class DeckLinkInputFormatChangedEvent : public QEvent class DeckLinkInputFormatChangedEvent : public QEvent
......
...@@ -20,7 +20,7 @@ public: ...@@ -20,7 +20,7 @@ public:
DeckLinkInputPage(); DeckLinkInputPage();
virtual ~DeckLinkInputPage(); virtual ~DeckLinkInputPage();
void SetPreviewSize(QSize previewSize); void SetPreviewSize(QSize previewSize, int index);
void customEvent(QEvent* event) override; void customEvent(QEvent* event) override;
...@@ -70,4 +70,6 @@ private: ...@@ -70,4 +70,6 @@ private:
QComboBox* VideoFormatCombo; QComboBox* VideoFormatCombo;
QCheckBox* AutoDetectCheckBox; QCheckBox* AutoDetectCheckBox;
QLabel* NDINameLabel; QLabel* NDINameLabel;
int Index;
}; };
\ No newline at end of file
...@@ -59,7 +59,8 @@ public: ...@@ -59,7 +59,8 @@ public:
public slots: public slots:
void AddAudioFrame(std::shared_ptr<AudioPacket> audio_packet); void AddAudioFrame(std::shared_ptr<AudioPacket> audio_packet);
void AddFrame(std::shared_ptr<Image> image); void AddFrame(std::shared_ptr<Image> image);
private:
void InitResource();
private: private:
std::atomic<ULONG> RefCount; std::atomic<ULONG> RefCount;
PlaybackState state; PlaybackState state;
...@@ -101,4 +102,7 @@ private: ...@@ -101,4 +102,7 @@ private:
int64_t current_video_time = 0; int64_t current_video_time = 0;
int64_t current_sleep_ms = 0; int64_t current_sleep_ms = 0;
qint32 Index; qint32 Index;
qint32 Device_id;
qint32 output_deley_ms;//
qint32 audio_max_size;
}; };
...@@ -195,6 +195,7 @@ private: ...@@ -195,6 +195,7 @@ private:
static int s_count; static int s_count;
int idx; int idx;
int output_deley_time;
int sendFrames; int sendFrames;
int64_t sendStartTime; int64_t sendStartTime;
......
...@@ -7,7 +7,7 @@ class AudioPacket : public QObject ...@@ -7,7 +7,7 @@ class AudioPacket : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
AudioPacket(IDeckLinkAudioInputPacket* audioPacket,qint64& timestamp); AudioPacket(IDeckLinkAudioInputPacket* audioPacket,qint64& timestamp,qint32 channel);
~AudioPacket(); ~AudioPacket();
public: public:
......
#pragma once #pragma once
#include "DeckLinkAPI.h" #include "DeckLinkAPI.h"
#include <QDateTime.h>
long GetRowBytesFromPixelFormat(long width, BMDPixelFormat pixelFormat); long GetRowBytesFromPixelFormat(long width, BMDPixelFormat pixelFormat);
\ No newline at end of file
static QString GetCurrDateTimeStr()
{
QString time_format = "yyyy-MM-dd HH:mm:ss";
QDateTime a = QDateTime::currentDateTime();
QString as = a.toString(time_format);
return as;
}
...@@ -4,8 +4,11 @@ ...@@ -4,8 +4,11 @@
#include "Utils/Platform.h" #include "Utils/Platform.h"
#include "BlackMagicDesign/DeckLinkInputDevice.h" #include "BlackMagicDesign/DeckLinkInputDevice.h"
#include "Utils/Common.h"
DeckLinkInputDevice::DeckLinkInputDevice(QObject* parent, ComPtr<IDeckLink>& device) extern int AudioChannel;
DeckLinkInputDevice::DeckLinkInputDevice(QObject* parent, ComPtr<IDeckLink>& device, int index)
: RefCount(1), : RefCount(1),
Owner(parent), Owner(parent),
DeckLink(device), DeckLink(device),
...@@ -16,7 +19,8 @@ DeckLinkInputDevice::DeckLinkInputDevice(QObject* parent, ComPtr<IDeckLink>& dev ...@@ -16,7 +19,8 @@ DeckLinkInputDevice::DeckLinkInputDevice(QObject* parent, ComPtr<IDeckLink>& dev
bApplyDetectedInputMode(false), bApplyDetectedInputMode(false),
bLastValidFrameStatus(false), bLastValidFrameStatus(false),
SupportedInputConnections(bmdVideoConnectionUnspecified), SupportedInputConnections(bmdVideoConnectionUnspecified),
SelectedInputConnection(bmdVideoConnectionUnspecified) SelectedInputConnection(bmdVideoConnectionUnspecified),
Index(index)
{ {
//thd = std::thread(&DeckLinkInputDevice::ForwardThread, this); //thd = std::thread(&DeckLinkInputDevice::ForwardThread, this);
} }
...@@ -78,6 +82,9 @@ HRESULT DeckLinkInputDevice::VideoInputFrameArrived(IDeckLinkVideoInputFrame* vi ...@@ -78,6 +82,9 @@ HRESULT DeckLinkInputDevice::VideoInputFrameArrived(IDeckLinkVideoInputFrame* vi
ComPtr<IDeckLinkVideoInputFrame> frame = ComPtr<IDeckLinkVideoInputFrame>(videoFrame); ComPtr<IDeckLinkVideoInputFrame> frame = ComPtr<IDeckLinkVideoInputFrame>(videoFrame);
//emit ArrivedFrame(frame); //emit ArrivedFrame(frame);
if (videoFrame && Capture) { if (videoFrame && Capture) {
unsigned flags = videoFrame->GetFlags();
if (flags & bmdFrameHasNoInputSource)
qDebug() << GetCurrDateTimeStr() << "index: " << Index << " DeckLinkInputDevice get video frame No input source " << hex << flags << " ------------ \n";
auto cur_time = QDateTime::currentMSecsSinceEpoch(); auto cur_time = QDateTime::currentMSecsSinceEpoch();
Capture->AddFrame(frame, cur_time); Capture->AddFrame(frame, cur_time);
} }
...@@ -85,7 +92,7 @@ HRESULT DeckLinkInputDevice::VideoInputFrameArrived(IDeckLinkVideoInputFrame* vi ...@@ -85,7 +92,7 @@ HRESULT DeckLinkInputDevice::VideoInputFrameArrived(IDeckLinkVideoInputFrame* vi
{ {
//qDebug() << "DeckLinkInputDevice get audio packet--------------" << "\n"; //qDebug() << "DeckLinkInputDevice get audio packet--------------" << "\n";
auto cur_time = QDateTime::currentMSecsSinceEpoch(); auto cur_time = QDateTime::currentMSecsSinceEpoch();
std::shared_ptr<AudioPacket> audio_ptr = std::make_shared<AudioPacket>(audioPacket, cur_time); std::shared_ptr<AudioPacket> audio_ptr = std::make_shared<AudioPacket>(audioPacket, cur_time, AudioChannel);
emit PushAudioFrame(audio_ptr); emit PushAudioFrame(audio_ptr);
} }
...@@ -229,7 +236,7 @@ bool DeckLinkInputDevice::StartCapture(BMDDisplayMode displayMode, IDeckLinkScre ...@@ -229,7 +236,7 @@ bool DeckLinkInputDevice::StartCapture(BMDDisplayMode displayMode, IDeckLinkScre
if (DeckLinkInput->EnableVideoInput(displayMode, bmdFormat10BitYUV, videoInputFlags) != S_OK) if (DeckLinkInput->EnableVideoInput(displayMode, bmdFormat10BitYUV, videoInputFlags) != S_OK)
return false; return false;
if (DeckLinkInput->EnableAudioInput(bmdAudioSampleRate48kHz, bmdAudioSampleType16bitInteger, 2) != S_OK) if (DeckLinkInput->EnableAudioInput(bmdAudioSampleRate48kHz, bmdAudioSampleType16bitInteger, AudioChannel) != S_OK)
return false; return false;
// Set the capture // Set the capture
......
...@@ -33,7 +33,7 @@ namespace ...@@ -33,7 +33,7 @@ namespace
} }
} }
DeckLinkInputPage::DeckLinkInputPage() : SelectedDevice(nullptr), NDIOutput(nullptr) DeckLinkInputPage::DeckLinkInputPage() : SelectedDevice(nullptr), NDIOutput(nullptr), Index(0)
{ {
FormLayout = new QFormLayout(this); FormLayout = new QFormLayout(this);
...@@ -85,10 +85,11 @@ DeckLinkInputPage::~DeckLinkInputPage() ...@@ -85,10 +85,11 @@ DeckLinkInputPage::~DeckLinkInputPage()
} }
void DeckLinkInputPage::SetPreviewSize(QSize previewSize) void DeckLinkInputPage::SetPreviewSize(QSize previewSize, int index)
{ {
PreviewView->resize(previewSize); PreviewView->resize(previewSize);
PreviewView->Clear(); PreviewView->Clear();
Index = index;
} }
void DeckLinkInputPage::customEvent(QEvent* event) void DeckLinkInputPage::customEvent(QEvent* event)
...@@ -246,7 +247,7 @@ void DeckLinkInputPage::InputDeviceChanged(int selectedDeviceIndex) ...@@ -246,7 +247,7 @@ void DeckLinkInputPage::InputDeviceChanged(int selectedDeviceIndex)
void DeckLinkInputPage::RequestedDeviceGranted(ComPtr<IDeckLink>& device) void DeckLinkInputPage::RequestedDeviceGranted(ComPtr<IDeckLink>& device)
{ {
START_SLOT_TIME_COUNTER START_SLOT_TIME_COUNTER
SelectedDevice = MakeComPtr<DeckLinkInputDevice>(this, device); SelectedDevice = MakeComPtr<DeckLinkInputDevice>(this, device, Index);
// Register profile callback with newly selected device`s profile manager // Register profile callback with newly selected device`s profile manager
if (SelectedDevice) if (SelectedDevice)
......
#include "BlackMagicDesign/DeckLinkOutputDevice.h" #include "BlackMagicDesign/DeckLinkOutputDevice.h"
#include <QDebug> #include <QDebug>
#include <stdexcept> #include <stdexcept>
#include <map>
#include "BlackMagicDesign/ScreenPreviewCallback.h" #include "BlackMagicDesign/ScreenPreviewCallback.h"
#include "BlackMagicDesign/ReferenceTime.h" #include "BlackMagicDesign/ReferenceTime.h"
extern int OutputDeleyTime; extern int OutputDeleyTime;
extern int OutputPlayMode; extern int OutputPlayMode;
extern int AudioChannel;
extern std::map<qint32, qint32> map_output_delay;
#define OUTPUT_1080 1 #define OUTPUT_1080 1
#define AUDIOMAXSIZE (OutputDeleyTime + 3) * 50 #define AUDIOMAXSIZE (OutputDeleyTime + 3) * 50
DeckLinkOutputDevice::DeckLinkOutputDevice(ComPtr<IDeckLink>& decklink, int videoPrerollSize,int index) DeckLinkOutputDevice::DeckLinkOutputDevice(ComPtr<IDeckLink>& decklink, int videoPrerollSize,int index)
: RefCount(1), : RefCount(1),
state(PlaybackState::Idle), state(PlaybackState::Idle),
...@@ -25,7 +29,9 @@ DeckLinkOutputDevice::DeckLinkOutputDevice(ComPtr<IDeckLink>& decklink, int vide ...@@ -25,7 +29,9 @@ DeckLinkOutputDevice::DeckLinkOutputDevice(ComPtr<IDeckLink>& decklink, int vide
// Check that device has an output interface, this will throw an error if using a capture-only device such as DeckLink Mini Recorder // Check that device has an output interface, this will throw an error if using a capture-only device such as DeckLink Mini Recorder
if (!deckLinkOutput) if (!deckLinkOutput)
throw std::runtime_error("DeckLink device does not have an output interface."); throw std::runtime_error("DeckLink device does not have an output interface.");
current_sleep_ms = OutputDeleyTime * 1000; //current_sleep_ms = OutputDeleyTime * 1000;
InitResource();
} }
// IUnknown methods // IUnknown methods
...@@ -183,13 +189,13 @@ bool DeckLinkOutputDevice::StartPlayback(BMDDisplayMode displayMode, bool enable ...@@ -183,13 +189,13 @@ bool DeckLinkOutputDevice::StartPlayback(BMDDisplayMode displayMode, bool enable
} }
if (deckLinkOutput->EnableVideoOutput(outputDisplayMode, outputFlags) != S_OK) if (deckLinkOutput->EnableVideoOutput(outputDisplayMode, bmdVideoOutputFlagDefault) != S_OK)
{ {
qDebug() << "call EnableVideoOutput fuc is failure" << "\n"; qDebug() << "call EnableVideoOutput fuc is failure" << "\n";
return false; return false;
} }
if (deckLinkOutput->EnableAudioOutput(bmdAudioSampleRate48kHz,bmdAudioSampleType16bitInteger,2,bmdAudioOutputStreamTimestamped) != S_OK) if (deckLinkOutput->EnableAudioOutput(bmdAudioSampleRate48kHz,bmdAudioSampleType16bitInteger, AudioChannel,bmdAudioOutputStreamTimestamped) != S_OK)
{ {
qDebug() << "call EnableAudioOutput fuc is failure" << "\n"; qDebug() << "call EnableAudioOutput fuc is failure" << "\n";
return false; return false;
...@@ -337,9 +343,9 @@ bool DeckLinkOutputDevice::getReferenceSignalMode(BMDDisplayMode* mode) ...@@ -337,9 +343,9 @@ bool DeckLinkOutputDevice::getReferenceSignalMode(BMDDisplayMode* mode)
auto now_time = QDateTime::currentMSecsSinceEpoch(); auto now_time = QDateTime::currentMSecsSinceEpoch();
auto dever_time = now_time - outputImage->getInputFrameCurTimeStamp(); auto dever_time = now_time - outputImage->getInputFrameCurTimeStamp();
//qDebug() << "index:"<<Index << "input frame cur time:" << outputImage->getInputFrameCurTimeStamp() << " now time:" << now_time << " dever time:" << dever_time << "\n"; //qDebug() << "index:"<<Index << "input frame cur time:" << outputImage->getInputFrameCurTimeStamp() << " now time:" << now_time << " dever time:" << dever_time << "\n";
if (dever_time < OutputDeleyTime * 1000) if (dever_time < output_deley_ms)
{ {
current_sleep_ms = OutputDeleyTime * 1000 - dever_time; current_sleep_ms = output_deley_ms - dever_time;
std::this_thread::sleep_for(std::chrono::milliseconds(current_sleep_ms)); std::this_thread::sleep_for(std::chrono::milliseconds(current_sleep_ms));
} }
...@@ -359,13 +365,34 @@ bool DeckLinkOutputDevice::getReferenceSignalMode(BMDDisplayMode* mode) ...@@ -359,13 +365,34 @@ bool DeckLinkOutputDevice::getReferenceSignalMode(BMDDisplayMode* mode)
//videoFrame->setOutputFrameScheduledReferenceTime(ReferenceTime::getSteadyClockUptimeCOunt()); //videoFrame->setOutputFrameScheduledReferenceTime(ReferenceTime::getSteadyClockUptimeCOunt());
//if(deckLinkOutput->ScheduleVideoFrame(outputFrame.Get(), outputFrame->getVideoStreamTime(), frameDuration, frameTimescale) != S_OK) //if(deckLinkOutput->ScheduleVideoFrame(outputFrame.Get(), outputFrame->getVideoStreamTime(), frameDuration, frameTimescale) != S_OK)
if(deckLinkOutput->DisplayVideoFrameSync(videoFrame.Get())) auto ret = deckLinkOutput->DisplayVideoFrameSync(videoFrame.Get());
if (ret != S_OK)
{ {
fprintf(stderr, "Unable to schedule output video frame\n"); if (ret == E_ACCESSDENIED) {
qDebug() << "Unable to schedule output video frame"<<"\n"; qDebug() << "The video output is not enabled." << "\n";
break; }
else if (ret == E_INVALIDARG)
{
qDebug() << "The frame attributes are invalid." << "\n";
}
else if (ret == E_FAIL)
{
qDebug() << "Failure." << "\n";
}
else
{
qDebug() << "other error code." << "\n";
}
} }
//if(deckLinkOutput->DisplayVideoFrameSync(videoFrame.Get()))
//{
// fprintf(stderr, "Unable to schedule output video frame\n");
// qDebug() << "Unable to schedule output video frame"<<"\n";
// //break;
// continue;
//}
//scheduledFramesList.push_back(outputFrame); //scheduledFramesList.push_back(outputFrame);
...@@ -391,9 +418,9 @@ bool DeckLinkOutputDevice::getReferenceSignalMode(BMDDisplayMode* mode) ...@@ -391,9 +418,9 @@ bool DeckLinkOutputDevice::getReferenceSignalMode(BMDDisplayMode* mode)
auto audio_tm = audio_packet->frame_time_stamp; auto audio_tm = audio_packet->frame_time_stamp;
auto dever_time = now_time - audio_tm; auto dever_time = now_time - audio_tm;
//qDebug() << "index:" << Index << "input frame cur time:" << outputImage->getInputFrameCurTimeStamp() << " now time:" << now_time << " dever time:" << dever_time << "\n"; //qDebug() << "index:" << Index << "input frame cur time:" << outputImage->getInputFrameCurTimeStamp() << " now time:" << now_time << " dever time:" << dever_time << "\n";
if (dever_time < OutputDeleyTime * 1000) if (dever_time < output_deley_ms)
{ {
current_sleep_ms = OutputDeleyTime * 1000 - dever_time; current_sleep_ms = output_deley_ms - dever_time;
std::this_thread::sleep_for(std::chrono::milliseconds(current_sleep_ms)); std::this_thread::sleep_for(std::chrono::milliseconds(current_sleep_ms));
} }
...@@ -507,14 +534,13 @@ void DeckLinkOutputDevice::AddFrame(std::shared_ptr<Image> image) ...@@ -507,14 +534,13 @@ void DeckLinkOutputDevice::AddFrame(std::shared_ptr<Image> image)
return; return;
if (outputVideoFrameQueue.Size() >= 4) if (outputVideoFrameQueue.Size() >= 4)
qDebug() << "index:" << Index << "DeckLinkOutputDevice::AddFrame video---qsize:" << "\t" << outputVideoFrameQueue.Size() << "\n"; qDebug() << "DeckLinkOutputDevice::AddFrame video---qsize:" << "\t" << outputVideoFrameQueue.Size() << "\n";
if (outputVideoFrameQueue.Size() > AUDIOMAXSIZE) if (outputVideoFrameQueue.Size() > audio_max_size)
{ {
outputVideoFrameQueue.Reset(); outputVideoFrameQueue.Reset();
} }
if(image) outputVideoFrameQueue.Push(image);
outputVideoFrameQueue.Push(image);
END_SLOT_TIME_COUNTER END_SLOT_TIME_COUNTER
} }
void DeckLinkOutputDevice::AddAudioFrame(std::shared_ptr<AudioPacket> audio_packet) void DeckLinkOutputDevice::AddAudioFrame(std::shared_ptr<AudioPacket> audio_packet)
...@@ -523,7 +549,7 @@ void DeckLinkOutputDevice::AddAudioFrame(std::shared_ptr<AudioPacket> audio_pack ...@@ -523,7 +549,7 @@ void DeckLinkOutputDevice::AddAudioFrame(std::shared_ptr<AudioPacket> audio_pack
if (outputAudioFrameQueue.Size() >= 4) if (outputAudioFrameQueue.Size() >= 4)
qDebug() << "index:" << Index << "DeckLinkOutputDevice::AddAudioFrame audio---qsize:" << "\t" << outputAudioFrameQueue.Size() << "\n"; qDebug() << "index:" << Index << "DeckLinkOutputDevice::AddAudioFrame audio---qsize:" << "\t" << outputAudioFrameQueue.Size() << "\n";
if (outputAudioFrameQueue.Size() > AUDIOMAXSIZE) if (outputAudioFrameQueue.Size() > audio_max_size)
{ {
outputAudioFrameQueue.Reset(); outputAudioFrameQueue.Reset();
} }
...@@ -533,3 +559,37 @@ void DeckLinkOutputDevice::AddAudioFrame(std::shared_ptr<AudioPacket> audio_pack ...@@ -533,3 +559,37 @@ void DeckLinkOutputDevice::AddAudioFrame(std::shared_ptr<AudioPacket> audio_pack
} }
END_SLOT_TIME_COUNTER END_SLOT_TIME_COUNTER
} }
void DeckLinkOutputDevice::InitResource()
{
if (deckLink)
{
dlstring_t displayName;
QString deviceName;
if (deckLink->GetDisplayName(&displayName) == S_OK)
{
deviceName = DlToQString(displayName);
DeleteString(displayName);
QRegExp rx("\\d+");
rx.indexIn(deviceName, 0);
QString deviceIdStr;
deviceIdStr = rx.cap(0);
Device_id = deviceIdStr.toInt();
if (Device_id > 4)
{
int key = Device_id - 4;
int value = map_output_delay[key];
if (value < 1 * 1000)
{
output_deley_ms = 1 * 1000;
}
else output_deley_ms = value;
current_sleep_ms = output_deley_ms;
audio_max_size = (output_deley_ms / 1000 + 3) * 50;
}
}
}
}
\ No newline at end of file
...@@ -272,7 +272,8 @@ void DeckLinkOutputPage::RequestedDeviceGranted(ComPtr<IDeckLink>& device) ...@@ -272,7 +272,8 @@ void DeckLinkOutputPage::RequestedDeviceGranted(ComPtr<IDeckLink>& device)
void DeckLinkOutputPage::FormatChanged(BMDDisplayMode displayMode) void DeckLinkOutputPage::FormatChanged(BMDDisplayMode displayMode)
{ {
BMDDisplayMode displayMode_ = displayMode; BMDDisplayMode displayMode_ = displayMode;
BMDPixelFormat pixelFormat = bmdFormat10BitYUV; //BMDPixelFormat pixelFormat = bmdFormat10BitYUV;
BMDPixelFormat pixelFormat = bmdFormat8BitBGRA;
SelectedDevice->StartPlayback(displayMode_, false, pixelFormat, false, PreviewView->GetDelegate()); SelectedDevice->StartPlayback(displayMode_, false, pixelFormat, false, PreviewView->GetDelegate());
} }
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include <QDebug> #include <QDebug>
#include <qglobal.h> #include <qglobal.h>
#include <vector> #include <vector>
#include <map>
#include "Utils/Platform.h" #include "Utils/Platform.h"
#include "Utils/CustomEvents.h" #include "Utils/CustomEvents.h"
#include "Utils/Image.h" #include "Utils/Image.h"
...@@ -17,13 +18,25 @@ int FrameRate = 50; ...@@ -17,13 +18,25 @@ int FrameRate = 50;
int PrvwFlag = 0; int PrvwFlag = 0;
int OutputPlayMode = 0; int OutputPlayMode = 0;
int BlackBottomHeight = 240; int BlackBottomHeight = 240;
int AudioChannel = 2;
int ScaleMode = 0;
qint64 StartTimeStamp = 0; qint64 StartTimeStamp = 0;
std::map<qint32, qint32> map_output_delay;
std::map<qint32, qint32> map_scale_mode;
int main_ver = 1;
int mid_ver = 0;
int small_ver = 2;
MomentaMedia::MomentaMedia(QWidget *parent) MomentaMedia::MomentaMedia(QWidget *parent)
: QMainWindow(parent) : QMainWindow(parent)
{ {
ReadSettings(); ReadSettings();
ui.setupUi(this); ui.setupUi(this);
std::string version = std::to_string(main_ver) + "." + std::to_string(mid_ver) + "." + std::to_string(small_ver);
std::string title = "MomentaMedia(v" + version + ")";
setWindowTitle(QString::fromStdString(title));
StartTimeStamp = QDateTime::currentMSecsSinceEpoch(); StartTimeStamp = QDateTime::currentMSecsSinceEpoch();
setWindowFlags(Qt::Window | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint); setWindowFlags(Qt::Window | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint);
...@@ -59,7 +72,7 @@ MomentaMedia::MomentaMedia(QWidget *parent) ...@@ -59,7 +72,7 @@ MomentaMedia::MomentaMedia(QWidget *parent)
for(size_t i = 0; i < InputDevicePages.size(); i++) for(size_t i = 0; i < InputDevicePages.size(); i++)
{ {
InputDevicePages[i]->SetPreviewSize(previewViewSize); InputDevicePages[i]->SetPreviewSize(previewViewSize, i);
PreviewLayout->addWidget(InputDevicePages[i]->GetPreviewView(), (int)i / 4, (int)i % 4); PreviewLayout->addWidget(InputDevicePages[i]->GetPreviewView(), (int)i / 4, (int)i % 4);
connect(InputDevicePages[i], &DeckLinkInputPage::RequestDeckLink, this, std::bind(&MomentaMedia::RequestInputDevice, this, InputDevicePages[i], std::placeholders::_1)); connect(InputDevicePages[i], &DeckLinkInputPage::RequestDeckLink, this, std::bind(&MomentaMedia::RequestInputDevice, this, InputDevicePages[i], std::placeholders::_1));
...@@ -274,6 +287,16 @@ void MomentaMedia::RemoveDevice(ComPtr<IDeckLink>& deckLink) ...@@ -274,6 +287,16 @@ void MomentaMedia::RemoveDevice(ComPtr<IDeckLink>& deckLink)
auto deviceIter = InputDevices.find(deckLink); auto deviceIter = InputDevices.find(deckLink);
if (deviceIter != InputDevices.end()) if (deviceIter != InputDevices.end())
{ {
{
dlstring_t displayName;
QString deviceName;
if (deckLink->GetDisplayName(&displayName) == S_OK)
{
deviceName = DlToQString(displayName);
DeleteString(displayName);
}
qDebug() << deviceName << " remove device!!!" << "\n";
}
deviceIter = InputDevices.erase(deviceIter); deviceIter = InputDevices.erase(deviceIter);
// Check whether device to remove was selected device, if so then stop capture // Check whether device to remove was selected device, if so then stop capture
...@@ -511,8 +534,8 @@ void MomentaMedia::ReadSettings() ...@@ -511,8 +534,8 @@ void MomentaMedia::ReadSettings()
QSettings settings(ini_path, QSettings::IniFormat); QSettings settings(ini_path, QSettings::IniFormat);
settings.beginGroup("DELEYTIME"); settings.beginGroup("DELEYTIME");
OutputDeleyTime = settings.value("DELEY_TIME", "").toInt(); OutputDeleyTime = settings.value("DELEY_TIME", "").toInt();
if (OutputDeleyTime < 1) OutputDeleyTime = 1; if (OutputDeleyTime < 1 * 1000) OutputDeleyTime = 1 * 1000;
else if (OutputDeleyTime > 20) OutputDeleyTime = 20; else if (OutputDeleyTime > 20 * 1000) OutputDeleyTime = 20 * 1000;
FrontDeleyTime = settings.value("FRONT_DELEY_TIME", "").toInt(); FrontDeleyTime = settings.value("FRONT_DELEY_TIME", "").toInt();
if (FrontDeleyTime < 1 || FrontDeleyTime > OutputDeleyTime) FrontDeleyTime = 1; if (FrontDeleyTime < 1 || FrontDeleyTime > OutputDeleyTime) FrontDeleyTime = 1;
...@@ -523,9 +546,34 @@ void MomentaMedia::ReadSettings() ...@@ -523,9 +546,34 @@ void MomentaMedia::ReadSettings()
if (BlackBottomHeight < 0) BlackBottomHeight = 0; if (BlackBottomHeight < 0) BlackBottomHeight = 0;
else if (BlackBottomHeight > 480) BlackBottomHeight = 480; else if (BlackBottomHeight > 480) BlackBottomHeight = 480;
AudioChannel = settings.value("AUDIO_CHANNEL").toInt();
if (AudioChannel <= 0 || AudioChannel > 20) AudioChannel = 2;
PrvwFlag = settings.value("PRVW_FLAG", "").toInt(); PrvwFlag = settings.value("PRVW_FLAG", "").toInt();
OutputPlayMode = settings.value("OUTPUT_PLAY_MODE", "").toInt(); OutputPlayMode = settings.value("OUTPUT_PLAY_MODE", "").toInt();
for(int i = 1;i <= 4;i++)
{
std::string key = "DELEY_TIME_" + std::to_string(i);
int value = settings.value(QString::fromStdString(key), "").toInt();
if (value < 1 * 1000) value = 1 * 1000;
//else if (value > 60 * 1000) value = 60 * 1000;
map_output_delay[i] = value;
}
ScaleMode = settings.value("SCALE_MODE", "").toInt();
if (ScaleMode < 0) ScaleMode = 0;
else if (ScaleMode > 3) ScaleMode = 3;
for (int i = 1;i <= 4;i++)
{
std::string key = "SCALE_MODE_" + std::to_string(i);
int value = settings.value(QString::fromStdString(key), "").toInt();
if (value < 0) value = 0;
else if (value > 3) value = 3;
map_scale_mode[i] = value;
}
//qDebug() << "deleyTime=" << deleyTime << endl; //qDebug() << "deleyTime=" << deleyTime << endl;
settings.endGroup(); settings.endGroup();
} }
\ No newline at end of file
...@@ -9,6 +9,9 @@ extern int OutputDeleyTime; ...@@ -9,6 +9,9 @@ extern int OutputDeleyTime;
extern int FrameRate; extern int FrameRate;
extern int FrontDeleyTime; extern int FrontDeleyTime;
extern int BlackBottomHeight; extern int BlackBottomHeight;
//extern int ScaleMode;
extern std::map<qint32, qint32> map_output_delay;
extern std::map<qint32, qint32> map_scale_mode;
ProcessThread::ProcessThread() ProcessThread::ProcessThread()
: sendFrames(0), : sendFrames(0),
...@@ -18,6 +21,8 @@ ProcessThread::ProcessThread() ...@@ -18,6 +21,8 @@ ProcessThread::ProcessThread()
recvROIStartTime(QDateTime::currentMSecsSinceEpoch()) recvROIStartTime(QDateTime::currentMSecsSinceEpoch())
{ {
idx = s_count++; idx = s_count++;
int key = idx + 1;
output_deley_time = map_output_delay[key];
minTaskImageQueueSize = FrontDeleyTime * FrameRate; minTaskImageQueueSize = FrontDeleyTime * FrameRate;
} }
...@@ -244,9 +249,9 @@ void ProcessThread::cutRunFront() ...@@ -244,9 +249,9 @@ void ProcessThread::cutRunFront()
{ {
qDebug() << "idx:" << idx << "taskImageQueue size:"<< taskImageQueue.Size() <<",min_size:"<< min_size << endl; qDebug() << "idx:" << idx << "taskImageQueue size:"<< taskImageQueue.Size() <<",min_size:"<< min_size << endl;
}*/ }*/
while (taskImageQueue.Size() > (FrameRate * (OutputDeleyTime + FrontDeleyTime))) while (taskImageQueue.Size() > (FrameRate * (output_deley_time / 1000 + FrontDeleyTime)))
{ {
qDebug() << "idx:" << idx << ",----------------lost Image size:" << taskImageQueue.Size() - (OutputDeleyTime + FrontDeleyTime) << endl; qDebug() << "idx:" << idx << ",----------------lost Image size:" << taskImageQueue.Size() - (output_deley_time / 1000 + FrontDeleyTime) << endl;
taskImageQueue.Pop(image); taskImageQueue.Pop(image);
} }
if (cutRuleMap.size() > CUTBUFFERMAXSIZE && image) if (cutRuleMap.size() > CUTBUFFERMAXSIZE && image)
...@@ -382,9 +387,9 @@ void ProcessThread::cutRun() ...@@ -382,9 +387,9 @@ void ProcessThread::cutRun()
} }
} }
} }
while (taskImageQueue.Size() > (FrameRate * OutputDeleyTime)) while (taskImageQueue.Size() > (FrameRate * (output_deley_time / 1000)))
{ {
qDebug() << "idx:" << idx << ",----------------lost Image size:" << taskImageQueue.Size() - (FrameRate * OutputDeleyTime) << endl; qDebug() << "idx:" << idx << ",----------------lost Image size:" << taskImageQueue.Size() - (FrameRate * output_deley_time / 1000) << endl;
taskImageQueue.Pop(image); taskImageQueue.Pop(image);
//qDebug() << "idx:" << idx << ",lost timestamp:" << image->getInputFrameCurTimeStamp() << "\n"; //qDebug() << "idx:" << idx << ",lost timestamp:" << image->getInputFrameCurTimeStamp() << "\n";
...@@ -503,10 +508,11 @@ void ProcessThread::WorkCutImage(std::shared_ptr<Image>& pImage, RoiMessage& roi ...@@ -503,10 +508,11 @@ void ProcessThread::WorkCutImage(std::shared_ptr<Image>& pImage, RoiMessage& roi
roi.X(), roi.Y(), 1920, 1080, roi.Width(), roi.Height(), roi.X(), roi.Y(), 1920, 1080, roi.Width(), roi.Height(),
libyuv::kRotate90, libyuv::FOURCC_ARGB); libyuv::kRotate90, libyuv::FOURCC_ARGB);
int key = idx + 1;
int scale_mode = map_scale_mode[key];
uint8_t* buff2 = new uint8_t[1440 * 1080 << 2]; uint8_t* buff2 = new uint8_t[1440 * 1080 << 2];
libyuv::ARGBScale(buff1, (roi.Height() << 2), roi.Height(), roi.Width(), libyuv::ARGBScale(buff1, (roi.Height() << 2), roi.Height(), roi.Width(),
buff2, 1440 << 2, 1440, 1080, libyuv::FilterMode::kFilterNone); buff2, 1440 << 2, 1440, 1080, libyuv::FilterMode(scale_mode));
uint8_t* buff3 = new uint8_t[1920 * 1080 << 2]; uint8_t* buff3 = new uint8_t[1920 * 1080 << 2];
memset(buff3, 0, (1920 * 1080 << 2)); memset(buff3, 0, (1920 * 1080 << 2));
......
#include "Utils/AudioPacket.h" #include "Utils/AudioPacket.h"
AudioPacket::AudioPacket(IDeckLinkAudioInputPacket* audioPacket, qint64& timestamp):frame_time_stamp(timestamp),channel(2) AudioPacket::AudioPacket(IDeckLinkAudioInputPacket* audioPacket, qint64& timestamp, qint32 channel):frame_time_stamp(timestamp),channel(channel)
{ {
if (audioPacket) if (audioPacket)
{ {
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -4,10 +4,24 @@ ...@@ -4,10 +4,24 @@
;PRVW_FLAG 0-表示关闭预览 1-表示打开预览 ;PRVW_FLAG 0-表示关闭预览 1-表示打开预览
;FRAME_RATE 表示帧率 如1080p50 50帧率 1080i50 25帧率 ;FRAME_RATE 表示帧率 如1080p50 50帧率 1080i50 25帧率
;OUTPUT_PLAY_MODE 输出sdi模式 0-表示和输入格式一样 1-表示1080i输出 ;OUTPUT_PLAY_MODE 输出sdi模式 0-表示和输入格式一样 1-表示1080i输出
;AUDIO_CHANNEL音频通道数 默认是2
;DELEY_TIME_1/_2/_3/_4 对应绑卡的四路输入接口的延迟时间 单位是毫秒 最小2000ms
;SCALE_MODE 取值分别是0、1、2、3 其中缩放质量由低到高 0质量最低 3质量最高
[DELEYTIME] [DELEYTIME]
DELEY_TIME=2
FRONT_DELEY_TIME=1 FRONT_DELEY_TIME=1
FRAME_RATE=25 FRAME_RATE=25
PRVW_FLAG=0 PRVW_FLAG=1
OUTPUT_PLAY_MODE=0 OUTPUT_PLAY_MODE=0
BLACK_BOTTOM_HEIGHT=0 BLACK_BOTTOM_HEIGHT=0
AUDIO_CHANNEL=2
SCALE_MODE=0
SCALE_MODE_1=0
SCALE_MODE_2=1
SCALE_MODE_3=2
SCALE_MODE_4=3
DELEY_TIME=2000
DELEY_TIME_1=2000
DELEY_TIME_2=3000
DELEY_TIME_3=4000
DELEY_TIME_4=5000
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment