libcaption_stauts_t sei_from_scc(sei_t* sei, const scc_t* scc) { unsigned int i; cea708_t cea708; cea708_init(&cea708, sei->timestamp); // set up a new popon frame for (i = 0; i < scc->cc_size; ++i) { if (31 == cea708.user_data.cc_count) { sei_append_708(sei, &cea708); } cea708_add_cc_data(&cea708, 1, cc_type_ntsc_cc_field_1, scc->cc_data[i]); } if (0 != cea708.user_data.cc_count) { sei_append_708(sei, &cea708); } return LIBCAPTION_OK; }
// This should be moved to 708.c // This works for popon, but bad for paint on and roll up // Please understand this function before you try to use it, setting null values have different effects than you may assume void sei_encode_eia608 (sei_t* sei, cea708_t* cea708, uint16_t cc_data) { // This one is full, flush and init a new one // shoudl this be 32? I cant remember if (31 == cea708->user_data.cc_count) { sei_append_708 (sei,cea708); } if (0 == cea708->user_data.cc_count) { // This is a new 708 header, but a continuation of a 608 stream cea708_add_cc_data (cea708, 1, cc_type_ntsc_cc_field_1, eia608_control_command (eia608_control_resume_caption_loading, DEFAULT_CHANNEL)); } if (0 == cc_data) { // Finished sei_encode_eia608 (sei,cea708,eia608_control_command (eia608_control_end_of_caption, DEFAULT_CHANNEL)); sei_append_708 (sei,cea708); return; } cea708_add_cc_data (cea708, 1, cc_type_ntsc_cc_field_1, cc_data); }
libcaption_stauts_t sei_from_caption_clear(sei_t* sei) { cea708_t cea708; cea708_init(&cea708, sei->timestamp); // set up a new popon frame cea708_add_cc_data(&cea708, 1, cc_type_ntsc_cc_field_1, eia608_control_command(eia608_control_end_of_caption, DEFAULT_CHANNEL)); cea708_add_cc_data(&cea708, 1, cc_type_ntsc_cc_field_1, eia608_control_command(eia608_control_end_of_caption, DEFAULT_CHANNEL)); cea708_add_cc_data(&cea708, 1, cc_type_ntsc_cc_field_1, eia608_control_command(eia608_control_erase_non_displayed_memory, DEFAULT_CHANNEL)); cea708_add_cc_data(&cea708, 1, cc_type_ntsc_cc_field_1, eia608_control_command(eia608_control_erase_non_displayed_memory, DEFAULT_CHANNEL)); cea708_add_cc_data(&cea708, 1, cc_type_ntsc_cc_field_1, eia608_control_command(eia608_control_erase_display_memory, DEFAULT_CHANNEL)); cea708_add_cc_data(&cea708, 1, cc_type_ntsc_cc_field_1, eia608_control_command(eia608_control_erase_display_memory, DEFAULT_CHANNEL)); sei_append_708(sei, &cea708); return LIBCAPTION_OK; }