Blender had a very limited (only uncompressed or MJPEG frames) .avi file support, for both reading and writing. This is something that ffmpeg can fully do. This removes all of that. 3500 lines of code gone, primary motivations being: - ffmpeg can read and write .avi files just fine, including ones with uncompressed or MJPEG frames. - Blender's ffmpeg integration could also be taught to produce uncompressed or MJPEG .avi files, but TBH I don't see a particular reason to do that. Modern formats like H264 are better in every way, and already support "lossless" option if needed. - The "Lite" blender build configuration was excluding both ffmpeg and avi anyway, so that config is something that can't read nor write any movies. User visible changes: - In scene image output type, under Video section now there's only Ffmpeg Video (AVI Raw and AVI JPEG are gone) - Whenever loading an existing file, if output was one of AVI Raw / AVI JPEG, it is set to Ffmpeg Video. Pull Request: https://projects.blender.org/blender/blender/pulls/118409
396 lines
7.3 KiB
CMake
396 lines
7.3 KiB
CMake
# SPDX-FileCopyrightText: 2006 Blender Authors
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
set(INC
|
|
..
|
|
../../blenkernel
|
|
../../blenloader
|
|
../../blentranslation
|
|
../../editors/include
|
|
../../gpu
|
|
../../imbuf
|
|
../../imbuf/intern/oiio
|
|
../../makesrna
|
|
../../windowmanager
|
|
../../../../intern/mantaflow/extern
|
|
../../../../intern/opencolorio
|
|
# RNA_prototypes.h
|
|
${CMAKE_BINARY_DIR}/source/blender/makesrna
|
|
)
|
|
|
|
set(INC_SYS
|
|
${PYTHON_INCLUDE_DIRS}
|
|
)
|
|
|
|
set(SRC
|
|
bpy.cc
|
|
bpy_app.cc
|
|
bpy_app_alembic.cc
|
|
bpy_app_build_options.cc
|
|
bpy_app_ffmpeg.cc
|
|
bpy_app_handlers.cc
|
|
bpy_app_icons.cc
|
|
bpy_app_ocio.cc
|
|
bpy_app_oiio.cc
|
|
bpy_app_opensubdiv.cc
|
|
bpy_app_openvdb.cc
|
|
bpy_app_sdl.cc
|
|
bpy_app_timers.cc
|
|
bpy_app_translations.cc
|
|
bpy_app_usd.cc
|
|
bpy_capi_utils.cc
|
|
bpy_driver.cc
|
|
bpy_gizmo_wrap.cc
|
|
bpy_interface.cc
|
|
bpy_interface_atexit.cc
|
|
bpy_interface_run.cc
|
|
bpy_intern_string.cc
|
|
bpy_library_load.cc
|
|
bpy_library_write.cc
|
|
bpy_msgbus.cc
|
|
bpy_operator.cc
|
|
bpy_operator_wrap.cc
|
|
bpy_path.cc
|
|
bpy_props.cc
|
|
bpy_rna.cc
|
|
bpy_rna_anim.cc
|
|
bpy_rna_array.cc
|
|
bpy_rna_callback.cc
|
|
bpy_rna_context.cc
|
|
bpy_rna_data.cc
|
|
bpy_rna_driver.cc
|
|
bpy_rna_gizmo.cc
|
|
bpy_rna_id_collection.cc
|
|
bpy_rna_operator.cc
|
|
bpy_rna_text.cc
|
|
bpy_rna_types_capi.cc
|
|
bpy_rna_ui.cc
|
|
bpy_traceback.cc
|
|
bpy_utils_previews.cc
|
|
bpy_utils_units.cc
|
|
stubs.cc
|
|
|
|
bpy.h
|
|
bpy_app.h
|
|
bpy_app_alembic.h
|
|
bpy_app_build_options.h
|
|
bpy_app_ffmpeg.h
|
|
bpy_app_handlers.h
|
|
bpy_app_icons.h
|
|
bpy_app_ocio.h
|
|
bpy_app_oiio.h
|
|
bpy_app_opensubdiv.h
|
|
bpy_app_openvdb.h
|
|
bpy_app_sdl.h
|
|
bpy_app_timers.h
|
|
bpy_app_translations.h
|
|
bpy_app_usd.h
|
|
bpy_capi_utils.h
|
|
bpy_driver.h
|
|
bpy_gizmo_wrap.h
|
|
bpy_intern_string.h
|
|
bpy_library.h
|
|
bpy_msgbus.h
|
|
bpy_operator.h
|
|
bpy_operator_wrap.h
|
|
bpy_path.h
|
|
bpy_props.h
|
|
bpy_rna.h
|
|
bpy_rna_anim.h
|
|
bpy_rna_callback.h
|
|
bpy_rna_context.h
|
|
bpy_rna_data.h
|
|
bpy_rna_driver.h
|
|
bpy_rna_gizmo.h
|
|
bpy_rna_id_collection.h
|
|
bpy_rna_operator.h
|
|
bpy_rna_text.h
|
|
bpy_rna_types_capi.h
|
|
bpy_rna_ui.h
|
|
bpy_traceback.h
|
|
bpy_utils_previews.h
|
|
bpy_utils_units.h
|
|
../BPY_extern.h
|
|
../BPY_extern_clog.h
|
|
../BPY_extern_python.h
|
|
../BPY_extern_run.h
|
|
)
|
|
|
|
set(LIB
|
|
PRIVATE bf::blenlib
|
|
PRIVATE bf::depsgraph
|
|
PRIVATE bf::dna
|
|
bf_editor_animation
|
|
bf_editor_interface
|
|
bf_editor_space_api
|
|
PRIVATE bf::intern::clog
|
|
PRIVATE bf::intern::guardedalloc
|
|
PRIVATE bf::animrig
|
|
bf_python_gpu
|
|
|
|
${PYTHON_LINKFLAGS}
|
|
${PYTHON_LIBRARIES}
|
|
)
|
|
|
|
# only to check if buildinfo is available
|
|
if(WITH_BUILDINFO)
|
|
add_definitions(-DBUILD_DATE)
|
|
endif()
|
|
|
|
if(WITH_PYTHON_MODULE)
|
|
add_definitions(-DWITH_PYTHON_MODULE)
|
|
endif()
|
|
|
|
|
|
# Find the SSL certificate for the portable Blender installation.
|
|
# Without this, the absolute path on the builder is used, causing HTTPS access to fail.
|
|
# For example `urllib.request.urlopen("https://projects.blender.org")` fails
|
|
# (or any other HTTPS site). see: #102300 for details.
|
|
# NOTE: that this isn't necessary on WIN32.
|
|
if(WITH_PYTHON AND WITH_PYTHON_INSTALL AND (APPLE OR WITH_INSTALL_PORTABLE) AND (NOT WIN32))
|
|
# - `PYTHON_SSL_CERT_FILE` absolute path to the PEM file.
|
|
find_python_module_file("certifi/cacert.pem" PYTHON_SSL_CERT_FILE _python_ssl_cert_file_relative)
|
|
mark_as_advanced(PYTHON_SSL_CERT_FILE)
|
|
if (PYTHON_SSL_CERT_FILE)
|
|
add_definitions(-DPYTHON_SSL_CERT_FILE="${_python_ssl_cert_file_relative}")
|
|
else()
|
|
message(WARNING
|
|
"Unable to find \"certifi/cacert.pem\" within \"${PYTHON_LIBPATH}\", "
|
|
"this build will not be able to use bundled certificates with the \"ssl\" module!"
|
|
)
|
|
endif()
|
|
unset(_python_ssl_cert_file_relative)
|
|
endif()
|
|
|
|
if(WITH_PYTHON_SAFETY)
|
|
add_definitions(-DWITH_PYTHON_SAFETY)
|
|
endif()
|
|
|
|
if(WITH_AUDASPACE)
|
|
# It's possible to build with AUDASPACE (for file IO) but without the `aud` Python API,
|
|
# when building without NUMPY so define both `WITH_AUDASPACE` & `DWITH_AUDASPACE_PY`.
|
|
add_definitions(-DWITH_AUDASPACE)
|
|
if(WITH_PYTHON_NUMPY)
|
|
add_definitions(-DWITH_AUDASPACE_PY)
|
|
endif()
|
|
endif()
|
|
|
|
if(WITH_BULLET)
|
|
add_definitions(-DWITH_BULLET)
|
|
endif()
|
|
|
|
if(WITH_CODEC_FFMPEG)
|
|
list(APPEND INC_SYS
|
|
${FFMPEG_INCLUDE_DIRS}
|
|
)
|
|
list(APPEND LIB
|
|
${FFMPEG_LIBRARIES}
|
|
)
|
|
add_definitions(-DWITH_FFMPEG)
|
|
endif()
|
|
|
|
if(WITH_CODEC_SNDFILE)
|
|
add_definitions(-DWITH_SNDFILE)
|
|
endif()
|
|
|
|
if(WITH_COMPOSITOR_CPU)
|
|
add_definitions(-DWITH_COMPOSITOR_CPU)
|
|
endif()
|
|
|
|
if(WITH_CYCLES)
|
|
list(APPEND INC
|
|
../../../../intern/cycles/blender
|
|
)
|
|
list(APPEND LIB
|
|
bf_intern_cycles
|
|
)
|
|
add_definitions(-DWITH_CYCLES)
|
|
endif()
|
|
|
|
if(WITH_CYCLES_OSL)
|
|
add_definitions(-DWITH_CYCLES_OSL)
|
|
endif()
|
|
|
|
if(WITH_CYCLES_EMBREE)
|
|
add_definitions(-DWITH_CYCLES_EMBREE)
|
|
endif()
|
|
|
|
if(WITH_FREESTYLE)
|
|
list(APPEND INC
|
|
../../freestyle/intern/python
|
|
)
|
|
add_definitions(-DWITH_FREESTYLE)
|
|
endif()
|
|
|
|
if(WITH_IMAGE_CINEON)
|
|
add_definitions(-DWITH_CINEON)
|
|
endif()
|
|
|
|
if(WITH_IMAGE_OPENEXR)
|
|
add_definitions(-DWITH_OPENEXR)
|
|
endif()
|
|
|
|
if(WITH_IMAGE_OPENJPEG)
|
|
add_definitions(-DWITH_OPENJPEG)
|
|
endif()
|
|
|
|
if(WITH_WEBP)
|
|
add_definitions(-DWITH_WEBP)
|
|
endif()
|
|
|
|
if(WITH_INPUT_NDOF)
|
|
add_definitions(-DWITH_INPUT_NDOF)
|
|
endif()
|
|
|
|
if(WITH_INTERNATIONAL)
|
|
add_definitions(-DWITH_INTERNATIONAL)
|
|
endif()
|
|
|
|
if(WITH_OPENAL)
|
|
add_definitions(-DWITH_OPENAL)
|
|
endif()
|
|
|
|
if(WITH_OPENSUBDIV)
|
|
add_definitions(-DWITH_OPENSUBDIV)
|
|
endif()
|
|
|
|
if(WITH_SDL)
|
|
list(APPEND INC_SYS
|
|
${SDL_INCLUDE_DIR}
|
|
)
|
|
if(WITH_SDL_DYNLOAD)
|
|
list(APPEND LIB
|
|
extern_sdlew
|
|
)
|
|
else()
|
|
list(APPEND LIB
|
|
${SDL_LIBRARY}
|
|
)
|
|
endif()
|
|
add_definitions(-DWITH_SDL)
|
|
endif()
|
|
|
|
if(WITH_SDL_DYNLOAD)
|
|
list(APPEND INC
|
|
../../../../extern/sdlew/include
|
|
)
|
|
add_definitions(-DWITH_SDL_DYNLOAD)
|
|
endif()
|
|
|
|
if(WITH_JACK)
|
|
add_definitions(-DWITH_JACK)
|
|
endif()
|
|
|
|
if(WITH_COREAUDIO)
|
|
add_definitions(-DWITH_COREAUDIO)
|
|
endif()
|
|
|
|
if(WITH_LIBMV)
|
|
add_definitions(-DWITH_LIBMV)
|
|
endif()
|
|
|
|
if(WITH_PULSEAUDIO)
|
|
add_definitions(-DWITH_PULSEAUDIO)
|
|
endif()
|
|
|
|
if(WITH_WASAPI)
|
|
add_definitions(-DWITH_WASAPI)
|
|
endif()
|
|
|
|
if(WITH_MOD_OCEANSIM)
|
|
add_definitions(-DWITH_OCEANSIM)
|
|
endif()
|
|
|
|
if(WITH_MOD_REMESH)
|
|
add_definitions(-DWITH_MOD_REMESH)
|
|
endif()
|
|
|
|
if(WITH_MOD_FLUID)
|
|
add_definitions(-DWITH_FLUID)
|
|
endif()
|
|
|
|
if(WITH_OPENCOLLADA)
|
|
add_definitions(-DWITH_COLLADA)
|
|
endif()
|
|
|
|
if(WITH_IO_WAVEFRONT_OBJ)
|
|
add_definitions(-DWITH_IO_WAVEFRONT_OBJ)
|
|
endif()
|
|
|
|
if(WITH_IO_PLY)
|
|
add_definitions(-DWITH_IO_PLY)
|
|
endif()
|
|
|
|
if(WITH_IO_STL)
|
|
add_definitions(-DWITH_IO_STL)
|
|
endif()
|
|
|
|
if(WITH_IO_GPENCIL)
|
|
add_definitions(-DWITH_IO_GPENCIL)
|
|
endif()
|
|
|
|
if(WITH_ALEMBIC)
|
|
add_definitions(-DWITH_ALEMBIC)
|
|
endif()
|
|
|
|
if(WITH_OPENCOLORIO)
|
|
add_definitions(-DWITH_OCIO)
|
|
endif()
|
|
|
|
if(WITH_OPENVDB)
|
|
add_definitions(-DWITH_OPENVDB)
|
|
list(APPEND INC
|
|
../../../../intern/openvdb
|
|
)
|
|
endif()
|
|
|
|
if(WITH_ALEMBIC)
|
|
add_definitions(-DWITH_ALEMBIC)
|
|
list(APPEND INC
|
|
../../io/alembic
|
|
)
|
|
endif()
|
|
|
|
if(WITH_USD)
|
|
add_definitions(-DWITH_USD)
|
|
list(APPEND INC
|
|
../../io/usd
|
|
)
|
|
endif()
|
|
|
|
if(WITH_OPENSUBDIV)
|
|
add_definitions(-DWITH_OPENSUBDIV)
|
|
list(APPEND INC
|
|
../../../../intern/opensubdiv
|
|
)
|
|
endif()
|
|
|
|
if(WITH_XR_OPENXR)
|
|
add_definitions(-DWITH_XR_OPENXR)
|
|
endif()
|
|
|
|
if(WITH_POTRACE)
|
|
add_definitions(-DWITH_POTRACE)
|
|
endif()
|
|
|
|
if(WITH_PUGIXML)
|
|
add_definitions(-DWITH_PUGIXML)
|
|
endif()
|
|
|
|
if(WITH_HARU)
|
|
add_definitions(-DWITH_HARU)
|
|
endif()
|
|
|
|
if(WITH_HYDRA)
|
|
list(APPEND LIB
|
|
bf_render_hydra
|
|
)
|
|
add_definitions(-DWITH_HYDRA)
|
|
endif()
|
|
|
|
blender_add_lib(bf_python "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
|
|
|
|
# RNA_prototypes.h
|
|
add_dependencies(bf_python bf_rna)
|