int BDRingBuffer::GetSubtitleLanguage(uint streamID) { QMutexLocker locker(&m_infoLock); if (!m_currentTitleInfo) return iso639_str3_to_key("und"); int pgCount = m_currentTitleInfo->clips->pg_stream_count; uint subCount = 0; for (int i = 0; i < pgCount; ++i) { if (m_currentTitleInfo->clips->pg_streams[i].coding_type >= 0x90 && m_currentTitleInfo->clips->pg_streams[i].coding_type <= 0x92) { if (streamID == subCount) { uint8_t lang[4] = { 0, 0, 0, 0 }; memcpy(lang, m_currentTitleInfo->clips->pg_streams[streamID].lang, 4); int code = iso639_key_to_canonical_key((lang[0]<<16)|(lang[1]<<8)|lang[2]); VERBOSE(VB_IMPORTANT, LOC + QString("Subtitle Lang: %1 Code: %2") .arg(code).arg(iso639_key_to_str3(code))); return code; } subCount++; } } return iso639_str3_to_key("und"); }
int BDRingBuffer::GetAudioLanguage(uint streamID) { if (!m_currentTitleInfo || streamID >= m_currentTitleInfo->clips->audio_stream_count) return iso639_str3_to_key("und"); uint8_t lang[4] = { 0, 0, 0, 0 }; memcpy(lang, m_currentTitleInfo->clips->audio_streams[streamID].lang, 4); int code = iso639_key_to_canonical_key((lang[0]<<16)|(lang[1]<<8)|lang[2]); VERBOSE(VB_IMPORTANT, QString("Audio Lang: %1 Code: %2").arg(code).arg(iso639_key_to_str3(code))); return code; }
int BDRingBuffer::GetAudioLanguage(uint streamID) { QMutexLocker locker(&m_infoLock); if (!m_currentTitleInfo || streamID >= m_currentTitleInfo->clips->audio_stream_count) return iso639_str3_to_key("und"); uint8_t lang[4] = { 0, 0, 0, 0 }; memcpy(lang, m_currentTitleInfo->clips->audio_streams[streamID].lang, 4); int code = iso639_key_to_canonical_key((lang[0]<<16)|(lang[1]<<8)|lang[2]); LOG(VB_GENERAL, LOG_INFO, LOC + QString("Audio Lang: %1 Code: %2") .arg(code).arg(iso639_key_to_str3(code))); return code; }