Commit d54529b
committed
Ensures errors are correctly attributed to ad or content
This change is part of a fix to the issue "Player Errors during Ad playback not attributed correctly"
The change introduced in commit 7cf2fd9 was a partial fix to allow ad playback errors to be reported.
It delayed removing the listener when an error released the AdsMediaSource.
What remained was the larger issue: When an error occurs **during content preparation while an ad is
still playing**, ExoPlayer cannot correctly attribute the error to the content source.
Instead, the error bubbles up through `ExoPlayerImplInternal.stopInternal()` and causes
the **entire CompositeMediaSource (AdsMediaSource + content)** to be torn down.
This results in the `ImaAdsLoader` being stopped prematurely — even when the ad is not at fault — and breaks proper ad lifecycle handling.
**User-Facing Issues**
1. **The ad is incorrectly marked as failed**
A content preparation error is misattributed to the currently playing ad, resulting in an invalid `AD_STATE_ERROR`.
2. **The ad is never marked as completed**
Even though `ALL_ADS_COMPLETED` is dispatched by IMA, the player is torn down before ExoPlayer updates `AdPlaybackState` to reflect completion.
3. **A single failing ad in a pod is not skipped**
If one ad in a pod fails (e.g., due to a 404 or DRM error), the player stops entirely instead of skipping to the next ad in the group.
4. **A failing ad does not fall back to content**
When an ad fails, the player should skip to content. Instead, the entire playback pipeline is torn down via `stopInternal()`.
This change fixes the first two User-Facing issues. When combined with error recovery logic it also fixes the 4th issue.
The 3rd issue may require some work on the IMA SDK side, the mid-pod failure aborts all ad playback with this fix, rather than skipping just the failing ad.1 parent ec6ac47 commit d54529b
File tree
1 file changed
+19
-5
lines changed- libraries/exoplayer_ima/src/main/java/androidx/media3/exoplayer/ima
1 file changed
+19
-5
lines changedLines changed: 19 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
391 | 391 | | |
392 | 392 | | |
393 | 393 | | |
394 | | - | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
395 | 411 | | |
396 | 412 | | |
397 | 413 | | |
| |||
402 | 418 | | |
403 | 419 | | |
404 | 420 | | |
405 | | - | |
406 | | - | |
407 | | - | |
| 421 | + | |
408 | 422 | | |
409 | 423 | | |
410 | 424 | | |
| |||
539 | 553 | | |
540 | 554 | | |
541 | 555 | | |
542 | | - | |
| 556 | + | |
543 | 557 | | |
544 | 558 | | |
545 | 559 | | |
| |||
0 commit comments