add getter/setter of skipSilenceEnable to AudioComponent
PiperOrigin-RevId: 298070828
This commit is contained in:
parent
67b29bbe39
commit
c1258e7e9f
@ -141,6 +141,16 @@ public interface Player {
|
||||
|
||||
/** Returns the audio volume, with 0 being silence and 1 being unity gain. */
|
||||
float getVolume();
|
||||
|
||||
/**
|
||||
* Sets whether skipping silences in the audio stream is enabled.
|
||||
*
|
||||
* @param skipSilenceEnabled Whether skipping silences in the audio stream is enabled.
|
||||
*/
|
||||
void setSkipSilenceEnabled(boolean skipSilenceEnabled);
|
||||
|
||||
/** Returns whether skipping silences in the audio stream is enabled. */
|
||||
boolean getSkipSilenceEnabled();
|
||||
}
|
||||
|
||||
/** The video component of a {@link Player}. */
|
||||
|
@ -125,6 +125,12 @@ public interface Renderer extends PlayerMessage.Target {
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
int MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER = C.MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER;
|
||||
/**
|
||||
* The type of a message that can be passed to an audio renderer via {@link
|
||||
* ExoPlayer#createMessage(Target)}. The message payload should be a {@link Boolean} instance
|
||||
* telling whether to enable or disable skipping silences in the audio stream.
|
||||
*/
|
||||
int MSG_SET_SKIP_SILENCE_ENABLED = 101;
|
||||
/**
|
||||
* Applications or extensions may define custom {@code MSG_*} constants that can be passed to
|
||||
* renderers. These custom constants must be greater than or equal to this value.
|
||||
|
@ -715,6 +715,30 @@ public class SimpleExoPlayer extends BasePlayer
|
||||
return audioVolume;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getSkipSilenceEnabled() {
|
||||
return skipSilenceEnabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSkipSilenceEnabled(boolean skipSilenceEnabled) {
|
||||
verifyApplicationThread();
|
||||
if (this.skipSilenceEnabled == skipSilenceEnabled) {
|
||||
return;
|
||||
}
|
||||
this.skipSilenceEnabled = skipSilenceEnabled;
|
||||
for (Renderer renderer : renderers) {
|
||||
if (renderer.getTrackType() == C.TRACK_TYPE_AUDIO) {
|
||||
player
|
||||
.createMessage(renderer)
|
||||
.setType(Renderer.MSG_SET_SKIP_SILENCE_ENABLED)
|
||||
.setPayload(skipSilenceEnabled)
|
||||
.send();
|
||||
}
|
||||
}
|
||||
notifySkipSilenceEnabledChanged();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the stream type for audio playback, used by the underlying audio track.
|
||||
*
|
||||
@ -1355,7 +1379,14 @@ public class SimpleExoPlayer extends BasePlayer
|
||||
@Override
|
||||
public void setPlaybackParameters(@Nullable PlaybackParameters playbackParameters) {
|
||||
verifyApplicationThread();
|
||||
setSkipSilenceEnabled(playbackParameters != null && playbackParameters.skipSilence);
|
||||
boolean newSkipSilenceEnabled =
|
||||
playbackParameters != null
|
||||
? playbackParameters.skipSilence
|
||||
: PlaybackParameters.DEFAULT.skipSilence;
|
||||
if (skipSilenceEnabled != newSkipSilenceEnabled) {
|
||||
skipSilenceEnabled = newSkipSilenceEnabled;
|
||||
notifySkipSilenceEnabledChanged();
|
||||
}
|
||||
player.setPlaybackParameters(playbackParameters);
|
||||
}
|
||||
|
||||
@ -1708,11 +1739,7 @@ public class SimpleExoPlayer extends BasePlayer
|
||||
}
|
||||
|
||||
@SuppressWarnings("SuspiciousMethodCalls")
|
||||
private void setSkipSilenceEnabled(boolean skipSilenceEnabled) {
|
||||
if (this.skipSilenceEnabled == skipSilenceEnabled) {
|
||||
return;
|
||||
}
|
||||
this.skipSilenceEnabled = skipSilenceEnabled;
|
||||
private void notifySkipSilenceEnabledChanged() {
|
||||
for (AudioListener listener : audioListeners) {
|
||||
// Prevent duplicate notification if a listener is both a AudioRendererEventListener and
|
||||
// a AudioListener, as they have the same method signature.
|
||||
@ -1882,7 +1909,11 @@ public class SimpleExoPlayer extends BasePlayer
|
||||
|
||||
@Override
|
||||
public void onSkipSilenceEnabledChanged(boolean skipSilenceEnabled) {
|
||||
setSkipSilenceEnabled(skipSilenceEnabled);
|
||||
if (SimpleExoPlayer.this.skipSilenceEnabled == skipSilenceEnabled) {
|
||||
return;
|
||||
}
|
||||
SimpleExoPlayer.this.skipSilenceEnabled = skipSilenceEnabled;
|
||||
notifySkipSilenceEnabledChanged();
|
||||
}
|
||||
|
||||
// TextOutput implementation
|
||||
|
@ -670,6 +670,9 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media
|
||||
AuxEffectInfo auxEffectInfo = (AuxEffectInfo) message;
|
||||
audioSink.setAuxEffectInfo(auxEffectInfo);
|
||||
break;
|
||||
case MSG_SET_SKIP_SILENCE_ENABLED:
|
||||
audioSink.setSkipSilenceEnabled((Boolean) message);
|
||||
break;
|
||||
default:
|
||||
super.handleMessage(messageType, message);
|
||||
break;
|
||||
|
@ -560,6 +560,9 @@ public abstract class SimpleDecoderAudioRenderer extends BaseRenderer implements
|
||||
AuxEffectInfo auxEffectInfo = (AuxEffectInfo) message;
|
||||
audioSink.setAuxEffectInfo(auxEffectInfo);
|
||||
break;
|
||||
case MSG_SET_SKIP_SILENCE_ENABLED:
|
||||
audioSink.setSkipSilenceEnabled((Boolean) message);
|
||||
break;
|
||||
default:
|
||||
super.handleMessage(messageType, message);
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user