From cfcc8a20e862b758c32bd3f152186e6df0591a24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Thu, 13 Oct 2016 19:40:40 +0200 Subject: [PATCH] theora: Move to a module and split thirdparty lib Same rationale as the previous commits. --- SConstruct | 10 +-- drivers/SCsub | 2 - drivers/register_driver_types.cpp | 22 +---- drivers/theora/SCsub | 65 --------------- drivers/theora/theora.exp | 55 ------------- modules/theora/SCsub | 81 +++++++++++++++++++ modules/theora/config.py | 6 ++ modules/theora/register_types.cpp | 45 +++++++++++ modules/theora/register_types.h | 30 +++++++ .../theora/video_stream_theora.cpp | 9 +-- .../theora/video_stream_theora.h | 17 ++-- {drivers => modules}/theora/yuv2rgb.h | 0 platform/bb10/detect.py | 3 +- platform/javascript/detect.py | 2 +- platform/x11/detect.py | 17 ++-- thirdparty/README.md | 13 +++ .../theora => thirdparty/libtheora}/COPYING | 0 .../theora => thirdparty/libtheora}/LICENSE | 0 .../theora => thirdparty/libtheora}/analyze.c | 0 .../libtheora}/apiwrapper.c | 0 .../libtheora}/apiwrapper.h | 0 .../theora => thirdparty/libtheora}/bitpack.c | 0 .../theora => thirdparty/libtheora}/bitpack.h | 0 .../theora => thirdparty/libtheora}/cpu.c | 0 .../theora => thirdparty/libtheora}/cpu.h | 0 .../theora => thirdparty/libtheora}/dct.h | 0 .../libtheora}/decapiwrapper.c | 0 .../theora => thirdparty/libtheora}/decinfo.c | 0 .../theora => thirdparty/libtheora}/decint.h | 0 .../theora => thirdparty/libtheora}/decode.c | 0 .../theora => thirdparty/libtheora}/dequant.c | 0 .../theora => thirdparty/libtheora}/dequant.h | 0 .../libtheora}/encapiwrapper.c | 0 .../theora => thirdparty/libtheora}/encfrag.c | 0 .../theora => thirdparty/libtheora}/encinfo.c | 0 .../theora => thirdparty/libtheora}/encint.h | 0 .../theora => thirdparty/libtheora}/encode.c | 0 .../libtheora}/encoder_disabled.c | 0 .../theora => thirdparty/libtheora}/enquant.c | 0 .../theora => thirdparty/libtheora}/enquant.h | 0 .../theora => thirdparty/libtheora}/fdct.c | 0 .../libtheora}/fragment.c | 0 .../theora => thirdparty/libtheora}/huffdec.c | 0 .../theora => thirdparty/libtheora}/huffdec.h | 0 .../theora => thirdparty/libtheora}/huffenc.c | 0 .../theora => thirdparty/libtheora}/huffenc.h | 0 .../theora => thirdparty/libtheora}/huffman.h | 0 .../theora => thirdparty/libtheora}/idct.c | 0 .../theora => thirdparty/libtheora}/info.c | 0 .../libtheora}/internal.c | 0 .../libtheora}/internal.h | 0 .../theora => thirdparty/libtheora}/mathops.c | 0 .../theora => thirdparty/libtheora}/mathops.h | 0 .../theora => thirdparty/libtheora}/mcenc.c | 0 .../theora => thirdparty/libtheora}/modedec.h | 0 .../libtheora}/ocintrin.h | 0 .../theora => thirdparty/libtheora}/quant.c | 0 .../theora => thirdparty/libtheora}/quant.h | 0 .../theora => thirdparty/libtheora}/rate.c | 0 .../theora => thirdparty/libtheora}/state.c | 0 .../libtheora}/theora/codec.h | 0 .../libtheora}/theora/theora.h | 0 .../libtheora}/theora/theoradec.h | 0 .../libtheora}/theora/theoraenc.h | 0 .../libtheora}/tokenize.c | 0 .../libtheora}/x86/mmxencfrag.c | 0 .../libtheora}/x86/mmxfdct.c | 0 .../libtheora}/x86/mmxfrag.c | 0 .../libtheora}/x86/mmxfrag.h | 0 .../libtheora}/x86/mmxidct.c | 0 .../libtheora}/x86/mmxloop.h | 0 .../libtheora}/x86/mmxstate.c | 0 .../libtheora}/x86/sse2fdct.c | 0 .../libtheora}/x86/x86enc.c | 0 .../libtheora}/x86/x86enc.h | 0 .../libtheora}/x86/x86int.h | 0 .../libtheora}/x86/x86state.c | 0 .../libtheora}/x86_vc/mmxencfrag.c | 0 .../libtheora}/x86_vc/mmxfdct.c | 0 .../libtheora}/x86_vc/mmxfrag.c | 0 .../libtheora}/x86_vc/mmxfrag.h | 0 .../libtheora}/x86_vc/mmxidct.c | 0 .../libtheora}/x86_vc/mmxloop.h | 0 .../libtheora}/x86_vc/mmxstate.c | 0 .../libtheora}/x86_vc/x86enc.c | 0 .../libtheora}/x86_vc/x86enc.h | 0 .../libtheora}/x86_vc/x86int.h | 0 .../libtheora}/x86_vc/x86state.c | 0 88 files changed, 199 insertions(+), 178 deletions(-) delete mode 100644 drivers/theora/SCsub delete mode 100644 drivers/theora/theora.exp create mode 100644 modules/theora/SCsub create mode 100644 modules/theora/config.py create mode 100644 modules/theora/register_types.cpp create mode 100644 modules/theora/register_types.h rename {drivers => modules}/theora/video_stream_theora.cpp (99%) rename {drivers => modules}/theora/video_stream_theora.h (98%) rename {drivers => modules}/theora/yuv2rgb.h (100%) rename {drivers/theora => thirdparty/libtheora}/COPYING (100%) rename {drivers/theora => thirdparty/libtheora}/LICENSE (100%) rename {drivers/theora => thirdparty/libtheora}/analyze.c (100%) rename {drivers/theora => thirdparty/libtheora}/apiwrapper.c (100%) rename {drivers/theora => thirdparty/libtheora}/apiwrapper.h (100%) rename {drivers/theora => thirdparty/libtheora}/bitpack.c (100%) rename {drivers/theora => thirdparty/libtheora}/bitpack.h (100%) rename {drivers/theora => thirdparty/libtheora}/cpu.c (100%) rename {drivers/theora => thirdparty/libtheora}/cpu.h (100%) rename {drivers/theora => thirdparty/libtheora}/dct.h (100%) rename {drivers/theora => thirdparty/libtheora}/decapiwrapper.c (100%) rename {drivers/theora => thirdparty/libtheora}/decinfo.c (100%) rename {drivers/theora => thirdparty/libtheora}/decint.h (100%) rename {drivers/theora => thirdparty/libtheora}/decode.c (100%) rename {drivers/theora => thirdparty/libtheora}/dequant.c (100%) rename {drivers/theora => thirdparty/libtheora}/dequant.h (100%) rename {drivers/theora => thirdparty/libtheora}/encapiwrapper.c (100%) rename {drivers/theora => thirdparty/libtheora}/encfrag.c (100%) rename {drivers/theora => thirdparty/libtheora}/encinfo.c (100%) rename {drivers/theora => thirdparty/libtheora}/encint.h (100%) rename {drivers/theora => thirdparty/libtheora}/encode.c (100%) rename {drivers/theora => thirdparty/libtheora}/encoder_disabled.c (100%) rename {drivers/theora => thirdparty/libtheora}/enquant.c (100%) rename {drivers/theora => thirdparty/libtheora}/enquant.h (100%) rename {drivers/theora => thirdparty/libtheora}/fdct.c (100%) rename {drivers/theora => thirdparty/libtheora}/fragment.c (100%) rename {drivers/theora => thirdparty/libtheora}/huffdec.c (100%) rename {drivers/theora => thirdparty/libtheora}/huffdec.h (100%) rename {drivers/theora => thirdparty/libtheora}/huffenc.c (100%) rename {drivers/theora => thirdparty/libtheora}/huffenc.h (100%) rename {drivers/theora => thirdparty/libtheora}/huffman.h (100%) rename {drivers/theora => thirdparty/libtheora}/idct.c (100%) rename {drivers/theora => thirdparty/libtheora}/info.c (100%) rename {drivers/theora => thirdparty/libtheora}/internal.c (100%) rename {drivers/theora => thirdparty/libtheora}/internal.h (100%) rename {drivers/theora => thirdparty/libtheora}/mathops.c (100%) rename {drivers/theora => thirdparty/libtheora}/mathops.h (100%) rename {drivers/theora => thirdparty/libtheora}/mcenc.c (100%) rename {drivers/theora => thirdparty/libtheora}/modedec.h (100%) rename {drivers/theora => thirdparty/libtheora}/ocintrin.h (100%) rename {drivers/theora => thirdparty/libtheora}/quant.c (100%) rename {drivers/theora => thirdparty/libtheora}/quant.h (100%) rename {drivers/theora => thirdparty/libtheora}/rate.c (100%) rename {drivers/theora => thirdparty/libtheora}/state.c (100%) rename {drivers => thirdparty/libtheora}/theora/codec.h (100%) rename {drivers => thirdparty/libtheora}/theora/theora.h (100%) rename {drivers => thirdparty/libtheora}/theora/theoradec.h (100%) rename {drivers => thirdparty/libtheora}/theora/theoraenc.h (100%) rename {drivers/theora => thirdparty/libtheora}/tokenize.c (100%) rename {drivers/theora => thirdparty/libtheora}/x86/mmxencfrag.c (100%) rename {drivers/theora => thirdparty/libtheora}/x86/mmxfdct.c (100%) rename {drivers/theora => thirdparty/libtheora}/x86/mmxfrag.c (100%) rename {drivers/theora => thirdparty/libtheora}/x86/mmxfrag.h (100%) rename {drivers/theora => thirdparty/libtheora}/x86/mmxidct.c (100%) rename {drivers/theora => thirdparty/libtheora}/x86/mmxloop.h (100%) rename {drivers/theora => thirdparty/libtheora}/x86/mmxstate.c (100%) rename {drivers/theora => thirdparty/libtheora}/x86/sse2fdct.c (100%) rename {drivers/theora => thirdparty/libtheora}/x86/x86enc.c (100%) rename {drivers/theora => thirdparty/libtheora}/x86/x86enc.h (100%) rename {drivers/theora => thirdparty/libtheora}/x86/x86int.h (100%) rename {drivers/theora => thirdparty/libtheora}/x86/x86state.c (100%) rename {drivers/theora => thirdparty/libtheora}/x86_vc/mmxencfrag.c (100%) rename {drivers/theora => thirdparty/libtheora}/x86_vc/mmxfdct.c (100%) rename {drivers/theora => thirdparty/libtheora}/x86_vc/mmxfrag.c (100%) rename {drivers/theora => thirdparty/libtheora}/x86_vc/mmxfrag.h (100%) rename {drivers/theora => thirdparty/libtheora}/x86_vc/mmxidct.c (100%) rename {drivers/theora => thirdparty/libtheora}/x86_vc/mmxloop.h (100%) rename {drivers/theora => thirdparty/libtheora}/x86_vc/mmxstate.c (100%) rename {drivers/theora => thirdparty/libtheora}/x86_vc/x86enc.c (100%) rename {drivers/theora => thirdparty/libtheora}/x86_vc/x86enc.h (100%) rename {drivers/theora => thirdparty/libtheora}/x86_vc/x86int.h (100%) rename {drivers/theora => thirdparty/libtheora}/x86_vc/x86state.c (100%) diff --git a/SConstruct b/SConstruct index e52e224de7..4ed3845f97 100644 --- a/SConstruct +++ b/SConstruct @@ -121,11 +121,10 @@ opts.Add('tools','Build Tools (Including Editor): (yes/no)','yes') opts.Add('gdscript','Build GDSCript support: (yes/no)','yes') opts.Add('libogg','Ogg library for ogg container support (system/builtin)','builtin') opts.Add('libvorbis','Ogg Vorbis library for vorbis support (system/builtin)','builtin') +opts.Add('libtheora','Theora library for theora module (system/builtin)','builtin') opts.Add('opus','Opus and opusfile library for Opus format support: (system/builtin)','builtin') opts.Add('minizip','Build Minizip Archive Support: (yes/no)','yes') opts.Add('squish','Squish BC Texture Compression in editor (yes/no)','yes') -opts.Add('theora','Theora Video (yes/no)','yes') -opts.Add('theoralib','Theora Video (yes/no)','no') opts.Add('freetype','Freetype support in editor','builtin') opts.Add('xml','XML Save/Load support (yes/no)','yes') opts.Add('libpng','libpng library for image loader support (system/builtin)','builtin') @@ -331,13 +330,6 @@ if selected_platform in platform_list: if (env_base['squish']=='yes'): env.Append(CPPFLAGS=['-DSQUISH_ENABLED']); - - if (env['theora']=='yes'): - env['theoralib']='yes' - env.Append(CPPFLAGS=['-DTHEORA_ENABLED']); - if (env['theoralib']=='yes'): - env.Append(CPPFLAGS=['-DTHEORALIB_ENABLED']); - if (env['tools']=='yes'): env.Append(CPPFLAGS=['-DTOOLS_ENABLED']) if (env['disable_3d']=='yes'): diff --git a/drivers/SCsub b/drivers/SCsub index 4ce95c7970..8b7ec80dcd 100644 --- a/drivers/SCsub +++ b/drivers/SCsub @@ -24,8 +24,6 @@ SConscript("chibi/SCsub"); if (env["tools"]=="yes"): SConscript("convex_decomp/SCsub"); -if (env["theoralib"]=="yes"): - SConscript("theora/SCsub"); if (env['musepack']=='yes'): SConscript("mpc/SCsub"); if (env["squish"]=="yes" and env["tools"]=="yes"): diff --git a/drivers/register_driver_types.cpp b/drivers/register_driver_types.cpp index 8aead0e2fc..6d48d94d44 100644 --- a/drivers/register_driver_types.cpp +++ b/drivers/register_driver_types.cpp @@ -28,6 +28,7 @@ /*************************************************************************/ #include "register_driver_types.h" +#include "core/math/geometry.h" #include "png/image_loader_png.h" #include "png/resource_saver_png.h" #include "chibi/event_stream_chibi.h" @@ -45,11 +46,6 @@ #include "platform/windows/export/export.h" #endif -#ifdef THEORA_ENABLED -#include "theora/video_stream_theora.h" -#endif - - #include "drivers/nrex/regex.h" #ifdef MUSEPACK_ENABLED @@ -59,10 +55,6 @@ static ImageLoaderPNG *image_loader_png=NULL; static ResourceSaverPNG *resource_saver_png=NULL; -#ifdef THEORA_ENABLED -static ResourceFormatLoaderVideoStreamTheora* theora_stream_loader = NULL; -#endif - #ifdef MUSEPACK_ENABLED static ResourceFormatLoaderAudioStreamMPC * mpc_stream_loader=NULL; #endif @@ -103,13 +95,6 @@ void register_driver_types() { #endif -#ifdef THEORA_ENABLED - theora_stream_loader = memnew( ResourceFormatLoaderVideoStreamTheora ); - ResourceLoader::add_resource_format_loader(theora_stream_loader); - ObjectTypeDB::register_type(); -#endif - - #ifdef TOOLS_ENABLED #ifdef SQUISH_ENABLED @@ -123,11 +108,6 @@ void register_driver_types() { void unregister_driver_types() { -#ifdef THEORA_ENABLED - memdelete (theora_stream_loader); -#endif - - #ifdef MUSEPACK_ENABLED memdelete (mpc_stream_loader); diff --git a/drivers/theora/SCsub b/drivers/theora/SCsub deleted file mode 100644 index 94477d2827..0000000000 --- a/drivers/theora/SCsub +++ /dev/null @@ -1,65 +0,0 @@ -Import('env') - -sources = [ - #"theora/analyze.c", - #"theora/apiwrapper.c", - "theora/bitpack.c", - "theora/cpu.c", - #"theora/decapiwrapper.c", - "theora/decinfo.c", - "theora/decode.c", - "theora/dequant.c", - #"theora/encapiwrapper.c", - #"theora/encfrag.c", - #"theora/encinfo.c", - #"theora/encode.c", - #"theora/encoder_disabled.c", - #"theora/enquant.c", - #"theora/fdct.c", - "theora/fragment.c", - "theora/huffdec.c", - #"theora/huffenc.c", - "theora/idct.c", - "theora/info.c", - "theora/internal.c", - #"theora/mathops.c", - #"theora/mcenc.c", - "theora/quant.c", - #"theora/rate.c", - "theora/state.c", - #"theora/tokenize.c", - "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.drivers_sources += sources_x86 - -if (env["x86_opt_vc"]): - env.drivers_sources += sources_x86_vc - -if (env["x86_opt_gcc"] or env["x86_opt_vc"]): - Import('env_drivers') - env_drivers.Append(CCFLAGS=["-DOC_X86_ASM"]) diff --git a/drivers/theora/theora.exp b/drivers/theora/theora.exp deleted file mode 100644 index b4e0225f1e..0000000000 --- a/drivers/theora/theora.exp +++ /dev/null @@ -1,55 +0,0 @@ -# export list for libtheora -_theora_version_string -_theora_version_number -_theora_encode_init -_theora_encode_YUVin -_theora_encode_packetout -_theora_encode_header -_theora_encode_comment -_theora_encode_tables -_theora_decode_header -_theora_decode_init -_theora_decode_packetin -_theora_decode_YUVout -_theora_control -_theora_packet_isheader -_theora_packet_iskeyframe -_theora_granule_shift -_theora_granule_frame -_theora_granule_time -_theora_info_init -_theora_info_clear -_theora_clear -_theora_comment_init -_theora_comment_add -_theora_comment_add_tag -_theora_comment_query -_theora_comment_query_count -_theora_comment_clear -_th_version_string -_th_version_number -_th_decode_headerin -_th_decode_alloc -_th_setup_free -_th_decode_ctl -_th_decode_packetin -_th_decode_ycbcr_out -_th_decode_free -_th_packet_isheader -_th_packet_iskeyframe -_th_granule_frame -_th_granule_time -_th_info_init -_th_info_clear -_th_comment_init -_th_comment_add -_th_comment_add_tag -_th_comment_query -_th_comment_query_count -_th_comment_clear -_th_encode_alloc -_th_encode_ctl -_th_encode_flushheader -_th_encode_packetout -_th_encode_ycbcr_in -_th_encode_free diff --git a/modules/theora/SCsub b/modules/theora/SCsub new file mode 100644 index 0000000000..cdb78e955e --- /dev/null +++ b/modules/theora/SCsub @@ -0,0 +1,81 @@ +Import('env') +Import('env_modules') + +env_theora = env_modules.Clone() + +# Thirdparty source files +if (env["libtheora"] != "system"): # builtin + thirdparty_dir = "#thirdparty/libtheora/" + thirdparty_sources = [ + "analyze.c", + "apiwrapper.c", + "bitpack.c", + "cpu.c", + "decapiwrapper.c", + "decinfo.c", + "decode.c", + "dequant.c", + "encapiwrapper.c", + "encfrag.c", + "encinfo.c", + "encode.c", + "encoder_disabled.c", + "enquant.c", + "fdct.c", + "fragment.c", + "huffdec.c", + "huffenc.c", + "idct.c", + "info.c", + "internal.c", + "mathops.c", + "mcenc.c", + "quant.c", + "rate.c", + "state.c", + "tokenize.c", + ] + + thirdparty_sources_x86 = [ + "x86/mmxencfrag.c", + "x86/mmxfdct.c", + "x86/mmxfrag.c", + "x86/mmxidct.c", + "x86/mmxstate.c", + "x86/sse2fdct.c", + "x86/x86enc.c", + "x86/x86state.c", + ] + + thirdparty_sources_x86_vc = [ + "x86_vc/mmxencfrag.c", + "x86_vc/mmxfdct.c", + "x86_vc/mmxfrag.c", + "x86_vc/mmxidct.c", + "x86_vc/mmxstate.c", + "x86_vc/x86enc.c", + "x86_vc/x86state.c", + ] + + if (env["x86_opt_gcc"]): + thirdparty_sources += thirdparty_sources_x86 + + if (env["x86_opt_vc"]): + thirdparty_sources += thirdparty_sources_x86_vc + + if (env["x86_opt_gcc"] or env["x86_opt_vc"]): + env_theora.Append(CCFLAGS = ["-DOC_X86_ASM"]) + + thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] + + env_theora.add_source_files(env.modules_sources, thirdparty_sources) + env_theora.Append(CPPPATH = [thirdparty_dir]) + + # also requires libogg and libvorbis + if (env["libogg"] != "system"): # builtin + env_theora.Append(CPPPATH = ["#thirdparty/libogg"]) + if (env["libvorbis"] != "system"): # builtin + env_theora.Append(CPPPATH = ["#thirdparty/libvorbis"]) + +# Godot source files +env_theora.add_source_files(env.modules_sources, "*.cpp") diff --git a/modules/theora/config.py b/modules/theora/config.py new file mode 100644 index 0000000000..368e97e152 --- /dev/null +++ b/modules/theora/config.py @@ -0,0 +1,6 @@ + +def can_build(platform): + return True + +def configure(env): + pass diff --git a/modules/theora/register_types.cpp b/modules/theora/register_types.cpp new file mode 100644 index 0000000000..282b59b0ec --- /dev/null +++ b/modules/theora/register_types.cpp @@ -0,0 +1,45 @@ +/*************************************************************************/ +/* register_types.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ +#include "register_types.h" + +#include "video_stream_theora.h" + +static ResourceFormatLoaderVideoStreamTheora* theora_stream_loader = NULL; + +void register_theora_types() { + + theora_stream_loader = memnew( ResourceFormatLoaderVideoStreamTheora ); + ResourceLoader::add_resource_format_loader(theora_stream_loader); + ObjectTypeDB::register_type(); +} + +void unregister_theora_types() { + + memdelete( theora_stream_loader ); +} diff --git a/modules/theora/register_types.h b/modules/theora/register_types.h new file mode 100644 index 0000000000..18bdbf0c4c --- /dev/null +++ b/modules/theora/register_types.h @@ -0,0 +1,30 @@ +/*************************************************************************/ +/* register_types.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ +void register_theora_types(); +void unregister_theora_types(); diff --git a/drivers/theora/video_stream_theora.cpp b/modules/theora/video_stream_theora.cpp similarity index 99% rename from drivers/theora/video_stream_theora.cpp rename to modules/theora/video_stream_theora.cpp index 1f3832ec16..3ddfee3a1d 100644 --- a/drivers/theora/video_stream_theora.cpp +++ b/modules/theora/video_stream_theora.cpp @@ -26,13 +26,11 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#ifdef THEORA_ENABLED - #include "video_stream_theora.h" + +#include "globals.h" #include "os/os.h" #include "yuv2rgb.h" -#include "globals.h" - int VideoStreamPlaybackTheora:: buffer_data() { @@ -940,6 +938,3 @@ String ResourceFormatLoaderVideoStreamTheora::get_resource_type(const String &p_ return "VideoStreamTheora"; return ""; } - -#endif - diff --git a/drivers/theora/video_stream_theora.h b/modules/theora/video_stream_theora.h similarity index 98% rename from drivers/theora/video_stream_theora.h rename to modules/theora/video_stream_theora.h index 5484815844..04a5c56ee5 100644 --- a/drivers/theora/video_stream_theora.h +++ b/modules/theora/video_stream_theora.h @@ -29,16 +29,15 @@ #ifndef VIDEO_STREAM_THEORA_H #define VIDEO_STREAM_THEORA_H -#ifdef THEORA_ENABLED - -#include "theora/theoradec.h" -#include "vorbis/codec.h" -#include "os/file_access.h" -#include "ring_buffer.h" #include "io/resource_loader.h" -#include "scene/resources/video_stream.h" +#include "os/file_access.h" #include "os/thread.h" #include "os/semaphore.h" +#include "ring_buffer.h" +#include "scene/resources/video_stream.h" + +#include +#include //#define THEORA_USE_THREAD_STREAMING @@ -197,8 +196,4 @@ public: }; - - -#endif - #endif diff --git a/drivers/theora/yuv2rgb.h b/modules/theora/yuv2rgb.h similarity index 100% rename from drivers/theora/yuv2rgb.h rename to modules/theora/yuv2rgb.h diff --git a/platform/bb10/detect.py b/platform/bb10/detect.py index 2860b7f090..5aa68b36dc 100644 --- a/platform/bb10/detect.py +++ b/platform/bb10/detect.py @@ -33,8 +33,7 @@ def get_flags(): return [ ('tools', 'no'), - ('theora', 'no'), - + ('module_theora_enabled', 'no'), ] def configure(env): diff --git a/platform/javascript/detect.py b/platform/javascript/detect.py index f80c3b4915..fce680b002 100644 --- a/platform/javascript/detect.py +++ b/platform/javascript/detect.py @@ -26,10 +26,10 @@ def get_flags(): return [ ('tools', 'no'), - ('theora', 'no'), ('musepack', 'no'), ('squish', 'no'), ('etc1', 'no'), + ('module_theora_enabled', 'no'), ] diff --git a/platform/x11/detect.py b/platform/x11/detect.py index 98c2d1e8fd..7c22bd97ff 100644 --- a/platform/x11/detect.py +++ b/platform/x11/detect.py @@ -73,7 +73,6 @@ def get_flags(): ("openssl", "system"), ('freetype','yes'), # use system freetype ('libpng', 'system'), - #("theora","no"), ] @@ -155,16 +154,24 @@ def configure(env): if (env["enet"] == "system"): env.ParseConfig('pkg-config libenet --cflags --libs') - if (env["libogg"] == "system"): - env.ParseConfig('pkg-config ogg --cflags --libs') + # Sound and video libraries + # Keep the order as it triggers chained dependencies (ogg needed by others, etc.) + + if (env["libtheora"] == "system"): + env["libogg"] = "system" # Needed to link against system libtheora + env["libvorbis"] = "system" # Needed to link against system libtheora + env.ParseConfig('pkg-config theora theoradec --cflags --libs') if (env["libvorbis"] == "system"): env["libogg"] = "system" # Needed to link against system libvorbis - env.ParseConfig('pkg-config vorbis vorbisfile ogg --cflags --libs') + env.ParseConfig('pkg-config vorbis vorbisfile --cflags --libs') if (env["opus"] == "system"): env["libogg"] = "system" # Needed to link against system opus - env.ParseConfig('pkg-config opus opusfile ogg --cflags --libs') + env.ParseConfig('pkg-config opus opusfile --cflags --libs') + + if (env["libogg"] == "system"): + env.ParseConfig('pkg-config ogg --cflags --libs') env.Append(CPPFLAGS=['-DOPENGL_ENABLED']) diff --git a/thirdparty/README.md b/thirdparty/README.md index a8c2c7df95..a567eb177d 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -132,3 +132,16 @@ Files extracted from upstream source: Files extracted from upstream source: - all of them: rg_etc1.{cpp,h} + + +## theora + +- Upstream: https://www.theora.org +- Version: 1.1.1 +- License: BSD-3-Clause + +Files extracted from upstream source: + +- all .c, .h in lib/ +- all .h files in include/theora/ as theora/ +- COPYING and LICENSE diff --git a/drivers/theora/COPYING b/thirdparty/libtheora/COPYING similarity index 100% rename from drivers/theora/COPYING rename to thirdparty/libtheora/COPYING diff --git a/drivers/theora/LICENSE b/thirdparty/libtheora/LICENSE similarity index 100% rename from drivers/theora/LICENSE rename to thirdparty/libtheora/LICENSE diff --git a/drivers/theora/analyze.c b/thirdparty/libtheora/analyze.c similarity index 100% rename from drivers/theora/analyze.c rename to thirdparty/libtheora/analyze.c diff --git a/drivers/theora/apiwrapper.c b/thirdparty/libtheora/apiwrapper.c similarity index 100% rename from drivers/theora/apiwrapper.c rename to thirdparty/libtheora/apiwrapper.c diff --git a/drivers/theora/apiwrapper.h b/thirdparty/libtheora/apiwrapper.h similarity index 100% rename from drivers/theora/apiwrapper.h rename to thirdparty/libtheora/apiwrapper.h diff --git a/drivers/theora/bitpack.c b/thirdparty/libtheora/bitpack.c similarity index 100% rename from drivers/theora/bitpack.c rename to thirdparty/libtheora/bitpack.c diff --git a/drivers/theora/bitpack.h b/thirdparty/libtheora/bitpack.h similarity index 100% rename from drivers/theora/bitpack.h rename to thirdparty/libtheora/bitpack.h diff --git a/drivers/theora/cpu.c b/thirdparty/libtheora/cpu.c similarity index 100% rename from drivers/theora/cpu.c rename to thirdparty/libtheora/cpu.c diff --git a/drivers/theora/cpu.h b/thirdparty/libtheora/cpu.h similarity index 100% rename from drivers/theora/cpu.h rename to thirdparty/libtheora/cpu.h diff --git a/drivers/theora/dct.h b/thirdparty/libtheora/dct.h similarity index 100% rename from drivers/theora/dct.h rename to thirdparty/libtheora/dct.h diff --git a/drivers/theora/decapiwrapper.c b/thirdparty/libtheora/decapiwrapper.c similarity index 100% rename from drivers/theora/decapiwrapper.c rename to thirdparty/libtheora/decapiwrapper.c diff --git a/drivers/theora/decinfo.c b/thirdparty/libtheora/decinfo.c similarity index 100% rename from drivers/theora/decinfo.c rename to thirdparty/libtheora/decinfo.c diff --git a/drivers/theora/decint.h b/thirdparty/libtheora/decint.h similarity index 100% rename from drivers/theora/decint.h rename to thirdparty/libtheora/decint.h diff --git a/drivers/theora/decode.c b/thirdparty/libtheora/decode.c similarity index 100% rename from drivers/theora/decode.c rename to thirdparty/libtheora/decode.c diff --git a/drivers/theora/dequant.c b/thirdparty/libtheora/dequant.c similarity index 100% rename from drivers/theora/dequant.c rename to thirdparty/libtheora/dequant.c diff --git a/drivers/theora/dequant.h b/thirdparty/libtheora/dequant.h similarity index 100% rename from drivers/theora/dequant.h rename to thirdparty/libtheora/dequant.h diff --git a/drivers/theora/encapiwrapper.c b/thirdparty/libtheora/encapiwrapper.c similarity index 100% rename from drivers/theora/encapiwrapper.c rename to thirdparty/libtheora/encapiwrapper.c diff --git a/drivers/theora/encfrag.c b/thirdparty/libtheora/encfrag.c similarity index 100% rename from drivers/theora/encfrag.c rename to thirdparty/libtheora/encfrag.c diff --git a/drivers/theora/encinfo.c b/thirdparty/libtheora/encinfo.c similarity index 100% rename from drivers/theora/encinfo.c rename to thirdparty/libtheora/encinfo.c diff --git a/drivers/theora/encint.h b/thirdparty/libtheora/encint.h similarity index 100% rename from drivers/theora/encint.h rename to thirdparty/libtheora/encint.h diff --git a/drivers/theora/encode.c b/thirdparty/libtheora/encode.c similarity index 100% rename from drivers/theora/encode.c rename to thirdparty/libtheora/encode.c diff --git a/drivers/theora/encoder_disabled.c b/thirdparty/libtheora/encoder_disabled.c similarity index 100% rename from drivers/theora/encoder_disabled.c rename to thirdparty/libtheora/encoder_disabled.c diff --git a/drivers/theora/enquant.c b/thirdparty/libtheora/enquant.c similarity index 100% rename from drivers/theora/enquant.c rename to thirdparty/libtheora/enquant.c diff --git a/drivers/theora/enquant.h b/thirdparty/libtheora/enquant.h similarity index 100% rename from drivers/theora/enquant.h rename to thirdparty/libtheora/enquant.h diff --git a/drivers/theora/fdct.c b/thirdparty/libtheora/fdct.c similarity index 100% rename from drivers/theora/fdct.c rename to thirdparty/libtheora/fdct.c diff --git a/drivers/theora/fragment.c b/thirdparty/libtheora/fragment.c similarity index 100% rename from drivers/theora/fragment.c rename to thirdparty/libtheora/fragment.c diff --git a/drivers/theora/huffdec.c b/thirdparty/libtheora/huffdec.c similarity index 100% rename from drivers/theora/huffdec.c rename to thirdparty/libtheora/huffdec.c diff --git a/drivers/theora/huffdec.h b/thirdparty/libtheora/huffdec.h similarity index 100% rename from drivers/theora/huffdec.h rename to thirdparty/libtheora/huffdec.h diff --git a/drivers/theora/huffenc.c b/thirdparty/libtheora/huffenc.c similarity index 100% rename from drivers/theora/huffenc.c rename to thirdparty/libtheora/huffenc.c diff --git a/drivers/theora/huffenc.h b/thirdparty/libtheora/huffenc.h similarity index 100% rename from drivers/theora/huffenc.h rename to thirdparty/libtheora/huffenc.h diff --git a/drivers/theora/huffman.h b/thirdparty/libtheora/huffman.h similarity index 100% rename from drivers/theora/huffman.h rename to thirdparty/libtheora/huffman.h diff --git a/drivers/theora/idct.c b/thirdparty/libtheora/idct.c similarity index 100% rename from drivers/theora/idct.c rename to thirdparty/libtheora/idct.c diff --git a/drivers/theora/info.c b/thirdparty/libtheora/info.c similarity index 100% rename from drivers/theora/info.c rename to thirdparty/libtheora/info.c diff --git a/drivers/theora/internal.c b/thirdparty/libtheora/internal.c similarity index 100% rename from drivers/theora/internal.c rename to thirdparty/libtheora/internal.c diff --git a/drivers/theora/internal.h b/thirdparty/libtheora/internal.h similarity index 100% rename from drivers/theora/internal.h rename to thirdparty/libtheora/internal.h diff --git a/drivers/theora/mathops.c b/thirdparty/libtheora/mathops.c similarity index 100% rename from drivers/theora/mathops.c rename to thirdparty/libtheora/mathops.c diff --git a/drivers/theora/mathops.h b/thirdparty/libtheora/mathops.h similarity index 100% rename from drivers/theora/mathops.h rename to thirdparty/libtheora/mathops.h diff --git a/drivers/theora/mcenc.c b/thirdparty/libtheora/mcenc.c similarity index 100% rename from drivers/theora/mcenc.c rename to thirdparty/libtheora/mcenc.c diff --git a/drivers/theora/modedec.h b/thirdparty/libtheora/modedec.h similarity index 100% rename from drivers/theora/modedec.h rename to thirdparty/libtheora/modedec.h diff --git a/drivers/theora/ocintrin.h b/thirdparty/libtheora/ocintrin.h similarity index 100% rename from drivers/theora/ocintrin.h rename to thirdparty/libtheora/ocintrin.h diff --git a/drivers/theora/quant.c b/thirdparty/libtheora/quant.c similarity index 100% rename from drivers/theora/quant.c rename to thirdparty/libtheora/quant.c diff --git a/drivers/theora/quant.h b/thirdparty/libtheora/quant.h similarity index 100% rename from drivers/theora/quant.h rename to thirdparty/libtheora/quant.h diff --git a/drivers/theora/rate.c b/thirdparty/libtheora/rate.c similarity index 100% rename from drivers/theora/rate.c rename to thirdparty/libtheora/rate.c diff --git a/drivers/theora/state.c b/thirdparty/libtheora/state.c similarity index 100% rename from drivers/theora/state.c rename to thirdparty/libtheora/state.c diff --git a/drivers/theora/codec.h b/thirdparty/libtheora/theora/codec.h similarity index 100% rename from drivers/theora/codec.h rename to thirdparty/libtheora/theora/codec.h diff --git a/drivers/theora/theora.h b/thirdparty/libtheora/theora/theora.h similarity index 100% rename from drivers/theora/theora.h rename to thirdparty/libtheora/theora/theora.h diff --git a/drivers/theora/theoradec.h b/thirdparty/libtheora/theora/theoradec.h similarity index 100% rename from drivers/theora/theoradec.h rename to thirdparty/libtheora/theora/theoradec.h diff --git a/drivers/theora/theoraenc.h b/thirdparty/libtheora/theora/theoraenc.h similarity index 100% rename from drivers/theora/theoraenc.h rename to thirdparty/libtheora/theora/theoraenc.h diff --git a/drivers/theora/tokenize.c b/thirdparty/libtheora/tokenize.c similarity index 100% rename from drivers/theora/tokenize.c rename to thirdparty/libtheora/tokenize.c diff --git a/drivers/theora/x86/mmxencfrag.c b/thirdparty/libtheora/x86/mmxencfrag.c similarity index 100% rename from drivers/theora/x86/mmxencfrag.c rename to thirdparty/libtheora/x86/mmxencfrag.c diff --git a/drivers/theora/x86/mmxfdct.c b/thirdparty/libtheora/x86/mmxfdct.c similarity index 100% rename from drivers/theora/x86/mmxfdct.c rename to thirdparty/libtheora/x86/mmxfdct.c diff --git a/drivers/theora/x86/mmxfrag.c b/thirdparty/libtheora/x86/mmxfrag.c similarity index 100% rename from drivers/theora/x86/mmxfrag.c rename to thirdparty/libtheora/x86/mmxfrag.c diff --git a/drivers/theora/x86/mmxfrag.h b/thirdparty/libtheora/x86/mmxfrag.h similarity index 100% rename from drivers/theora/x86/mmxfrag.h rename to thirdparty/libtheora/x86/mmxfrag.h diff --git a/drivers/theora/x86/mmxidct.c b/thirdparty/libtheora/x86/mmxidct.c similarity index 100% rename from drivers/theora/x86/mmxidct.c rename to thirdparty/libtheora/x86/mmxidct.c diff --git a/drivers/theora/x86/mmxloop.h b/thirdparty/libtheora/x86/mmxloop.h similarity index 100% rename from drivers/theora/x86/mmxloop.h rename to thirdparty/libtheora/x86/mmxloop.h diff --git a/drivers/theora/x86/mmxstate.c b/thirdparty/libtheora/x86/mmxstate.c similarity index 100% rename from drivers/theora/x86/mmxstate.c rename to thirdparty/libtheora/x86/mmxstate.c diff --git a/drivers/theora/x86/sse2fdct.c b/thirdparty/libtheora/x86/sse2fdct.c similarity index 100% rename from drivers/theora/x86/sse2fdct.c rename to thirdparty/libtheora/x86/sse2fdct.c diff --git a/drivers/theora/x86/x86enc.c b/thirdparty/libtheora/x86/x86enc.c similarity index 100% rename from drivers/theora/x86/x86enc.c rename to thirdparty/libtheora/x86/x86enc.c diff --git a/drivers/theora/x86/x86enc.h b/thirdparty/libtheora/x86/x86enc.h similarity index 100% rename from drivers/theora/x86/x86enc.h rename to thirdparty/libtheora/x86/x86enc.h diff --git a/drivers/theora/x86/x86int.h b/thirdparty/libtheora/x86/x86int.h similarity index 100% rename from drivers/theora/x86/x86int.h rename to thirdparty/libtheora/x86/x86int.h diff --git a/drivers/theora/x86/x86state.c b/thirdparty/libtheora/x86/x86state.c similarity index 100% rename from drivers/theora/x86/x86state.c rename to thirdparty/libtheora/x86/x86state.c diff --git a/drivers/theora/x86_vc/mmxencfrag.c b/thirdparty/libtheora/x86_vc/mmxencfrag.c similarity index 100% rename from drivers/theora/x86_vc/mmxencfrag.c rename to thirdparty/libtheora/x86_vc/mmxencfrag.c diff --git a/drivers/theora/x86_vc/mmxfdct.c b/thirdparty/libtheora/x86_vc/mmxfdct.c similarity index 100% rename from drivers/theora/x86_vc/mmxfdct.c rename to thirdparty/libtheora/x86_vc/mmxfdct.c diff --git a/drivers/theora/x86_vc/mmxfrag.c b/thirdparty/libtheora/x86_vc/mmxfrag.c similarity index 100% rename from drivers/theora/x86_vc/mmxfrag.c rename to thirdparty/libtheora/x86_vc/mmxfrag.c diff --git a/drivers/theora/x86_vc/mmxfrag.h b/thirdparty/libtheora/x86_vc/mmxfrag.h similarity index 100% rename from drivers/theora/x86_vc/mmxfrag.h rename to thirdparty/libtheora/x86_vc/mmxfrag.h diff --git a/drivers/theora/x86_vc/mmxidct.c b/thirdparty/libtheora/x86_vc/mmxidct.c similarity index 100% rename from drivers/theora/x86_vc/mmxidct.c rename to thirdparty/libtheora/x86_vc/mmxidct.c diff --git a/drivers/theora/x86_vc/mmxloop.h b/thirdparty/libtheora/x86_vc/mmxloop.h similarity index 100% rename from drivers/theora/x86_vc/mmxloop.h rename to thirdparty/libtheora/x86_vc/mmxloop.h diff --git a/drivers/theora/x86_vc/mmxstate.c b/thirdparty/libtheora/x86_vc/mmxstate.c similarity index 100% rename from drivers/theora/x86_vc/mmxstate.c rename to thirdparty/libtheora/x86_vc/mmxstate.c diff --git a/drivers/theora/x86_vc/x86enc.c b/thirdparty/libtheora/x86_vc/x86enc.c similarity index 100% rename from drivers/theora/x86_vc/x86enc.c rename to thirdparty/libtheora/x86_vc/x86enc.c diff --git a/drivers/theora/x86_vc/x86enc.h b/thirdparty/libtheora/x86_vc/x86enc.h similarity index 100% rename from drivers/theora/x86_vc/x86enc.h rename to thirdparty/libtheora/x86_vc/x86enc.h diff --git a/drivers/theora/x86_vc/x86int.h b/thirdparty/libtheora/x86_vc/x86int.h similarity index 100% rename from drivers/theora/x86_vc/x86int.h rename to thirdparty/libtheora/x86_vc/x86int.h diff --git a/drivers/theora/x86_vc/x86state.c b/thirdparty/libtheora/x86_vc/x86state.c similarity index 100% rename from drivers/theora/x86_vc/x86state.c rename to thirdparty/libtheora/x86_vc/x86state.c