summaryrefslogtreecommitdiff
path: root/src/demuxers
diff options
context:
space:
mode:
authorPetri Hintukainen <phintuka@users.sourceforge.net>2011-11-25 12:45:05 +0200
committerPetri Hintukainen <phintuka@users.sourceforge.net>2011-11-25 12:45:05 +0200
commitddf8d612c6642d404ae7faefe3e4cc9e388064f5 (patch)
treeb9f97b3eb86ec6ef672de3921a4e69451ac24a69 /src/demuxers
parent5fbbca157c2de145cc1b096bc4fd205612829b83 (diff)
parentc9408fd26d777eb760911094b20cabe6ab5e7fe3 (diff)
downloadxine-lib-ddf8d612c6642d404ae7faefe3e4cc9e388064f5.tar.gz
xine-lib-ddf8d612c6642d404ae7faefe3e4cc9e388064f5.tar.bz2
Merge
Diffstat (limited to 'src/demuxers')
-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: