If you create a stitched stream with enableJITPod() set to true the user can seek over the ad blocks in the video without triggering them.
Steps to reproduce (code borrowed from the scenegraph-master-sample):
' here we retrieve all ads and configure it to our playback
sub PlayContentWithAds()
' `parentNode` is the node to which the stitched stream can be attached (passed as 2nd argument of renderStitchedStream)
parentNode = m.top.GetParent()
content = m.top.content
m.top.lastIndex = m.top.startIndex ' assume that index of last played item equals to index of first played one
items = content.getChildren(-1, 0)
' This is the main entry point for instantiating the ad interface.
' This object manages ad server requests, parses ad structure, schedules and renders ads, and triggers tracking beacons.
RAF = Roku_Ads()
RAF.enableJITPods(true)
RAF.enableAdMeasurements(true)
' Set the ad URL to be used for a new getAds() request.
RAF.SetAdUrl("")
keepPlay = true
index = m.top.startIndex - 1
itemsCount = items.Count()
while keepPlay
' check if playlist isn't complete
if itemsCount - 1 > index
' we need to give parentNode a focus in order to handle "back" button key press during ads retrieving
parentNode.SetFocus(true)
index++
item = items[index] ' contentNode of the video which should be played next
' Content details used by RAF for ad targeting
RAF.SetContentId(item.id)
if item.categories <> invalid
RAF.SetContentGenre(item.categories)
end if
RAF.SetContentLength(int(item.length)) ' in seconds
adPods = RAF.GetAds() ' ads retrieving
m.top.lastIndex = index ' save the index of last played item to navigate to appropriate detailsScreen
' combine video and ads into a single playlist
csasStream = RAF.constructStitchedStream(item, adPods)
' render the stitched stream
keepPlay = RAF.renderStitchedStream(csasStream, parentNode)
else
keepPlay = false
end if
end while
end sub
It can be reproduced always if the provided URL has a few midroll ads, and the user can seek over them. Run the channel (scenegraph-master-sample, VideoAds) and start playback of any video. Seek forward, and move past the midroll ad start position; observe that the ad-pod wasn't triggered and that non-ad content at that position is playing.
Remove, or comment out RAF.enableJITPods(true) from the above code, run the channel (scenegraph-master-sample, VideoAds) and repeat the steps. Observe that after seeking, the jumped over ad-pod is triggered and that ads are playing and not the non-ad content.
Expected behavior
Not sure what the expected behavior should be here, as there is nothing in the docs for this scenario, but I think that the last ad-pod the user has jumped over should be played instead of the main content.