struct encoder_ctx *init_encoder(struct encoder_cfg *opt) { int ret; int i; struct encoder_ctx *ctx = malloc(sizeof(struct encoder_ctx)); if(!ctx) return NULL; ctx->buffer = (unsigned char *) malloc (INITIAL_ENC_BUFFER_CAPACITY); if (!ctx->buffer) { free(ctx); return NULL; } ctx->capacity=INITIAL_ENC_BUFFER_CAPACITY; ctx->srt_counter = 0; ctx->program_number = opt->program_number; ctx->send_to_srv = opt->send_to_srv; ctx->multiple_files = opt->multiple_files; ctx->first_input_file = opt->first_input_file; ret = init_output_ctx(ctx, opt); if (ret != EXIT_OK) { freep(&ctx->buffer); free(ctx); return NULL; } ctx->in_fileformat = opt->in_format; /** used in case of SUB_EOD_MARKER */ ctx->prev_start = -1; ctx->subs_delay = opt->subs_delay; ctx->last_displayed_subs_ms = 0; ctx->date_format = opt->date_format; ctx->millis_separator = opt->millis_separator; ctx->startcredits_displayed = 0; ctx->encoding = opt->encoding; ctx->write_format = opt->write_format; ctx->transcript_settings = &opt->transcript_settings; ctx->no_bom = opt->no_bom; ctx->sentence_cap = opt->sentence_cap; ctx->trim_subs = opt->trim_subs; ctx->autodash = opt->autodash; ctx->no_font_color = opt->no_font_color; ctx->no_type_setting = opt->no_type_setting; ctx->gui_mode_reports = opt->gui_mode_reports; ctx->extract = opt->extract; ctx->subline = (unsigned char *) malloc (SUBLINESIZE); if(!ctx->subline) { freep(&ctx->out); freep(&ctx->buffer); free(ctx); return NULL; } ctx->start_credits_text = opt->start_credits_text; ctx->end_credits_text = opt->end_credits_text; ctx->startcreditsnotbefore = opt->startcreditsnotbefore; ctx->startcreditsnotafter = opt->startcreditsnotafter; ctx->startcreditsforatleast = opt->startcreditsforatleast; ctx->startcreditsforatmost = opt->startcreditsforatmost; ctx->endcreditsforatleast = opt->endcreditsforatleast; ctx->endcreditsforatmost = opt->endcreditsforatmost; ctx->new_sentence = 1; // Capitalize next letter? if (opt->line_terminator_lf) ctx->encoded_crlf_length = encode_line(ctx, ctx->encoded_crlf, (unsigned char *) "\n"); else ctx->encoded_crlf_length = encode_line(ctx, ctx->encoded_crlf, (unsigned char *) "\r\n"); ctx->encoded_br_length = encode_line(ctx, ctx->encoded_br, (unsigned char *) "<br>"); for (i = 0; i < ctx->nb_out; i++) write_subtitle_file_header(ctx,ctx->out+i); ctx->dtvcc_extract = opt->dtvcc_extract; return ctx; }
int reset_output_ctx(struct encoder_ctx *ctx, struct encoder_cfg *cfg) { dinit_output_ctx(ctx); return init_output_ctx(ctx, cfg); }