TuttleOFX
1
|
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