mirror of
https://github.com/outbackdingo/UltraGrid.git
synced 2026-04-08 00:06:57 +00:00
vdisp/deltacast: set correct Amercian system
Althought there are in deltacast_frame_modes the modes for eg. 1080p29 and 1080p30 listed separately, both point to the same video standard mode VHD_VIDEOSTD_S274M_1080p_30Hz. This is perhaps taken orignally from some SDK samples, anyways. The clock system seem to be required to set separate from the video standard. This was hard-coded in init to 1/1.
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
* @author Martin Pulec <pulec@cesnet.cz>
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2014-2020 CESNET, z. s. p. o.
|
||||
* Copyright (c) 2014-2025 CESNET, zájmové sdružení právnických osob
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -121,74 +121,75 @@ struct deltacast_frame_mode_t {
|
||||
double fps;
|
||||
enum interlacing_t interlacing;
|
||||
unsigned long int iface;
|
||||
VHD_CLOCKDIVISOR clock_system; // VHD_CLOCKDIV_1 or VHD_CLOCKDIV_1001
|
||||
};
|
||||
|
||||
const static struct deltacast_frame_mode_t deltacast_frame_modes[] = {
|
||||
{VHD_VIDEOSTD_S274M_1080p_25Hz, "SMPTE 274M 1080p 25 Hz",
|
||||
1920u, 1080u, 25.0, PROGRESSIVE, VHD_INTERFACE_AUTO},
|
||||
1920u, 1080u, 25.0, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_S274M_1080p_30Hz, "SMPTE 274M 1080p 29.97 Hz",
|
||||
1920u, 1080u, 29.97, PROGRESSIVE, VHD_INTERFACE_AUTO},
|
||||
1920u, 1080u, 29.97, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1001},
|
||||
{VHD_VIDEOSTD_S274M_1080p_30Hz, "SMPTE 274M 1080p 30 Hz",
|
||||
1920u, 1080u, 30.0, PROGRESSIVE, VHD_INTERFACE_AUTO},
|
||||
1920u, 1080u, 30.0, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_S274M_1080i_50Hz, "SMPTE 274M 1080i 50 Hz",
|
||||
1920u, 1080u, 25.0, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO},
|
||||
1920u, 1080u, 25.0, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_S274M_1080i_60Hz, "SMPTE 274M 1080i 59.94 Hz",
|
||||
1920u, 1080u, 29.97, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO},
|
||||
1920u, 1080u, 29.97, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1001},
|
||||
{VHD_VIDEOSTD_S274M_1080i_60Hz, "SMPTE 274M 1080i 60 Hz",
|
||||
1920u, 1080u, 30.0, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO},
|
||||
1920u, 1080u, 30.0, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_S296M_720p_50Hz, "SMPTE 296M 720p 50 Hz",
|
||||
1280u, 720u, 50.0, PROGRESSIVE, VHD_INTERFACE_AUTO},
|
||||
1280u, 720u, 50.0, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_S296M_720p_60Hz, "SMPTE 296M 720p 59.94 Hz",
|
||||
1280u, 720u, 59.94, PROGRESSIVE, VHD_INTERFACE_AUTO},
|
||||
1280u, 720u, 59.94, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1001},
|
||||
{VHD_VIDEOSTD_S296M_720p_60Hz, "SMPTE 296M 720p 60 Hz",
|
||||
1280u, 720u, 60.0, PROGRESSIVE, VHD_INTERFACE_AUTO},
|
||||
1280u, 720u, 60.0, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_S259M_PAL, "SMPTE 259M PAL",
|
||||
720u, 576u, 25.0, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO},
|
||||
720u, 576u, 25.0, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_S259M_NTSC, "SMPTE 259M NTSC",
|
||||
720u, 487u, 29.97, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO},
|
||||
720u, 487u, 29.97, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1001},
|
||||
{VHD_VIDEOSTD_S274M_1080p_24Hz, "SMPTE 274M 1080p 23.98 Hz",
|
||||
1920u, 1080u, 23.98, PROGRESSIVE, VHD_INTERFACE_AUTO},
|
||||
1920u, 1080u, 23.98, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1001},
|
||||
{VHD_VIDEOSTD_S274M_1080p_24Hz, "SMPTE 274M 1080p 24 Hz",
|
||||
1920u, 1080u, 24.0, PROGRESSIVE, VHD_INTERFACE_AUTO},
|
||||
1920u, 1080u, 24.0, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_S274M_1080p_60Hz, "SMPTE 274M 1080p 59.94 Hz",
|
||||
1920u, 1080u, 59.94, PROGRESSIVE, VHD_INTERFACE_AUTO},
|
||||
1920u, 1080u, 59.94, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1001},
|
||||
{VHD_VIDEOSTD_S274M_1080p_60Hz, "SMPTE 274M 1080p 60 Hz",
|
||||
1920u, 1080u, 60.0, PROGRESSIVE, VHD_INTERFACE_AUTO},
|
||||
1920u, 1080u, 60.0, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_S274M_1080p_24Hz, "SMPTE 274M 1080p 50 Hz",
|
||||
1920u, 1080u, 50.0, PROGRESSIVE, VHD_INTERFACE_AUTO},
|
||||
1920u, 1080u, 50.0, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_S274M_1080psf_24Hz, "SMPTE 274M 1080psf 23.98 Hz",
|
||||
1920u, 1080u, 23.98, SEGMENTED_FRAME, VHD_INTERFACE_AUTO},
|
||||
1920u, 1080u, 23.98, SEGMENTED_FRAME, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1001},
|
||||
{VHD_VIDEOSTD_S274M_1080psf_24Hz, "SMPTE 274M 1080psf 24 Hz",
|
||||
1920u, 1080u, 24.0, SEGMENTED_FRAME, VHD_INTERFACE_AUTO},
|
||||
1920u, 1080u, 24.0, SEGMENTED_FRAME, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_S274M_1080psf_25Hz, "SMPTE 274M 1080psf 25 Hz",
|
||||
1920u, 1080u, 25.0, SEGMENTED_FRAME, VHD_INTERFACE_AUTO},
|
||||
1920u, 1080u, 25.0, SEGMENTED_FRAME, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_S274M_1080psf_30Hz, "SMPTE 274M 1080psf 29.97 Hz",
|
||||
1920u, 1080u, 29.97, SEGMENTED_FRAME, VHD_INTERFACE_AUTO},
|
||||
1920u, 1080u, 29.97, SEGMENTED_FRAME, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1001},
|
||||
{VHD_VIDEOSTD_S274M_1080psf_30Hz, "SMPTE 274M 1080psf 30 Hz",
|
||||
1920u, 1080u, 30.0, SEGMENTED_FRAME, VHD_INTERFACE_AUTO},
|
||||
1920u, 1080u, 30.0, SEGMENTED_FRAME, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
|
||||
// UHD modes
|
||||
{VHD_VIDEOSTD_3840x2160p_24Hz, "3840x2160 24 Hz",
|
||||
3840u, 2160u, 24.0, PROGRESSIVE, VHD_INTERFACE_4XHD},
|
||||
3840u, 2160u, 24.0, PROGRESSIVE, VHD_INTERFACE_4XHD, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_3840x2160p_25Hz, "3840x2160 25 Hz",
|
||||
3840u, 2160u, 25.0, PROGRESSIVE, VHD_INTERFACE_4XHD},
|
||||
3840u, 2160u, 25.0, PROGRESSIVE, VHD_INTERFACE_4XHD, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_3840x2160p_30Hz, "3840x2160 30 Hz",
|
||||
3840u, 2160u, 30.0, PROGRESSIVE, VHD_INTERFACE_4XHD},
|
||||
3840u, 2160u, 30.0, PROGRESSIVE, VHD_INTERFACE_4XHD, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_3840x2160p_50Hz, "3840x2160 50 Hz",
|
||||
3840u, 2160u, 50.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A},
|
||||
3840u, 2160u, 50.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_3840x2160p_60Hz, "3840x2160 60 Hz",
|
||||
3840u, 2160u, 60.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A},
|
||||
3840u, 2160u, 60.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_4096x2160p_24Hz, "4096x2160 24 Hz",
|
||||
4096u, 2160u, 24.0, PROGRESSIVE, VHD_INTERFACE_4XHD},
|
||||
4096u, 2160u, 24.0, PROGRESSIVE, VHD_INTERFACE_4XHD, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_4096x2160p_25Hz, "4096x2160 25 Hz",
|
||||
4096u, 2160u, 25.0, PROGRESSIVE, VHD_INTERFACE_4XHD},
|
||||
4096u, 2160u, 25.0, PROGRESSIVE, VHD_INTERFACE_4XHD, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_4096x2160p_25Hz, "4096x2160 25 Hz",
|
||||
4096u, 2160u, 25.0, PROGRESSIVE, VHD_INTERFACE_4XHD},
|
||||
4096u, 2160u, 25.0, PROGRESSIVE, VHD_INTERFACE_4XHD, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_4096x2160p_48Hz, "4096x2160 48 Hz",
|
||||
4096u, 2160u, 48.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A},
|
||||
4096u, 2160u, 48.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_4096x2160p_50Hz, "4096x2160 50 Hz",
|
||||
4096u, 2160u, 50.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A},
|
||||
4096u, 2160u, 50.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A, VHD_CLOCKDIV_1},
|
||||
{VHD_VIDEOSTD_4096x2160p_60Hz, "4096x2160 60 Hz",
|
||||
4096u, 2160u, 60.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A},
|
||||
4096u, 2160u, 60.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A, VHD_CLOCKDIV_1},
|
||||
};
|
||||
|
||||
const static int deltacast_frame_modes_count = sizeof(deltacast_frame_modes)/sizeof(deltacast_frame_mode_t);
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* code is written by DELTACAST's VideoMaster SDK example SampleTX
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2012-2023 CESNET, z. s. p. o.
|
||||
* Copyright (c) 2012-2025 CESNET, zájnové sdružení právnických osob
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -212,6 +212,7 @@ display_deltacast_reconfigure(void *state, struct video_desc desc)
|
||||
{
|
||||
struct state_deltacast *s = (struct state_deltacast *)state;
|
||||
int VideoStandard = 0;
|
||||
VHD_CLOCKDIVISOR clock_system = NB_VHD_CLOCKDIVISORS;
|
||||
int i;
|
||||
ULONG Result;
|
||||
|
||||
@@ -244,6 +245,7 @@ display_deltacast_reconfigure(void *state, struct video_desc desc)
|
||||
desc.width == deltacast_frame_modes[i].width &&
|
||||
desc.height == deltacast_frame_modes[i].height) {
|
||||
VideoStandard = deltacast_frame_modes[i].mode;
|
||||
clock_system = deltacast_frame_modes[i].clock_system;
|
||||
log_msg(LOG_LEVEL_NOTICE, "[DELTACAST] %s mode selected.\n", deltacast_frame_modes[i].name);
|
||||
break;
|
||||
}
|
||||
@@ -274,6 +276,8 @@ display_deltacast_reconfigure(void *state, struct video_desc desc)
|
||||
VHD_SetStreamProperty(s->StreamHandle,VHD_SDI_SP_VIDEO_STANDARD,VideoStandard);
|
||||
VHD_SetStreamProperty(s->StreamHandle,VHD_CORE_SP_BUFFERQUEUE_DEPTH,2);
|
||||
VHD_SetStreamProperty(s->StreamHandle,VHD_CORE_SP_BUFFERQUEUE_PRELOAD,0);
|
||||
VHD_SetBoardProperty(s->BoardHandle, VHD_SDI_BP_CLOCK_SYSTEM,
|
||||
clock_system);
|
||||
|
||||
Result = VHD_StartStream(s->StreamHandle);
|
||||
if (Result != VHDERR_NOERROR) {
|
||||
@@ -447,9 +451,6 @@ static void *display_deltacast_init(struct module *parent, const char *fmt, unsi
|
||||
|
||||
/* Disable RX0-TX0 by-pass relay loopthrough */
|
||||
delta_set_loopback_state(s->BoardHandle, (int) s->channel, FALSE);
|
||||
|
||||
/* Select a 1/1 clock system */
|
||||
VHD_SetBoardProperty(s->BoardHandle,VHD_SDI_BP_CLOCK_SYSTEM,VHD_CLOCKDIV_1);
|
||||
|
||||
return s;
|
||||
#undef HANDLE_ERROR
|
||||
|
||||
Reference in New Issue
Block a user