Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-2-2
Commits
78e6b2bc
Commit
78e6b2bc
authored
Jul 12, 2013
by
Denis Charmet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix track selection according to user preference.
Fix #6375 and may benefit to #8936
parent
4a0eb67d
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
59 additions
and
43 deletions
+59
-43
src/input/es_out.c
src/input/es_out.c
+59
-43
No files found.
src/input/es_out.c
View file @
78e6b2bc
...
...
@@ -1756,28 +1756,34 @@ static void EsOutSelect( es_out_t *out, es_out_id_t *es, bool b_force )
if
(
i_cat
==
AUDIO_ES
)
{
int
idx1
=
LanguageArrayIndex
(
p_sys
->
ppsz_audio_language
,
es
->
psz_language_code
);
if
(
p_sys
->
p_es_audio
&&
p_sys
->
p_es_audio
->
fmt
.
i_priority
>=
es
->
fmt
.
i_priority
)
if
(
p_sys
->
ppsz_audio_language
)
{
int
idx2
=
LanguageArrayIndex
(
p_sys
->
ppsz_audio_language
,
p_sys
->
p_es_audio
->
psz_language_code
);
if
(
idx1
<
0
||
(
idx2
>=
0
&&
idx2
<=
idx1
)
)
return
;
i_wanted
=
es
->
i_channel
;
int
es_idx
=
LanguageArrayIndex
(
p_sys
->
ppsz_audio_language
,
es
->
psz_language_code
);
if
(
!
p_sys
->
p_es_audio
)
{
/* Only select the language if it's in the list */
if
(
es_idx
>=
0
)
i_wanted
=
es
->
i_channel
;
}
else
{
int
selected_es_idx
=
LanguageArrayIndex
(
p_sys
->
ppsz_audio_language
,
p_sys
->
p_es_audio
->
psz_language_code
);
if
(
es_idx
>=
0
&&
(
es_idx
<
selected_es_idx
||
(
es_idx
==
selected_es_idx
&&
p_sys
->
p_es_audio
->
fmt
.
i_priority
<
es
->
fmt
.
i_priority
)
)
)
i_wanted
=
es
->
i_channel
;
}
}
else
{
/* Select audio if (no audio selected yet)
* - no audio-language
* - no audio code for the ES
* - audio code in the requested list */
if
(
idx1
>=
0
||
!
strcmp
(
es
->
psz_language_code
,
"??"
)
||
!
p_sys
->
ppsz_audio_language
)
/* Select the first one if there is no selected audio yet
* then choose by ES priority */
if
(
!
p_sys
->
p_es_audio
||
p_sys
->
p_es_audio
->
fmt
.
i_priority
<
es
->
fmt
.
i_priority
)
i_wanted
=
es
->
i_channel
;
}
...
...
@@ -1794,34 +1800,44 @@ static void EsOutSelect( es_out_t *out, es_out_id_t *es, bool b_force )
}
else
if
(
i_cat
==
SPU_ES
)
{
int
idx1
=
LanguageArrayIndex
(
p_sys
->
ppsz_sub_language
,
es
->
psz_language_code
);
if
(
p_sys
->
p_es_sub
&&
p_sys
->
p_es_sub
->
fmt
.
i_priority
>=
es
->
fmt
.
i_priority
)
{
int
idx2
=
LanguageArrayIndex
(
p_sys
->
ppsz_sub_language
,
p_sys
->
p_es_sub
->
psz_language_code
);
msg_Dbg
(
p_sys
->
p_input
,
"idx1=%d(%s) idx2=%d(%s)"
,
idx1
,
es
->
psz_language_code
,
idx2
,
p_sys
->
p_es_sub
->
psz_language_code
);
if
(
idx1
<
0
||
(
idx2
>=
0
&&
idx2
<=
idx1
)
)
return
;
/* We found a SPU that matches our language request */
i_wanted
=
es
->
i_channel
;
}
else
if
(
idx1
>=
0
)
if
(
p_sys
->
ppsz_sub_language
)
{
msg_Dbg
(
p_sys
->
p_input
,
"idx1=%d(%s)"
,
idx1
,
es
->
psz_language_code
);
i_wanted
=
es
->
i_channel
;
int
es_idx
=
LanguageArrayIndex
(
p_sys
->
ppsz_sub_language
,
es
->
psz_language_code
);
if
(
!
p_sys
->
p_es_sub
)
{
/* Select the language if it's in the list */
if
(
es_idx
>=
0
||
/*FIXME: Should default subtitle not in the list be
* displayed if not forbidden by none? */
(
p_sys
->
i_default_sub_id
>=
0
&&
/* check if the subtitle isn't forbidden by none */
LanguageArrayIndex
(
p_sys
->
ppsz_sub_language
,
"none"
)
<
0
&&
es
->
i_id
==
p_sys
->
i_default_sub_id
)
)
i_wanted
=
es
->
i_channel
;
}
else
{
int
selected_es_idx
=
LanguageArrayIndex
(
p_sys
->
ppsz_sub_language
,
p_sys
->
p_es_sub
->
psz_language_code
);
if
(
es_idx
>=
0
&&
(
es_idx
<
selected_es_idx
||
(
es_idx
==
selected_es_idx
&&
p_sys
->
p_es_sub
->
fmt
.
i_priority
<
es
->
fmt
.
i_priority
)
)
)
i_wanted
=
es
->
i_channel
;
}
}
else
if
(
p_sys
->
i_default_sub_id
>=
0
)
else
{
if
(
es
->
i_id
==
p_sys
->
i_default_sub_id
)
/* If there is no user preference, select the default subtitle
* or adapt by ES priority */
if
(
(
!
p_sys
->
p_es_sub
&&
(
p_sys
->
i_default_sub_id
>=
0
&&
es
->
i_id
==
p_sys
->
i_default_sub_id
)
)
||
(
p_sys
->
p_es_sub
&&
p_sys
->
p_es_sub
->
fmt
.
i_priority
<
es
->
fmt
.
i_priority
)
)
i_wanted
=
es
->
i_channel
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment