@@ -6,6 +6,7 @@ public string Generate(System.Windows.Controls.ItemCollection tracks)
6
6
{
7
7
string audioCommand = "" ;
8
8
int endIndex = 0 ;
9
+ int externalIndex = 0 ;
9
10
bool copyaudio = false ;
10
11
bool noaudio = true ;
11
12
@@ -14,7 +15,12 @@ public string Generate(System.Windows.Controls.ItemCollection tracks)
14
15
// Skip Audio Track if not active
15
16
if ( track . Active == false ) continue ;
16
17
17
- audioCommand += MultipleTrackCommandGenerator ( int . Parse ( track . Bitrate ) , track . Index , endIndex , track . Codec , track . Channels , track . Language , track . CustomName , track . PCM ) ;
18
+ if ( track . External )
19
+ {
20
+ externalIndex += 1 ;
21
+ }
22
+
23
+ audioCommand += MultipleTrackCommandGenerator ( int . Parse ( track . Bitrate ) , track . Index , endIndex , track . Codec , track . Channels , track . Language , track . CustomName , track . PCM , track . External , externalIndex ) ;
18
24
endIndex += 1 ;
19
25
20
26
if ( track . Codec == 5 )
@@ -48,26 +54,33 @@ private static string SwitchCodec(int _audioCodec, bool _pcmBluray)
48
54
return audioCodeSwitch ;
49
55
}
50
56
51
- private string MultipleTrackCommandGenerator ( int _activeTrackBitrate , int _mapIndex , int _endIndex , int _activTrackCodec , int _channelLayout , string _language , string _trackName , bool _pcmBluray )
57
+ private string MultipleTrackCommandGenerator ( int activeTrackBitrate , int mapIndex , int endIndex , int activTrackCodec , int channelLayout , string language , string trackName , bool pcmBluray , bool external , int externalIndex )
52
58
{
53
59
string audioCodecCommand ;
60
+
54
61
// Audio Mapping
55
- audioCodecCommand = " -map 0:a:" + _mapIndex + " -c:a:" + _endIndex ;
62
+ audioCodecCommand = " -map 0:a:" + mapIndex + " -c:a:" + endIndex ;
63
+
64
+ if ( external )
65
+ {
66
+ audioCodecCommand = " -map " + externalIndex + ":a:" + mapIndex + " -c:a:" + endIndex ;
67
+ }
68
+
56
69
// Codec
57
- audioCodecCommand += SwitchCodec ( _activTrackCodec , _pcmBluray ) ;
70
+ audioCodecCommand += SwitchCodec ( activTrackCodec , pcmBluray ) ;
58
71
// Bitrate
59
- if ( _activTrackCodec != 5 )
72
+ if ( activTrackCodec != 5 )
60
73
{
61
- audioCodecCommand += " -b:a:" + _endIndex + " " + _activeTrackBitrate + "k" ;
74
+ audioCodecCommand += " -b:a:" + endIndex + " " + activeTrackBitrate + "k" ;
62
75
}
63
76
// Channel Layout
64
- audioCodecCommand += " -ac:a:" + _endIndex + " " + SetChannelLayout ( _channelLayout ) ;
77
+ audioCodecCommand += " -ac:a:" + endIndex + " " + SetChannelLayout ( channelLayout ) ;
65
78
// Metadata
66
- audioCodecCommand += " -metadata:s:a:" + _endIndex + " language=" + resources . MediaLanguages . Languages [ _language ] ;
79
+ audioCodecCommand += " -metadata:s:a:" + endIndex + " language=" + resources . MediaLanguages . Languages [ language ] ;
67
80
// Title
68
- if ( _activTrackCodec != 5 )
81
+ if ( activTrackCodec != 5 )
69
82
{
70
- audioCodecCommand += " -metadata:s:a:" + _endIndex + " title=" + '\u0022 ' + _trackName + '\u0022 ' ;
83
+ audioCodecCommand += " -metadata:s:a:" + endIndex + " title=" + '\u0022 ' + trackName + '\u0022 ' ;
71
84
}
72
85
return audioCodecCommand ;
73
86
}
0 commit comments