#ifndef CVD_DISKBUFFER2_FRAME_H
#define CVD_DISKBUFFER2_FRAME_H

#include <cvd/localvideoframe.h>
#include <string>

namespace CVD
{
	template<class T> class DiskBuffer2;

	/// A frame from a DiskBuffer2. The frames in a DiskBuffer2 are image files loaded from disk.
	/// @param T The pixel type of the frames to provide (usually <code>CVD::Rgb<CVD::byte></code> 
	/// or <code>CVD::byte</code>. If the image files are of a different type, they will be automatically 
	/// converted (see @link gImageIO Image loading and saving, and format conversion@endlink).
	/// @ingroup gVideoFrame
	template<typename T> 
	class DiskBuffer2Frame : public CVD::LocalVideoFrame<T>
	{
			/// Allow DiskBuffer2 to create a DiskBuffer2Frame
			friend class CVD::DiskBuffer2<T>;
		public:		

			/// What is the filename for this image?
			const std::string& name() {return frame_name;};

			/// set the time stamp, required for TimedDiskBuffer2
			void timestamp( double time ) { this->my_timestamp = time; }

		private:
			~DiskBuffer2Frame()
			{
			}

			DiskBuffer2Frame(double time, CVD::Image<T>& from_disk, const std::string& file)
			:LocalVideoFrame<T>(time, from_disk),frame_name(file)
			{
			}	

			
		private:
			const std::string& frame_name;
	};
}


#endif
