TuttleOFX  1
J2KWriter.hpp
Go to the documentation of this file.
00001 #ifndef _J2KWRITER_HPP
00002 #define _J2KWRITER_HPP
00003 
00004 #include "J2KCommon.hpp"
00005 
00006 #include <openjpeg.h>
00007 
00008 #include <boost/filesystem/fstream.hpp>
00009 
00010 #include <string>
00011 
00012 namespace tuttle {
00013 namespace io {
00014 
00015 class J2KWriter
00016 {
00017 public:
00018         J2KWriter();
00019         virtual ~J2KWriter();
00020         void open(const std::string & filename, const size_t w, const size_t h, const size_t nc, const size_t dprecision);
00021         void encode(const uint8_t *data, const size_t sprecision);
00022         void close();
00023 
00024         // Setters
00025         inline void setLossless(bool lossless);
00026         inline void setPrecision(const size_t prec);
00027         inline void setCinemaMode(const OPJ_CINEMA_MODE cinemaMode);
00028 private:
00029         void cinemaSetupParameters();
00030         void cinemaSetupEncoder();
00031         int initialize4Kpocs(opj_poc_t *POC, int numres);
00032 
00033 private:
00034         OpenJpegStuffs  _openjpeg;                       ///< OpenJpeg 2000 structs
00035         size_t          _width;
00036         size_t          _height;
00037         size_t          _components;
00038         size_t          _precision;
00039         bool            _lossless;
00040         OPJ_CINEMA_MODE _cinemaMode;
00041         boost::filesystem::ofstream _outFile;
00042         opj_cio_t      *_cio;
00043 
00044 };
00045 
00046 // Setters
00047 
00048 inline void J2KWriter::setLossless(bool lossless)
00049 {
00050         _lossless = lossless;
00051 }
00052 
00053 inline void J2KWriter::setPrecision(const size_t prec)
00054 {
00055         _precision = prec;
00056 }
00057 
00058 inline void J2KWriter::setCinemaMode(const OPJ_CINEMA_MODE cinemaMode)
00059 {
00060         _cinemaMode = cinemaMode;
00061 }
00062 
00063 }
00064 }
00065 
00066 #endif
00067