bool desc::iso639language(dvbpsi_descriptor_t* p_descriptor) { if (p_descriptor->i_tag != DT_ISO639Language) return false; dvbpsi_iso639_dr_t* dr = dvbpsi_DecodeISO639Dr(p_descriptor); if (desc_dr_failed(dr)) return false; for (int i = 0; i < dr->i_code_count; ++i) { dr0a_t *dr0a = &_0a[i]; dr0a->audio_type = dr->code[i].i_audio_type; dr0a->iso_639_code[0] = dr->code[i].iso_639_code[0]; dr0a->iso_639_code[1] = dr->code[i].iso_639_code[1]; dr0a->iso_639_code[2] = dr->code[i].iso_639_code[2]; dPrintf("%c%c%c %x", dr->code[i].iso_639_code[0], dr->code[i].iso_639_code[1], dr->code[i].iso_639_code[2], dr->code[i].i_audio_type); } return true; }
bool desc::ac3_audio(dvbpsi_descriptor_t* p_descriptor) { #if DVBPSI_SUPPORTS_DR_81_86_A0_A1 if (p_descriptor->i_tag != DT_Ac3Audio) return false; dvbpsi_ac3_audio_dr_t* dr = dvbpsi_DecodeAc3AudioDr(p_descriptor); if (desc_dr_failed(dr)) return false; dPrintf("sample rate: %s", sample_rate(dr->i_sample_rate_code)); dPrintf("bsid: %02x", dr->i_bsid); dPrintf("bit rate code: %02x", dr->i_bit_rate_code); dPrintf("surround mode: %s", surround_mode(dr->i_surround_mode)); dPrintf("bsmod: %02x", dr->i_bsmod); dPrintf("num channels: %s", num_channels(dr->i_num_channels)); dPrintf("full svc: %s", (dr->b_full_svc) ? "true" : "false"); dPrintf("description: %s", dr->text); if (dr->b_language_flag) dPrintf("language: %c%c%c", dr->language[0], dr->language[1], dr->language[2]); if (dr->b_language_flag_2) dPrintf("language_2: %c%c%c", dr->language_2[0], dr->language_2[1], dr->language_2[2]); #endif return true; }
bool desc::service(dvbpsi_descriptor_t* p_descriptor) { if (p_descriptor->i_tag != DT_Service) return false; dvbpsi_service_dr_t* dr = dvbpsi_DecodeServiceDr(p_descriptor); if (desc_dr_failed(dr)) return false; get_descriptor_text(dr->i_service_provider_name, dr->i_service_provider_name_length, provider_name); get_descriptor_text(dr->i_service_name, dr->i_service_name_length, service_name); dPrintf("%s, %s", provider_name, service_name); return true; }
bool desc::short_event(dvbpsi_descriptor_t* p_descriptor) { if (p_descriptor->i_tag != DT_ShortEvent) return false; dvbpsi_short_event_dr_t* dr = dvbpsi_DecodeShortEventDr(p_descriptor); if (desc_dr_failed(dr)) return false; memcpy(_4d.lang, dr->i_iso_639_code, 3); get_descriptor_text(dr->i_event_name, dr->i_event_name_length, _4d.name); get_descriptor_text(dr->i_text, dr->i_text_length, _4d.text); dPrintf("%s, %s, %s", _4d.lang, _4d.name, _4d.text); return true; }
bool desc::_lcn(dvbpsi_descriptor_t* p_descriptor) { if (p_descriptor->i_tag != DT_LogicalChannelNumber) return false; dvbpsi_lcn_dr_t* dr = dvbpsi_DecodeLCNDr(p_descriptor); if (desc_dr_failed(dr)) return false; for (int i = 0; i < dr->i_number_of_entries; i ++) { #if 0 = lcn->p_entries[i].i_service_id; = lcn->p_entries[i].i_logical_channel_number; #else lcn[dr->p_entries[i].i_service_id] = dr->p_entries[i].i_logical_channel_number; dprintf("%d, %d", dr->p_entries[i].i_service_id, lcn[dr->p_entries[i].i_service_id]); #endif }
bool desc::freq_list(dvbpsi_descriptor_t* p_descriptor) { if (p_descriptor->i_tag != DT_FrequencyList) return false; dvbpsi_frequency_list_dr_t* dr = dvbpsi_DecodeFrequencyListDr(p_descriptor); if (desc_dr_failed(dr)) return false; for (int i = 0; i < dr->i_number_of_frequencies; ++i) { #if 0 = dr->p_center_frequencies[i] #else dprintf("%d", dr->p_center_frequencies[i]); #endif } return true; }