2017-10-12 02:41:39 +05:30
|
|
|
#ifndef NK_IMPLEMENTATION
|
|
|
|
|
#include "nuklear_lib/nuklear.h"
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <string.h>
|
|
|
|
|
#include <stdlib.h>
|
2022-12-14 23:17:57 +01:00
|
|
|
#endif //! NK_IMPLEMENTATION
|
2017-10-12 02:41:39 +05:30
|
|
|
|
|
|
|
|
#include "ccextractorGUI.h"
|
|
|
|
|
#include "tabs.h"
|
|
|
|
|
#include "command_builder.h"
|
|
|
|
|
|
|
|
|
|
void command_builder(struct built_string *command,
|
2020-03-29 22:16:39 +02:00
|
|
|
struct main_tab *main_settings,
|
|
|
|
|
struct network_popup *network_settings, struct input_tab *input,
|
|
|
|
|
struct advanced_input_tab *advanced_input,
|
|
|
|
|
struct output_tab *output,
|
|
|
|
|
struct decoders_tab *decoders,
|
|
|
|
|
struct credits_tab *credits,
|
|
|
|
|
struct debug_tab *debug,
|
|
|
|
|
struct burned_subs_tab *burned_subs)
|
2017-10-12 02:41:39 +05:30
|
|
|
{
|
2020-03-29 22:16:39 +02:00
|
|
|
static char buffer[1000];
|
2017-10-12 02:41:39 +05:30
|
|
|
#ifdef _WIN32
|
|
|
|
|
strcpy(buffer, "ccextractorwin --gui_mode_reports");
|
|
|
|
|
#else
|
|
|
|
|
strcpy(buffer, "./ccextractor --gui_mode_reports");
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/*INPUT COMMANDS*/
|
|
|
|
|
if (main_settings->port_or_files == FILES)
|
|
|
|
|
{
|
|
|
|
|
if (input->type_select != 0)
|
|
|
|
|
{
|
|
|
|
|
strcat(buffer, " -in=");
|
|
|
|
|
strcat(buffer, input->type[input->type_select]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (input->is_split)
|
|
|
|
|
strcat(buffer, " --videoedited");
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (input->is_process_from)
|
|
|
|
|
{
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -startat ");
|
|
|
|
|
strcat(buffer, input->from_time_buffer);
|
|
|
|
|
}
|
2020-03-29 22:16:39 +02:00
|
|
|
|
|
|
|
|
if (input->is_process_until)
|
|
|
|
|
{
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -endat ");
|
|
|
|
|
strcat(buffer, input->until_time_buffer);
|
|
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
switch (input->elementary_stream)
|
|
|
|
|
{
|
|
|
|
|
case AUTO_DETECT:
|
|
|
|
|
break;
|
|
|
|
|
case STREAM_TYPE:
|
|
|
|
|
strcat(buffer, " -datastreamtype ");
|
|
|
|
|
strncat(buffer, input->stream_type, input->stream_type_len);
|
|
|
|
|
break;
|
|
|
|
|
case STREAM_PID:
|
|
|
|
|
strcat(buffer, " -datapid ");
|
|
|
|
|
strncat(buffer, input->stream_pid, input->stream_pid_len);
|
2017-10-12 02:41:39 +05:30
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (input->is_assume_mpeg)
|
|
|
|
|
{
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -streamtype ");
|
|
|
|
|
strncat(buffer, input->mpeg_type, input->mpeg_type_len);
|
|
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (decoders->teletext_dvb == TELETEXT)
|
2017-10-12 02:41:39 +05:30
|
|
|
{
|
2020-03-29 22:16:39 +02:00
|
|
|
switch (input->teletext_decoder)
|
|
|
|
|
{
|
|
|
|
|
case AUTO_DECODE:
|
|
|
|
|
break;
|
|
|
|
|
case FORCE:
|
|
|
|
|
strcat(buffer, " -teletext");
|
|
|
|
|
break;
|
|
|
|
|
case DISABLE:
|
|
|
|
|
strcat(buffer, " -noteletext");
|
2017-10-12 02:41:39 +05:30
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (input->is_process_teletext_page)
|
|
|
|
|
{
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -tpage ");
|
|
|
|
|
strncat(buffer, input->teletext_page_number, input->teletext_page_numer_len);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
switch (input->is_limit)
|
|
|
|
|
{
|
|
|
|
|
case NO_LIMIT:
|
|
|
|
|
break;
|
|
|
|
|
case LIMITED:
|
|
|
|
|
strcat(buffer, " --screenfuls ");
|
|
|
|
|
strcat(buffer, input->screenful_limit_buffer);
|
2017-10-12 02:41:39 +05:30
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
switch (input->clock_input)
|
|
|
|
|
{
|
|
|
|
|
case AUTO:
|
|
|
|
|
break;
|
|
|
|
|
case GOP:
|
|
|
|
|
strcat(buffer, " --goptime");
|
|
|
|
|
break;
|
|
|
|
|
case PTS:
|
|
|
|
|
strcat(buffer, " --nogoptime");
|
|
|
|
|
break;
|
2017-10-12 02:41:39 +05:30
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*Main tab and network settings*/
|
|
|
|
|
if (main_settings->port_or_files == PORT)
|
|
|
|
|
{
|
|
|
|
|
switch (main_settings->port_select)
|
|
|
|
|
{
|
2020-03-29 22:16:39 +02:00
|
|
|
case 0:
|
|
|
|
|
strcat(buffer, " -udp ");
|
|
|
|
|
if (!strstr(network_settings->udp_ipv4, "None"))
|
|
|
|
|
{
|
|
|
|
|
strncat(buffer, network_settings->udp_ipv4, network_settings->udp_ipv4_len);
|
|
|
|
|
strcat(buffer, ":");
|
|
|
|
|
}
|
|
|
|
|
strncat(buffer, main_settings->port_num, main_settings->port_num_len);
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
strcat(buffer, " -tcp ");
|
|
|
|
|
strncat(buffer, main_settings->port_num, main_settings->port_num_len);
|
|
|
|
|
if (!strstr(network_settings->tcp_pass, "None"))
|
|
|
|
|
{
|
|
|
|
|
strcat(buffer, " -tcppassword ");
|
|
|
|
|
strncat(buffer, network_settings->tcp_pass, network_settings->tcp_pass_len);
|
|
|
|
|
}
|
|
|
|
|
if (!strstr(network_settings->tcp_desc, "None"))
|
|
|
|
|
{
|
|
|
|
|
strcat(buffer, " -tcpdesc ");
|
|
|
|
|
strncat(buffer, network_settings->tcp_desc, network_settings->tcp_desc_len);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
2017-10-12 02:41:39 +05:30
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (input->is_live_stream)
|
|
|
|
|
{
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -s ");
|
|
|
|
|
strncat(buffer, input->wait_data_sec, input->wait_data_sec_len);
|
|
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (input->is_process_from)
|
|
|
|
|
{
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -startat ");
|
|
|
|
|
strcat(buffer, input->from_time_buffer);
|
|
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (input->is_process_until)
|
|
|
|
|
{
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -endat ");
|
|
|
|
|
strcat(buffer, input->until_time_buffer);
|
|
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
switch (input->elementary_stream)
|
|
|
|
|
{
|
|
|
|
|
case AUTO_DETECT:
|
|
|
|
|
break;
|
|
|
|
|
case STREAM_TYPE:
|
|
|
|
|
strcat(buffer, " -datastreamtype ");
|
|
|
|
|
strncat(buffer, input->stream_type, input->stream_type_len);
|
|
|
|
|
break;
|
|
|
|
|
case STREAM_PID:
|
|
|
|
|
strcat(buffer, " -datapid ");
|
|
|
|
|
strncat(buffer, input->stream_pid, input->stream_pid_len);
|
2017-10-12 02:41:39 +05:30
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (input->is_assume_mpeg)
|
|
|
|
|
{
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -streamtype ");
|
|
|
|
|
strncat(buffer, input->mpeg_type, input->mpeg_type_len);
|
|
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
switch (input->teletext_decoder)
|
|
|
|
|
{
|
|
|
|
|
case AUTO_DECODE:
|
|
|
|
|
break;
|
|
|
|
|
case FORCE:
|
|
|
|
|
strcat(buffer, " -teletext");
|
|
|
|
|
break;
|
|
|
|
|
case DISABLE:
|
|
|
|
|
strcat(buffer, " -noteletext");
|
2017-10-12 02:41:39 +05:30
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (input->is_process_teletext_page)
|
|
|
|
|
{
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -tpage ");
|
|
|
|
|
strncat(buffer, input->teletext_page_number, input->teletext_page_numer_len);
|
|
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
switch (input->is_limit)
|
|
|
|
|
{
|
|
|
|
|
case NO_LIMIT:
|
|
|
|
|
break;
|
|
|
|
|
case LIMITED:
|
|
|
|
|
strcat(buffer, " --screenfuls ");
|
|
|
|
|
strcat(buffer, input->screenful_limit_buffer);
|
2017-10-12 02:41:39 +05:30
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
switch (input->clock_input)
|
|
|
|
|
{
|
|
|
|
|
case AUTO:
|
|
|
|
|
break;
|
|
|
|
|
case GOP:
|
|
|
|
|
strcat(buffer, " --goptime");
|
|
|
|
|
break;
|
|
|
|
|
case PTS:
|
|
|
|
|
strcat(buffer, " --nogoptime");
|
|
|
|
|
break;
|
2017-10-12 02:41:39 +05:30
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*ADVANCED INPUT SETTINGS*/
|
2020-03-29 22:16:39 +02:00
|
|
|
if (advanced_input->is_multiple_program)
|
2017-10-12 02:41:39 +05:30
|
|
|
{
|
2020-03-29 22:16:39 +02:00
|
|
|
switch (advanced_input->multiple_program)
|
2017-10-12 02:41:39 +05:30
|
|
|
{
|
2020-03-29 22:16:39 +02:00
|
|
|
case FIRST_PROG:
|
|
|
|
|
strcat(buffer, " -autoprogram");
|
|
|
|
|
break;
|
|
|
|
|
case PROG_NUM:
|
|
|
|
|
strcat(buffer, " -pn ");
|
|
|
|
|
strcat(buffer, advanced_input->prog_number);
|
|
|
|
|
break;
|
2017-10-12 02:41:39 +05:30
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
switch (advanced_input->set_myth)
|
2017-10-12 02:41:39 +05:30
|
|
|
{
|
2020-03-29 22:16:39 +02:00
|
|
|
case AUTO_MYTH:
|
|
|
|
|
break;
|
|
|
|
|
case FORCE_MYTH:
|
|
|
|
|
strcat(buffer, " -myth");
|
|
|
|
|
break;
|
|
|
|
|
case DISABLE_MYTH:
|
|
|
|
|
strcat(buffer, " -nomyth");
|
|
|
|
|
break;
|
2017-10-12 02:41:39 +05:30
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (advanced_input->is_mpeg_90090)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -90090");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (advanced_input->is_padding_0000)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -fp");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (advanced_input->is_order_ccinfo)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -poc");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (advanced_input->is_win_bug)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -wtvconvertfix");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (advanced_input->is_hauppage_file)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -haup");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (advanced_input->is_process_mp4)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -mp4vidtrack");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (advanced_input->is_ignore_broadcast)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -noautotimeref");
|
|
|
|
|
|
|
|
|
|
/*DECODERS TAB*/
|
2020-03-29 22:16:39 +02:00
|
|
|
if (decoders->is_field2)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -12");
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
switch (decoders->channel)
|
2017-10-12 02:41:39 +05:30
|
|
|
{
|
2020-03-29 22:16:39 +02:00
|
|
|
case CHANNEL_1:
|
|
|
|
|
break;
|
|
|
|
|
case CHANNEL_2:
|
|
|
|
|
strcat(buffer, " -cc2");
|
|
|
|
|
break;
|
2017-10-12 02:41:39 +05:30
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (decoders->is_708)
|
2017-10-12 02:41:39 +05:30
|
|
|
{
|
|
|
|
|
strcat(buffer, " -svc ");
|
|
|
|
|
strncat(buffer, decoders->services, decoders->services_len);
|
|
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
switch (decoders->teletext_dvb)
|
2017-10-12 02:41:39 +05:30
|
|
|
{
|
2020-03-29 22:16:39 +02:00
|
|
|
case TELETEXT:
|
|
|
|
|
if (strcmp(decoders->min_distance, "2"))
|
|
|
|
|
{
|
|
|
|
|
strcat(buffer, " -levdistmincnt ");
|
|
|
|
|
strncat(buffer, decoders->min_distance, decoders->min_distance_len);
|
|
|
|
|
}
|
|
|
|
|
if (strcmp(decoders->max_distance, "10"))
|
|
|
|
|
{
|
|
|
|
|
strcat(buffer, " -levdistmaxpct ");
|
|
|
|
|
strncat(buffer, decoders->max_distance, decoders->max_distance_len);
|
|
|
|
|
}
|
|
|
|
|
break;
|
2017-10-12 02:41:39 +05:30
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
case DVB:
|
|
|
|
|
strcat(buffer, " -codec dvdsub");
|
|
|
|
|
break;
|
2017-10-12 02:41:39 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*CREDITS TAB*/
|
2020-03-29 22:16:39 +02:00
|
|
|
if (credits->is_start_text)
|
2017-10-12 02:41:39 +05:30
|
|
|
{
|
|
|
|
|
strcat(buffer, " --startcreditstext \"");
|
|
|
|
|
strncat(buffer, credits->start_text, credits->start_text_len);
|
2020-03-29 22:16:39 +02:00
|
|
|
strcat(buffer, "\" --startcreditsforatleast ");
|
2017-10-12 02:41:39 +05:30
|
|
|
strncat(buffer, credits->start_atleast_sec, credits->start_atleast_sec_len);
|
|
|
|
|
strcat(buffer, " --startcreditsforatmost ");
|
|
|
|
|
strncat(buffer, credits->start_atmost_sec, credits->start_atmost_sec_len);
|
2020-03-29 22:16:39 +02:00
|
|
|
if (credits->is_before)
|
2017-10-12 02:41:39 +05:30
|
|
|
{
|
|
|
|
|
strcat(buffer, " --startcreditsnotbefore ");
|
|
|
|
|
strcat(buffer, credits->before_time_buffer);
|
|
|
|
|
}
|
2020-03-29 22:16:39 +02:00
|
|
|
if (credits->is_after)
|
2017-10-12 02:41:39 +05:30
|
|
|
{
|
|
|
|
|
strcat(buffer, " --startcreditsnotafter ");
|
|
|
|
|
strcat(buffer, credits->after_time_buffer);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (credits->is_end_text)
|
2017-10-12 02:41:39 +05:30
|
|
|
{
|
|
|
|
|
strcat(buffer, " --endcreditstext \"");
|
|
|
|
|
strncat(buffer, credits->end_text, credits->end_text_len);
|
|
|
|
|
strcat(buffer, "\" --endcreditsforatleast ");
|
|
|
|
|
strncat(buffer, credits->end_atleast_sec, credits->end_atleast_sec_len);
|
|
|
|
|
strcat(buffer, " --endcreditsforatmost ");
|
|
|
|
|
strncat(buffer, credits->end_atmost_sec, credits->end_atmost_sec_len);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*DEBUG TAB*/
|
2020-03-29 22:16:39 +02:00
|
|
|
if (debug->is_elementary_stream)
|
2017-10-12 02:41:39 +05:30
|
|
|
{
|
|
|
|
|
strcat(buffer, " -cf ");
|
|
|
|
|
strncat(buffer, debug->elementary_stream, debug->elementary_stream_len);
|
|
|
|
|
}
|
2020-03-29 22:16:39 +02:00
|
|
|
if (debug->is_dump_packets)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -debug");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (debug->is_debug_608)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -608");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (debug->is_debug_708)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -708");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (debug->is_stamp_output)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -goppts");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (debug->is_debug_analysed_vid)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -vides");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (debug->is_raw_608_708)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -cbraw");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (debug->is_debug_parsed)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -parsedebug");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (!strcmp(output->type[output->type_select], "bin"))
|
2017-10-12 02:41:39 +05:30
|
|
|
{
|
2020-03-29 22:16:39 +02:00
|
|
|
if (debug->is_disable_sync)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -nosync");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (debug->is_no_padding)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -fullbin");
|
|
|
|
|
}
|
2020-03-29 22:16:39 +02:00
|
|
|
if (debug->is_debug_xds)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -xdsdebug");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (debug->is_output_pat)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -parsePAT");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (debug->is_output_pmt)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -parsePMT");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (debug->is_scan_ccdata)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -investigate_packets");
|
2020-03-29 22:16:39 +02:00
|
|
|
if (debug->is_output_levenshtein)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -deblev");
|
|
|
|
|
|
|
|
|
|
/*HARD_BURNED SUBS SETTINGS*/
|
2020-03-29 22:16:39 +02:00
|
|
|
if (burned_subs->is_burned_subs)
|
2017-10-12 02:41:39 +05:30
|
|
|
{
|
|
|
|
|
strcat(buffer, " -hardsubx -ocr_mode");
|
2020-03-29 22:16:39 +02:00
|
|
|
switch (burned_subs->ocr_mode)
|
2017-10-12 02:41:39 +05:30
|
|
|
{
|
2020-03-29 22:16:39 +02:00
|
|
|
case FRAME_WISE:
|
|
|
|
|
strcat(buffer, " frame");
|
|
|
|
|
break;
|
|
|
|
|
case WORD_WISE:
|
|
|
|
|
strcat(buffer, " word");
|
|
|
|
|
break;
|
|
|
|
|
case LETTER_WISE:
|
|
|
|
|
strcat(buffer, " letter");
|
|
|
|
|
break;
|
2017-10-12 02:41:39 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
|
|
strcat(buffer, " -min_sub_duration ");
|
|
|
|
|
strcat(buffer, burned_subs->min_duration);
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (!burned_subs->subs_color_select && burned_subs->color_type == PRESET)
|
2017-10-12 02:41:39 +05:30
|
|
|
sprintf(buffer, "%s -whiteness_thresh %d", buffer, burned_subs->luminance_threshold);
|
|
|
|
|
|
|
|
|
|
sprintf(buffer, "%s -conf_thresh %d", buffer, burned_subs->confidence_threshold);
|
|
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (burned_subs->is_italic)
|
2017-10-12 02:41:39 +05:30
|
|
|
strcat(buffer, " -detect_italics");
|
|
|
|
|
}
|
|
|
|
|
|
2022-12-14 23:17:57 +01:00
|
|
|
// Output
|
2017-10-12 02:41:39 +05:30
|
|
|
{
|
2020-03-29 22:16:39 +02:00
|
|
|
strcat(buffer, " -out=");
|
|
|
|
|
strcat(buffer, output->type[output->type_select]);
|
|
|
|
|
if (output->is_filename)
|
|
|
|
|
{
|
|
|
|
|
strcat(buffer, " -o \"");
|
|
|
|
|
strncat(buffer, output->filename, output->filename_len);
|
|
|
|
|
strcat(buffer, "\"");
|
|
|
|
|
}
|
2017-10-12 02:41:39 +05:30
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (output->is_delay)
|
|
|
|
|
{
|
|
|
|
|
strcat(buffer, " -delay ");
|
|
|
|
|
strcat(buffer, output->delay_sec_buffer);
|
|
|
|
|
}
|
2017-10-12 02:41:39 +05:30
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (output->is_export_xds)
|
|
|
|
|
strcat(buffer, " -xds");
|
2017-10-12 02:41:39 +05:30
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
switch (output->encoding)
|
|
|
|
|
{
|
2017-10-12 02:41:39 +05:30
|
|
|
case LATIN:
|
|
|
|
|
strcat(buffer, " -latin1");
|
|
|
|
|
break;
|
|
|
|
|
case UNIC:
|
|
|
|
|
strcat(buffer, " -unicode");
|
|
|
|
|
break;
|
|
|
|
|
case UTF:
|
|
|
|
|
strcat(buffer, " -utf8");
|
|
|
|
|
break;
|
2020-03-29 22:16:39 +02:00
|
|
|
}
|
2017-10-12 02:41:39 +05:30
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (output->is_bom)
|
|
|
|
|
strcat(buffer, " -bom");
|
|
|
|
|
else
|
|
|
|
|
strcat(buffer, " -nobom");
|
2017-10-12 02:41:39 +05:30
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (output->is_cap_standard)
|
|
|
|
|
strcat(buffer, " --sentencecap");
|
2017-10-12 02:41:39 +05:30
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (output->is_cap_file)
|
|
|
|
|
{
|
|
|
|
|
strcat(buffer, " --capfile \"");
|
|
|
|
|
strncat(buffer, output->cap_dictionary, output->cap_dictionary_len);
|
|
|
|
|
strcat(buffer, "\"");
|
|
|
|
|
}
|
2017-10-12 02:41:39 +05:30
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
switch (output->line_ending)
|
|
|
|
|
{
|
2017-10-12 02:41:39 +05:30
|
|
|
case CRLF:
|
|
|
|
|
break;
|
|
|
|
|
case LF:
|
|
|
|
|
strcat(buffer, " -lf");
|
|
|
|
|
break;
|
2020-03-29 22:16:39 +02:00
|
|
|
}
|
2017-10-12 02:41:39 +05:30
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (output->is_center)
|
|
|
|
|
strcat(buffer, " -trim");
|
2017-10-12 02:41:39 +05:30
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (output->is_dash)
|
|
|
|
|
strcat(buffer, " -autodash");
|
2017-10-12 02:41:39 +05:30
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
if (output->no_typesetting)
|
|
|
|
|
strcat(buffer, " --notypesetting");
|
2017-10-12 02:41:39 +05:30
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
switch (output->font_color)
|
|
|
|
|
{
|
2017-10-12 02:41:39 +05:30
|
|
|
case NO_COLOR:
|
|
|
|
|
strcat(buffer, " --nofontcolor");
|
|
|
|
|
break;
|
|
|
|
|
case DEFAULT_COLOR:
|
|
|
|
|
strcat(buffer, " --defaultcolor #");
|
|
|
|
|
strcat(buffer, output->color_hex);
|
|
|
|
|
break;
|
2020-03-29 22:16:39 +02:00
|
|
|
}
|
2017-10-12 02:41:39 +05:30
|
|
|
|
2020-03-29 22:16:39 +02:00
|
|
|
switch (output->onetime_or_realtime)
|
|
|
|
|
{
|
2017-10-12 02:41:39 +05:30
|
|
|
case ONETIME:
|
|
|
|
|
strcat(buffer, " --norollup");
|
|
|
|
|
break;
|
|
|
|
|
case REALTIME:
|
|
|
|
|
strcat(buffer, " -dru");
|
|
|
|
|
switch (output->roll_limit_select)
|
|
|
|
|
{
|
2020-03-29 22:16:39 +02:00
|
|
|
case 1:
|
|
|
|
|
strcat(buffer, " -ru1");
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
strcat(buffer, " -ru2");
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
strcat(buffer, " -ru3");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
2017-10-12 02:41:39 +05:30
|
|
|
}
|
2020-03-29 22:16:39 +02:00
|
|
|
}
|
2017-10-12 02:41:39 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
|
|
memset(command->term_string, 0, sizeof(command->term_string));
|
|
|
|
|
strncpy(command->term_string, buffer, strlen(buffer));
|
|
|
|
|
}
|