Package-level declarations

Types

Link copied to clipboard

Terminal AdEventListener that measures how much of each ad break is actually watched, across single ads and multi-ad pods.

Link copied to clipboard

Process-level AFC policy owner. One global counter shared across all playbacks: stopping one playback and starting another preserves the accumulated consumption.

Link copied to clipboard
data class AdFrequencyControlConfiguration(val enable: Boolean = false, val minimumContentConsumptionMs: Long, val adBreakExposureThreshold: Double = 0.66, val allowFirstOpportunity: Boolean = true)

Policy configuration for Ad Frequency Control (AFC).

Link copied to clipboard

Value-only events used to update AFC state. Single global counter across all playbacks.

Link copied to clipboard
class AFCPlaybackSessionManager(player: AdComposedPlayer, val configuration: AdFrequencyControlConfiguration = AdFrequencyControlConfiguration())

Creates and owns the AFC trackers for one playback session:

Link copied to clipboard
class ContentConsumptionTracker(player: AdComposedPlayer, clock: MonotonicClock = MonotonicClock.System, toleranceMultiplier: Double = DEFAULT_TOLERANCE_MULTIPLIER) : Player.Listener

Tracks valid main content consumption and publishes AdFrequencyEvent domain events.

Link copied to clipboard
fun interface MonotonicClock

Clock providing monotonically non-decreasing timestamps for content consumption validation.