MLECO-1252 ASR sample application using the public ArmNN C++ API.

Change-Id: I98cd505b8772a8c8fa88308121bc94135bb45068
Signed-off-by: Éanna Ó Catháin <eanna.ocathain@arm.com>
diff --git a/samples/common/include/CVUtils/IFrameReader.hpp b/samples/common/include/CVUtils/IFrameReader.hpp
new file mode 100644
index 0000000..e171b3b
--- /dev/null
+++ b/samples/common/include/CVUtils/IFrameReader.hpp
@@ -0,0 +1,45 @@
+//
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include <cstddef>
+#include <memory>
+
+namespace common
+{
+/**
+ * @brief Frame source reader interface
+ *
+ * @tparam FrameDataT frame container data type
+ */
+template<typename FrameDataT> class IFrameReader
+{
+
+public:
+    /**
+     * @brief Reads the next frame from the source
+     *
+     * @return pointer to the frame container
+     */
+    virtual std::shared_ptr <FrameDataT> ReadFrame() = 0;
+
+    /**
+     * @brief Checks if the frame source has more frames to read.
+     *
+     * @param[in] frame the pointer to the last frame captured with the ReadFrame method could be used in
+     *                  implementation specific logic to check frames source state.
+     * @return True if frame source was exhausted, False otherwise
+     */
+    virtual bool IsExhausted(const std::shared_ptr <FrameDataT>& frame) const = 0;
+
+    /**
+     * @brief Default destructor
+     */
+    virtual ~IFrameReader() = default;
+
+};
+
+}// namespace common
\ No newline at end of file