[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17264] trunk/blender/source/gameengine/ VideoTexture: BGE Video Texture: fix constant initializer problem with Exception description.

Benoit Bolsee benoit.bolsee at online.be
Sat Nov 1 13:48:47 CET 2008


Revision: 17264
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17264
Author:   ben2610
Date:     2008-11-01 13:48:46 +0100 (Sat, 01 Nov 2008)

Log Message:
-----------
BGE Video Texture: fix constant initializer problem with Exception description. Uniformized the line ending.

Modified Paths:
--------------
    trunk/blender/source/gameengine/VideoTexture/Exception.cpp
    trunk/blender/source/gameengine/VideoTexture/Exception.h
    trunk/blender/source/gameengine/VideoTexture/ImageMix.cpp
    trunk/blender/source/gameengine/VideoTexture/ImageRender.cpp
    trunk/blender/source/gameengine/VideoTexture/Texture.cpp
    trunk/blender/source/gameengine/VideoTexture/Texture.h
    trunk/blender/source/gameengine/VideoTexture/VideoFFmpeg.cpp
    trunk/blender/source/gameengine/VideoTexture/VideoFFmpeg.h
    trunk/blender/source/gameengine/VideoTexture/blendVideoTex.cpp

Modified: trunk/blender/source/gameengine/VideoTexture/Exception.cpp
===================================================================
--- trunk/blender/source/gameengine/VideoTexture/Exception.cpp	2008-11-01 12:45:19 UTC (rev 17263)
+++ trunk/blender/source/gameengine/VideoTexture/Exception.cpp	2008-11-01 12:48:46 UTC (rev 17264)
@@ -44,7 +44,6 @@
 ExpDesc::ExpDesc (ExceptionID & exp, char * desc, RESULT hres) 
 : m_expID(exp), m_hRslt(hres), m_description(desc)
 {
-	m_expDescs.push_back(this);
 }
 
 // destructor
@@ -196,3 +195,15 @@
 	m_fileName = xpt.m_fileName;
 	m_line = xpt.m_line;
 }
+
+void registerAllExceptions(void)
+{
+    errGenerDesc.registerDesc();
+    errNFoundDesc.registerDesc();
+    MaterialNotAvailDesc.registerDesc();
+    ImageSizesNotMatchDesc.registerDesc();
+    SceneInvalidDesc.registerDesc();
+    CameraInvalidDesc.registerDesc();
+    SourceVideoEmptyDesc.registerDesc();
+    SourceVideoCreationDesc.registerDesc();
+}

Modified: trunk/blender/source/gameengine/VideoTexture/Exception.h
===================================================================
--- trunk/blender/source/gameengine/VideoTexture/Exception.h	2008-11-01 12:45:19 UTC (rev 17263)
+++ trunk/blender/source/gameengine/VideoTexture/Exception.h	2008-11-01 12:48:46 UTC (rev 17264)
@@ -27,6 +27,7 @@
 #include <exception>
 #include <vector>
 #include <string>
+#include <algorithm>
 
 #include "Common.h"
 
@@ -117,6 +118,11 @@
 		desc = m_description;
 	}
 
+    void registerDesc(void)
+    {
+        if (std::find(m_expDescs.begin(), m_expDescs.end(), this) == m_expDescs.end())
+            m_expDescs.push_back(this);
+    }
 	// list of exception descriptions
 	static std::vector<ExpDesc*> m_expDescs;
 
@@ -192,4 +198,13 @@
 
 };
 
+extern ExpDesc MaterialNotAvailDesc;
+extern ExpDesc ImageSizesNotMatchDesc;
+extern ExpDesc SceneInvalidDesc;
+extern ExpDesc CameraInvalidDesc;
+extern ExpDesc SourceVideoEmptyDesc;
+extern ExpDesc SourceVideoCreationDesc;
+
+
+void registerAllExceptions(void);
 #endif

Modified: trunk/blender/source/gameengine/VideoTexture/ImageMix.cpp
===================================================================
--- trunk/blender/source/gameengine/VideoTexture/ImageMix.cpp	2008-11-01 12:45:19 UTC (rev 17263)
+++ trunk/blender/source/gameengine/VideoTexture/ImageMix.cpp	2008-11-01 12:48:46 UTC (rev 17264)
@@ -58,9 +58,9 @@
 	return true;
 }
 
-static ExceptionID ImageSizesNotMatch;
+ExceptionID ImageSizesNotMatch;
 
-static ExpDesc ImageSizesNotMatchDesc (ImageSizesNotMatch, "Image sizes of sources are different");
+ExpDesc ImageSizesNotMatchDesc (ImageSizesNotMatch, "Image sizes of sources are different");
 
 // calculate image from sources and set its availability
 void ImageMix::calcImage (unsigned int texId)

Modified: trunk/blender/source/gameengine/VideoTexture/ImageRender.cpp
===================================================================
--- trunk/blender/source/gameengine/VideoTexture/ImageRender.cpp	2008-11-01 12:45:19 UTC (rev 17263)
+++ trunk/blender/source/gameengine/VideoTexture/ImageRender.cpp	2008-11-01 12:48:46 UTC (rev 17264)
@@ -94,6 +94,10 @@
 	ImageViewport::calcImage(texId);
 }
 
+void ImageRender::Render()
+{
+    //
+}
 
 // refresh lights
 void ImageRender::refreshLights (void)
@@ -120,9 +124,9 @@
 BlendType<KX_Camera> cameraType ("KX_Camera");
 
 
-static ExceptionID SceneInvalid, CameraInvalid;
-static ExpDesc SceneInvalidDesc (SceneInvalid, "Scene object is invalid");
-static ExpDesc CameraInvalidDesc (CameraInvalid, "Camera object is invalid");
+ExceptionID SceneInvalid, CameraInvalid;
+ExpDesc SceneInvalidDesc (SceneInvalid, "Scene object is invalid");
+ExpDesc CameraInvalidDesc (CameraInvalid, "Camera object is invalid");
 
 // object initialization
 static int ImageRender_init (PyObject * pySelf, PyObject * args, PyObject * kwds)

Modified: trunk/blender/source/gameengine/VideoTexture/Texture.cpp
===================================================================
--- trunk/blender/source/gameengine/VideoTexture/Texture.cpp	2008-11-01 12:45:19 UTC (rev 17263)
+++ trunk/blender/source/gameengine/VideoTexture/Texture.cpp	2008-11-01 12:48:46 UTC (rev 17264)
@@ -165,8 +165,8 @@
 }
 
 
-static ExceptionID MaterialNotAvail;
-static ExpDesc MaterialNotAvailDesc (MaterialNotAvail, "Texture material is not available");
+ExceptionID MaterialNotAvail;
+ExpDesc MaterialNotAvailDesc (MaterialNotAvail, "Texture material is not available");
 
 // Texture object initialization
 int Texture_init (Texture *self, PyObject *args, PyObject *kwds)
@@ -272,13 +272,13 @@
 		PyErr_SetString(PyExc_TypeError, "The value must be a bool");
 		return NULL;
 	}
-	// some trick here: we are in the business of loading a texture,
-	// no use to do it if we are still in the same rendering frame.
-	// We find this out by looking at the engine current clock time
-	KX_KetsjiEngine* engine = KX_GetActiveEngine();
-	if (engine->GetClockTime() != self->m_lastClock) 
-	{
-		self->m_lastClock = engine->GetClockTime();
+	// some trick here: we are in the business of loading a texture,
+	// no use to do it if we are still in the same rendering frame.
+	// We find this out by looking at the engine current clock time
+	KX_KetsjiEngine* engine = KX_GetActiveEngine();
+	if (engine->GetClockTime() != self->m_lastClock) 
+	{
+		self->m_lastClock = engine->GetClockTime();
 		// set source refresh
 		bool refreshSource = (param == Py_True);
 		// try to proces texture from source

Modified: trunk/blender/source/gameengine/VideoTexture/Texture.h
===================================================================
--- trunk/blender/source/gameengine/VideoTexture/Texture.h	2008-11-01 12:45:19 UTC (rev 17263)
+++ trunk/blender/source/gameengine/VideoTexture/Texture.h	2008-11-01 12:48:46 UTC (rev 17264)
@@ -60,7 +60,7 @@
 	// scaled image buffer size
 	unsigned int m_scaledImgSize;
 	// last refresh
-	double m_lastClock;
+	double m_lastClock;
 
 	// image source
 	PyImage * m_source;

Modified: trunk/blender/source/gameengine/VideoTexture/VideoFFmpeg.cpp
===================================================================
--- trunk/blender/source/gameengine/VideoTexture/VideoFFmpeg.cpp	2008-11-01 12:45:19 UTC (rev 17263)
+++ trunk/blender/source/gameengine/VideoTexture/VideoFFmpeg.cpp	2008-11-01 12:48:46 UTC (rev 17264)
@@ -51,11 +51,11 @@
 m_lastFrame(-1),  m_curPosition(-1), m_startTime(0), 
 m_captWidth(0), m_captHeight(0), m_captRate(0.f)
 {
-	// set video format
-	m_format = RGB24;
-	// force flip because ffmpeg always return the image in the wrong orientation for texture
-	setFlip(true);
-	// construction is OK
+	// set video format
+	m_format = RGB24;
+	// force flip because ffmpeg always return the image in the wrong orientation for texture
+	setFlip(true);
+	// construction is OK
 	*hRslt = S_OK;
 }
 
@@ -175,9 +175,9 @@
 #else
 	m_baseFrameRate = av_q2d(formatCtx->streams[videoStream]->r_frame_rate);
 #endif
-	if (m_baseFrameRate <= 0.0) 
-		m_baseFrameRate = defFrameRate;
-
+	if (m_baseFrameRate <= 0.0) 
+		m_baseFrameRate = defFrameRate;
+
 	m_codec = codec;
 	m_codecCtx = codecCtx;
 	m_formatCtx = formatCtx;
@@ -241,9 +241,9 @@
 	else
 		m_preseek = 0;
 
-	// get video time range
+	// get video time range
 	m_range[0] = 0.0;
-	m_range[1] = (double)m_formatCtx->duration / AV_TIME_BASE;
+	m_range[1] = (double)m_formatCtx->duration / AV_TIME_BASE;
 
 	// open base class
 	VideoBase::openFile(filename);
@@ -265,7 +265,7 @@
 	AVInputFormat		*inputFormat;
 	AVFormatParameters	formatParams;
 	AVRational			frameRate;
-	char				*p, filename[28], rateStr[20];
+	char				filename[28], rateStr[20];
 
 	do_init_ffmpeg();
 
@@ -333,8 +333,8 @@
 
 	// for video capture it is important to do non blocking read
 	m_formatCtx->flags |= AVFMT_FLAG_NONBLOCK;
-	// open base class
-	VideoBase::openCam(file, camIdx);
+	// open base class
+	VideoBase::openCam(file, camIdx);
 }
 
 
@@ -346,7 +346,7 @@
 		// if object is able to play
 		if (VideoBase::play())
 		{
-			// set video position
+			// set video position
 			setPositions();
 			// return success
 			return true;
@@ -372,92 +372,92 @@
 }
 
 
-// set video range
-void VideoFFmpeg::setRange (double start, double stop)
-{
-	try
-	{
-		// set range
-		VideoBase::setRange(start, stop);
-		// set range for video
-		setPositions();
-	}
-	CATCH_EXCP;
-}
-
-// set framerate
-void VideoFFmpeg::setFrameRate (float rate)
-{
-	VideoBase::setFrameRate(rate);
-}
-
-
-// image calculation
-void VideoFFmpeg::calcImage (unsigned int texId)
-{
-	loadFrame();
-}
-
-
-// load frame from video
-void VideoFFmpeg::loadFrame (void)
-{
-	// get actual time
-	double actTime = PIL_check_seconds_timer() - m_startTime;
-	// if video has ended
-	if (m_isFile && actTime * m_frameRate >= m_range[1])
-	{
-		// if repeats are set, decrease them
-		if (m_repeat > 0) 
-			--m_repeat;
-		// if video has to be replayed
-		if (m_repeat != 0)
-		{
-			// reset its position
-			actTime -= (m_range[1] - m_range[0]) / m_frameRate;
-			m_startTime += (m_range[1] - m_range[0]) / m_frameRate;
-		}
-		// if video has to be stopped, stop it
-		else 
-			m_status = SourceStopped;
-	}
-	// if video is playing
-	if (m_status == SourcePlaying)
-	{
-		// actual frame
-		long actFrame = m_isFile ? long(actTime * actFrameRate()) : m_lastFrame + 1;
-		// if actual frame differs from last frame
-		if (actFrame != m_lastFrame)
-		{
-			// get image
-			if(grabFrame(actFrame))
-			{
-				AVFrame* frame = getFrame();
-				// save actual frame
-				m_lastFrame = actFrame;
-				// init image, if needed
-				init(short(m_codecCtx->width), short(m_codecCtx->height));
-				// process image
-				process((BYTE*)(frame->data[0]));
-			}
-		}
-	}
-}
-
-
-// set actual position
-void VideoFFmpeg::setPositions (void)
-{
-	// set video start time
-	m_startTime = PIL_check_seconds_timer();
-	// if file is played and actual position is before end position
-	if (m_isFile && m_lastFrame >= 0 && m_lastFrame < m_range[1] * actFrameRate())
-		// continue from actual position
-		m_startTime -= double(m_lastFrame) / actFrameRate();
-	else
-		m_startTime -= m_range[0];
-}
-
+// set video range
+void VideoFFmpeg::setRange (double start, double stop)
+{
+	try
+	{
+		// set range
+		VideoBase::setRange(start, stop);
+		// set range for video
+		setPositions();
+	}
+	CATCH_EXCP;
+}
+
+// set framerate
+void VideoFFmpeg::setFrameRate (float rate)
+{
+	VideoBase::setFrameRate(rate);
+}
+
+
+// image calculation
+void VideoFFmpeg::calcImage (unsigned int texId)
+{
+	loadFrame();
+}
+
+
+// load frame from video
+void VideoFFmpeg::loadFrame (void)
+{

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list