- //counter for the lines
- int i = 0;
- int16_t AudioGroupCounter = 0;
-
- /*#####################################################*/
- /*######## FIELD 1 #######################*/
- /*#####################################################*/
-
- // line 1-22 VERTICAL_BLANKING:23 lines SAV 0x2ac EAV 0x2d8
- for (i = 1; i <= 5; i++) {
- create_SDI_line(buf, FIELD_1, VERT_BLANKING, vBuffer, aBuffer, i, 0,
- getDBN(my_DBN++), AudioGroupCounter, getNumberOfAudioGroups2Write(i), audio_streams);
- AudioGroupCounter += getNumberOfAudioGroups2Write(i);
- p = pack10(p, buf, TOTAL_SAMPLES);
- }
- for (i = 6; i <= 8; i++) {
- create_SDI_line(buf, FIELD_1, VERT_BLANKING, vBuffer, aBuffer, i, 0,
- getDBN(my_DBN++), AudioGroupCounter, getNumberOfAudioGroups2Write(i), audio_streams);
- AudioGroupCounter += getNumberOfAudioGroups2Write(i);
- p = pack10(p, buf, TOTAL_SAMPLES);
- }
- for (i = 9; i <= 22; i++) {
- create_SDI_line(buf, FIELD_1, VERT_BLANKING, vBuffer, aBuffer, i, 0,
- getDBN(my_DBN++), AudioGroupCounter, getNumberOfAudioGroups2Write(i), audio_streams);
- AudioGroupCounter += getNumberOfAudioGroups2Write(i);
- p = pack10(p, buf, TOTAL_SAMPLES);
- }
- // line 23-310 ACTIVE: 287 lines SAV 0x200 EAV 0x274
- int f1counter = 1; // only odd lines
- for (i = 23; i <= 310; i++) {
- create_SDI_line(buf, FIELD_1, ACTIVE_VIDEO, vBuffer, aBuffer, i,
- f1counter, getDBN(my_DBN++), AudioGroupCounter, getNumberOfAudioGroups2Write(i), audio_streams);
- AudioGroupCounter += getNumberOfAudioGroups2Write(i);
- p = pack10(p, buf, TOTAL_SAMPLES);
- f1counter += 2;
- }
- i = 311;
- // line 311-312 VERTICAL_BLANKING: 2 lines SAV 0x2ac EAV 0x2d8
- create_SDI_line(buf, FIELD_1, VERT_BLANKING, vBuffer, aBuffer, i, 0,
- getDBN(my_DBN++), AudioGroupCounter, getNumberOfAudioGroups2Write(i), audio_streams);
- AudioGroupCounter += getNumberOfAudioGroups2Write(i++);
- p = pack10(p, buf, TOTAL_SAMPLES);
- create_SDI_line(buf, FIELD_1, VERT_BLANKING, vBuffer, aBuffer, i, 0,
- getDBN(my_DBN++), AudioGroupCounter, getNumberOfAudioGroups2Write(i), audio_streams);
- AudioGroupCounter += getNumberOfAudioGroups2Write(i++);
- p = pack10(p, buf, TOTAL_SAMPLES);
-
- /*#####################################################*/
- /*######## FIELD 2 ########################*/
- /*#####################################################*/
-
- // line 313-336 VERTICAL_BLANKING: 23 lines SAV 0x3b0 EAV 0x3c4
- create_SDI_line(buf, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0,
- getDBN(my_DBN++), AudioGroupCounter, getNumberOfAudioGroups2Write(i), audio_streams);
- AudioGroupCounter += getNumberOfAudioGroups2Write(i++);
- p = pack10(p, buf, TOTAL_SAMPLES);
-
- create_SDI_line(buf, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0,
- getDBN(my_DBN++), AudioGroupCounter, getNumberOfAudioGroups2Write(i), audio_streams);
- AudioGroupCounter += getNumberOfAudioGroups2Write(i++);
- p = pack10(p, buf, TOTAL_SAMPLES);
-
- create_SDI_line(buf, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0,
- getDBN(my_DBN++), AudioGroupCounter, getNumberOfAudioGroups2Write(i), audio_streams);
- AudioGroupCounter += getNumberOfAudioGroups2Write(i++);
- p = pack10(p, buf, TOTAL_SAMPLES);
-
- create_SDI_line(buf, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0,
- getDBN(my_DBN++), AudioGroupCounter, getNumberOfAudioGroups2Write(i), audio_streams);
- AudioGroupCounter += getNumberOfAudioGroups2Write(i++);
- p = pack10(p, buf, TOTAL_SAMPLES);
-
- create_SDI_line(buf, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0,
- getDBN(my_DBN++), AudioGroupCounter, getNumberOfAudioGroups2Write(i), audio_streams);
- AudioGroupCounter += getNumberOfAudioGroups2Write(i++);
- p = pack10(p, buf, TOTAL_SAMPLES);
-
- create_SDI_line(buf, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0,
- getDBN(my_DBN++), AudioGroupCounter, getNumberOfAudioGroups2Write(i), audio_streams);
- AudioGroupCounter += getNumberOfAudioGroups2Write(i++);
- p = pack10(p, buf, TOTAL_SAMPLES);
-
- // `getAudioGroups2Write()`=0
- for (i = 319; i <= 321; i++) {
- create_SDI_line(buf, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0,
- getDBN(my_DBN++), AudioGroupCounter, getNumberOfAudioGroups2Write(i), audio_streams);
- AudioGroupCounter += getNumberOfAudioGroups2Write(i);
- p = pack10(p, buf, TOTAL_SAMPLES);
- }
- for (i = 322; i <= 335; i++) {
- create_SDI_line(buf, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0,
- getDBN(my_DBN++), AudioGroupCounter, getNumberOfAudioGroups2Write(i), audio_streams);
- AudioGroupCounter += getNumberOfAudioGroups2Write(i);
- p = pack10(p, buf, TOTAL_SAMPLES);
- }
- // line 336-623 ACTIVE: 288 lines SAV 0x31c EAV 0x368
- int f2counter = 2; // only even Lines
- for (i = 336; i <= 623; i++) {
-
- create_SDI_line(buf, FIELD_2, ACTIVE_VIDEO, vBuffer, aBuffer, i,
- f2counter, getDBN(my_DBN++), AudioGroupCounter, getNumberOfAudioGroups2Write(i), audio_streams);
- AudioGroupCounter += getNumberOfAudioGroups2Write(i);
- p = pack10(p, buf, TOTAL_SAMPLES);
- f2counter += 2;
- }
- // line 624-625 VERTICAL_BLANKING: 2 lines SAV 0x3b0 EAV 0x3c4
- for (i = 624; i <= 625; i++) {
- create_SDI_line(buf, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0,
- getDBN(my_DBN++), AudioGroupCounter, getNumberOfAudioGroups2Write(i), audio_streams);
- AudioGroupCounter += getNumberOfAudioGroups2Write(i);
- p = pack10(p, buf, TOTAL_SAMPLES);
+
+ /*
+ * if SDI FMT_576i50 for card ASSY 145 or ASSY 159, with access to whole SDI frame buffer
+ * and device_file_audio must be NULL
+ * than we write own audio data,
+ * else
+ * than HD for card ASSY 193
+ */
+ //if (info.fmt == &FMT_576i50 && device_file_audio == NULL && !strcmp(device_file_video, "/dev/sdivideotx0")) {
+ if (info.fmt == &FMT_576i50 && info.blanking) {
+
+ //counter for the lines
+ int i = 0;
+ int16_t AudioGroupCounter = 0;
+
+ /*#####################################################*/
+ /*######## FIELD 1 #######################*/
+ /*#####################################################*/
+
+ info.xyz = &FIELD_1_VERT_BLANKING;
+
+ // line 1-22 VERTICAL_BLANKING:23 lines SAV 0x2ac EAV 0x2d8
+ for (i = 1; i <= 5; i++) {
+ create_SD_SDI_Line(line_buffer, &info, FIELD_1, VERT_BLANKING, vBuffer, aBuffer, i, 0, getDBN(my_DBN++), AudioGroupCounter,
+ getNumberOfAudioGroups2Write(i), audio_streams);
+ AudioGroupCounter += getNumberOfAudioGroups2Write(i);
+ p = pack10(p, line_buffer, info.fmt->samples_per_line);
+ }
+ for (i = 6; i <= 8; i++) {
+ create_SD_SDI_Line(line_buffer, &info, FIELD_1, VERT_BLANKING, vBuffer, aBuffer, i, 0, getDBN(my_DBN++), AudioGroupCounter,
+ getNumberOfAudioGroups2Write(i), audio_streams);
+ AudioGroupCounter += getNumberOfAudioGroups2Write(i);
+ p = pack10(p, line_buffer, info.fmt->samples_per_line);
+ }
+ for (i = 9; i <= 22; i++) {
+ create_SD_SDI_Line(line_buffer, &info, FIELD_1, VERT_BLANKING, vBuffer, aBuffer, i, 0, getDBN(my_DBN++), AudioGroupCounter,
+ getNumberOfAudioGroups2Write(i), audio_streams);
+ AudioGroupCounter += getNumberOfAudioGroups2Write(i);
+ p = pack10(p, line_buffer, info.fmt->samples_per_line);
+ }
+ // line 23-310 ACTIVE: 287 lines SAV 0x200 EAV 0x274
+ info.xyz = &FIELD_1_ACTIVE;
+ int f1counter = 1; // only odd lines
+ for (i = 23; i <= 310; i++) {
+ create_SD_SDI_Line(line_buffer, &info, FIELD_1, ACTIVE_VIDEO, vBuffer, aBuffer, i, f1counter, getDBN(my_DBN++), AudioGroupCounter,
+ getNumberOfAudioGroups2Write(i), audio_streams);
+ AudioGroupCounter += getNumberOfAudioGroups2Write(i);
+ p = pack10(p, line_buffer, info.fmt->samples_per_line);
+ f1counter += 2;
+ }
+ i = 311;
+ // line 311-312 VERTICAL_BLANKING: 2 lines SAV 0x2ac EAV 0x2d8
+ info.xyz = &FIELD_1_VERT_BLANKING;
+ create_SD_SDI_Line(line_buffer, &info, FIELD_1, VERT_BLANKING, vBuffer, aBuffer, i, 0, getDBN(my_DBN++), AudioGroupCounter,
+ getNumberOfAudioGroups2Write(i), audio_streams);
+ AudioGroupCounter += getNumberOfAudioGroups2Write(i++);
+ p = pack10(p, line_buffer, info.fmt->samples_per_line);
+ create_SD_SDI_Line(line_buffer, &info, FIELD_1, VERT_BLANKING, vBuffer, aBuffer, i, 0, getDBN(my_DBN++), AudioGroupCounter,
+ getNumberOfAudioGroups2Write(i), audio_streams);
+ AudioGroupCounter += getNumberOfAudioGroups2Write(i++);
+ p = pack10(p, line_buffer, info.fmt->samples_per_line);
+
+ /*#####################################################*/
+ /*######## FIELD 2 ########################*/
+ /*#####################################################*/
+
+ info.xyz = &FIELD_2_VERT_BLANKING;
+
+ // line 313-336 VERTICAL_BLANKING: 23 lines SAV 0x3b0 EAV 0x3c4
+ create_SD_SDI_Line(line_buffer, &info, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0, getDBN(my_DBN++), AudioGroupCounter,
+ getNumberOfAudioGroups2Write(i), audio_streams);
+ AudioGroupCounter += getNumberOfAudioGroups2Write(i++);
+ p = pack10(p, line_buffer, info.fmt->samples_per_line);
+
+ create_SD_SDI_Line(line_buffer, &info, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0, getDBN(my_DBN++), AudioGroupCounter,
+ getNumberOfAudioGroups2Write(i), audio_streams);
+ AudioGroupCounter += getNumberOfAudioGroups2Write(i++);
+ p = pack10(p, line_buffer, info.fmt->samples_per_line);
+
+ create_SD_SDI_Line(line_buffer, &info, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0, getDBN(my_DBN++), AudioGroupCounter,
+ getNumberOfAudioGroups2Write(i), audio_streams);
+ AudioGroupCounter += getNumberOfAudioGroups2Write(i++);
+ p = pack10(p, line_buffer, info.fmt->samples_per_line);
+
+ create_SD_SDI_Line(line_buffer, &info, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0, getDBN(my_DBN++), AudioGroupCounter,
+ getNumberOfAudioGroups2Write(i), audio_streams);
+ AudioGroupCounter += getNumberOfAudioGroups2Write(i++);
+ p = pack10(p, line_buffer, info.fmt->samples_per_line);
+
+ create_SD_SDI_Line(line_buffer, &info, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0, getDBN(my_DBN++), AudioGroupCounter,
+ getNumberOfAudioGroups2Write(i), audio_streams);
+ AudioGroupCounter += getNumberOfAudioGroups2Write(i++);
+ p = pack10(p, line_buffer, info.fmt->samples_per_line);
+
+ create_SD_SDI_Line(line_buffer, &info, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0, getDBN(my_DBN++), AudioGroupCounter,
+ getNumberOfAudioGroups2Write(i), audio_streams);
+ AudioGroupCounter += getNumberOfAudioGroups2Write(i++);
+ p = pack10(p, line_buffer, info.fmt->samples_per_line);
+
+ // `getAudioGroups2Write()`=0
+ for (i = 319; i <= 321; i++) {
+ create_SD_SDI_Line(line_buffer, &info, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0, getDBN(my_DBN++), AudioGroupCounter,
+ getNumberOfAudioGroups2Write(i), audio_streams);
+ AudioGroupCounter += getNumberOfAudioGroups2Write(i);
+ p = pack10(p, line_buffer, info.fmt->samples_per_line);
+ }
+ for (i = 322; i <= 335; i++) {
+ create_SD_SDI_Line(line_buffer, &info, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0, getDBN(my_DBN++), AudioGroupCounter,
+ getNumberOfAudioGroups2Write(i), audio_streams);
+ AudioGroupCounter += getNumberOfAudioGroups2Write(i);
+ p = pack10(p, line_buffer, info.fmt->samples_per_line);
+ }
+ // line 336-623 ACTIVE: 288 lines SAV 0x31c EAV 0x368
+ info.xyz = &FIELD_2_ACTIVE;
+ int f2counter = 2; // only even Lines
+ for (i = 336; i <= 623; i++) {
+
+ create_SD_SDI_Line(line_buffer, &info, FIELD_2, ACTIVE_VIDEO, vBuffer, aBuffer, i, f2counter, getDBN(my_DBN++), AudioGroupCounter,
+ getNumberOfAudioGroups2Write(i), audio_streams);
+ AudioGroupCounter += getNumberOfAudioGroups2Write(i);
+ p = pack10(p, line_buffer, info.fmt->samples_per_line);
+ f2counter += 2;
+ }
+ // line 624-625 VERTICAL_BLANKING: 2 lines SAV 0x3b0 EAV 0x3c4
+ info.xyz = &FIELD_2_VERT_BLANKING;
+ for (i = 624; i <= 625; i++) {
+ create_SD_SDI_Line(line_buffer, &info, FIELD_2, VERT_BLANKING, vBuffer, aBuffer, i, 0, getDBN(my_DBN++), AudioGroupCounter,
+ getNumberOfAudioGroups2Write(i), audio_streams);
+ AudioGroupCounter += getNumberOfAudioGroups2Write(i);
+ p = pack10(p, line_buffer, info.fmt->samples_per_line);
+ }
+
+ } else { // use HD board without blanking
+
+ // start with first even line
+ active_video_line = 1;
+
+ /* *****************************************
+ * *********** LINE DISTRIBUTION ***********
+ * *****************************************
+ *
+ * << decide form of scanning (interlaced || progressive) >>
+ * if (interlaced)
+ * << decide lines per frame (1125 || 625 || 525) >>
+ * if(1125) 1080x1920 HD
+ * than create lines
+ * else if(625) 576x720 PAL
+ * than create lines
+ * else (525) 486x720 NTSC
+ * than create lines
+ * else (progressive)
+ * << decide resolution (1125 || 750) >>
+ * if(1125) 1080x1920 HD
+ * than create lines
+ * else(750) 720x1280 HD
+ * than create lines
+ *
+ **/
+
+ // Generate a frame
+ if (info.fmt->interlaced) {
+
+ /****************************************
+ * INTERLACED
+ ****************************************/
+
+ if (info.fmt->lines_per_frame == 1125) {
+
+ if (info.blanking) {
+ elements = info.fmt->samples_per_line;
+ info.xyz = &FIELD_1_VERT_BLANKING;
+ for (info.ln = 1; info.ln <= 20; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, 0, VERT_BLANKING, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ } else {
+ elements = info.fmt->active_samples_per_line;
+ }
+ info.xyz = &FIELD_1_ACTIVE;
+ for (info.ln = 21; info.ln <= 560; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, active_video_line, ACTIVE_VIDEO, vBuffer);
+ p = pack(p, line_buffer, elements);
+ active_video_line += 2;
+ }
+ if (info.blanking) {
+ info.xyz = &FIELD_1_VERT_BLANKING;
+ for (info.ln = 561; info.ln <= 563; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, 0, VERT_BLANKING, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ info.xyz = &FIELD_2_VERT_BLANKING;
+ for (info.ln = 564; info.ln <= 583; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, 0, VERT_BLANKING, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ }
+ // start with first odd line
+ active_video_line = 2;
+
+ info.xyz = &FIELD_2_ACTIVE;
+ for (info.ln = 584; info.ln <= 1123; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, active_video_line, ACTIVE_VIDEO, vBuffer);
+ p = pack(p, line_buffer, elements);
+ active_video_line += 2;
+ }
+ if (info.blanking) {
+ info.xyz = &FIELD_2_VERT_BLANKING;
+ for (info.ln = 1124; info.ln <= 1125; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, 0, VERT_BLANKING, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ }
+ } else if (info.fmt->lines_per_frame == 625) {
+
+ elements = info.fmt->active_samples_per_line;
+
+ // start with first even line
+ active_video_line = 1;
+
+ /**
+ * Generate an SDI PAL frame
+ **/
+ if (info.blanking) {
+ info.xyz = &FIELD_1_VERT_BLANKING;
+ for (info.ln = 1; info.ln <= 22; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, 0, VERT_BLANKING, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ }
+ info.xyz = &FIELD_1_ACTIVE;
+ for (info.ln = 23; info.ln <= 310; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, active_video_line, ACTIVE_VIDEO, vBuffer);
+ p = pack(p, line_buffer, elements);
+ active_video_line += 2;
+ }
+ if (info.blanking) {
+ info.xyz = &FIELD_1_VERT_BLANKING;
+ for (info.ln = 311; info.ln <= 312; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, 0, VERT_BLANKING, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ info.xyz = &FIELD_2_VERT_BLANKING;
+ for (info.ln = 313; info.ln <= 335; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, 0, VERT_BLANKING, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ }
+
+ // start with first odd line
+ active_video_line = 2;
+
+ info.xyz = &FIELD_2_ACTIVE;
+ for (info.ln = 336; info.ln <= 623; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, active_video_line, ACTIVE_VIDEO, vBuffer);
+ p = pack(p, line_buffer, elements);
+ active_video_line += 2;
+ }
+ if (info.blanking) {
+ info.xyz = &FIELD_2_VERT_BLANKING;
+ for (info.ln = 624; info.ln <= 625; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, 0, VERT_BLANKING, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ }
+ } else if (info.fmt->lines_per_frame == 525) {
+
+ /**
+ * Generate an SDI NTSC frame
+ **/
+ elements = info.fmt->active_samples_per_line;
+
+ active_video_line = 1;
+
+ if (info.blanking) {
+ info.xyz = &FIELD_1_VERT_BLANKING;
+ for (info.ln = 1; info.ln <= 15; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, 0, VERT_BLANKING, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ for (info.ln = 16; info.ln <= 16; info.ln++) {
+ info.xyz = &FIELD_1_ACTIVE;
+ mkline(line_buffer, &info, VERT_BLANKING);
+ p = pack(p, line_buffer, elements);
+ }
+ }
+
+ info.xyz = &FIELD_1_ACTIVE;
+ // 3 lines opt. video data
+ for (info.ln = 17; info.ln <= 19; info.ln++) {
+ mkline(line_buffer, &info, BLACK);
+ p = pack(p, line_buffer, elements);
+ }
+ for (info.ln = 20; info.ln <= 259; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, active_video_line, ACTIVE_VIDEO, vBuffer);
+ p = pack(p, line_buffer, elements);
+ active_video_line += 2;
+ }
+ if (info.blanking) {
+ info.xyz = &FIELD_1_VERT_BLANKING;
+ for (info.ln = 260; info.ln <= 261; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, 0, VERT_BLANKING, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ info.xyz = &FIELD_2_VERT_BLANKING;
+ // 7 lines vertical data
+ for (info.ln = 262; info.ln <= 269; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, 0, VERT_BLANKING, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ // 9 lines opt. video data ?? // TODO have look to SMPTE
+ for (info.ln = 270; info.ln <= 278; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, 0, VERT_BLANKING, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+
+ }
+
+ active_video_line = 0;
+ // 3 lines opt. video data
+ info.xyz = &FIELD_2_ACTIVE;
+ for (info.ln = 279; info.ln <= 281; info.ln++) {
+ mkline(line_buffer, &info, BLACK);
+ p = pack(p, line_buffer, elements);
+ }
+ for (info.ln = 282; info.ln <= 521; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, active_video_line, ACTIVE_VIDEO, vBuffer);
+ p = pack(p, line_buffer, elements);
+ active_video_line += 2;
+ }
+ if (info.blanking) {
+ info.xyz = &FIELD_2_VERT_BLANKING;
+ for (info.ln = 522; info.ln <= 525; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, 0, VERT_BLANKING, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ }
+ }
+ } else {
+
+ /****************************************
+ * PROGRESSIVE
+ ****************************************/
+
+ // start with first line numerber
+ active_video_line = 0;
+
+ if (info.fmt->lines_per_frame == 1125) {
+ if (info.blanking) {
+ elements = info.fmt->samples_per_line;
+ info.xyz = &FIELD_1_VERT_BLANKING;
+ for (info.ln = 1; info.ln <= 41; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, 0, VERT_BLANKING, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ } else {
+ elements = info.fmt->active_samples_per_line;
+ }
+ info.xyz = &FIELD_1_ACTIVE;
+ for (info.ln = 42; info.ln <= 1121; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, active_video_line++, ACTIVE_VIDEO, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ if (info.blanking) {
+ info.xyz = &FIELD_1_VERT_BLANKING;
+ for (info.ln = 1122; info.ln <= 1125; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, 0, VERT_BLANKING, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ }
+ } else {
+ if (info.blanking) {
+ elements = info.fmt->samples_per_line;
+ info.xyz = &FIELD_1_VERT_BLANKING;
+ for (info.ln = 1; info.ln <= 25; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, 0, VERT_BLANKING, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ } else {
+ elements = info.fmt->active_samples_per_line;
+ }
+ info.xyz = &FIELD_1_ACTIVE;
+ for (info.ln = 26; info.ln <= 745; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, active_video_line++, ACTIVE_VIDEO, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ if (info.blanking) {
+ info.xyz = &FIELD_1_VERT_BLANKING;
+ for (info.ln = 746; info.ln <= 750; info.ln++) {
+ create_HD_SDI_Line(line_buffer, &info, 0, VERT_BLANKING, vBuffer);
+ p = pack(p, line_buffer, elements);
+ }
+ }
+ }
+ }