Browse Source

0theora compilation fixes

Juan Linietsky 9 years ago
parent
commit
b987d2113b

+ 4 - 0
SConstruct

@@ -84,6 +84,9 @@ env_base.__class__.disable_module = methods.disable_module
 
 env_base.__class__.add_source_files = methods.add_source_files
 
+env_base["x86_opt_gcc"]=False
+env_base["x86_opt_vc"]=False
+
 customs = ['custom.py']
 
 profile = ARGUMENTS.get("profile", False)
@@ -304,6 +307,7 @@ if selected_platform in platform_list:
 	if (env['opus']=='yes'):
 		env.Append(CPPFLAGS=['-DOPUS_ENABLED']);
 
+
 	if (env['theora']=='yes'):
 		env['theoralib']='yes'
 		env.Append(CPPFLAGS=['-DTHEORA_ENABLED']);		

+ 1 - 2
drivers/ogg/SCsub

@@ -6,5 +6,4 @@ ogg_sources = [
 	"ogg/framing.c",
 ]
 
-if env['theora'] != "yes" or env['use_theoraplayer_binary'] != "yes":
-	env.drivers_sources+=ogg_sources
+env.drivers_sources+=ogg_sources

+ 0 - 13
drivers/register_driver_types.cpp

@@ -104,10 +104,6 @@ static ResourceFormatLoaderAudioStreamSpeex *speex_stream_loader=NULL;
 static ResourceFormatLoaderVideoStreamTheora* theora_stream_loader = NULL;
 #endif
 
-#ifdef THEORAPLAYER_ENABLED
-static ResourceFormatLoaderVideoStreamTheoraplayer* theoraplayer_stream_loader = NULL;
-#endif
-
 #ifdef MUSEPACK_ENABLED
 static ResourceFormatLoaderAudioStreamMPC * mpc_stream_loader=NULL;
 #endif
@@ -229,12 +225,6 @@ void register_driver_types() {
 	ObjectTypeDB::register_type<VideoStreamTheora>();
 #endif
 
-#ifdef THEORAPLAYER_ENABLED
-	theoraplayer_stream_loader = memnew( ResourceFormatLoaderVideoStreamTheoraplayer );
-	ResourceLoader::add_resource_format_loader(theoraplayer_stream_loader);
-	ObjectTypeDB::register_type<VideoStreamTheoraplayer>();
-#endif
-
 
 #ifdef TOOLS_ENABLED
 #ifdef SQUISH_ENABLED
@@ -273,9 +263,6 @@ void unregister_driver_types() {
 	memdelete (theora_stream_loader);
 #endif
 
-#ifdef THEORAPLAYER_ENABLED
-	memdelete (theoraplayer_stream_loader);
-#endif
 
 #ifdef MUSEPACK_ENABLED
 

+ 33 - 0
drivers/theora/SCsub

@@ -31,4 +31,37 @@ sources = [
 	"theora/video_stream_theora.cpp",
 ]
 
+sources_x86 = [
+	"theora/x86/mmxencfrag.c",
+	"theora/x86/mmxfdct.c",
+	"theora/x86/mmxfrag.c",
+	"theora/x86/mmxidct.c",
+	"theora/x86/mmxstate.c",
+	"theora/x86/sse2fdct.c",
+	"theora/x86/x86enc.c",
+	"theora/x86/x86state.c",
+]
+
+sources_x86_vc = [
+	"theora/x86_vc/mmxencfrag.c",
+	"theora/x86_vc/mmxfdct.c",
+	"theora/x86_vc/mmxfrag.c",
+	"theora/x86_vc/mmxidct.c",
+	"theora/x86_vc/mmxstate.c",
+	"theora/x86_vc/x86enc.c",
+	"theora/x86_vc/x86state.c",
+]
+
 env.drivers_sources += sources
+
+if (env["x86_opt_gcc"]):
+	env.Append(CCFLAGS=["-DOC_X86_ASM"])
+	env.drivers_sources += sources_x86
+
+if (env["x86_opt_vc"]):
+	env.Append(CCFLAGS=["-DOC_X86_ASM"])
+	env.drivers_sources += sources_x86_vc
+
+	
+
+

+ 1 - 0
drivers/theora/encint.h

@@ -14,6 +14,7 @@
   last mod: $Id: encint.h 16503 2009-08-22 18:14:02Z giles $
 
  ********************************************************************/
+ 
 #if !defined(_encint_H)
 # define _encint_H (1)
 # if defined(HAVE_CONFIG_H)

+ 11 - 5
drivers/theora/video_stream_theora.cpp

@@ -441,8 +441,10 @@ void VideoStreamPlaybackTheora::update(float p_delta) {
 	//print_line("play "+rtos(p_delta));
 	time+=p_delta;
 
-	if (videobuf_time>get_time())
+	if (videobuf_time>get_time()) {
+
 		return; //no new frames need to be produced
+	}
 
 	bool frame_done=false;
 	bool audio_done=false;
@@ -541,7 +543,7 @@ void VideoStreamPlaybackTheora::update(float p_delta) {
 			if(ogg_stream_packetout(&to,&op)>0){
 
 
-				if(pp_inc){
+				if(false && pp_inc){
 					pp_level+=pp_inc;
 					th_decode_ctl(td,TH_DECCTL_SET_PPLEVEL,&pp_level,
 								  sizeof(pp_level));
@@ -569,16 +571,20 @@ void VideoStreamPlaybackTheora::update(float p_delta) {
 					 keyframing.  Soon enough libtheora will be able to deal
 					 with non-keyframe seeks.  */
 
-					if(videobuf_time>=get_time())
+					if(videobuf_time>=get_time()) {
 						frame_done=true;
-					else{
+						print_line("frame!");
+					} else{
 						/*If we are too slow, reduce the pp level.*/
 						pp_inc=pp_level>0?-1:0;
+						print_line("skip!");
 					}
 				}
 
-			} else
+			} else {
+				print_line("no packet..");
 				break;
+			}
 		}
 
 		if (file && /*!videobuf_ready && */ file->eof_reached()) {

+ 1 - 3
drivers/vorbis/SCsub

@@ -33,6 +33,4 @@ sources_lib = [
 ]
 
 env.drivers_sources += sources
-
-if env['theora'] != "yes" or env['use_theoraplayer_binary'] != "yes":
-	env.drivers_sources += sources_lib
+env.drivers_sources += sources_lib

+ 1 - 0
platform/android/detect.py

@@ -98,6 +98,7 @@ def configure(env):
 
 	if env['android_arch']=='x86':
 		env['NDK_TARGET']=env['NDK_TARGET_X86']
+		env["x86_opt_gcc"]=True
 
 	if env['PLATFORM'] == 'win32':
 		import methods

+ 1 - 1
platform/osx/detect.py

@@ -116,4 +116,4 @@ def configure(env):
 	env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
 	#env.Append( BUILDERS = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } )
 
-
+	env["x86_opt_gcc"]=True

+ 2 - 0
platform/windows/detect.py

@@ -263,6 +263,7 @@ def configure(env):
 		env.Append(CCFLAGS=["/I"+DIRECTX_PATH+"/Include"])
 		env.Append(LIBPATH=[DIRECTX_PATH+"/Lib/x86"])
 		env['ENV'] = os.environ;
+		env["x86_opt_vc"]=True
 	else:
 
 		# Workaround for MinGW. See:
@@ -361,6 +362,7 @@ def configure(env):
 		env['AR'] = mingw_prefix+"ar"
 		env['RANLIB'] = mingw_prefix+"ranlib"
 		env['LD'] = mingw_prefix+"g++"
+		env["x86_opt_gcc"]=True
 
 		#env['CC'] = "winegcc"
 		#env['CXX'] = "wineg++"

+ 2 - 0
platform/x11/detect.py

@@ -180,3 +180,5 @@ def configure(env):
 		env.Append(CPPFLAGS=['-DNEW_WM_API'])
 		env.ParseConfig('pkg-config xinerama --cflags --libs')
 
+	env["x86_opt_gcc"]=True
+

+ 2 - 2
scene/gui/video_player.cpp

@@ -27,7 +27,7 @@
 /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
 /*************************************************************************/
 #include "video_player.h"
-
+#include "os/os.h"
 
 
 int VideoPlayer::InternalStream::get_channel_count() const {
@@ -130,7 +130,7 @@ void VideoPlayer::_notification(int p_notification) {
 			if (!playback->is_playing())
 				return;
 
-			double audio_time = AudioServer::get_singleton()->get_mix_time();
+			double audio_time = OS::get_singleton()->get_ticks_usec()/1000000.0; //AudioServer::get_singleton()->get_mix_time();
 
 			double delta = last_audio_time==0?0:audio_time-last_audio_time;
 			last_audio_time=audio_time;