UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
aja_common.cpp File Reference
#include "config_msvc.h"
#include <cinttypes>
#include <cstdint>
#include <cstdio>
#include <ntv2card.h>
#include "utils/color_out.h"
#include "aja_common.hpp"
#include "utils/macros.h"
Include dependency graph for aja_common.cpp:

Go to the source code of this file.

Macros

#define BYTE_SWAP(x)
 
#define UNUSED(x)
 

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)
 

Detailed Description

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

Definition in file aja_common.cpp.

Macro Definition Documentation

◆ BYTE_SWAP

#define BYTE_SWAP ( x)
Value:
x

Definition at line 56 of file aja_common.cpp.

Referenced by vc_copylineR12AtoR12L(), and vc_copylineR12LtoR12A().

◆ UNUSED

#define UNUSED ( x)
Value:
((void) x)

Definition at line 63 of file aja_common.cpp.

Referenced by audio_cap_alsa_init(), audio_cap_ca_init(), audio_cap_none_init(), audio_cap_none_read(), audio_cap_pipewire_init(), audio_cap_portaudio_init(), audio_cap_sdi_init(), audio_cap_sdl_mixer_init(), audio_cap_testcard_init(), audio_cap_wasapi_init(), audio_play_dummy_ctl(), audio_play_dummy_reconfigure(), audio_play_none_ctl(), audio_play_none_init(), audio_play_none_put_frame(), audio_play_none_reconfigure(), audio_play_pw_ctl(), audio_play_sdi_done(), av_drm_prime_to_ug_drm_prime(), ayuv64_to_uyvy(), ayuv64_to_v210(), ayuv64_to_y416(), border_get_property(), SampleGrabberCallback::BufferCB(), callback(), cf_crop_init(), cf_deinterlace_filter(), cf_deinterlace_init(), check_database(), check_source(), cineform_decompress(), cineform_decompress_get_priority(), cineform_decompress_get_property(), cipherUpdateRounds(), common_get_property(), compute_loss_intervals(), compute_rtt(), crop_get_property(), ctxErrorHandler(), decode_frame_by_pt(), deinterlace_get_out_desc(), deinterlace_get_property(), des_initialize(), display_aggregate_init(), display_aggregate_probe(), display_blend_probe(), display_blend_put_audio_frame(), display_blend_reconfigure_audio(), display_bluefish444_get_property(), display_bluefish444_init(), display_bluefish444_probe(), display_bluefish444_putf(), display_caca_get_property(), display_caca_init(), display_conference_probe(), display_conference_put_audio_frame(), display_conference_reconfigure_audio(), display_decklink_probe(), display_deltacast_get_property(), display_deltacast_init(), display_deltacast_probe(), display_deltacast_putf(), display_drm_init(), display_drm_probe(), display_dummy_init(), display_dummy_probe(), display_dump_probe(), display_dvs_get_property(), display_dvs_init(), display_dvs_probe(), display_file_init(), display_file_reconfigure_audio(), display_gl_init(), display_multiplier_probe(), display_ndi_get_property(), display_ndi_init(), display_null_get_property(), display_null_init(), display_null_probe(), display_null_put_audio_frame(), display_null_putf(), display_null_reconfigure(), display_null_reconfigure_audio(), display_panogl_init(), display_panogl_probe(), display_pipe_init(), display_pipe_probe(), display_pipe_reconfigure_audio(), display_pw_probe(), display_sage_get_property(), display_sage_init(), display_sage_probe(), display_sage_put_audio_frame(), display_sage_putf(), display_sage_reconfigure_audio(), display_sdl2_probe(), display_sdl_get_property(), display_sdl_probe(), display_unix_sock_get_property(), display_unix_sock_init(), display_unix_sock_probe(), display_unix_sock_put_audio_frame(), display_unix_sock_reconfigure_audio(), display_v4l2_get_property(), display_v4l2_init(), display_v4l2_putf(), display_xrgl_init(), display_xrgl_probe(), done_pcp(), drm_prime_init(), dummy_pcm_get_sample_rates(), dummy_pcm_init(), dxt_glsl_decompress(), dxt_glsl_decompress_get_priority(), dxt_glsl_decompress_get_property(), gbrp_to_rgb(), gbrpXXle_to_r10k(), gbrpXXle_to_r12l(), gbrpXXle_to_rgb(), gpujpeg_decompress(), gpujpeg_decompress_get_property(), gpujpeg_to_dxt_decompress(), gpujpeg_to_dxt_decompress_get_property(), gpujpeg_to_dxt_decompress_reconfigure(), hang_signal_handler(), ihdtv_send(), il_merged_to_upper(), il_upper_to_merged(), init(), init(), init(), init(), init(), init(), init(), init(), init(), init(), init(), init(), init(), init(), init(), InputProc(), interlace_get_out_desc(), interlace_get_property(), interlace_postprocess(), interlaced_3d_get_property(), interlaced_3d_postprocess(), j2k_decompress_get_property(), juice_log_handler(), lavd_flush(), libavcodec_decompress(), memcpy_data(), nv12_to_uyvy(), on_candidate(), open_all(), p010le_to_uyvy(), p010le_to_v210(), pbuf_validate(), platform_sem_init(), display_bluefish444_state::playback_loop(), print_module_usage(), read_scaling_list(), reconfigure_convert_if_needed(), reconfigure_echo(), rgb24_to_uyvy(), rijndael_decrypt(), rijndael_encrypt(), rtcp_recv_r(), rtsp_play(), SampleGrabberCallback::SampleCB(), scale_get_property(), sdl_mixer_audio_callback(), ihdtv_video_rxtx::send_frame(), set_thread_name(), setup_nat_pmp(), setup_pcp(), split_get_property(), split_postprocess(), text_get_property(), theRenderProc(), udp_addr_valid6(), udp_async_start(), udp_async_wait(), udp_clean_async_state(), udp_host_addr6(), udp_leave_mcast_grp6(), ug_gai_strerror(), vc_copylineABGRtoRGB(), vc_copylineBGRAtoRGB(), vc_copylineBGRtoRGB(), vc_copylineBGRtoUYVY(), vc_copylineDVS10(), vc_copylineDVS10toV210(), vc_copyliner10ktoRG48(), vc_copyliner10ktoRGB(), vc_copylineR10ktoUYVY(), vc_copyliner10ktoY416(), vc_copylineR12AtoR12L(), vc_copylineR12LtoR10k(), vc_copylineR12LtoR12A(), vc_copylineR12LtoRG48(), vc_copylineR12LtoRGB(), vc_copylineR12LtoUYVY(), vc_copylineR12LtoY416(), vc_copylineRG48toR10k(), vc_copylineRG48toR12L(), vc_copylineRG48toRGB(), vc_copylineRG48toUYVY(), vc_copylineRG48toV210(), vc_copylineRG48toY216(), vc_copylineRG48toY416(), vc_copylineRGBAtoR10k(), vc_copylineRGBAtoR12L(), vc_copylineRGBAtoRG48(), vc_copylineRGBAtoRGB(), vc_copylineRGBAtoUYVY(), vc_copylineRGBtoGrayscale_SSE(), vc_copylineRGBtoR12L(), vc_copylineRGBtoRG48(), vc_copylineRGBtoUYVY(), vc_copylineUYVYtoGrayscale(), vc_copylineUYVYtoRG48(), vc_copylineUYVYtoRGB(), vc_copylineUYVYtoV210(), vc_copylineUYVYtoY216(), vc_copylineUYVYtoY416(), vc_copylinev210(), vc_copylineV210toRG48(), vc_copylineV210toRGB(), vc_copylineV210toY216(), vc_copylineV210toY416(), vc_copylineY216toUYVY(), vc_copylineY216toV210(), vc_copylineY416toR10k(), vc_copylineY416toR12L(), vc_copylineY416toRG48(), vc_copylineY416toRGB(), vc_copylineY416toUYVY(), vc_copylineY416toV210(), vc_copylineYUYV(), vc_copylineYUYVtoRGB(), vc_memcpy(), vsnprintf(), WaitForMajorInterrupt(), yuv420p10le_to_uyvy(), yuv420p10le_to_v210(), yuv420p_to_uyvy(), yuv420p_to_v210(), yuv422p10le_to_uyvy(), yuv422p10le_to_v210(), yuv422p_to_uyvy(), yuv422p_to_v210(), yuv444p16le_to_uyvy(), yuv444p1Xle_to_uyvy(), yuv444p1Xle_to_v210(), yuv444p1Xle_to_y416(), yuv444p_to_uyvy(), yuv444p_to_v210(), yuv444pXXle_to_r10k(), yuv444pXXle_to_r12l(), and yuv444pXXle_to_rg48().

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().