You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					93 lines
				
				2.6 KiB
			
		
		
			
		
	
	
					93 lines
				
				2.6 KiB
			| 
											6 years ago
										 | //=============================================================================
 | ||
|  | //
 | ||
|  | //  Copyright (c) 2015-2016 Qualcomm Technologies, Inc.
 | ||
|  | //  All Rights Reserved.
 | ||
|  | //  Confidential and Proprietary - Qualcomm Technologies, Inc.
 | ||
|  | //
 | ||
|  | //=============================================================================
 | ||
|  | 
 | ||
|  | #ifndef _ITENSOR_FACTORY_HPP
 | ||
|  | #define _ITENSOR_FACTORY_HPP
 | ||
|  | 
 | ||
|  | #include "ITensor.hpp"
 | ||
|  | #include "TensorShape.hpp"
 | ||
|  | #include "ZdlExportDefine.hpp"
 | ||
|  | #include <istream>
 | ||
|  | 
 | ||
|  | namespace zdl {
 | ||
|  |     namespace DlSystem
 | ||
|  |     {
 | ||
|  |         class ITensor;
 | ||
|  |         class TensorShape;
 | ||
|  |     }
 | ||
|  | }
 | ||
|  | 
 | ||
|  | namespace zdl { namespace DlSystem
 | ||
|  | {
 | ||
|  | 
 | ||
|  | /** @addtogroup c_plus_plus_apis C++
 | ||
|  | @{ */
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * Factory interface class to create ITensor objects.
 | ||
|  |  */
 | ||
|  | class ZDL_EXPORT ITensorFactory
 | ||
|  | {
 | ||
|  | public:
 | ||
|  |    virtual ~ITensorFactory() = default;
 | ||
|  | 
 | ||
|  |    /**
 | ||
|  |     * Creates a new ITensor with uninitialized data. 
 | ||
|  |     *  
 | ||
|  |     * The strides for the tensor will match the tensor dimensions 
 | ||
|  |     * (i.e., the tensor data is contiguous in memory).
 | ||
|  |     *  
 | ||
|  |     * @param[in] shape The dimensions for the tensor in which the last
 | ||
|  |     * element of the vector represents the fastest varying
 | ||
|  |     * dimension and the zeroth element represents the slowest
 | ||
|  |     * varying, etc.
 | ||
|  |     * 
 | ||
|  |     * @return A pointer to the created tensor or nullptr if creating failed.
 | ||
|  |     */
 | ||
|  |    virtual std::unique_ptr<ITensor>
 | ||
|  |       createTensor(const TensorShape &shape) noexcept = 0;
 | ||
|  | 
 | ||
|  |    /**
 | ||
|  |     * Creates a new ITensor by loading it from a file.
 | ||
|  |     *  
 | ||
|  |     * @param[in] input The input stream from which to read the tensor 
 | ||
|  |     *                  data.
 | ||
|  |     *  
 | ||
|  |     * @return A pointer to the created tensor or nullptr if creating failed.
 | ||
|  |     *
 | ||
|  |     */
 | ||
|  |    virtual std::unique_ptr<ITensor> createTensor(std::istream &input) noexcept = 0;
 | ||
|  | 
 | ||
|  |    /**
 | ||
|  |     * Create a new ITensor with specific data.
 | ||
|  |     * (i.e. the tensor data is contiguous in memory). This tensor is
 | ||
|  |     * primarily used to create a tensor where tensor size can't be
 | ||
|  |     * computed directly from dimension. One such example is
 | ||
|  |     * NV21-formatted image, or any YUV formatted image
 | ||
|  |     *
 | ||
|  |     * @param[in] shape The dimensions for the tensor in which the last
 | ||
|  |     * element of the vector represents the fastest varying
 | ||
|  |     * dimension and the zeroth element represents the slowest
 | ||
|  |     * varying, etc.
 | ||
|  |     *
 | ||
|  |     * @param[in] data The actual data with which the Tensor object is filled.
 | ||
|  |     *
 | ||
|  |     * @param[in] dataSize The size of data
 | ||
|  |     *
 | ||
|  |     * @return A pointer to the created tensor
 | ||
|  |     */
 | ||
|  |    virtual std::unique_ptr<ITensor>
 | ||
|  |       createTensor(const TensorShape &shape, const unsigned char *data, size_t dataSize) noexcept = 0;
 | ||
|  | };
 | ||
|  | 
 | ||
|  | }}
 | ||
|  | 
 | ||
|  | /** @} */ /* end_addtogroup c_plus_plus_apis C++ */
 | ||
|  | 
 | ||
|  | #endif
 |