Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
aaf469ce
authored
Jan 14, 2018
by
Drew Hill
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
code review changes and fix for discontinuity
parent
821ea0e5
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
39 additions
and
25 deletions
library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java
library/core/src/main/java/com/google/android/exoplayer2/audio/FloatResamplingAudioProcessor.java
library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java
View file @
aaf469ce
...
@@ -168,8 +168,8 @@ public final class DefaultAudioSink implements AudioSink {
...
@@ -168,8 +168,8 @@ public final class DefaultAudioSink implements AudioSink {
private
final
ChannelMappingAudioProcessor
channelMappingAudioProcessor
;
private
final
ChannelMappingAudioProcessor
channelMappingAudioProcessor
;
private
final
TrimmingAudioProcessor
trimmingAudioProcessor
;
private
final
TrimmingAudioProcessor
trimmingAudioProcessor
;
private
final
SonicAudioProcessor
sonicAudioProcessor
;
private
final
SonicAudioProcessor
sonicAudioProcessor
;
private
final
AudioProcessor
[]
a
vailableAudioProcessors
;
private
final
AudioProcessor
[]
toIntPcmA
vailableAudioProcessors
;
private
final
AudioProcessor
[]
hiRes
AvailableAudioProcessors
;
private
final
AudioProcessor
[]
toFloatPcm
AvailableAudioProcessors
;
private
final
ConditionVariable
releasingConditionVariable
;
private
final
ConditionVariable
releasingConditionVariable
;
private
final
long
[]
playheadOffsets
;
private
final
long
[]
playheadOffsets
;
private
final
AudioTrackUtil
audioTrackUtil
;
private
final
AudioTrackUtil
audioTrackUtil
;
...
@@ -189,6 +189,7 @@ public final class DefaultAudioSink implements AudioSink {
...
@@ -189,6 +189,7 @@ public final class DefaultAudioSink implements AudioSink {
private
@C
.
Encoding
int
outputEncoding
;
private
@C
.
Encoding
int
outputEncoding
;
private
AudioAttributes
audioAttributes
;
private
AudioAttributes
audioAttributes
;
private
boolean
processingEnabled
;
private
boolean
processingEnabled
;
private
boolean
canApplyPlaybackParams
;
private
int
bufferSize
;
private
int
bufferSize
;
private
long
bufferSizeUs
;
private
long
bufferSizeUs
;
...
@@ -280,14 +281,14 @@ public final class DefaultAudioSink implements AudioSink {
...
@@ -280,14 +281,14 @@ public final class DefaultAudioSink implements AudioSink {
channelMappingAudioProcessor
=
new
ChannelMappingAudioProcessor
();
channelMappingAudioProcessor
=
new
ChannelMappingAudioProcessor
();
trimmingAudioProcessor
=
new
TrimmingAudioProcessor
();
trimmingAudioProcessor
=
new
TrimmingAudioProcessor
();
sonicAudioProcessor
=
new
SonicAudioProcessor
();
sonicAudioProcessor
=
new
SonicAudioProcessor
();
a
vailableAudioProcessors
=
new
AudioProcessor
[
4
+
audioProcessors
.
length
];
toIntPcmA
vailableAudioProcessors
=
new
AudioProcessor
[
4
+
audioProcessors
.
length
];
a
vailableAudioProcessors
[
0
]
=
new
ResamplingAudioProcessor
();
toIntPcmA
vailableAudioProcessors
[
0
]
=
new
ResamplingAudioProcessor
();
a
vailableAudioProcessors
[
1
]
=
channelMappingAudioProcessor
;
toIntPcmA
vailableAudioProcessors
[
1
]
=
channelMappingAudioProcessor
;
a
vailableAudioProcessors
[
2
]
=
trimmingAudioProcessor
;
toIntPcmA
vailableAudioProcessors
[
2
]
=
trimmingAudioProcessor
;
System
.
arraycopy
(
audioProcessors
,
0
,
a
vailableAudioProcessors
,
3
,
audioProcessors
.
length
);
System
.
arraycopy
(
audioProcessors
,
0
,
toIntPcmA
vailableAudioProcessors
,
3
,
audioProcessors
.
length
);
a
vailableAudioProcessors
[
3
+
audioProcessors
.
length
]
=
sonicAudioProcessor
;
toIntPcmA
vailableAudioProcessors
[
3
+
audioProcessors
.
length
]
=
sonicAudioProcessor
;
hiRes
AvailableAudioProcessors
=
new
AudioProcessor
[
1
];
toFloatPcm
AvailableAudioProcessors
=
new
AudioProcessor
[
1
];
hiRes
AvailableAudioProcessors
[
0
]
=
new
FloatResamplingAudioProcessor
();
toFloatPcm
AvailableAudioProcessors
[
0
]
=
new
FloatResamplingAudioProcessor
();
playheadOffsets
=
new
long
[
MAX_PLAYHEAD_OFFSET_COUNT
];
playheadOffsets
=
new
long
[
MAX_PLAYHEAD_OFFSET_COUNT
];
volume
=
1.0f
;
volume
=
1.0f
;
startMediaTimeState
=
START_NOT_SET
;
startMediaTimeState
=
START_NOT_SET
;
...
@@ -368,17 +369,17 @@ public final class DefaultAudioSink implements AudioSink {
...
@@ -368,17 +369,17 @@ public final class DefaultAudioSink implements AudioSink {
shouldUpResPCMAudio
=
canConvertHiResPcmToFloat
&&
shouldUpResPCMAudio
=
canConvertHiResPcmToFloat
&&
(
inputEncoding
==
C
.
ENCODING_PCM_24BIT
||
inputEncoding
==
C
.
ENCODING_PCM_32BIT
);
(
inputEncoding
==
C
.
ENCODING_PCM_24BIT
||
inputEncoding
==
C
.
ENCODING_PCM_32BIT
);
if
(
isInputPcm
)
{
if
(
isInputPcm
)
{
pcmFrameSize
=
Util
.
getPcmFrameSize
(
shouldUpResPCMAudio
pcmFrameSize
=
Util
.
getPcmFrameSize
(
inputEncoding
,
channelCount
);
?
C
.
ENCODING_PCM_FLOAT
:
inputEncoding
,
channelCount
);
}
}
@C
.
Encoding
int
encoding
=
inputEncoding
;
@C
.
Encoding
int
encoding
=
inputEncoding
;
boolean
processingEnabled
=
isInputPcm
&&
inputEncoding
!=
C
.
ENCODING_PCM_FLOAT
;
boolean
processingEnabled
=
isInputPcm
&&
inputEncoding
!=
C
.
ENCODING_PCM_FLOAT
;
canApplyPlaybackParams
=
processingEnabled
&&
!
shouldUpResPCMAudio
;
if
(
processingEnabled
)
{
if
(
processingEnabled
)
{
AudioProcessor
[]
a
ctiv
eAudioProcessors
=
shouldUpResPCMAudio
?
AudioProcessor
[]
a
vailabl
eAudioProcessors
=
shouldUpResPCMAudio
?
hiResAvailableAudioProcessors
:
a
vailableAudioProcessors
;
toFloatPcmAvailableAudioProcessors
:
toIntPcmA
vailableAudioProcessors
;
trimmingAudioProcessor
.
setTrimSampleCount
(
trimStartSamples
,
trimEndSamples
);
trimmingAudioProcessor
.
setTrimSampleCount
(
trimStartSamples
,
trimEndSamples
);
channelMappingAudioProcessor
.
setChannelMap
(
outputChannels
);
channelMappingAudioProcessor
.
setChannelMap
(
outputChannels
);
for
(
AudioProcessor
audioProcessor
:
a
ctiv
eAudioProcessors
)
{
for
(
AudioProcessor
audioProcessor
:
a
vailabl
eAudioProcessors
)
{
try
{
try
{
flush
|=
audioProcessor
.
configure
(
sampleRate
,
channelCount
,
encoding
);
flush
|=
audioProcessor
.
configure
(
sampleRate
,
channelCount
,
encoding
);
}
catch
(
AudioProcessor
.
UnhandledFormatException
e
)
{
}
catch
(
AudioProcessor
.
UnhandledFormatException
e
)
{
...
@@ -488,9 +489,9 @@ public final class DefaultAudioSink implements AudioSink {
...
@@ -488,9 +489,9 @@ public final class DefaultAudioSink implements AudioSink {
private
void
resetAudioProcessors
()
{
private
void
resetAudioProcessors
()
{
ArrayList
<
AudioProcessor
>
newAudioProcessors
=
new
ArrayList
<>();
ArrayList
<
AudioProcessor
>
newAudioProcessors
=
new
ArrayList
<>();
AudioProcessor
[]
a
ctiv
eAudioProcessors
=
shouldUpResPCMAudio
?
AudioProcessor
[]
a
vailabl
eAudioProcessors
=
shouldUpResPCMAudio
?
hiResAvailableAudioProcessors
:
a
vailableAudioProcessors
;
toFloatPcmAvailableAudioProcessors
:
toIntPcmA
vailableAudioProcessors
;
for
(
AudioProcessor
audioProcessor
:
a
ctiv
eAudioProcessors
)
{
for
(
AudioProcessor
audioProcessor
:
a
vailabl
eAudioProcessors
)
{
if
(
audioProcessor
.
isActive
())
{
if
(
audioProcessor
.
isActive
())
{
newAudioProcessors
.
add
(
audioProcessor
);
newAudioProcessors
.
add
(
audioProcessor
);
}
else
{
}
else
{
...
@@ -838,7 +839,7 @@ public final class DefaultAudioSink implements AudioSink {
...
@@ -838,7 +839,7 @@ public final class DefaultAudioSink implements AudioSink {
@Override
@Override
public
PlaybackParameters
setPlaybackParameters
(
PlaybackParameters
playbackParameters
)
{
public
PlaybackParameters
setPlaybackParameters
(
PlaybackParameters
playbackParameters
)
{
if
(
isInitialized
()
&&
!
processingEnabled
)
{
if
(
isInitialized
()
&&
!
canApplyPlaybackParams
)
{
// The playback parameters are always the default if processing is disabled.
// The playback parameters are always the default if processing is disabled.
this
.
playbackParameters
=
PlaybackParameters
.
DEFAULT
;
this
.
playbackParameters
=
PlaybackParameters
.
DEFAULT
;
return
this
.
playbackParameters
;
return
this
.
playbackParameters
;
...
@@ -994,10 +995,10 @@ public final class DefaultAudioSink implements AudioSink {
...
@@ -994,10 +995,10 @@ public final class DefaultAudioSink implements AudioSink {
public
void
release
()
{
public
void
release
()
{
reset
();
reset
();
releaseKeepSessionIdAudioTrack
();
releaseKeepSessionIdAudioTrack
();
for
(
AudioProcessor
audioProcessor
:
a
vailableAudioProcessors
)
{
for
(
AudioProcessor
audioProcessor
:
toIntPcmA
vailableAudioProcessors
)
{
audioProcessor
.
reset
();
audioProcessor
.
reset
();
}
}
for
(
AudioProcessor
audioProcessor
:
hiRes
AvailableAudioProcessors
)
{
for
(
AudioProcessor
audioProcessor
:
toFloatPcm
AvailableAudioProcessors
)
{
audioProcessor
.
reset
();
audioProcessor
.
reset
();
}
}
audioSessionId
=
C
.
AUDIO_SESSION_ID_UNSET
;
audioSessionId
=
C
.
AUDIO_SESSION_ID_UNSET
;
...
...
library/core/src/main/java/com/google/android/exoplayer2/audio/FloatResamplingAudioProcessor.java
View file @
aaf469ce
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
google
.
android
.
exoplayer2
.
audio
;
package
com
.
google
.
android
.
exoplayer2
.
audio
;
...
@@ -173,10 +188,7 @@ import java.nio.ByteOrder;
...
@@ -173,10 +188,7 @@ import java.nio.ByteOrder;
int
bits
=
Float
.
floatToIntBits
(
convVal
);
int
bits
=
Float
.
floatToIntBits
(
convVal
);
if
(
bits
==
0x7fc00000
)
if
(
bits
==
0x7fc00000
)
bits
=
Float
.
floatToIntBits
((
float
)
0.0
);
bits
=
Float
.
floatToIntBits
((
float
)
0.0
);
buffer
.
put
((
byte
)
(
bits
&
0xff
));
buffer
.
putInt
(
bits
);
buffer
.
put
((
byte
)
((
bits
>>
8
)
&
0xff
));
buffer
.
put
((
byte
)
((
bits
>>
16
)
&
0xff
));
buffer
.
put
((
byte
)
((
bits
>>
24
)
&
0xff
));
}
}
}
}
\ No newline at end of file
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