Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IMA Extension PODs with empty positions in the middle #4280

Closed
MajDroid opened this issue May 22, 2018 · 8 comments
Closed

IMA Extension PODs with empty positions in the middle #4280

MajDroid opened this issue May 22, 2018 · 8 comments
Assignees
Labels

Comments

@MajDroid
Copy link

Issue description

IMA Extension when dealing with a POD (pre-roll/mid-roll) with fixed size (like 4) and one or more of the positions in the middle happen to be empty.
As soon as IMA Extension spots an empty position (AdEvent LOG), it decides to mark the rest of the unplayed ads with error as seen in method handleAdGroupLoadError:

    for (int i = 0; i < adGroup.count; i++) {
        if (adGroup.states[i] == AdPlaybackState.AD_STATE_UNAVAILABLE) {
            if (DEBUG) {
                Log.d(TAG, "Removing ad " + i + " in ad group " + adGroupIndex);
            }
            adPlaybackState = adPlaybackState.withAdLoadError(adGroupIndex, i);
        }
     }

and skips the rest of unplayed ads

Version of ExoPlayer being used

2.8.0 and 2.7.3

Expected Behavior

IMA Extension should continue withe rest of the positions in a POD even if it found an empty one (or more) in the middle

@andrewlewis andrewlewis self-assigned this May 22, 2018
@andrewlewis
Copy link
Collaborator

Please could you provide your ad tag (here or via email to dev.exoplayer@gmail.com)?

@MajDroid
Copy link
Author

Unfortunately i do not have a publicly available ad tag for your to test.

Just to clarify what i mean with an empty position, it's an AdEvent LOG as follows:
onAdEvent: LOG
adEvent: AdEvent[type=LOG, ad=null, adData={type: adLoadError, errorCode: 1009, errorMessage: The response does not contain any valid ads.}]

@andrewlewis
Copy link
Collaborator

Without the ad tag it's difficult to see if this is a bug in the extension, in the IMA SDK or a problem with the ad tag.

Please could you look in the ad tag and the pods it links to and describe which specific files are empty/non-empty? Or, even better, download the ad tags, remove information you can't share and attach the result?

@MajDroid
Copy link
Author

To summarize our ads setup, we serve the ads in VMAP (Ad Playlist), attached a sample for your reference.

In each Ad Pod (such as Preroll), DFP reserves 4 slots for ads as, these slots might have ads or they might not, this is determined once the DFP receives a request.
So IMA requests each Ad, DFP determines whether that slot should return an ad or not.

Now IMA-Extension becomes unreliable and does not play all ads once one or more of those ad slots return empty result (attached is a sample of an empty ad response).
So In one case, where ads fail to play at in the preroll:
Slot #1 NoAd
Slot #2 NoAd
Slot #3 HasAnAd
Slot #4 NoAd

another scenario:
Slot #1 NoAd
Slot #2 HasAnAd
Slot #3 NoAd
Slot #4 HasAnAd

or another scenario:
Slot #1 NoAd
Slot #2 HasAnAd
Slot #3 HasAnAd
Slot #4 NoAd

Now results vary with different combination but during my investigation, i noticed that IMA Extension as soon as it receives a LOG event (in other words, an empty ad), it decides to mark the remaining ads with no state as "error".

Attached is a sample VMAP, Empty Ad and Filled Ad

@MajDroid
Copy link
Author

@andrewlewis is my description in the last post sufficient? if there are more details that i can provide, please don't hesitate to ask

@andrewlewis
Copy link
Collaborator

It looks sufficient to investigate though I probably won't get round to it for a while. Thanks for your patience.

@andrewlewis
Copy link
Collaborator

To fix this I think we need the IMA SDK to surface more information with adLoadErrors about exactly which ad/ad break is empty. I've filed [Internal: b/112349460] for this feature request and will update this issue when I have more information.

ojw28 pushed a commit that referenced this issue Aug 13, 2018
Issue: #4030
Issue: #4280

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208055792
@ojw28
Copy link
Contributor

ojw28 commented Aug 13, 2018

Please give the latest dev-v2 branch a try, and let us know whether this is fixed. Thanks!

ojw28 pushed a commit that referenced this issue Aug 17, 2018
Issue: #4030
Issue: #4280

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208055792
@ojw28 ojw28 closed this as completed Aug 17, 2018
@google google locked and limited conversation to collaborators Dec 20, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

3 participants