Skip to content

Commit 4f5b4df

Browse files
committed
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.
1 parent 08692a1 commit 4f5b4df

File tree

2 files changed

+39
-37
lines changed

2 files changed

+39
-37
lines changed

src/deltacast_common.hpp

Lines changed: 34 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* @author Martin Pulec <[email protected]>
44
*/
55
/*
6-
* Copyright (c) 2014-2020 CESNET, z. s. p. o.
6+
* Copyright (c) 2014-2025 CESNET, zájmové sdružení právnických osob
77
* All rights reserved.
88
*
99
* Redistribution and use in source and binary forms, with or without
@@ -121,74 +121,75 @@ struct deltacast_frame_mode_t {
121121
double fps;
122122
enum interlacing_t interlacing;
123123
unsigned long int iface;
124+
VHD_CLOCKDIVISOR clock_system; // VHD_CLOCKDIV_1 or VHD_CLOCKDIV_1001
124125
};
125126

126127
const static struct deltacast_frame_mode_t deltacast_frame_modes[] = {
127128
{VHD_VIDEOSTD_S274M_1080p_25Hz, "SMPTE 274M 1080p 25 Hz",
128-
1920u, 1080u, 25.0, PROGRESSIVE, VHD_INTERFACE_AUTO},
129+
1920u, 1080u, 25.0, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
129130
{VHD_VIDEOSTD_S274M_1080p_30Hz, "SMPTE 274M 1080p 29.97 Hz",
130-
1920u, 1080u, 29.97, PROGRESSIVE, VHD_INTERFACE_AUTO},
131+
1920u, 1080u, 29.97, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1001},
131132
{VHD_VIDEOSTD_S274M_1080p_30Hz, "SMPTE 274M 1080p 30 Hz",
132-
1920u, 1080u, 30.0, PROGRESSIVE, VHD_INTERFACE_AUTO},
133+
1920u, 1080u, 30.0, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
133134
{VHD_VIDEOSTD_S274M_1080i_50Hz, "SMPTE 274M 1080i 50 Hz",
134-
1920u, 1080u, 25.0, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO},
135+
1920u, 1080u, 25.0, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
135136
{VHD_VIDEOSTD_S274M_1080i_60Hz, "SMPTE 274M 1080i 59.94 Hz",
136-
1920u, 1080u, 29.97, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO},
137+
1920u, 1080u, 29.97, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1001},
137138
{VHD_VIDEOSTD_S274M_1080i_60Hz, "SMPTE 274M 1080i 60 Hz",
138-
1920u, 1080u, 30.0, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO},
139+
1920u, 1080u, 30.0, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
139140
{VHD_VIDEOSTD_S296M_720p_50Hz, "SMPTE 296M 720p 50 Hz",
140-
1280u, 720u, 50.0, PROGRESSIVE, VHD_INTERFACE_AUTO},
141+
1280u, 720u, 50.0, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
141142
{VHD_VIDEOSTD_S296M_720p_60Hz, "SMPTE 296M 720p 59.94 Hz",
142-
1280u, 720u, 59.94, PROGRESSIVE, VHD_INTERFACE_AUTO},
143+
1280u, 720u, 59.94, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1001},
143144
{VHD_VIDEOSTD_S296M_720p_60Hz, "SMPTE 296M 720p 60 Hz",
144-
1280u, 720u, 60.0, PROGRESSIVE, VHD_INTERFACE_AUTO},
145+
1280u, 720u, 60.0, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
145146
{VHD_VIDEOSTD_S259M_PAL, "SMPTE 259M PAL",
146-
720u, 576u, 25.0, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO},
147+
720u, 576u, 25.0, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
147148
{VHD_VIDEOSTD_S259M_NTSC, "SMPTE 259M NTSC",
148-
720u, 487u, 29.97, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO},
149+
720u, 487u, 29.97, UPPER_FIELD_FIRST, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1001},
149150
{VHD_VIDEOSTD_S274M_1080p_24Hz, "SMPTE 274M 1080p 23.98 Hz",
150-
1920u, 1080u, 23.98, PROGRESSIVE, VHD_INTERFACE_AUTO},
151+
1920u, 1080u, 23.98, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1001},
151152
{VHD_VIDEOSTD_S274M_1080p_24Hz, "SMPTE 274M 1080p 24 Hz",
152-
1920u, 1080u, 24.0, PROGRESSIVE, VHD_INTERFACE_AUTO},
153+
1920u, 1080u, 24.0, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
153154
{VHD_VIDEOSTD_S274M_1080p_60Hz, "SMPTE 274M 1080p 59.94 Hz",
154-
1920u, 1080u, 59.94, PROGRESSIVE, VHD_INTERFACE_AUTO},
155+
1920u, 1080u, 59.94, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1001},
155156
{VHD_VIDEOSTD_S274M_1080p_60Hz, "SMPTE 274M 1080p 60 Hz",
156-
1920u, 1080u, 60.0, PROGRESSIVE, VHD_INTERFACE_AUTO},
157+
1920u, 1080u, 60.0, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
157158
{VHD_VIDEOSTD_S274M_1080p_24Hz, "SMPTE 274M 1080p 50 Hz",
158-
1920u, 1080u, 50.0, PROGRESSIVE, VHD_INTERFACE_AUTO},
159+
1920u, 1080u, 50.0, PROGRESSIVE, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
159160
{VHD_VIDEOSTD_S274M_1080psf_24Hz, "SMPTE 274M 1080psf 23.98 Hz",
160-
1920u, 1080u, 23.98, SEGMENTED_FRAME, VHD_INTERFACE_AUTO},
161+
1920u, 1080u, 23.98, SEGMENTED_FRAME, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1001},
161162
{VHD_VIDEOSTD_S274M_1080psf_24Hz, "SMPTE 274M 1080psf 24 Hz",
162-
1920u, 1080u, 24.0, SEGMENTED_FRAME, VHD_INTERFACE_AUTO},
163+
1920u, 1080u, 24.0, SEGMENTED_FRAME, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
163164
{VHD_VIDEOSTD_S274M_1080psf_25Hz, "SMPTE 274M 1080psf 25 Hz",
164-
1920u, 1080u, 25.0, SEGMENTED_FRAME, VHD_INTERFACE_AUTO},
165+
1920u, 1080u, 25.0, SEGMENTED_FRAME, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
165166
{VHD_VIDEOSTD_S274M_1080psf_30Hz, "SMPTE 274M 1080psf 29.97 Hz",
166-
1920u, 1080u, 29.97, SEGMENTED_FRAME, VHD_INTERFACE_AUTO},
167+
1920u, 1080u, 29.97, SEGMENTED_FRAME, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1001},
167168
{VHD_VIDEOSTD_S274M_1080psf_30Hz, "SMPTE 274M 1080psf 30 Hz",
168-
1920u, 1080u, 30.0, SEGMENTED_FRAME, VHD_INTERFACE_AUTO},
169+
1920u, 1080u, 30.0, SEGMENTED_FRAME, VHD_INTERFACE_AUTO, VHD_CLOCKDIV_1},
169170
// UHD modes
170171
{VHD_VIDEOSTD_3840x2160p_24Hz, "3840x2160 24 Hz",
171-
3840u, 2160u, 24.0, PROGRESSIVE, VHD_INTERFACE_4XHD},
172+
3840u, 2160u, 24.0, PROGRESSIVE, VHD_INTERFACE_4XHD, VHD_CLOCKDIV_1},
172173
{VHD_VIDEOSTD_3840x2160p_25Hz, "3840x2160 25 Hz",
173-
3840u, 2160u, 25.0, PROGRESSIVE, VHD_INTERFACE_4XHD},
174+
3840u, 2160u, 25.0, PROGRESSIVE, VHD_INTERFACE_4XHD, VHD_CLOCKDIV_1},
174175
{VHD_VIDEOSTD_3840x2160p_30Hz, "3840x2160 30 Hz",
175-
3840u, 2160u, 30.0, PROGRESSIVE, VHD_INTERFACE_4XHD},
176+
3840u, 2160u, 30.0, PROGRESSIVE, VHD_INTERFACE_4XHD, VHD_CLOCKDIV_1},
176177
{VHD_VIDEOSTD_3840x2160p_50Hz, "3840x2160 50 Hz",
177-
3840u, 2160u, 50.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A},
178+
3840u, 2160u, 50.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A, VHD_CLOCKDIV_1},
178179
{VHD_VIDEOSTD_3840x2160p_60Hz, "3840x2160 60 Hz",
179-
3840u, 2160u, 60.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A},
180+
3840u, 2160u, 60.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A, VHD_CLOCKDIV_1},
180181
{VHD_VIDEOSTD_4096x2160p_24Hz, "4096x2160 24 Hz",
181-
4096u, 2160u, 24.0, PROGRESSIVE, VHD_INTERFACE_4XHD},
182+
4096u, 2160u, 24.0, PROGRESSIVE, VHD_INTERFACE_4XHD, VHD_CLOCKDIV_1},
182183
{VHD_VIDEOSTD_4096x2160p_25Hz, "4096x2160 25 Hz",
183-
4096u, 2160u, 25.0, PROGRESSIVE, VHD_INTERFACE_4XHD},
184+
4096u, 2160u, 25.0, PROGRESSIVE, VHD_INTERFACE_4XHD, VHD_CLOCKDIV_1},
184185
{VHD_VIDEOSTD_4096x2160p_25Hz, "4096x2160 25 Hz",
185-
4096u, 2160u, 25.0, PROGRESSIVE, VHD_INTERFACE_4XHD},
186+
4096u, 2160u, 25.0, PROGRESSIVE, VHD_INTERFACE_4XHD, VHD_CLOCKDIV_1},
186187
{VHD_VIDEOSTD_4096x2160p_48Hz, "4096x2160 48 Hz",
187-
4096u, 2160u, 48.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A},
188+
4096u, 2160u, 48.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A, VHD_CLOCKDIV_1},
188189
{VHD_VIDEOSTD_4096x2160p_50Hz, "4096x2160 50 Hz",
189-
4096u, 2160u, 50.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A},
190+
4096u, 2160u, 50.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A, VHD_CLOCKDIV_1},
190191
{VHD_VIDEOSTD_4096x2160p_60Hz, "4096x2160 60 Hz",
191-
4096u, 2160u, 60.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A},
192+
4096u, 2160u, 60.0, PROGRESSIVE, VHD_INTERFACE_4X3G_A, VHD_CLOCKDIV_1},
192193
};
193194

194195
const static int deltacast_frame_modes_count = sizeof(deltacast_frame_modes)/sizeof(deltacast_frame_mode_t);

src/video_display/deltacast.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* code is written by DELTACAST's VideoMaster SDK example SampleTX
66
*/
77
/*
8-
* Copyright (c) 2012-2023 CESNET, z. s. p. o.
8+
* Copyright (c) 2012-2025 CESNET, zájnové sdružení právnických osob
99
* All rights reserved.
1010
*
1111
* Redistribution and use in source and binary forms, with or without
@@ -212,6 +212,7 @@ display_deltacast_reconfigure(void *state, struct video_desc desc)
212212
{
213213
struct state_deltacast *s = (struct state_deltacast *)state;
214214
int VideoStandard = 0;
215+
VHD_CLOCKDIVISOR clock_system = NB_VHD_CLOCKDIVISORS;
215216
int i;
216217
ULONG Result;
217218

@@ -244,6 +245,7 @@ display_deltacast_reconfigure(void *state, struct video_desc desc)
244245
desc.width == deltacast_frame_modes[i].width &&
245246
desc.height == deltacast_frame_modes[i].height) {
246247
VideoStandard = deltacast_frame_modes[i].mode;
248+
clock_system = deltacast_frame_modes[i].clock_system;
247249
log_msg(LOG_LEVEL_NOTICE, "[DELTACAST] %s mode selected.\n", deltacast_frame_modes[i].name);
248250
break;
249251
}
@@ -274,6 +276,8 @@ display_deltacast_reconfigure(void *state, struct video_desc desc)
274276
VHD_SetStreamProperty(s->StreamHandle,VHD_SDI_SP_VIDEO_STANDARD,VideoStandard);
275277
VHD_SetStreamProperty(s->StreamHandle,VHD_CORE_SP_BUFFERQUEUE_DEPTH,2);
276278
VHD_SetStreamProperty(s->StreamHandle,VHD_CORE_SP_BUFFERQUEUE_PRELOAD,0);
279+
VHD_SetBoardProperty(s->BoardHandle, VHD_SDI_BP_CLOCK_SYSTEM,
280+
clock_system);
277281

278282
Result = VHD_StartStream(s->StreamHandle);
279283
if (Result != VHDERR_NOERROR) {
@@ -447,9 +451,6 @@ static void *display_deltacast_init(struct module *parent, const char *fmt, unsi
447451

448452
/* Disable RX0-TX0 by-pass relay loopthrough */
449453
delta_set_loopback_state(s->BoardHandle, (int) s->channel, FALSE);
450-
451-
/* Select a 1/1 clock system */
452-
VHD_SetBoardProperty(s->BoardHandle,VHD_SDI_BP_CLOCK_SYSTEM,VHD_CLOCKDIV_1);
453454

454455
return s;
455456
#undef HANDLE_ERROR

0 commit comments

Comments
 (0)