mirror of
https://github.com/androidx/media.git
synced 2025-05-07 23:50:44 +08:00
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. */
|
/** Returns the audio volume, with 0 being silence and 1 being unity gain. */
|
||||||
float getVolume();
|
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}. */
|
/** The video component of a {@link Player}. */
|
||||||
|
@ -125,6 +125,12 @@ public interface Renderer extends PlayerMessage.Target {
|
|||||||
*/
|
*/
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
int MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER = C.MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER;
|
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
|
* 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.
|
* renderers. These custom constants must be greater than or equal to this value.
|
||||||
|
@ -715,6 +715,30 @@ public class SimpleExoPlayer extends BasePlayer
|
|||||||
return audioVolume;
|
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.
|
* Sets the stream type for audio playback, used by the underlying audio track.
|
||||||
*
|
*
|
||||||
@ -1355,7 +1379,14 @@ public class SimpleExoPlayer extends BasePlayer
|
|||||||
@Override
|
@Override
|
||||||
public void setPlaybackParameters(@Nullable PlaybackParameters playbackParameters) {
|
public void setPlaybackParameters(@Nullable PlaybackParameters playbackParameters) {
|
||||||
verifyApplicationThread();
|
verifyApplicationThread();
|
||||||
setSkipSilenceEnabled(playbackParameters != null && playbackParameters.skipSilence);
|
boolean newSkipSilenceEnabled =
|
||||||
|
playbackParameters != null
|
||||||
|
? playbackParameters.skipSilence
|
||||||
|
: PlaybackParameters.DEFAULT.skipSilence;
|
||||||
|
if (skipSilenceEnabled != newSkipSilenceEnabled) {
|
||||||
|
skipSilenceEnabled = newSkipSilenceEnabled;
|
||||||
|
notifySkipSilenceEnabledChanged();
|
||||||
|
}
|
||||||
player.setPlaybackParameters(playbackParameters);
|
player.setPlaybackParameters(playbackParameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1708,11 +1739,7 @@ public class SimpleExoPlayer extends BasePlayer
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("SuspiciousMethodCalls")
|
@SuppressWarnings("SuspiciousMethodCalls")
|
||||||
private void setSkipSilenceEnabled(boolean skipSilenceEnabled) {
|
private void notifySkipSilenceEnabledChanged() {
|
||||||
if (this.skipSilenceEnabled == skipSilenceEnabled) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.skipSilenceEnabled = skipSilenceEnabled;
|
|
||||||
for (AudioListener listener : audioListeners) {
|
for (AudioListener listener : audioListeners) {
|
||||||
// Prevent duplicate notification if a listener is both a AudioRendererEventListener and
|
// Prevent duplicate notification if a listener is both a AudioRendererEventListener and
|
||||||
// a AudioListener, as they have the same method signature.
|
// a AudioListener, as they have the same method signature.
|
||||||
@ -1882,7 +1909,11 @@ public class SimpleExoPlayer extends BasePlayer
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSkipSilenceEnabledChanged(boolean skipSilenceEnabled) {
|
public void onSkipSilenceEnabledChanged(boolean skipSilenceEnabled) {
|
||||||
setSkipSilenceEnabled(skipSilenceEnabled);
|
if (SimpleExoPlayer.this.skipSilenceEnabled == skipSilenceEnabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
SimpleExoPlayer.this.skipSilenceEnabled = skipSilenceEnabled;
|
||||||
|
notifySkipSilenceEnabledChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TextOutput implementation
|
// TextOutput implementation
|
||||||
|
@ -670,6 +670,9 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media
|
|||||||
AuxEffectInfo auxEffectInfo = (AuxEffectInfo) message;
|
AuxEffectInfo auxEffectInfo = (AuxEffectInfo) message;
|
||||||
audioSink.setAuxEffectInfo(auxEffectInfo);
|
audioSink.setAuxEffectInfo(auxEffectInfo);
|
||||||
break;
|
break;
|
||||||
|
case MSG_SET_SKIP_SILENCE_ENABLED:
|
||||||
|
audioSink.setSkipSilenceEnabled((Boolean) message);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
super.handleMessage(messageType, message);
|
super.handleMessage(messageType, message);
|
||||||
break;
|
break;
|
||||||
|
@ -560,6 +560,9 @@ public abstract class SimpleDecoderAudioRenderer extends BaseRenderer implements
|
|||||||
AuxEffectInfo auxEffectInfo = (AuxEffectInfo) message;
|
AuxEffectInfo auxEffectInfo = (AuxEffectInfo) message;
|
||||||
audioSink.setAuxEffectInfo(auxEffectInfo);
|
audioSink.setAuxEffectInfo(auxEffectInfo);
|
||||||
break;
|
break;
|
||||||
|
case MSG_SET_SKIP_SILENCE_ENABLED:
|
||||||
|
audioSink.setSkipSilenceEnabled((Boolean) message);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
super.handleMessage(messageType, message);
|
super.handleMessage(messageType, message);
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user