UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
aja_win32_utils.cpp File Reference
#include "config_msvc.h"
#include "config_win32.h"
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include "video.h"
#include "audio/types.h"
#include "audio/utils.h"
Include dependency graph for aja_win32_utils.cpp:

Go to the source code of this file.

Macros

#define WIN32
 

Functions

codec_t get_codec_from_name (const char *name)
 
const char * get_codec_name (codec_t codec)
 
void remux_channel (char *out, const char *in, int bps, int in_len, int in_stream_channels, int out_stream_channels, int pos_in_stream, int pos_out_stream)
 
int vc_get_linesize (unsigned int width, codec_t codec)
 
struct video_frame * vf_alloc (int count)
 Allocates blank video frame.
 
struct video_frame * vf_alloc_desc (struct video_desc desc)
 Allocates video frame accordig given desc.
 
struct video_frame * vf_alloc_desc_data (struct video_desc desc)
 
void vf_data_deleter (struct video_frame *buf)
 
void vf_free (struct video_frame *buf)
 Frees video_frame structure.
 
struct video_desc video_desc_from_frame (const struct video_frame *frame)
 Returns struct video_desc from video frame.
 

Detailed Description

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

This source is used only with AJA DLL build to supply dependencies that AJA module depends upon, however the actual sources cannot currently be built with MSVC (further dependencies, parts that cannot be compiled with the compiler or depend upon them).

Definition in file aja_win32_utils.cpp.

Macro Definition Documentation

◆ WIN32

#define WIN32

Definition at line 43 of file aja_win32_utils.cpp.

Function Documentation

◆ get_codec_from_name()

codec_t get_codec_from_name ( const char * name)

Definition at line 193 of file aja_win32_utils.cpp.

193 {
194 if (strcmp(name, "UYVY") == 0) return UYVY;
195 else if (strcmp(name, "YUYV") == 0) return YUYV;
196 else if (strcmp(name, "v210") == 0) return v210;
197 else if (strcmp(name, "RGBA") == 0) return RGBA;
198 else if (strcmp(name, "RGB") == 0) return RGB;
199 else if (strcmp(name, "BGR") == 0) return BGR;
200 else if (strcmp(name, "R10k") == 0) return R10k;
201 else {
202 fprintf(stderr, "\nError getting codec from name \"%s\" - unsupported in Windows, report to "
203 "ultragrid-dev@cesnet.cz\n", name);
204 return VIDEO_CODEC_NONE;
205 }
206}
const char * name
Definition settings.cpp:193
@ YUYV
YCbCr 422 8-bit - Y0 Cb Y1 Cr.
Definition types.h:72
@ R10k
RGB 10-bit packed - RGBX, big-endian (2 bit padding)
Definition types.h:73
@ RGB
RGB 8-bit (packed into 24-bit word)
Definition types.h:80
@ UYVY
YCbCr 422 8-bit - Cb Y0 Cr Y1.
Definition types.h:71
@ VIDEO_CODEC_NONE
dummy color spec
Definition types.h:66
@ BGR
8-bit BGR
Definition types.h:88
@ RGBA
RGBA 8-bit, big-endian.
Definition types.h:70
@ v210
YCbCr 422 10-bit - xVY0U|xY2UY1|xUY3V|xY5VY4, little-endian (2 bit padding /'x'/),...
Definition types.h:75

References BGR, name, R10k, RGB, RGBA, UYVY, v210, VIDEO_CODEC_NONE, and YUYV.

Referenced by vidcap_state_aja::vidcap_state_aja(), display_dvs_init(), display_pipe_init(), find_best_decompress(), get_video_codec_from_pt_rtpmap(), init(), init(), main(), operator>>(), parse_codecs(), parse_config_string(), parse_fmt(), parse_fmt(), parse_fmt(), parse_fmt(), parse_format(), parse_option(), process_args(), settings_init(), vidcap_deltacast_dvi_init(), vidcap_dvs_init(), vidcap_file_parse_fmt(), vidcap_screen_osx_init(), vidcap_spout_init(), vidcap_testcard2_init(), vidcap_testcard_init(), and video_decoder_register_display().

◆ get_codec_name()

const char * get_codec_name ( codec_t codec)

Definition at line 177 of file aja_win32_utils.cpp.

177 {
178 switch (codec) {
179 case UYVY: return "UYVY";
180 case YUYV: return "YUYV";
181 case v210: return "v210";
182 case RGBA: return "RGBA";
183 case RGB: return "RGB";
184 case BGR: return "BGR";
185 case R10k: return "R10k";
186 default:
187 fprintf(stderr, "\nError getting codec name for codec ID %d - unsupported in Windows, report to "
188 "ultragrid-dev@cesnet.cz\n", (int) codec);
189 return "_UNSUPPORTED_";
190 }
191}

References BGR, R10k, RGB, RGBA, UYVY, v210, and YUYV.

Referenced by benchmark(), blacklist_current_out_codec(), choose_codec_and_decoder(), codec_list_to_str(), h264_rtp_video_rxtx::configure_rtsp_server_video(), configure_with(), configure_with(), decklink_help(), deinterlace_postprocess(), display_frame(), display_gl_init_opengl(), filter(), filter(), filter(), get_16_bit_pnm_data(), get_av_to_uv_cuda_conversion(), get_ug_codec_to_av(), get_ug_to_sdl_format(), device_state::init(), init_rtsp(), j2k_decompress_reconfigure(), libavcodec_decompress_get_priority(), load_texture(), operator<<(), operator<<(), perform_df(), print_conversions(), print_output_modes(), print_pixel_formats(), print_video_codecs(), probe_internal(), reconfigure_decoder(), reconfigure_if_needed(), save_video_frame_as_pnm(), save_video_frame_as_y4m(), vidcap_decklink_state::set_codec(), set_convertible_formats(), set_display_mode_properties(), BasicRTSPOnlySubsession::setSDPLines(), show_help(), show_help(), testcard_show_codec_help(), to_lavc_vid_conv_init(), usage(), vidcap_decklink_print_card_info(), vidcap_spout_grab(), vidcap_spout_init(), vidcap_testcard_init(), vidcap_ug_input_init(), vidcap_v4l2_init(), video_decoder_order_output_codecs(), video_pattern_generator_create(), and wait_for_channel().

◆ remux_channel()

void remux_channel ( char * out,
const char * in,
int bps,
int in_len,
int in_stream_channels,
int out_stream_channels,
int pos_in_stream,
int pos_out_stream )

Definition at line 55 of file aja_win32_utils.cpp.

56{
57 int samples = in_len / (in_stream_channels * bps);
58 int i;
59
60 assert (bps <= 4);
61
62 in += pos_in_stream * bps;
63 out += pos_out_stream * bps;
64
65 for (i = 0; i < samples; ++i) {
66 memcpy(out, in, bps);
67
68 out += bps * out_stream_channels;
69 in += bps * in_stream_channels;
70
71 }
72}

◆ vc_get_linesize()

int vc_get_linesize ( unsigned int width,
codec_t codec )

Definition at line 74 of file aja_win32_utils.cpp.

75{
76 int bpp;
77 switch (codec) {
78 case v210:
79 width = (width + 47) / 48 * 48;
80 return width * 8 / 3;
81 case UYVY:
82 case YUYV:
83 bpp = 2;
84 break;
85 case RGB:
86 case BGR:
87 bpp = 3;
88 break;
89 case R10k:
90 case RGBA:
91 bpp = 4;
92 break;
93 default:
94 fprintf(stderr, "[AJA] Unimplemented codec. Please report a bug.");
95 abort();
96 }
97 return width * bpp;
98}

References BGR, R10k, RGB, RGBA, UYVY, v210, and YUYV.

Referenced by interlaced_video_pattern_generator::interlaced_video_pattern_generator(), abgr_flip_and_swap(), abgr_to_rgba(), allocate_new_decklink_frame(), allocate_result_frame(), benchmark(), bgr_flip_lines(), bgr_to_rgb_invert(), border_postprocess(), cf_crop_filter(), cf_deinterlace_filter(), cf_text_filter(), check_in_format(), cineform_compress_push(), common_postprocess_reconfigure(), configure_with(), convert_memcpy(), crop_postprocess(), decompress_j2k_worker(), decompress_thread(), deinterlace_postprocess(), delay_postprocess(), display_decklink_getf(), display_dvs_reconfigure(), display_frame(), display_frame(), display_pw_getf(), display_reconfigure(), display_sage_reconfigure(), display_sage_run(), do_av_to_uv_convert(), download_stitched(), draw_frame(), dxt_glsl_decompress(), fec_thread(), filter(), filter(), filter(), filter(), filter(), filter(), filter(), get_16_bit_pnm_data(), get_copy(), get_packet_sizes(), get_splashscreen(), gl_reconfigure_screen(), gpujpeg_decompress(), grab_worker(), init_decompressor(), initialize(), interlace_postprocess(), interlaced_3d_postprocess(), interlaced_3d_postprocess_reconfigure(), ipc_frame_from_ug_frame(), ipc_frame_from_ug_frame_hq(), j2k_compress_push(), j2k_decompress(), j2k_decompress_reconfigure(), load_texture(), main(), master_worker(), nv12_to_uyvy(), on_add_buffer(), on_param_changed(), on_stream_param_changed(), parallel_conv(), perform_bob(), perform_df(), perform_linear(), process_video_pkt(), pw_frame_to_uv_frame_memcpy(), r10k_to_bgr0(), r10k_to_gbrpXXle(), r10k_to_x2rgb10le(), r10k_to_yuv42Xp10le(), r10k_to_yuv444pXXle(), r12l_to_gbrpXXle(), r12l_to_yuv444pXXle(), display_bluefish444_state::reconfigure(), video_frame_pool::impl::reconfigure(), reconfigure_decoder(), resize_frame_dimensions(), rg48_to_gbrp12le(), rg48_to_r12l(), rg48_to_r12l(), rg48_to_yuv444pXXle(), rgb24_to_rgb32(), rgb24_to_uyvy(), rgb48le_to_r12l(), rgb48le_to_rgba(), rgb_to_bgr0(), rgb_to_yuv444p(), rgba_to_bgra(), same_linesizes(), scale_postprocess(), scale_reconfigure(), set_display_mode_properties(), slave_worker(), split_postprocess_reconfigure(), testcard_convert_buffer(), text_postprocess(), to_lavc_memcpy_data(), to_lavc_vid_conv(), to_lavc_vid_conv_init(), upload_texture(), upload_to_cuda_buf(), v210_to_p010le(), v210_to_xv30(), v210_to_y210(), v210_to_yuv420p10le(), v210_to_yuv422p10le(), v210_to_yuv444p10le(), v210_to_yuv444p16le(), vf_alloc_desc(), vf_alloc_desc_data(), vf_clear(), vf_split(), vidcap_dvs_init(), vidcap_ndi_grab(), vidcap_screen_osx_grab(), vidcap_screen_x11_grab(), vidcap_swmix_init(), vidcap_testcard2_thread(), vidcap_testcard_grab(), vidcap_testcard_init(), vo_postprocess(), worker(), y216_to_yuv422pXXle(), y216_to_yuv444p16le(), and y416_to_xv30().

◆ vf_alloc()

struct video_frame * vf_alloc ( int count)

Allocates blank video frame.

Parameters
countnumber of allocated tiles
Returns
allocated video frame

Definition at line 100 of file aja_win32_utils.cpp.

101{
102 struct video_frame *buf;
103 assert(count > 0);
104
105 buf = (struct video_frame *) calloc(1, offsetof (struct video_frame, tiles[count]));
106 assert(buf != NULL);
107
108 buf->tile_count = count;
109
110 return buf;
111}
int count
Definition hd-rum.c:44
Struct video_frame represents a video frame and contains video description.
Definition types.h:305
struct tile tiles[FLEXIBLE_ARRAY_MEMBER]
Definition types.h:345
unsigned int tile_count
Definition types.h:344

References count, video_frame::tile_count, and video_frame::tiles.

Referenced by decode_video_frame(), display_aggregate_init(), display_deltacast_init(), display_dvs_init(), display_sage_init(), fec_thread(), init_common(), initialize(), interlaced_3d_init(), scale_reconfigure(), split_init(), vf_alloc_desc(), vidcap_aggregate_init(), vidcap_decklink_init(), vidcap_deltacast_init(), vidcap_dvs_init(), vidcap_pw_init(), vidcap_rtsp_thread(), and worker().

◆ vf_alloc_desc()

struct video_frame * vf_alloc_desc ( struct video_desc desc)

Allocates video frame accordig given desc.

Parameters
descDescription of video frame to be created At least desc.tile_count must be specified!
Returns
allocated video frame NULL if insufficient memory

Definition at line 113 of file aja_win32_utils.cpp.

114{
115 struct video_frame *buf;
116 assert(desc.tile_count > 0);
117
118 buf = vf_alloc(desc.tile_count);
119 if(!buf) return NULL;
120
123 buf->fps = desc.fps;
124 // tile_count already filled
125 for(unsigned int i = 0u; i < desc.tile_count; ++i) {
126 buf->tiles[i].width = desc.width;
127 buf->tiles[i].height = desc.height;
129 }
130
131 return buf;
132}
struct video_desc desc
struct video_frame * vf_alloc(int count)
Allocates blank video frame.
int vc_get_linesize(unsigned int width, codec_t codec)
unsigned int width
Definition types.h:280
unsigned int data_len
length of the data
Definition types.h:288
unsigned int height
Definition types.h:281
unsigned int tile_count
Definition types.h:185
codec_t color_spec
Definition types.h:182
enum interlacing_t interlacing
Definition types.h:184
double fps
Definition types.h:183
unsigned int width
width of every tile (!)
Definition types.h:179
unsigned int height
height of every tile (!)
Definition types.h:180
enum interlacing_t interlacing
Definition types.h:307
double fps
Definition types.h:308
codec_t color_spec
Definition types.h:306

References video_desc::color_spec, video_frame::color_spec, tile::data_len, desc, video_desc::fps, video_frame::fps, tile::height, video_desc::height, video_desc::interlacing, video_frame::interlacing, video_desc::tile_count, video_frame::tiles, vc_get_linesize(), vf_alloc(), tile::width, and video_desc::width.

Referenced by av_frame::av_frame(), allocate_frame(), allocate_result_frame(), cineform_compress_pop(), display_decklink_getf(), display_dump_reconfigure(), display_file_getf(), display_v4l2_reconfigure(), ldgm::encode(), rs::encode(), filter(), filter(), filter(), filter(), filter(), filter(), filter(), filter(), filter(), filter(), filter(), video_frame_pool::impl::get_frame(), video_frame_pool::impl::get_pod_frame(), j2k_compress_pop(), on_add_buffer(), process_video_pkt(), display_bluefish444_state::reconfigure(), recreate_textures(), vf_alloc_desc_data(), vf_merge_tiles(), vf_separate_tiles(), vidcap_deltacast_dvi_grab(), vidcap_dshow_init(), vidcap_import_grab(), vidcap_ndi_grab(), vidcap_swmix_init(), vidcap_testcard2_grab(), vidcap_testcard_init(), vidcap_v4l2_grab(), and vidcap_ximea_grab().

Here is the call graph for this function:

◆ vf_alloc_desc_data()

struct video_frame * vf_alloc_desc_data ( struct video_desc desc)

Same as vf_alloc_desc plus initializes data members of tiles according to video description.

The allocated data members are deleted automatically by vf_free()

See also
vf_alloc_desc
Parameters
descDescription of video frame to be created
Returns
allocated video frame NULL if insufficient memory

Definition at line 134 of file aja_win32_utils.cpp.

135{
136 struct video_frame *buf;
137
138 buf = vf_alloc_desc(desc);
139
140 if (!buf) {
141 return NULL;
142 }
143 for(unsigned int i = 0; i < desc.tile_count; ++i) {
146 desc.height;
147 buf->tiles[i].data = (char *) malloc(buf->tiles[i].data_len);
148 assert(buf->tiles[i].data != NULL);
149 }
150
152 buf->callbacks.recycle = NULL;
153
154 return buf;
155}
void vf_data_deleter(struct video_frame *buf)
struct video_frame * vf_alloc_desc(struct video_desc desc)
Allocates video frame accordig given desc.
char * data
Raw tile data. Pointer must be at least 4B aligned.
Definition types.h:287
void(* data_deleter)(struct video_frame *)
Definition types.h:256
void(* recycle)(struct video_frame *)
Definition types.h:263
struct video_frame_callbacks callbacks
Definition types.h:324

References video_frame::callbacks, video_desc::color_spec, tile::data, video_frame_callbacks::data_deleter, tile::data_len, desc, video_desc::height, video_frame_callbacks::recycle, video_desc::tile_count, video_frame::tiles, vc_get_linesize(), vf_alloc_desc(), vf_data_deleter(), and video_desc::width.

Referenced by border_postprocess_reconfigure(), cf_crop_filter(), cf_deinterlace_filter(), cf_text_filter(), cineform_compress_push(), crop_postprocess_reconfigure(), deinterlace_reconfigure(), delay_getf(), display_aja_getf(), display_blend_getf(), display_caca_getf(), display_conference_getf(), display_drm_getf(), display_drm_reconfigure(), display_dummy_reconfigure(), display_file_getf(), display_gl_getf(), display_multiplier_getf(), display_ndi_getf(), display_panogl_getf(), display_pipe_getf(), display_pw_getf(), display_sdl_getf(), display_unix_sock_getf(), filter(), get_copy(), get_splashscreen(), get_sps_pps_frame(), interlace_reconfigure(), on_process(), process_video_pkt(), reconfigure_if_needed(), text_postprocess_reconfigure(), vidcap_bitflow_grab(), vidcap_deltacast_dvi_grab(), vidcap_ndi_grab(), vidcap_rtsp_grab(), and vidcap_spout_grab().

Here is the call graph for this function:

◆ vf_data_deleter()

void vf_data_deleter ( struct video_frame * buf)

Deletes video data members with a free() call.

See also
video_frame::data_deleter

Definition at line 157 of file aja_win32_utils.cpp.

158{
159 if(!buf)
160 return;
161
162 for(unsigned int i = 0u; i < buf->tile_count; ++i) {
163 free(buf->tiles[i].data);
164 }
165}

References tile::data, video_frame::tile_count, and video_frame::tiles.

Referenced by create_jpeg_frame(), decode_frame_h264(), decode_video_frame(), display_dump_reconfigure(), filter(), filter(), filter(), filter(), filter(), filter(), filter(), process_video_pkt(), vf_alloc_desc_data(), and vidcap_testcard2_grab().

◆ vf_free()

void vf_free ( struct video_frame * buf)

Frees video_frame structure.

Calls video_frame::data_deleter if defined (suplied by user or fiiled by vf_alloc_desc_data()).

Definition at line 167 of file aja_win32_utils.cpp.

168{
169 if(!buf)
170 return;
171 if (buf->callbacks.data_deleter) {
172 buf->callbacks.data_deleter(buf);
173 }
174 free(buf);
175}

References video_frame::callbacks, and video_frame_callbacks::data_deleter.

Referenced by av_frame::~av_frame(), state_blend_common::~state_blend_common(), border_done(), border_postprocess_reconfigure(), cf_crop_filter(), cf_deinterlace_filter(), cf_text_filter(), cineform_compress_pop(), cineform_compress_push(), cleanup(), display_bluefish444_state::cleanup(), cleanup_common(), cleanup_common(), cleanup_frames(), common_done(), crop_done(), crop_postprocess_reconfigure(), video_frame_pool::impl::deallocate_frame(), decode_video_frame(), deinterlace_done(), deinterlace_reconfigure(), delay_done(), delay_postprocess(), delay_reconfigure(), delete_frame(), display_aggregate_done(), display_blend_putf(), display_blend_run(), display_caca_done(), display_caca_putf(), display_conference_putf(), display_decklink_getf(), display_deltacast_done(), display_deltacast_init(), display_dummy_done(), display_dummy_reconfigure(), display_dump_done(), display_dump_reconfigure(), display_dvs_done(), display_dvs_init(), display_file_done(), display_file_putf(), display_gl_done(), display_gl_getf(), display_gl_init_opengl(), display_multiplier_putf(), display_multiplier_worker(), display_ndi_done(), display_ndi_putf(), display_panogl_getf(), display_panogl_putf(), display_pipe_getf(), display_sage_done(), display_sdl_done(), display_sdl_getf(), display_sdl_putf(), dispose_frame(), dispose_frame(), dispose_frame(), ldgm::encode(), rs::encode(), filter(), filter(), filter(), filter(), filter(), filter(), filter(), filter(), filter(), filter(), hd_rum_decompress::state_transcoder_decompress::frame_arrived(), get_sps_pps_frame(), interlace_done(), interlace_reconfigure(), interlaced_3d_done(), j2k_compressed_frame_dispose(), loadSplashscreen(), on_remove_buffer(), frame_deleter::operator()(), ultragrid::aja::display::process_frames(), process_video_pkt(), ultragrid::aja::display::Putf(), scale_done(), scale_reconfigure(), slave_worker(), split_done(), text_done(), text_postprocess_reconfigure(), vf_merge_tiles(), vf_separate_tiles(), vidcap_aggregate_done(), vidcap_bitflow_grab(), vidcap_deltacast_done(), vidcap_deltacast_dvi_dispose(), vidcap_deltacast_dvi_grab(), vidcap_deltacast_init(), vidcap_dvs_done(), vidcap_gpustitch_done(), vidcap_import_dispose_video_frame(), vidcap_ndi_grab(), vidcap_rtsp_done(), vidcap_rtsp_grab(), vidcap_rtsp_thread(), vidcap_screen_x11_done(), vidcap_spout_grab(), vidcap_swmix_done(), vidcap_syphon_done(), vidcap_syphon_grab(), vidcap_testcard2_grab(), vidcap_testcard_done(), vidcap_testcard_init(), vidcap_ug_input_grab(), vidcap_v4l2_dispose_video_frame(), worker(), worker(), and worker().

◆ video_desc_from_frame()

struct video_desc video_desc_from_frame ( const struct video_frame * frame)

Returns struct video_desc from video frame.

Definition at line 208 of file aja_win32_utils.cpp.

209{
210 struct video_desc desc;
211
212 assert(frame != NULL);
213
214 desc.width = frame->tiles[0].width;
217 desc.fps = frame->fps;
220
221 return desc;
222}
struct video_frame * frame

References video_desc::color_spec, video_frame::color_spec, desc, video_desc::fps, video_frame::fps, frame, tile::height, video_desc::height, video_desc::interlacing, video_frame::interlacing, video_desc::tile_count, video_frame::tile_count, video_frame::tiles, tile::width, and video_desc::width.

Referenced by cf_crop_filter(), cf_deinterlace_filter(), cf_text_filter(), check_for_slave_format_change(), check_reconf(), cineform_compress_push(), deinterlace_get_out_desc(), deinterlace_postprocess(), display_blend_run(), display_drm_getf(), display_frame(), display_gl_getf(), display_multiplier_worker(), display_panogl_getf(), display_pw_getf(), display_sdl_getf(), display_xrgl_getf(), ldgm::encode(), rs::encode(), filter(), filter(), filter(), filter(), filter(), filter(), filter(), filter(), filter(), filter(), filter(), filter(), video_frame_pool::impl::get_pod_frame(), gl_load_splashscreen(), gl_process_frames(), initialize(), j2k_compress_push(), loadSplashscreen(), loadSplashscreen(), on_process(), FlatVideoScene::put_frame(), loopback_video_rxtx::receiver_loop(), reconfigure_if_needed(), sage_video_rxtx::send_frame(), ultragrid_rtp_video_rxtx::send_frame(), text_get_out_desc(), vf_merge_tiles(), vf_separate_tiles(), vidcap_rtsp_grab(), video_export(), worker(), worker(), and worker().