subsurface/core/CMakeLists.txt
Berthold Stoeger cc4f48be3f Metadata: rudimentary support for XMP metadataa in MP4-based videos
XMP is a media-metadata standard based on XML which may be used
across a variety of media formats. Some video-processing software
writes XMP data without updating the native metadata fields.
Therefore, we should aim at reading XMP metadata and give priority
of XMP data over native fields.

Pros:
	- Support for *all* common media formats.
Cons:
	- XML (complex, verbose, chaotic).
	- Does not even come close to fulfilling its promise of being
	  well defined (see below).

Implement a simple XMP-parser using libxml2. Connect the XMP-parser to
the existing Quicktime/MP4 parser.

First problem encountered: According to the spec, XMP data supposed
to be put in the 'XMP_' atom. But for example exiftools instead
writes an 'uuid' atom with a special 16-byte uid. Implement both,
more options will probably follow.

Second problem: two versions of recording the creation date were found
  1) The content of a <exif:DateTimeOriginal> tag.
  2) The xmp::CreateDate attribute of a <rdf:Description> tag.

Here too, more versions are expected to surface and will have
to be supported in due course (with an obvious priority problem).

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-09-25 14:59:14 -07:00

135 lines
2.9 KiB
CMake

set(PLATFORM_SRC unknown_platform.c)
message(STATUS "system name ${CMAKE_SYSTEM_NAME}")
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
if(ANDROID)
set(PLATFORM_SRC android.cpp)
else()
set(PLATFORM_SRC unix.c)
endif()
elseif(CMAKE_SYSTEM_NAME STREQUAL "Android")
set(PLATFORM_SRC android.cpp)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
set(PLATFORM_SRC macos.c)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
set(PLATFORM_SRC windows.c)
elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
set(PLATFORM_SRC unix.c)
endif()
if(FTDISUPPORT)
set(SERIAL_FTDI serial_ftdi.c)
endif()
if(BTSUPPORT)
add_definitions(-DBT_SUPPORT)
set(BT_SRC_FILES desktop-widgets/btdeviceselectiondialog.cpp)
set(BT_CORE_SRC_FILES qtserialbluetooth.cpp btdiscovery.cpp)
endif()
if(BLESUPPORT)
add_definitions(-DBLE_SUPPORT)
set(BT_CORE_SRC_FILES ${BT_CORE_SRC_FILES} qt-ble.cpp)
endif()
# compile the core library part in C, part in C++
set(SUBSURFACE_CORE_LIB_SRCS
checkcloudconnection.cpp
cloudstorage.cpp
cochran.c
color.cpp
configuredivecomputer.cpp
configuredivecomputerthreads.cpp
connectionlistmodel.cpp
datatrak.c
deco.c
device.c
devicedetails.cpp
dive.c
divecomputer.cpp
divelogexportlogic.cpp
divesite.c
divesitehelpers.cpp
divesite-helper.cpp
divelist.c
downloadfromdcthread.cpp
equipment.c
errorhelper.c
exif.cpp
file.c
format.cpp
gaspressures.c
gas-model.c
gettextfromc.cpp
git-access.c
gpslocation.cpp
imagedownloader.cpp
isocialnetworkintegration.cpp
libdivecomputer.c
liquivision.c
load-git.c
membuffer.c
metadata.cpp
xmp_parser.cpp
metrics.cpp
ostctools.c
parse-xml.c
parse.c
import-suunto.c
import-shearwater.c
import-cobalt.c
import-divinglog.c
import-csv.c
planner.c
plannernotes.c
pluginmanager.cpp
profile.c
qthelper.cpp
qt-init.cpp
save-git.c
save-xml.c
save-html.c
sha1.c
statistics.c
strtod.c
subsurfacestartup.c
subsurfacesysinfo.cpp
taxonomy.c
time.c
uemis.c
uemis-downloader.c
version.c
videoframeextractor.cpp
windowtitleupdate.cpp
worldmap-save.c
# classes to manage struct preferences for QWidget and QML
settings/qPref.cpp
settings/qPrefCloudStorage.cpp
settings/qPrefDisplay.cpp
settings/qPrefDiveComputer.cpp
settings/qPrefDivePlanner.cpp
settings/qPrefFacebook.cpp
settings/qPrefGeneral.cpp
settings/qPrefGeocoding.cpp
settings/qPrefLanguage.cpp
settings/qPrefLocationService.cpp
settings/qPrefPartialPressureGas.cpp
settings/qPrefPrivate.cpp
settings/qPrefProxy.cpp
settings/qPrefTechnicalDetails.cpp
settings/qPrefUnit.cpp
settings/qPrefUpdateManager.cpp
#Subsurface Qt have the Subsurface structs QObjectified for easy access via QML.
subsurface-qt/DiveObjectHelper.cpp
subsurface-qt/CylinderObjectHelper.cpp
${SERIAL_FTDI}
${PLATFORM_SRC}
${BT_CORE_SRC_FILES}
)
source_group("Subsurface Core" FILES ${SUBSURFACE_CORE_LIB_SRCS})
add_library(subsurface_corelib STATIC ${SUBSURFACE_CORE_LIB_SRCS} )
target_link_libraries(subsurface_corelib ${QT_LIBRARIES})