summaryrefslogtreecommitdiff
path: root/src/demuxers/demux_ts.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/demuxers/demux_ts.c')
-rw-r--r--src/demuxers/demux_ts.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/demuxers/demux_ts.c b/src/demuxers/demux_ts.c
index 089d37619..d38ff19ca 100644
--- a/src/demuxers/demux_ts.c
+++ b/src/demuxers/demux_ts.c
@@ -2483,22 +2483,33 @@ static int demux_ts_get_optional_data(demux_plugin_t *this_gen,
{
case DEMUX_OPTIONAL_DATA_AUDIOLANG:
if ((channel >= 0) && (channel < this->audio_tracks_count)) {
- if(this->audio_tracks[channel].lang)
+ if (this->audio_tracks[channel].lang[0]) {
strcpy(str, this->audio_tracks[channel].lang);
- else
- sprintf(str, "%3i", _x_get_audio_channel(this->stream));
+ } else {
+ /* input plugin may know the language */
+ if (this->input->get_capabilities(this->input) & INPUT_CAP_AUDIOLANG)
+ return DEMUX_OPTIONAL_UNSUPPORTED;
+ sprintf(str, "%3i", channel);
+ }
}
else {
- snprintf(str, XINE_LANG_MAX, "%3i", _x_get_audio_channel(this->stream));
+ strcpy(str, "none");
}
return DEMUX_OPTIONAL_SUCCESS;
case DEMUX_OPTIONAL_DATA_SPULANG:
if (channel>=0 && channel<this->spu_langs_count) {
- memcpy(str, this->spu_langs[channel].desc.lang, 3);
- str[3] = 0;}
- else
+ if (this->spu_langs[channel].desc.lang[0]) {
+ strcpy(str, this->spu_langs[channel].desc.lang);
+ } else {
+ /* input plugin may know the language */
+ if (this->input->get_capabilities(this->input) & INPUT_CAP_SPULANG)
+ return DEMUX_OPTIONAL_UNSUPPORTED;
+ sprintf(str, "%3i", channel);
+ }
+ } else {
strcpy(str, "none");
+ }
return DEMUX_OPTIONAL_SUCCESS;
default: