UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
aja_common.hpp File Reference
#include <map>
#include <ntv2enums.h>
#include "types.h"
Include dependency graph for aja_common.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  ultragrid
 
namespace  ultragrid::aja
 

Macros

#define NTV2_AUDIOSIZE_MAX   (401 * 1024)
 

Functions

void print_aja_device_details (CNTV2Card *device)
 
void vc_copylineR12AtoR12L (unsigned char *__restrict dst, const unsigned char *__restrict src, int dstlen, int rshift, int gshift, int bshift)
 
void vc_copylineR12LtoR12A (unsigned char *__restrict dst, const unsigned char *__restrict src, int dstlen, int rshift, int gshift, int bshift)
 

Variables

static const std::map< NTV2FrameBufferFormat, codec_t > ultragrid::aja::codec_map
 

Detailed Description

Author
Martin Pulec pulec.nosp@m.@ces.nosp@m.net.c.nosp@m.z

Definition in file aja_common.hpp.

Macro Definition Documentation

◆ NTV2_AUDIOSIZE_MAX

#define NTV2_AUDIOSIZE_MAX   (401 * 1024)

Definition at line 63 of file aja_common.hpp.

Referenced by display_aja_put_audio_frame().

Function Documentation

◆ print_aja_device_details()

void print_aja_device_details ( CNTV2Card * device)

Definition at line 168 of file aja_common.cpp.

169{
170 printf("\t%s\n", device->GetDescription().c_str());
171
172 color_printf("\t" TUNDERLINE("Device ID:") " 0x%08x\n",
173 device->GetBaseDeviceID());
174
175 ULWord dev_pci_id = 0;
176 device->GetPCIDeviceID(dev_pci_id);
177 color_printf("\t" TUNDERLINE("Device PCI ID:") " 0x%08x\n", dev_pci_id);
178
179 uint64_t serial_nr = device->GetSerialNumber();
180 color_printf("\t" TUNDERLINE("Serial Number:") " 0x%" PRIx64 "\n",
181 serial_nr);
182
183 color_printf("\t" TUNDERLINE("Video Inputs:") " %hu\n",
184 device->features().GetNumVideoInputs());
185 printf("\t" TUNDERLINE("Video Outputs:") " %hu\n",
186 device->features().GetNumVideoOutputs());
187}
int color_printf(const char *format,...)
#define TUNDERLINE(x)
Definition color_out.h:71

References color_printf(), and TUNDERLINE.

Referenced by show_help(), and ultragrid::aja::display::show_help().

Here is the call graph for this function:

◆ vc_copylineR12AtoR12L()

void vc_copylineR12AtoR12L ( unsigned char *__restrict dst,
const unsigned char *__restrict src,
int dstlen,
int rshift,
int gshift,
int bshift )

Converts AJA NTV2_FBF_12BIT_RGB_PACKED to R12L

Definition at line 119 of file aja_common.cpp.

121{
122 UNUSED(rshift);
123 UNUSED(gshift);
124 UNUSED(bshift);
125
126 OPTIMIZED_FOR (int x = 0; x <= dstlen - 36; x += 36) {
127 *dst++ = src[BYTE_SWAP(0)] << 4 | src[BYTE_SWAP(1)] >> 4; // r0
128 *dst++ = src[BYTE_SWAP(2)] << 4 | src[BYTE_SWAP(0)] >> 4; // r0+g0
129 *dst++ = src[BYTE_SWAP(1)] << 4 | src[BYTE_SWAP(2)] >> 4; // g0
130 *dst++ = src[BYTE_SWAP(3)] << 4 | src[BYTE_SWAP(4)] >> 4; // b0
131 *dst++ = src[BYTE_SWAP(5)] << 4 | src[BYTE_SWAP(3)] >> 4; // b0+r1
132 *dst++ = src[BYTE_SWAP(4)] << 4 | src[BYTE_SWAP(5)] >> 4; // r1
133 *dst++ = src[BYTE_SWAP(6)] << 4 | src[BYTE_SWAP(7)] >> 4; // g1
134 *dst++ = src[BYTE_SWAP(8)] << 4 | src[BYTE_SWAP(6)] >> 4; // g1+b1
135 *dst++ = src[BYTE_SWAP(7)] << 4 | src[BYTE_SWAP(8)] >> 4;
136 *dst++ = src[BYTE_SWAP(9)] << 4 | src[BYTE_SWAP(10)] >> 4;
137 *dst++ = src[BYTE_SWAP(11)] << 4 | src[BYTE_SWAP(9)] >> 4;
138 *dst++ = src[BYTE_SWAP(10)] << 4 | src[BYTE_SWAP(11)] >> 4;
139 *dst++ = src[BYTE_SWAP(12)] << 4 | src[BYTE_SWAP(13)] >> 4;
140 *dst++ = src[BYTE_SWAP(14)] << 4 | src[BYTE_SWAP(12)] >> 4;
141 *dst++ = src[BYTE_SWAP(13)] << 4 | src[BYTE_SWAP(14)] >> 4;
142 *dst++ = src[BYTE_SWAP(15)] << 4 | src[BYTE_SWAP(16)] >> 4;
143 *dst++ = src[BYTE_SWAP(17)] << 4 | src[BYTE_SWAP(15)] >> 4;
144 *dst++ = src[BYTE_SWAP(16)] << 4 | src[BYTE_SWAP(17)] >> 4;
145 *dst++ = src[BYTE_SWAP(18)] << 4 | src[BYTE_SWAP(19)] >> 4;
146 *dst++ = src[BYTE_SWAP(20)] << 4 | src[BYTE_SWAP(18)] >> 4;
147 *dst++ = src[BYTE_SWAP(19)] << 4 | src[BYTE_SWAP(20)] >> 4;
148 *dst++ = src[BYTE_SWAP(21)] << 4 | src[BYTE_SWAP(22)] >> 4;
149 *dst++ = src[BYTE_SWAP(23)] << 4 | src[BYTE_SWAP(21)] >> 4;
150 *dst++ = src[BYTE_SWAP(22)] << 4 | src[BYTE_SWAP(23)] >> 4; // 23 - R5u - @todo problem here
151 *dst++ = src[BYTE_SWAP(24)] << 4 | src[BYTE_SWAP(25)] >> 4;
152 *dst++ = src[BYTE_SWAP(26)] << 4 | src[BYTE_SWAP(24)] >> 4;
153 *dst++ = src[BYTE_SWAP(25)] << 4 | src[BYTE_SWAP(26)] >> 4;
154 *dst++ = src[BYTE_SWAP(27)] << 4 | src[BYTE_SWAP(28)] >> 4;
155 *dst++ = src[BYTE_SWAP(29)] << 4 | src[BYTE_SWAP(27)] >> 4;
156 *dst++ = src[BYTE_SWAP(28)] << 4 | src[BYTE_SWAP(29)] >> 4;
157 *dst++ = src[BYTE_SWAP(30)] << 4 | src[BYTE_SWAP(31)] >> 4;
158 *dst++ = src[BYTE_SWAP(32)] << 4 | src[BYTE_SWAP(30)] >> 4;
159 *dst++ = src[BYTE_SWAP(31)] << 4 | src[BYTE_SWAP(32)] >> 4;
160 *dst++ = src[BYTE_SWAP(33)] << 4 | src[BYTE_SWAP(34)] >> 4;
161 *dst++ = src[BYTE_SWAP(35)] << 4 | src[BYTE_SWAP(33)] >> 4;
162 *dst++ = src[BYTE_SWAP(34)] << 4 | src[BYTE_SWAP(35)] >> 4;
163 src += 36;
164 }
165}
#define BYTE_SWAP(x)
#define UNUSED(x)
#define OPTIMIZED_FOR
Definition macros.h:127

References BYTE_SWAP, OPTIMIZED_FOR, and UNUSED.

Referenced by vidcap_state_aja::CaptureFrames().

◆ vc_copylineR12LtoR12A()

void vc_copylineR12LtoR12A ( unsigned char *__restrict dst,
const unsigned char *__restrict src,
int dstlen,
int rshift,
int gshift,
int bshift )

Definition at line 67 of file aja_common.cpp.

69{
70 UNUSED(rshift);
71 UNUSED(gshift);
72 UNUSED(bshift);
73
74 OPTIMIZED_FOR (int x = 0; x <= dstlen - 36; x += 36) {
75 *dst++ = src[BYTE_SWAP(1)] << 4 | src[BYTE_SWAP(0)] >> 4; // r0
76 *dst++ = src[BYTE_SWAP(0)] << 4 | src[BYTE_SWAP(2)] >> 4; // r0+g0
77 *dst++ = src[BYTE_SWAP(2)] << 4 | src[BYTE_SWAP(1)] >> 4; // g0
78 *dst++ = src[BYTE_SWAP(4)] << 4 | src[BYTE_SWAP(3)] >> 4; // b0
79 *dst++ = src[BYTE_SWAP(3)] << 4 | src[BYTE_SWAP(5)] >> 4; // b0+r1
80 *dst++ = src[BYTE_SWAP(5)] << 4 | src[BYTE_SWAP(4)] >> 4; // r1
81 *dst++ = src[BYTE_SWAP(7)] << 4 | src[BYTE_SWAP(6)] >> 4; // g1
82 *dst++ = src[BYTE_SWAP(6)] << 4 | src[BYTE_SWAP(8)] >> 4; // g1+b1
83 *dst++ = src[BYTE_SWAP(8)] << 4 | src[BYTE_SWAP(7)] >> 4; // b1
84 *dst++ = src[BYTE_SWAP(10)] << 4 | src[BYTE_SWAP(9)] >> 4; // r2
85 *dst++ = src[BYTE_SWAP(9)] << 4 | src[BYTE_SWAP(11)] >> 4; // r2+g2
86 *dst++ = src[BYTE_SWAP(11)] << 4 | src[BYTE_SWAP(10)] >> 4; // g2
87 *dst++ = src[BYTE_SWAP(13)] << 4 | src[BYTE_SWAP(12)] >> 4; // b2
88 *dst++ = src[BYTE_SWAP(12)] << 4 | src[BYTE_SWAP(14)] >> 4; // b2+r3
89 *dst++ = src[BYTE_SWAP(14)] << 4 | src[BYTE_SWAP(13)] >> 4; // r3
90 *dst++ = src[BYTE_SWAP(16)] << 4 | src[BYTE_SWAP(15)] >> 4; // g3
91 *dst++ = src[BYTE_SWAP(15)] << 4 | src[BYTE_SWAP(17)] >> 4; // g3+b3
92 *dst++ = src[BYTE_SWAP(17)] << 4 | src[BYTE_SWAP(16)] >> 4; // b3
93 *dst++ = src[BYTE_SWAP(19)] << 4 | src[BYTE_SWAP(18)] >> 4; // r4
94 *dst++ = src[BYTE_SWAP(18)] << 4 | src[BYTE_SWAP(20)] >> 4; // r4+g4
95 *dst++ = src[BYTE_SWAP(20)] << 4 | src[BYTE_SWAP(19)] >> 4; // g4
96 *dst++ = src[BYTE_SWAP(22)] << 4 | src[BYTE_SWAP(21)] >> 4; // b4
97 *dst++ = src[BYTE_SWAP(20)] >> 4 | src[BYTE_SWAP(23)] >> 4; // b4+r5
98 *dst++ = src[BYTE_SWAP(23)] << 4 | src[BYTE_SWAP(22)] >> 4; // r5
99 *dst++ = src[BYTE_SWAP(25)] << 4 | src[BYTE_SWAP(24)] >> 4; // g5
100 *dst++ = src[BYTE_SWAP(24)] << 4 | src[BYTE_SWAP(26)] >> 4; // g5+b5
101 *dst++ = src[BYTE_SWAP(26)] << 4 | src[BYTE_SWAP(25)] >> 4; // b5
102 *dst++ = src[BYTE_SWAP(28)] << 4 | src[BYTE_SWAP(27)] >> 4; // r6
103 *dst++ = src[BYTE_SWAP(27)] << 4 | src[BYTE_SWAP(29)] >> 4; // r6+g6
104 *dst++ = src[BYTE_SWAP(29)] << 4 | src[BYTE_SWAP(28)] >> 4; // g6
105 *dst++ = src[BYTE_SWAP(31)] << 4 | src[BYTE_SWAP(30)] >> 4; // b6
106 *dst++ = src[BYTE_SWAP(30)] << 4 | src[BYTE_SWAP(32)] >> 4; // b6+r7
107 *dst++ = src[BYTE_SWAP(32)] << 4 | src[BYTE_SWAP(31)] >> 4; // r7
108 *dst++ = src[BYTE_SWAP(34)] << 4 | src[BYTE_SWAP(33)] >> 4; // g7
109 *dst++ = src[BYTE_SWAP(33)] << 4 | src[BYTE_SWAP(35)] >> 4; // g7+b7
110 *dst++ = src[BYTE_SWAP(35)] << 4 | src[BYTE_SWAP(34)] >> 4; // b7
111 src += 36;
112 }
113}

References BYTE_SWAP, OPTIMIZED_FOR, and UNUSED.

Referenced by display_aja_putf().