Don't quote me on this, but I believe the way to do that would be to add a custom interface field to your scene, then register the main Brightscript thread as an observer on the field. Then, in your event loop, you'd listen for an roSGNodeEvent that indicates that field has been updated, and trigger the playback. You'd likely want a second status field as well, so you can pass whether viewing the ad was successful or not back to the SceneGraph thread.
Seems very hacky, but I don't know of any other way to accomplish it with the current RAF library. Hopefully they're working on a native SceneGraph version.
TheEndless is correct. All Roku Ad Framework logic will reside in the main thread where you're instantiating your main scene. Within the main thread you'll utilize observefield("field_name", port) to receive roSGNodeEvents to trigger adIface.getAds() then pass back the received ad pods to a node within your scene. From here you can marshall the adpods to your Video node for playback
-- Float Left Interactive Team www.floatleftinteractive.com