Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "mitkMovieGeneratorOpenCV.h"
00019 #include <GL/gl.h>
00020 #include <iostream>
00021
00022
00023 mitk::MovieGeneratorOpenCV::MovieGeneratorOpenCV()
00024 {
00025 m_initialized = false;
00026 m_aviWriter = NULL;
00027 m_dwRate = 20;
00028
00029 m_FourCCCodec = NULL;
00030 }
00031
00032
00033 void mitk::MovieGeneratorOpenCV::SetFileName( const char *fileName )
00034 {
00035
00036 m_sFile = fileName;
00037 }
00038
00039 bool mitk::MovieGeneratorOpenCV::InitGenerator()
00040 {
00041 m_width = m_renderer->GetRenderWindow()->GetSize()[0];
00042 m_height = m_renderer->GetRenderWindow()->GetSize()[1];
00043
00044 m_width -= 10;
00045 m_height -= 10;
00046
00047 m_width -= m_width % 4;
00048 m_height -= m_height % 4;
00049
00050
00051
00052 m_currentFrame = cvCreateImage(cvSize(m_width,m_height),8,3);
00053 m_currentFrame->origin = 1;
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077 if(m_FourCCCodec != NULL)
00078 {
00079 #ifdef WIN32
00080 m_aviWriter = cvCreateVideoWriter(m_sFile,CV_FOURCC(m_FourCCCodec[0],m_FourCCCodec[1],m_FourCCCodec[2],
00081 m_FourCCCodec[3]),m_dwRate,cvSize(m_width,m_height),1);
00082 #else
00083 m_aviWriter = cvCreateVideoWriter(m_sFile,CV_FOURCC(m_FourCCCodec[0],m_FourCCCodec[1],m_FourCCCodec[2],
00084 m_FourCCCodec[3]),m_dwRate,cvSize(m_width,m_height));
00085 #endif
00086 }
00087 else
00088 {
00089 #ifdef WIN32
00090 m_aviWriter = cvCreateVideoWriter(m_sFile,-1,m_dwRate,cvSize(m_width,m_height),1);
00091 #else
00092 m_aviWriter = cvCreateVideoWriter(m_sFile,CV_FOURCC('X','V','I','D'),m_dwRate,cvSize(m_width,m_height));
00093 #endif
00094 }
00095
00096
00097 if(!m_aviWriter)
00098 {
00099 std::cout << "errors initializing video writer...correct video file path? on linux: ffmpeg must be included in OpenCV.";
00100 return false;
00101 }
00102
00103 return true;
00104 }
00105
00106
00107 bool mitk::MovieGeneratorOpenCV::AddFrame( void *data )
00108 {
00109
00110 memcpy(m_currentFrame->imageData,data,m_width*m_height*3);
00111 cvWriteFrame(m_aviWriter,m_currentFrame);
00112 return true;
00113 }
00114
00115
00116 bool mitk::MovieGeneratorOpenCV::TerminateGenerator()
00117 {
00118 if (m_aviWriter)
00119 {
00120 cvReleaseVideoWriter(&m_aviWriter);
00121 }
00122 return true;
00123 }