mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Minor cleanup to BandwidthMeter/DefaultBandwidthMeter
- Improve variable naming - In the edge case that bytes are transferred in a sample that has 0 elapsed time, carry the bytes forward into the next sample. If we don't do this then the estimate will be calculated as though those bytes were never transferred. In practice I suspect this very rarely occurs. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=218551208
This commit is contained in:
parent
1b6801c091
commit
4fe14c7693
@ -29,30 +29,33 @@ public interface BandwidthMeter {
|
||||
interface EventListener {
|
||||
|
||||
/**
|
||||
* Called periodically to indicate that bytes have been transferred.
|
||||
* Called periodically to indicate that bytes have been transferred or the estimated bitrate has
|
||||
* changed.
|
||||
*
|
||||
* <p>Note: The estimated bitrate is typically derived from more information than just {@code
|
||||
* bytes} and {@code elapsedMs}.
|
||||
*
|
||||
* @param elapsedMs The time taken to transfer the bytes, in milliseconds.
|
||||
* @param bytes The number of bytes transferred.
|
||||
* @param bitrate The estimated bitrate in bits/sec.
|
||||
* @param elapsedMs The time taken to transfer {@code bytesTransferred}, in milliseconds. This
|
||||
* is at most the elapsed time since the last callback, but may be less if there were
|
||||
* periods during which data was not being transferred.
|
||||
* @param bytesTransferred The number of bytes transferred since the last callback.
|
||||
* @param bitrateEstimate The estimated bitrate in bits/sec.
|
||||
*/
|
||||
void onBandwidthSample(int elapsedMs, long bytes, long bitrate);
|
||||
void onBandwidthSample(int elapsedMs, long bytesTransferred, long bitrateEstimate);
|
||||
}
|
||||
|
||||
/** Returns the estimated bandwidth in bits/sec. */
|
||||
/** Returns the estimated bitrate. */
|
||||
long getBitrateEstimate();
|
||||
|
||||
/**
|
||||
* Returns the {@link TransferListener} that this instance uses to gather bandwidth information
|
||||
* from data transfers. May be null, if no transfer listener is used.
|
||||
* from data transfers. May be null if the implementation does not listen to data transfers.
|
||||
*/
|
||||
@Nullable
|
||||
TransferListener getTransferListener();
|
||||
|
||||
/**
|
||||
* Adds an {@link EventListener} to be informed of bandwidth samples.
|
||||
* Adds an {@link EventListener}.
|
||||
*
|
||||
* @param eventHandler A handler for events.
|
||||
* @param eventListener A listener of events.
|
||||
|
@ -309,16 +309,16 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList
|
||||
|| totalBytesTransferred >= BYTES_TRANSFERRED_FOR_ESTIMATE) {
|
||||
bitrateEstimate = (long) slidingPercentile.getPercentile(0.5f);
|
||||
}
|
||||
}
|
||||
notifyBandwidthSample(sampleElapsedTimeMs, sampleBytesTransferred, bitrateEstimate);
|
||||
if (--streamCount > 0) {
|
||||
notifyBandwidthSample(sampleElapsedTimeMs, sampleBytesTransferred, bitrateEstimate);
|
||||
sampleStartTimeMs = nowMs;
|
||||
}
|
||||
sampleBytesTransferred = 0;
|
||||
sampleBytesTransferred = 0;
|
||||
} // Else any sample bytes transferred will be carried forward into the next sample.
|
||||
streamCount--;
|
||||
}
|
||||
|
||||
private void notifyBandwidthSample(int elapsedMs, long bytes, long bitrate) {
|
||||
eventDispatcher.dispatch(listener -> listener.onBandwidthSample(elapsedMs, bytes, bitrate));
|
||||
private void notifyBandwidthSample(int elapsedMs, long bytesTransferred, long bitrateEstimate) {
|
||||
eventDispatcher.dispatch(
|
||||
listener -> listener.onBandwidthSample(elapsedMs, bytesTransferred, bitrateEstimate));
|
||||
}
|
||||
|
||||
private long getInitialBitrateEstimateForNetworkType(@C.NetworkType int networkType) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user