Hi,
To summarize (but do read previous discussion):
1. Video campaigns consist of two types of ads, InStream ads and VideoDiscovery ads. VideoDiscovery is search in YouTube, InStream is an ad played immediatly before a different video. Both ad types have impressions, but they have completely different meaning.
2. For your type of calculations, you need to filter on InStream ads, as you only want their impressions.
3. In Google Ads Web UI, you can do this by segmenting on "View Type" - then you can do calculations by hand, and validate your calculation method. Unfortunately, Google AdWords API does NOT support this segment. Maybe Google Ads API beta does support this.
4. Alternatively, if that's an option, your calculation will be correct when you stop all VideoDiscovery ads - or, have less than 1 impression on these ads combined.
5. Another alternative is requesting the same results on ADGROUP level, and filter on AdGroupType. Only groups with AdGroupType of YOUTUBE_WATCH should be included.
So basically, we're waiting on Google to add segment "View Type" to CAMPAIGN_PERFORMANCE_REPORT. I'm waiting 2.5 years now. But the AdGroup workaround works pretty nice.
Hope this helps!