+void XineStream::update_channels()
+{
+ MutexLock lock(mutex);
+ char langbuf[XINE_LANG_MAX];
+
+ unsigned n_audio = xine_get_stream_info(stream, XINE_STREAM_INFO_MAX_AUDIO_CHANNEL);
+ audio_channels.resize(n_audio);
+ for(unsigned i=0; i<n_audio; ++i)
+ {
+ xine_get_audio_lang(stream, i, langbuf);
+ audio_channels[i].assign(langbuf);
+ }
+
+ unsigned n_spu = xine_get_stream_info(stream, XINE_STREAM_INFO_MAX_SPU_CHANNEL);
+ spu_channels.resize(n_spu);
+ for(unsigned i=0; i<n_spu; ++i)
+ {
+ xine_get_spu_lang(stream, i, langbuf);
+ spu_channels[i].assign(langbuf);
+ }
+
+ signal_channels_changed.emit();
+}
+