public void Process(MetadataStream metadata) {
			try {
				List<EventStream> events;
				List<VideoAnalyticsStream> analytics;
				ExtractStreams(metadata, out events, out analytics);

				if (eventMetadataProcessor != null)
					events.ForEach(es => eventMetadataProcessor.Process(es));
				if (sceneMetadataProcessor != null)
					analytics.ForEach(vas => sceneMetadataProcessor.Process(vas));
			} catch (Exception ex) {
				dbg.Error(ex);
			}
		}
		private void ExtractStreams(MetadataStream metadata, out List<EventStream> events, out List<VideoAnalyticsStream> analytics) {
			events = new List<EventStream>();
			analytics = new List<VideoAnalyticsStream>();

			var items = metadata.items;
			if (items != null) {
				foreach (var item in items) {
					if (item is EventStream) {
						var ev = (EventStream)item;
						events.Add(ev);
					} else if (item is VideoAnalyticsStream) {
						var va = (VideoAnalyticsStream)item;
						analytics.Add(va);
					}
				}
			}
		}