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.
		
		
		
		
		
			
		
			
				
					
					
						
							92 lines
						
					
					
						
							2.6 KiB
						
					
					
				
			
		
		
	
	
							92 lines
						
					
					
						
							2.6 KiB
						
					
					
				//=============================================================================
 | 
						|
//
 | 
						|
//  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
 | 
						|
 |