Coder Social home page Coder Social logo

progweb / gpx2video Goto Github PK

View Code? Open in Web Editor NEW
161.0 9.0 9.0 4.19 MB

Creating video with telemetry overlay from GPX data

License: GNU General Public License v3.0

CMake 1.11% C++ 74.58% C 23.57% Makefile 0.20% SWIG 0.09% QMake 0.17% QML 0.29%
garmin gopro gps video telemetry overlay

gpx2video's Introduction

GPX2Video tool - Telemetry overlay

GPX GoPro Quick not working ? No tool working with Linux distribution. That's why I have written this small tool to extract telemetry data to enable stickers or gauges on your videos.

GPX2Video can convert the data recorded by your GoPro (GPS, accelerometer, camera settings and more) or reads an input GPX file. Visualize data or maps on your videos.

Finally, gpx2video should work with any camera and you are able to customize your gauges and much more. gpx2vidoe supports the timelapse / timewrap video too.

gpx2video is only a test tool and isn't yet a final release!

overview

Please test and report issues. Tested with GoPro 5, 6, 7, 8 and 9 (with last firmware).

Features

gpx2video should work with any video. Orientation, SAR & DAR video parameters are supported.

gpx2video can read and extract from your gpx input file:

  • time,
  • position,
  • elevation,
  • speed,
  • average speed,
  • max speed,
  • heartrate,
  • cadence,
  • temperature

gpx2video can extract GPMD data from GoPro GPMD stream in several format:

  • Text dump
  • RAW dump
  • GPX data

gpx2video can draw a map widget with your track. It supports multi map source:

  • OpenStreetMap I © OpenStreetMap contributors
  • Maps-For-Free Maps © Maps-For-Free
  • OpenCycleMap Maps © thunderforest.com, Data © osm.org/copyright
  • OpenTopoMap © OpenTopoMap (CC-BY-SA)
  • Public Transport Maps © ÖPNVKarte, Data © OpenStreetMap contributors
  • Google Maps Map provided by Google
  • Google Satellite Map provided by Google
  • Google Hybrid Map provided by Google
  • Virtual Earth Map provided by Microsoft
  • Virtual Earth Satellite Map provided by Microsoft
  • Virtual Earth Hybrid Map provided by Microsoft
  • IGN Essentiel Map Map provided by IGN
  • IGN Essentiel Photo Map provided by IGN

gpx2video can synchronize your video with your gpx input file.

How it works ?

gpx2video is able to extract and parse metadata and sensor data recorded by your GoPro.

$ ffprobe GH010337.MP4
ffprobe version 3.2.2 Copyright (c) 2007-2016 the FFmpeg developers
  built with gcc 6.2.1 (Debian 6.2.1-5) 20161124
...
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'GH010337.MP4':
  Metadata:
    major_brand     : mp41
    minor_version   : 538120216
    compatible_brands: mp41
    creation_time   : 2021-12-08T09:56:26.000000Z
...
  Duration: 00:00:52.38, start: 0.000000, bitrate: 100345 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709), 2704x1520 [SAR 1:1 DAR 169:95], 100078 kb/s, 50 fps, 50 tbr, 90k tbn, 100 tbc (default)
    Metadata:
      creation_time   : 2021-12-08T09:56:26.000000Z
      handler_name    : GoPro AVC  
      encoder         : GoPro AVC encoder
      timecode        : 09:56:26:43
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s (default)
    Metadata:
      creation_time   : 2021-12-08T09:56:26.000000Z
      handler_name    : GoPro AAC  
      timecode        : 09:56:26:43
    Stream #0:2(eng): Data: none (tmcd / 0x64636D74) (default)
    Metadata:
      creation_time   : 2021-12-08T09:56:26.000000Z
      handler_name    : GoPro TCD  
      timecode        : 09:56:26:43
    Stream #0:3(eng): Data: none (gpmd / 0x646D7067), 48 kb/s (default)
    Metadata:
      creation_time   : 2021-12-08T09:56:26.000000Z
      handler_name    : GoPro MET  
    Stream #0:4(eng): Data: none (fdsc / 0x63736466), 12 kb/s (default)
    Metadata:
      creation_time   : 2021-12-08T09:56:26.000000Z
      handler_name    : GoPro SOS  

gpx2video uses the creation_time field to synchronize your video with your GPX file. Warning, creation_time is in local time. But this date isn't synchronized with the GPS source.

If gpx2video finds the 'GoPro MET' stream, it searches packet with GPS fix to determine the offset time to use.

If the creation_time field and 'GoPro MET' stream can't be found, gpx2video assumes that the video starts in the same time that the GPX stream.

At last, you can overwrite creation_time value in using --start-time option.

"sync" command permits to test the sychronization process:

$ ./gpx2video -v -m GOPR1860.MP4 sync
Time synchronization...
PACKET: 0 - PTS: 0 - TIMESTAMP: 0 ms - TIME: 2022-01-16 10:05:03 - GPS FIX: 0 - GPS TIME: 2022-01-16 10:01:38.959 - OFFSET: -205
PACKET: 1 - PTS: 1000 - TIMESTAMP: 1000 ms - TIME: 2022-01-16 10:05:04 - GPS FIX: 0 - GPS TIME: 2022-01-16 10:01:40.939 - OFFSET: -204
PACKET: 2 - PTS: 2000 - TIMESTAMP: 2000 ms - TIME: 2022-01-16 10:05:05 - GPS FIX: 0 - GPS TIME: 2022-01-16 10:01:41.929 - OFFSET: -204
PACKET: 3 - PTS: 3000 - TIMESTAMP: 3000 ms - TIME: 2022-01-16 10:05:06 - GPS FIX: 0 - GPS TIME: 2022-01-16 10:01:42.919 - OFFSET: -204
...
PACKET: 20 - PTS: 20000 - TIMESTAMP: 20000 ms - TIME: 2022-01-16 10:05:23 - GPS FIX: 0 - GPS TIME: 2022-01-16 10:01:59.969 - OFFSET: -204
PACKET: 21 - PTS: 21000 - TIMESTAMP: 21000 ms - TIME: 2022-01-16 10:05:24 - GPS FIX: 0 - GPS TIME: 2022-01-16 10:02:00.959 - OFFSET: -204
PACKET: 22 - PTS: 22000 - TIMESTAMP: 22000 ms - TIME: 2022-01-16 10:05:25 - GPS FIX: 0 - GPS TIME: 2022-01-16 10:02:01.949 - OFFSET: -204
PACKET: 23 - PTS: 23000 - TIMESTAMP: 23000 ms - TIME: 2022-01-16 10:05:26 - GPS FIX: 0 - GPS TIME: 2022-01-16 10:02:02.939 - OFFSET: -204
PACKET: 24 - PTS: 24000 - TIMESTAMP: 24000 ms - TIME: 2022-01-16 10:05:27 - GPS FIX: 2 - GPS TIME: 2022-01-16 10:02:03.929 - OFFSET: -204
Video stream synchronized with success

At last, but not least, you can add an user offset (in ms).

$ ./gpx2video -m GOPR1860.MP4 --offset 9000 ...
$ ./gpx2video -m GOPR1860.MP4 --start-time "2021-12-08T09:56:26" --offset 300 ...

Build

To build gpx2video, please install all dependancies (on Debian):

apt-get install cmake g++ libevent-dev libssl-dev libcurl4-gnutls-dev \
    libavutil-dev libavformat-dev libavcodec-dev libavfilter-dev \
    libswresample-dev libswscale-dev libopenimageio-dev libgeographic-dev \
    libcairo2-dev libopenexr-dev

Then build in using cmake tools:

$ git clone https://github.com/progweb/gpx2video.git
$ mkdir gpx2video/build
$ cd gpx2video/build
$ cmake ..
$ make
$ ln -s ../assets assets
$ ./gpx2video -h

Please execute gpx2video tool from the build path so as it finds assets data.

Usage

gpx2video is a command line tool.

  • To extract GoPro GPMD data from media stream:
$ ./gpx2video -v -m GOPR1860.MP4 -o output.gpx -f 3 extract
gpx2video v0.0.0
creation_time = 2020-12-13T09:56:27.000000Z
Failed to find decoder for stream #2
Failed to find decoder for stream #3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '../../video/GOPR1860.MP4':
...
Extract GPMD data...
PACKET: 0 - PTS: 0 - TIMESTAMP: 0 ms - TIME: 1970-01-01 00:00:00
PACKET: 1 - PTS: 1001 - TIMESTAMP: 1001 ms - TIME: 1970-01-01 00:00:01
  • To render image per image with telemetry data:
$ mkdir png
$ ./gpx2video -v -m GH020340.MP4 -g ACTIVITY.gpx -l layout.xml -o png/image-XXXXXX.png image
gpx2video v0.0.0
...

One image per second will be generated. 'XXXXXX' will be replaced by the frame number

  • To render a video stream with telemetry data:
$ ./gpx2video -v -m GH020340.MP4 -g ACTIVITY.gpx -l layout.xml -o output.mp4 video
gpx2video v0.0.0
creation_time = 2021-12-08T10:34:50.000000Z
...
[read the input media metadata]
...
Track info:
  Name        : Road biking
  Comment     : 
  Description : 
  Source      : 
  Type        : road_biking
  Number      : 
  Segments:   : 1
Output #0, mp4, to 'output-overview.mp4':
  Stream #0:0: Video: h264, yuvj420p(pc), 2704x1520 [SAR 1:1 DAR 169:95], q=2-31, 32000 kb/s, 50 tbn
  Stream #0:1: Audio: aac (LC), 48000 Hz, stereo, fltp, 128 kb/s
Parsing layout.xml
Load widget 'grade'
Initialize grade widget
Load widget 'speed'
Initialize speed widget
Load widget 'elevation'
Initialize elevation widget
Load widget 'cadence'
Initialize cadence widget
Load map widget
Initialize map widget
Cache initialiization...
Time synchronization...
PACKET: 0 - PTS: 0 - TIMESTAMP: 0 ms - TIME: 2021-12-08 09:34:50 - GPS TIME: - OFFSET: 478042309
PACKET: 1 - PTS: 1000 - TIMESTAMP: 1000 ms - TIME: 2021-12-08 09:34:51 - GPS TIME: 2021-12-08 09:38:36.850 - OFFSET: 225
Video stream synchronized with success
Download map from OpenStreetMap I...
  Download tile 6 / 6 [##################################################] DONE
...
[Download, build map then draw your track]
...
Build map...
FRAME: 0 - PTS: 0 - TIMESTAMP: 0 ms - TIME: 2021-12-08 10:38:35
  Time: 2021-12-08 10:38:38. Distance: 35.841 km in 6330.000 seconds, current speed is 25.817 (valid: true)
FRAME: 1 - PTS: 1800 - TIMESTAMP: 20 ms - TIME: 2021-12-08 10:38:35
  Time: 2021-12-08 10:38:38. Distance: 35.841 km in 6330.000 seconds, current speed is 25.817 (valid: true)
[Process each frame]
...

How change gauges ?

Gauges size and position and more can be set from the layout.xml file. (see: samples/layout-1920x1080.xml)

You can edit layout.xml file to enable/disable gauge or edit label and position or any settings:

<?xml version="1.0" encoding="UTF-8"?>
<layout>
	<widget x="250" y="450" width="600" height="120" position="left" align="vertical">
		<type>speed</type>
		<name>VITESSE</name>
		<margin>20</margin>
		<padding>5</padding>
		<unit>kph</unit>
	</widget>		
	<widget x="250" y="450" width="600" height="120" position="left" align="vertical">
		<type>elevation</type>
		<name>ALTITUDE</name>
		<margin>20</margin>
		<padding>5</padding>
		<unit>m</unit>
	</widget>
	<widget x="250" y="450" width="600" height="120" position="right" align="vertical">
		<type>date</type>
		<name>DATE</name>
		<margin>20</margin>
		<padding>5</padding>
		<format>%d-%m-%Y</format>
	</widget>
	<widget x="250" y="450" width="600" height="120" position="left" align="vertical" display="false">
		<type>heartrate</type>
		<name>FREQ. CARDIAQUE</name>
		<margin>20</margin>
		<padding>5</padding>
	</widget>		
	<track x="800" y="300" width="640" height="480" position="none" display="false">
	</track>
	<map x="800" y="300" width="640" height="480" position="none">
		<source>1</source>
		<zoom>12</zoom>
		<factor>2.0</factor>
	</map>
</layout>

Widget common settings

Here all widget common element settings:

<widget x="250" y="450" width="600" height="120" position="left" align="vertical" at="1000" duration="9000" display="true">
	<type>speed</type>
	<name>VITESSE</name>
	<margin>20</margin>
	<padding>5</padding>
	<font>/usr/share/fonts/truetype/freefont/FreeSerifItalic.ttf</font>
	<text-color>#00ff00ff</text-color>
	<text-ratio>2.0</text-ratio>
	<text-shadow>3</text-shadow>
	<text-linespace>2</text-linespace>
	<label-align>left</label-align>
	<value-align>right</value-align>
	<border>5</border>
	<border-color>#000000b0</border-color>
	<background-color>#0000004c</background-color>
	<with-label>true</with-label>
	<with-value>true</with-value>
	<with-picto>true</with-picto>
	<with-unit>true</with-unit>
</widget>		

Node attributes are:

  • x / y: to set the widget position.
  • width / height: to set the widget size.
  • position: to compute the widget position.
  • align: to set the align direction.
  • at / duration: to display widget at a specific time (in ms) during a specific duration (in ms).
  • display: to render or not the widget.

Node elements are:

  • type: to set the widget type (speed, grade, distance...).
  • name: to set the widget label.
  • font: to set the text font.
  • margin: to set the space around the widget (margin-left, margin-right, margin-top and margin-bottom are supported too).
  • padding: to set the space inside the widget (padding-left, padding-right, padding-top and padding-bottom are supported too).
  • border: to set the border width.
  • border-color: to set the border color in #RGBA.
  • background-color: to set the background color in #RGBA.
  • text-color: to set the text color in #RGBA.
  • text-ratio: define the label and value size ratio.
  • text-shadow: text shadow thickness.
  • text-linespace: line space between label and value.
  • label-align: to set text alignement (left, center, right)
  • value-align: to set value alignement (left, center, right)
  • with-xxxx: to show or not the field (default is true).

type gauges supported are:

  • speed, maxspeed, avgspeed, avgridespeed
  • grade, elevation
  • date, time, duration
  • position
  • distance
  • cadence
  • heartrate
  • temperature
  • image
  • lap
  • text

position values are: none, left, right, top, bottom, bottom-left, bottom-right, top-left, top-right. If position element is set, gpx2video ignores and computes x and y values.

align values are: horizontal or vertical. If position isn't defined, align value isn't used.

display values are: true or false. It permits to render or not the widget. The display default value is true.

legend

padding value sets the space around the text. Whereas, margin value defines the space around the widget.

speed, maxspeed, avgspeed and avgridespeed widgets

<widget>
	<type>speed</type>
	<unit>kph</unit>
</widget>		

unit values are: mph or kph.

distance widget

<widget>
	<type>distance</type>
	<unit>km</unit>
</widget>		

unit values are: m, km, ft or miles.

elevation widget

<widget>
	<type>elevation</type>
	<unit>m</unit>
</widget>		

unit values are: m or ft.

date widget

<widget>
	<type>date</type>
	<format>%Y-%m-%d</format>
</widget>		

temperature widget

<widget>
	<type>temperature</type>
	<unit>C</unit>
</widget>		

unit values are: C, celsius or F, fahrenheit.

lap widget

<widget>
	<type>lap</type>
	<nbr-lap>10</nbr-lap>
</widget>		

nbr-lap value is the lap target number.

image widget

<widget>
	<type>image</type>
	<zoom>stretch</zoom>
	<source>fichier.jpg</source>
</widget>		

zoom values are: none, fit, fill, crop and stretch. This parameter is used only by the image widget. source is optional.

text widget

<widget>
	<type>text</type>
	<text>Rendered with GPX2Video application</text>
</widget>		

Maps

You can specify map source from a list. Warning, all maps aren't free.

gpx2video downloads each tile with the zoom level in your ~/.gpx2video/cache path. Then build the map.

Finally, gpx2video renders a mapbox in applying the zoom factor.

As you use map or track command line, please provide map settings (source, zoom, factor) on the command lines.

  • To render map:
$ ./gpx2video -g ACTIVITY.gpx -o map.png --map-source=1 --map-zoom=11 --map-factor 2.0 map
  • To render map & track:
$ ./gpx2video -g ACTIVITY.gpx -o map.png --map-source=1 --map-zoom=11 --map-factor 2.0 track

Map settings:

<map x="250" y="450" width="600" height="120" position="left" display="true">
	<source>1</source>
	<zoom>11</zoom>
	<factor>1.2</factor>
	<marker>60</marker>
	<border>5</border>
	<border-color>#000000b0</border-color>
	<background-color>#0000004c</background-color>
	<path-thick>3.0</path-thick>
	<path-border>1.4</path-border>
</map>		

zoom value sets the map details. factor value applies a zoom factor as render. marker marker size in pixels. path-thick path thick. path-border border size of path.

Map widget can be auto positionned as x, y and/or width, height aren't set. At last, you can define several map widgets.

Map widget accepts the same common attibutes and elements that the standard widget (at, duration...)

Tracks

You can also display only the track without the map background in using track widget.

Track settings:

<track x="250" y="450" width="600" height="120" position="left" display="true">
	<marker>60</marker>
	<border>5</border>
	<border-color>#000000b0</border-color>
	<background-color>#0000004c</background-color>
	<path-thick>3.0</path-thick>
	<path-border>1.4</path-border>
</widget>		

Track widget accepts the same common attibutes and elements that the standard widget (at, duration...)

path-thick path thick. path-border border size of path.

Extract tools

You can extract and parse GoPro MET stream:

$ ./gpx2video -m GH010434.MP4 -o data.txt -f 1 extract

Or, you can extract the GoPro MET stream as raw data:

$ ./gpx2video -m GH010434.MP4 -o data.bin -f 2 extract

As exiftool, you can extract GPX from GoPro MP4 video file too:

$ ./gpx2video -m GH010434.MP4 -o track.gpx -f 3 extract

In future release, gpx2video should be able to use more data from this stream as accelerometer and gyroscope.

Telemetry tools

You can convert, filter and interpolate GPX data.

$ ./gpx2video -g ACTIVITY.gpx -o data.csv --telemetry=0 compute

This tool permits to convert GPX to CSV and/or apply a filter on the GPS data (lat. and lon. values). Since gpx2video interpolates data each 1s in using different filters: linear, kalman or interpolation.

Note: The result isn't yet satisfactory

Video encoder settings (in progress)

You can set few encoder settings:

$ ./gpx2video -v -m GH020340.MP4 -g ACTIVITY.gpx -l layout.xml \
    --video-codec=h264 --video-preset=ultrafast --video-crf=31 -o output.mp4 video

To use target bitrate compression method:

$ ./gpx2video -v -m GH020340.MP4 -g ACTIVITY.gpx -l layout.xml \
    --video-codec=h264 --video-preset=ultrafast --video-crf=-1 -o output.mp4 video

video-options supported are:

  • codec:
    • h264 (default), h264_nvenc, h264_vaapi, h264_qsv
    • hevc, hevc_nvenc, hevc_qsv
  • hwdevice: dri node device (if not defined, print available dri nodes list)
  • preset: ultrafast, superfast, veryfast, faster, fast, medium (default), slow and veryslow (or specific values for hardware codec)
  • crf: constant rate factor values range from 0 to 51 (default: 27 for h264 & 31 for hevc)
  • bitrate: value (default: 16000000)
  • min-bitrate: value (default: 0)
  • max-bitrate: value (default: 32000000)

To use target bitrate, set crf to '-1' to disable constant compression method.

$ ./gpx2video -v -m GH020340.MP4 -g ACTIVITY.gpx -l layout.xml \
    --video-codec=hevc --video-preset=slow --video-crf=-1 \
    --video-bitrate=16000000 --video-max-bitrate=32000000 -o output.mp4 video

ToDo

  • Render gauge:
    • hflip: flip icon and label
    • gpx fix mode: disable gauge on nofix
    • svg: add icon svg support
  • Render maps (alpha, size, position, zoom...)
  • Render track (color, remaining, speed gradient...)
  • Gallery photo import
  • User interface integration
  • GPS interpolate data between two waypoints.
  • 360 videos support

Overlay software

Here, you can find other solutions working on Linux:

Credits

gpx2video is based on several open source libraries:

gpx2video's People

Contributors

progweb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gpx2video's Issues

Disable the map and gauges' labels

Hi, it's me again,
is it possible to remove the map from the video?
and how can I change the gauges' labels? If I change the layout file the labels remain the same.
Thanks.

Unable to compile on Ubuntu 23.04

Describe the bug
Running cmake .. generate an error

To Reproduce
When I try to complie running comand cmake ..
this is the result:

CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdC/CMakeCCompilerId.c
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdC/CMakeCCompilerId.c
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdC/CMakeCCompilerId.c
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdC/CMakeCCompilerId.c
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdC/CMakeCCompilerId.c
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdC/CMakeCCompilerId.c
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdC/CMakeCCompilerId.c
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdC/CMakeCCompilerId.c
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdC/CMakeCCompilerId.c
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdC/CMakeCCompilerId.c
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdC/CMakeCCompilerId.c
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdC/CMakeCCompilerId.c
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


-- The C compiler identification is unknown
CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCXXCompiler.cmake:120 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCXXCompiler.cmake:120 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCXXCompiler.cmake:120 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCXXCompiler.cmake:120 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCXXCompiler.cmake:120 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCXXCompiler.cmake:120 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/s
[CMakeOutput.log](https://github.com/progweb/gpx2video/files/11433604/CMakeOutput.log)
hare/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCXXCompiler.cmake:120 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)

[CMakeError.log](https://github.com/progweb/gpx2video/files/11433605/CMakeError.log)

CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCXXCompiler.cmake:120 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCXXCompiler.cmake:120 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCXXCompiler.cmake:120 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCXXCompiler.cmake:120 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)


CMake Error at /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:312 (file):
  file failed to open for writing (Permission denied):

    /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:323 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake:59 (__determine_compiler_id_test)
  /usr/share/cmake-3.25/Modules/CMakeDetermineCXXCompiler.cmake:120 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:1 (project)

-- The CXX compiler identification is unknown
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - failed
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc - broken
CMake Error at /usr/share/cmake-3.25/Modules/CMakeTestCCompiler.cmake:70 (message):
  The C compiler

    "/usr/bin/cc"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-HnQnUt
    
    Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_c5316/fast && /usr/bin/gmake  -f CMakeFiles/cmTC_c5316.dir/build.make CMakeFiles/cmTC_c5316.dir/build
    gmake[1]: ingresso nella directory «/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-HnQnUt»
    Building C object CMakeFiles/cmTC_c5316.dir/testCCompiler.c.o
    /usr/bin/cc    -o CMakeFiles/cmTC_c5316.dir/testCCompiler.c.o -c /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-HnQnUt/testCCompiler.c
    Linking C executable cmTC_c5316
    /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_c5316.dir/link.txt --verbose=1
    /usr/bin/cc CMakeFiles/cmTC_c5316.dir/testCCompiler.c.o -o cmTC_c5316 
    /usr/local/bin/ld: warning: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
    /usr/local/bin/ld: warning: /lib/x86_64-linux-gnu/libc.so.6: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
    /usr/local/bin/ld: /lib/x86_64-linux-gnu/libc.so.6: unknown type [0x13] section `.relr.dyn'
    /usr/local/bin/ld: saltato /lib/x86_64-linux-gnu/libc.so.6 incompatibile durante la ricerca di /lib/x86_64-linux-gnu/libc.so.6
    /usr/local/bin/ld: impossibile trovare /lib/x86_64-linux-gnu/libc.so.6
    /usr/local/bin/ld: /lib64/ld-linux-x86-64.so.2: unknown type [0x13] section `.relr.dyn'
    /usr/local/bin/ld: saltato /lib64/ld-linux-x86-64.so.2 incompatibile durante la ricerca di /lib64/ld-linux-x86-64.so.2
    /usr/local/bin/ld: impossibile trovare /lib64/ld-linux-x86-64.so.2
    collect2: error: ld returned 1 exit status
    gmake[1]: *** [CMakeFiles/cmTC_c5316.dir/build.make:99: cmTC_c5316] Errore 1
    gmake[1]: uscita dalla directory «/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-HnQnUt»
    gmake: *** [Makefile:127: cmTC_c5316/fast] Errore 2
    
  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:1 (project)


-- Configuring incomplete, errors occurred!

Desktop (please complete the following information):

  • OS: Xubuntu
  • Version 23.04

CMakeOutput.log content------------------------------

The system is: Linux - 6.2.0-20-generic - x86_64
Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded.
Compiler: /usr/bin/cc 
Build flags: 
Id flags: -c 

The output was:
0


Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o"

The C compiler identification is GNU, found in "/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdC/CMakeCCompilerId.o"

Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
Compiler: /usr/bin/c++ 
Build flags: 
Id flags: -c 

The output was:
0


Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o"

The CXX compiler identification is GNU, found in "/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdCXX/CMakeCXXCompilerId.o"

Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded.
Compiler: /usr/bin/cc 
Build flags: 
Id flags: -c 

The output was:
0


Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o"

The C compiler identification is GNU, found in "/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdC/CMakeCCompilerId.o"

Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
Compiler: /usr/bin/c++ 
Build flags: 
Id flags: -c 

The output was:
0


Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o"

The CXX compiler identification is GNU, found in "/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/3.25.1/CompilerIdCXX/CMakeCXXCompilerId.o"

CMakeError.log -------------------------------------:

Detecting C compiler ABI info failed to compile with the following output:
Change Dir: /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-db5iYU

Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_7f575/fast && /usr/bin/gmake  -f CMakeFiles/cmTC_7f575.dir/build.make CMakeFiles/cmTC_7f575.dir/build
gmake[1]: Entering directory '/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-db5iYU'
Building C object CMakeFiles/cmTC_7f575.dir/CMakeCCompilerABI.c.o
/usr/bin/cc   -v -o CMakeFiles/cmTC_7f575.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.25/Modules/CMakeCCompilerABI.c
Using built-in specs.
COLLECT_GCC=/usr/bin/cc
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 12.2.0-17ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-12-Pa930Z/gcc-12-12.2.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-12-Pa930Z/gcc-12-12.2.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.0 (Ubuntu 12.2.0-17ubuntu1) 
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_7f575.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_7f575.dir/'
 /usr/lib/gcc/x86_64-linux-gnu/12/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.25/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_7f575.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccfOJiVs.s
GNU C17 (Ubuntu 12.2.0-17ubuntu1) version 12.2.0 (x86_64-linux-gnu)
	compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.2.0, MPC version 1.3.1, isl version isl-0.25-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/12/include-fixed"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/12/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-linux-gnu/12/include
 /usr/local/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
GNU C17 (Ubuntu 12.2.0-17ubuntu1) version 12.2.0 (x86_64-linux-gnu)
	compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.2.0, MPC version 1.3.1, isl version isl-0.25-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: c6bbaacf224652295c1b40b8f3bb9554
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_7f575.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_7f575.dir/'
 as -v --64 -o CMakeFiles/cmTC_7f575.dir/CMakeCCompilerABI.c.o /tmp/ccfOJiVs.s
GNU assembler version 2.29 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.29
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_7f575.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_7f575.dir/CMakeCCompilerABI.c.'
Linking C executable cmTC_7f575
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_7f575.dir/link.txt --verbose=1
/usr/bin/cc  -v -rdynamic CMakeFiles/cmTC_7f575.dir/CMakeCCompilerABI.c.o -o cmTC_7f575 
Using built-in specs.
COLLECT_GCC=/usr/bin/cc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 12.2.0-17ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-12-Pa930Z/gcc-12-12.2.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-12-Pa930Z/gcc-12-12.2.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.0 (Ubuntu 12.2.0-17ubuntu1) 
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_7f575' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_7f575.'
 /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccq6LQra.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_7f575 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_7f575.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o
/usr/local/bin/ld: warning: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
/usr/local/bin/ld: warning: /lib/x86_64-linux-gnu/libc.so.6: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
/usr/local/bin/ld: /lib/x86_64-linux-gnu/libc.so.6: unknown type [0x13] section `.relr.dyn'
/usr/local/bin/ld: skipping incompatible /lib/x86_64-linux-gnu/libc.so.6 when searching for /lib/x86_64-linux-gnu/libc.so.6
/usr/local/bin/ld: cannot find /lib/x86_64-linux-gnu/libc.so.6
/usr/local/bin/ld: /lib64/ld-linux-x86-64.so.2: unknown type [0x13] section `.relr.dyn'
/usr/local/bin/ld: skipping incompatible /lib64/ld-linux-x86-64.so.2 when searching for /lib64/ld-linux-x86-64.so.2
/usr/local/bin/ld: cannot find /lib64/ld-linux-x86-64.so.2
collect2: error: ld returned 1 exit status
gmake[1]: *** [CMakeFiles/cmTC_7f575.dir/build.make:99: cmTC_7f575] Error 1
gmake[1]: Leaving directory '/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-db5iYU'
gmake: *** [Makefile:127: cmTC_7f575/fast] Error 2




Determining if the C compiler works failed with the following output:
Change Dir: /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-NJD3sn

Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_35681/fast && /usr/bin/gmake  -f CMakeFiles/cmTC_35681.dir/build.make CMakeFiles/cmTC_35681.dir/build
gmake[1]: ingresso nella directory «/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-NJD3sn»
Building C object CMakeFiles/cmTC_35681.dir/testCCompiler.c.o
/usr/bin/cc    -o CMakeFiles/cmTC_35681.dir/testCCompiler.c.o -c /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-NJD3sn/testCCompiler.c
Linking C executable cmTC_35681
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_35681.dir/link.txt --verbose=1
/usr/bin/cc -rdynamic CMakeFiles/cmTC_35681.dir/testCCompiler.c.o -o cmTC_35681 
/usr/local/bin/ld: warning: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
/usr/local/bin/ld: warning: /lib/x86_64-linux-gnu/libc.so.6: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
/usr/local/bin/ld: /lib/x86_64-linux-gnu/libc.so.6: unknown type [0x13] section `.relr.dyn'
/usr/local/bin/ld: saltato /lib/x86_64-linux-gnu/libc.so.6 incompatibile durante la ricerca di /lib/x86_64-linux-gnu/libc.so.6
/usr/local/bin/ld: impossibile trovare /lib/x86_64-linux-gnu/libc.so.6
/usr/local/bin/ld: /lib64/ld-linux-x86-64.so.2: unknown type [0x13] section `.relr.dyn'
/usr/local/bin/ld: saltato /lib64/ld-linux-x86-64.so.2 incompatibile durante la ricerca di /lib64/ld-linux-x86-64.so.2
/usr/local/bin/ld: impossibile trovare /lib64/ld-linux-x86-64.so.2
collect2: error: ld returned 1 exit status
gmake[1]: *** [CMakeFiles/cmTC_35681.dir/build.make:99: cmTC_35681] Errore 1
gmake[1]: uscita dalla directory «/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-NJD3sn»
gmake: *** [Makefile:127: cmTC_35681/fast] Errore 2



Detecting C compiler ABI info failed to compile with the following output:
Change Dir: /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-TqS9hl

Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_fa129/fast && /usr/bin/gmake  -f CMakeFiles/cmTC_fa129.dir/build.make CMakeFiles/cmTC_fa129.dir/build
gmake[1]: Entering directory '/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-TqS9hl'
Building C object CMakeFiles/cmTC_fa129.dir/CMakeCCompilerABI.c.o
/usr/bin/cc   -v -o CMakeFiles/cmTC_fa129.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.25/Modules/CMakeCCompilerABI.c
Using built-in specs.
COLLECT_GCC=/usr/bin/cc
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 12.2.0-17ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-12-Pa930Z/gcc-12-12.2.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-12-Pa930Z/gcc-12-12.2.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.0 (Ubuntu 12.2.0-17ubuntu1) 
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_fa129.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_fa129.dir/'
 /usr/lib/gcc/x86_64-linux-gnu/12/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.25/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_fa129.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccIWCbeX.s
GNU C17 (Ubuntu 12.2.0-17ubuntu1) version 12.2.0 (x86_64-linux-gnu)
	compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.2.0, MPC version 1.3.1, isl version isl-0.25-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/12/include-fixed"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/12/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-linux-gnu/12/include
 /usr/local/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
GNU C17 (Ubuntu 12.2.0-17ubuntu1) version 12.2.0 (x86_64-linux-gnu)
	compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.2.0, MPC version 1.3.1, isl version isl-0.25-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: c6bbaacf224652295c1b40b8f3bb9554
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_fa129.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_fa129.dir/'
 as -v --64 -o CMakeFiles/cmTC_fa129.dir/CMakeCCompilerABI.c.o /tmp/ccIWCbeX.s
GNU assembler version 2.29 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.29
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_fa129.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_fa129.dir/CMakeCCompilerABI.c.'
Linking C executable cmTC_fa129
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_fa129.dir/link.txt --verbose=1
/usr/bin/cc  -v -rdynamic CMakeFiles/cmTC_fa129.dir/CMakeCCompilerABI.c.o -o cmTC_fa129 
Using built-in specs.
COLLECT_GCC=/usr/bin/cc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 12.2.0-17ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-12-Pa930Z/gcc-12-12.2.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-12-Pa930Z/gcc-12-12.2.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.0 (Ubuntu 12.2.0-17ubuntu1) 
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_fa129' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_fa129.'
 /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccEwFBwR.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_fa129 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_fa129.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o
/usr/local/bin/ld: warning: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
/usr/local/bin/ld: warning: /lib/x86_64-linux-gnu/libc.so.6: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
/usr/local/bin/ld: /lib/x86_64-linux-gnu/libc.so.6: unknown type [0x13] section `.relr.dyn'
/usr/local/bin/ld: skipping incompatible /lib/x86_64-linux-gnu/libc.so.6 when searching for /lib/x86_64-linux-gnu/libc.so.6
/usr/local/bin/ld: cannot find /lib/x86_64-linux-gnu/libc.so.6
/usr/local/bin/ld: /lib64/ld-linux-x86-64.so.2: unknown type [0x13] section `.relr.dyn'
/usr/local/bin/ld: skipping incompatible /lib64/ld-linux-x86-64.so.2 when searching for /lib64/ld-linux-x86-64.so.2
/usr/local/bin/ld: cannot find /lib64/ld-linux-x86-64.so.2
collect2: error: ld returned 1 exit status
gmake[1]: *** [CMakeFiles/cmTC_fa129.dir/build.make:99: cmTC_fa129] Error 1
gmake[1]: Leaving directory '/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-TqS9hl'
gmake: *** [Makefile:127: cmTC_fa129/fast] Error 2




Determining if the C compiler works failed with the following output:
Change Dir: /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-MF6ZJM

Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_b4aa2/fast && /usr/bin/gmake  -f CMakeFiles/cmTC_b4aa2.dir/build.make CMakeFiles/cmTC_b4aa2.dir/build
gmake[1]: ingresso nella directory «/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-MF6ZJM»
Building C object CMakeFiles/cmTC_b4aa2.dir/testCCompiler.c.o
/usr/bin/cc    -o CMakeFiles/cmTC_b4aa2.dir/testCCompiler.c.o -c /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-MF6ZJM/testCCompiler.c
Linking C executable cmTC_b4aa2
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_b4aa2.dir/link.txt --verbose=1
/usr/bin/cc -rdynamic CMakeFiles/cmTC_b4aa2.dir/testCCompiler.c.o -o cmTC_b4aa2 
/usr/local/bin/ld: warning: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
/usr/local/bin/ld: warning: /lib/x86_64-linux-gnu/libc.so.6: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
/usr/local/bin/ld: /lib/x86_64-linux-gnu/libc.so.6: unknown type [0x13] section `.relr.dyn'
/usr/local/bin/ld: saltato /lib/x86_64-linux-gnu/libc.so.6 incompatibile durante la ricerca di /lib/x86_64-linux-gnu/libc.so.6
/usr/local/bin/ld: impossibile trovare /lib/x86_64-linux-gnu/libc.so.6
/usr/local/bin/ld: /lib64/ld-linux-x86-64.so.2: unknown type [0x13] section `.relr.dyn'
/usr/local/bin/ld: saltato /lib64/ld-linux-x86-64.so.2 incompatibile durante la ricerca di /lib64/ld-linux-x86-64.so.2
/usr/local/bin/ld: impossibile trovare /lib64/ld-linux-x86-64.so.2
collect2: error: ld returned 1 exit status
gmake[1]: *** [CMakeFiles/cmTC_b4aa2.dir/build.make:99: cmTC_b4aa2] Errore 1
gmake[1]: uscita dalla directory «/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-MF6ZJM»
gmake: *** [Makefile:127: cmTC_b4aa2/fast] Errore 2



Checking whether the C compiler is IAR using "" did not match "IAR .+ Compiler":
cc: fatal error: no input files
compilation terminated.
Checking whether the C compiler is IAR using "" did not match "IAR .+ Compiler":
cc: fatal error: no input files
compilation terminated.
Checking whether the CXX compiler is IAR using "" did not match "IAR .+ Compiler":
c++: fatal error: no input files
compilation terminated.
Checking whether the CXX compiler is IAR using "" did not match "IAR .+ Compiler":
c++: fatal error: no input files
compilation terminated.
Detecting C compiler ABI info failed to compile with the following output:
Change Dir: /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-y19vjT

Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_25e34/fast && /usr/bin/gmake  -f CMakeFiles/cmTC_25e34.dir/build.make CMakeFiles/cmTC_25e34.dir/build
gmake[1]: Entering directory '/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-y19vjT'
Building C object CMakeFiles/cmTC_25e34.dir/CMakeCCompilerABI.c.o
/usr/bin/cc    -o CMakeFiles/cmTC_25e34.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.25/Modules/CMakeCCompilerABI.c
Linking C executable cmTC_25e34
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_25e34.dir/link.txt --verbose=1
/usr/bin/cc CMakeFiles/cmTC_25e34.dir/CMakeCCompilerABI.c.o -o cmTC_25e34 
/usr/local/bin/ld: warning: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
/usr/local/bin/ld: warning: /lib/x86_64-linux-gnu/libc.so.6: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
/usr/local/bin/ld: /lib/x86_64-linux-gnu/libc.so.6: unknown type [0x13] section `.relr.dyn'
/usr/local/bin/ld: skipping incompatible /lib/x86_64-linux-gnu/libc.so.6 when searching for /lib/x86_64-linux-gnu/libc.so.6
/usr/local/bin/ld: cannot find /lib/x86_64-linux-gnu/libc.so.6
/usr/local/bin/ld: /lib64/ld-linux-x86-64.so.2: unknown type [0x13] section `.relr.dyn'
/usr/local/bin/ld: skipping incompatible /lib64/ld-linux-x86-64.so.2 when searching for /lib64/ld-linux-x86-64.so.2
/usr/local/bin/ld: cannot find /lib64/ld-linux-x86-64.so.2
collect2: error: ld returned 1 exit status
gmake[1]: *** [CMakeFiles/cmTC_25e34.dir/build.make:99: cmTC_25e34] Error 1
gmake[1]: Leaving directory '/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-y19vjT'
gmake: *** [Makefile:127: cmTC_25e34/fast] Error 2




Determining if the C compiler works failed with the following output:
Change Dir: /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-m16a0a

Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_d1647/fast && /usr/bin/gmake  -f CMakeFiles/cmTC_d1647.dir/build.make CMakeFiles/cmTC_d1647.dir/build
gmake[1]: ingresso nella directory «/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-m16a0a»
Building C object CMakeFiles/cmTC_d1647.dir/testCCompiler.c.o
/usr/bin/cc    -o CMakeFiles/cmTC_d1647.dir/testCCompiler.c.o -c /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-m16a0a/testCCompiler.c
Linking C executable cmTC_d1647
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_d1647.dir/link.txt --verbose=1
/usr/bin/cc CMakeFiles/cmTC_d1647.dir/testCCompiler.c.o -o cmTC_d1647 
/usr/local/bin/ld: warning: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
/usr/local/bin/ld: warning: /lib/x86_64-linux-gnu/libc.so.6: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
/usr/local/bin/ld: /lib/x86_64-linux-gnu/libc.so.6: unknown type [0x13] section `.relr.dyn'
/usr/local/bin/ld: saltato /lib/x86_64-linux-gnu/libc.so.6 incompatibile durante la ricerca di /lib/x86_64-linux-gnu/libc.so.6
/usr/local/bin/ld: impossibile trovare /lib/x86_64-linux-gnu/libc.so.6
/usr/local/bin/ld: /lib64/ld-linux-x86-64.so.2: unknown type [0x13] section `.relr.dyn'
/usr/local/bin/ld: saltato /lib64/ld-linux-x86-64.so.2 incompatibile durante la ricerca di /lib64/ld-linux-x86-64.so.2
/usr/local/bin/ld: impossibile trovare /lib64/ld-linux-x86-64.so.2
collect2: error: ld returned 1 exit status
gmake[1]: *** [CMakeFiles/cmTC_d1647.dir/build.make:99: cmTC_d1647] Errore 1
gmake[1]: uscita dalla directory «/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-m16a0a»
gmake: *** [Makefile:127: cmTC_d1647/fast] Errore 2



Checking whether the C compiler is IAR using "" did not match "IAR .+ Compiler":
cc: fatal error: no input files
compilation terminated.
Checking whether the C compiler is IAR using "" did not match "IAR .+ Compiler":
cc: fatal error: no input files
compilation terminated.
Checking whether the CXX compiler is IAR using "" did not match "IAR .+ Compiler":
c++: fatal error: no input files
compilation terminated.
Checking whether the CXX compiler is IAR using "" did not match "IAR .+ Compiler":
c++: fatal error: no input files
compilation terminated.
Detecting C compiler ABI info failed to compile with the following output:
Change Dir: /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-AiXeo2

Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_983d2/fast && /usr/bin/gmake  -f CMakeFiles/cmTC_983d2.dir/build.make CMakeFiles/cmTC_983d2.dir/build
gmake[1]: Entering directory '/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-AiXeo2'
Building C object CMakeFiles/cmTC_983d2.dir/CMakeCCompilerABI.c.o
/usr/bin/cc    -o CMakeFiles/cmTC_983d2.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.25/Modules/CMakeCCompilerABI.c
Linking C executable cmTC_983d2
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_983d2.dir/link.txt --verbose=1
/usr/bin/cc CMakeFiles/cmTC_983d2.dir/CMakeCCompilerABI.c.o -o cmTC_983d2 
/usr/local/bin/ld: warning: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
/usr/local/bin/ld: warning: /lib/x86_64-linux-gnu/libc.so.6: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
/usr/local/bin/ld: /lib/x86_64-linux-gnu/libc.so.6: unknown type [0x13] section `.relr.dyn'
/usr/local/bin/ld: skipping incompatible /lib/x86_64-linux-gnu/libc.so.6 when searching for /lib/x86_64-linux-gnu/libc.so.6
/usr/local/bin/ld: cannot find /lib/x86_64-linux-gnu/libc.so.6
/usr/local/bin/ld: /lib64/ld-linux-x86-64.so.2: unknown type [0x13] section `.relr.dyn'
/usr/local/bin/ld: skipping incompatible /lib64/ld-linux-x86-64.so.2 when searching for /lib64/ld-linux-x86-64.so.2
/usr/local/bin/ld: cannot find /lib64/ld-linux-x86-64.so.2
collect2: error: ld returned 1 exit status
gmake[1]: *** [CMakeFiles/cmTC_983d2.dir/build.make:99: cmTC_983d2] Error 1
gmake[1]: Leaving directory '/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-AiXeo2'
gmake: *** [Makefile:127: cmTC_983d2/fast] Error 2




Determining if the C compiler works failed with the following output:
Change Dir: /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-HnQnUt

Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_c5316/fast && /usr/bin/gmake  -f CMakeFiles/cmTC_c5316.dir/build.make CMakeFiles/cmTC_c5316.dir/build
gmake[1]: ingresso nella directory «/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-HnQnUt»
Building C object CMakeFiles/cmTC_c5316.dir/testCCompiler.c.o
/usr/bin/cc    -o CMakeFiles/cmTC_c5316.dir/testCCompiler.c.o -c /media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-HnQnUt/testCCompiler.c
Linking C executable cmTC_c5316
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_c5316.dir/link.txt --verbose=1
/usr/bin/cc CMakeFiles/cmTC_c5316.dir/testCCompiler.c.o -o cmTC_c5316 
/usr/local/bin/ld: warning: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
/usr/local/bin/ld: warning: /lib/x86_64-linux-gnu/libc.so.6: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0008002
/usr/local/bin/ld: /lib/x86_64-linux-gnu/libc.so.6: unknown type [0x13] section `.relr.dyn'
/usr/local/bin/ld: saltato /lib/x86_64-linux-gnu/libc.so.6 incompatibile durante la ricerca di /lib/x86_64-linux-gnu/libc.so.6
/usr/local/bin/ld: impossibile trovare /lib/x86_64-linux-gnu/libc.so.6
/usr/local/bin/ld: /lib64/ld-linux-x86-64.so.2: unknown type [0x13] section `.relr.dyn'
/usr/local/bin/ld: saltato /lib64/ld-linux-x86-64.so.2 incompatibile durante la ricerca di /lib64/ld-linux-x86-64.so.2
/usr/local/bin/ld: impossibile trovare /lib64/ld-linux-x86-64.so.2
collect2: error: ld returned 1 exit status
gmake[1]: *** [CMakeFiles/cmTC_c5316.dir/build.make:99: cmTC_c5316] Errore 1
gmake[1]: uscita dalla directory «/media/DATI_G_Ext4/Gopro/gpx2video/gpx2video/build/CMakeFiles/CMakeScratch/TryCompile-HnQnUt»
gmake: *** [Makefile:127: cmTC_c5316/fast] Errore 2

GPS coordinate filtering

When i use gpx2video , i find a scene that a part of gps coordinate isn't inaccurate。
Can you filter it out according to certain rules?

[BUG] GPX extract and retrieve fails

Describe the bug
I tried to create a video using a source created with a GoPro 11. First I attempted to extract the gpx file and then use that gpx in building a video with overlays. The first command I ran was:

./gpx2video -v -m /mnt/d/GoPro/7thToDowntown.mp4 -o /mnt/d/GoPro/output.gpx -f 2 extract
This seemed to be successful with this output:

gpx2video v0.0.0
creation_time = 2023-02-25T16:45:10.000000Z
Failed to find decoder for stream #2
Failed to find decoder for stream #3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/mnt/d/GoPro/7thToDowntown.mp4':
  Metadata:
    major_brand     : mp41
    minor_version   : 538120216
    compatible_brands: mp41
    creation_time   : 2023-02-25T16:45:10.000000Z
    location        : +39.1997-086.5327/
    location-eng    : +39.1997-086.5327/
    firmware        : H22.01.02.01.00
  Duration: 00:03:03.13, start: 0.000000, bitrate: 45064 kb/s
  Stream #0:0(eng): Video: hevc (Main) (hvc1 / 0x31637668), yuvj420p(pc, bt709), 2704x1520 [SAR 1520:1521 DAR 16:9], 44789 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 59.94 tbc (default)
    Metadata:
      creation_time   : 2023-02-25T16:45:10.000000Z
      handler_name    : GoPro H.265
      vendor_id       : [0][0][0][0]
      encoder         : GoPro H.265 encoder
      timecode        : 11:55:08:05
  Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s (default)
    Metadata:
      creation_time   : 2023-02-25T16:45:10.000000Z
      handler_name    : GoPro AAC
      vendor_id       : [0][0][0][0]
      timecode        : 11:55:08:05
  Stream #0:2(eng): Data: none (tmcd / 0x64636D74) (default)
    Metadata:
      creation_time   : 2023-02-25T16:45:10.000000Z
      handler_name    : GoPro TCD
      timecode        : 11:55:08:05
  Stream #0:3(eng): Data: bin_data (gpmd / 0x646D7067), 63 kb/s (default)
    Metadata:
      creation_time   : 2023-02-25T16:45:10.000000Z
      handler_name    : GoPro MET
Extract GPMD data...
PACKET: 0 - PTS: 0 - TIMESTAMP: 0 ms - TIME: 2023-02-25 21:45:10
PACKET: 1 - PTS: 1001 - TIMESTAMP: 1001 ms - TIME: 2023-02-25 21:45:11
PACKET: 2 - PTS: 2002 - TIMESTAMP: 2002 ms - TIME: 2023-02-25 21:45:12
PACKET: 3 - PTS: 3003 - TIMESTAMP: 3003 ms - TIME: 2023-02-25 21:45:13
...
PACKET: 182 - PTS: 182182 - TIMESTAMP: 182182 ms - TIME: 2023-02-25 21:48:12
GPMD data extracted with success

I then attempted to create a video with the command:

./gpx2video -v -m /mnt/d/GoPro/7thToDowntown.mp4 -g /mnt/d/GoPro/output.gpx -l ../samples/layout-1920x1080.xml -o /mnt/d/GoPro/output.mp4 video
A video was created, but it had no overlays at all - it appeared to be identical to the source video. I received the following output:

gpx2video v0.0.0
creation_time = 2023-02-25T16:45:10.000000Z
Failed to find decoder for stream #2
Failed to find decoder for stream #3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/mnt/d/GoPro/7thToDowntown.mp4':
  Metadata:
    major_brand     : mp41
    minor_version   : 538120216
    compatible_brands: mp41
    creation_time   : 2023-02-25T16:45:10.000000Z
    location        : +39.1997-086.5327/
    location-eng    : +39.1997-086.5327/
    firmware        : H22.01.02.01.00
  Duration: 00:03:03.13, start: 0.000000, bitrate: 45064 kb/s
  Stream #0:0(eng): Video: hevc (Main) (hvc1 / 0x31637668), yuvj420p(pc, bt709), 2704x1520 [SAR 1520:1521 DAR 16:9], 44789 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 59.94 tbc (default)
    Metadata:
      creation_time   : 2023-02-25T16:45:10.000000Z
      handler_name    : GoPro H.265
      vendor_id       : [0][0][0][0]
      encoder         : GoPro H.265 encoder
      timecode        : 11:55:08:05
  Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s (default)
    Metadata:
      creation_time   : 2023-02-25T16:45:10.000000Z
      handler_name    : GoPro AAC
      vendor_id       : [0][0][0][0]
      timecode        : 11:55:08:05
  Stream #0:2(eng): Data: none (tmcd / 0x64636D74) (default)
    Metadata:
      creation_time   : 2023-02-25T16:45:10.000000Z
      handler_name    : GoPro TCD
      timecode        : 11:55:08:05
  Stream #0:3(eng): Data: bin_data (gpmd / 0x646D7067), 63 kb/s (default)
    Metadata:
      creation_time   : 2023-02-25T16:45:10.000000Z
      handler_name    : GoPro MET
ERROR: Parsing of '/mnt/d/GoPro/output.gpx' failed due to not well-formed (invalid token) on line 1 and column 4
[swscaler @ 0x560020b36240] deprecated pixel format used, make sure you did set range correctly
[libx264 @ 0x560020a9da00] using SAR=1520/1521
[libx264 @ 0x560020a9da00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x560020a9da00] profile High, level 5.1, 4:2:0, 8-bit
[libx264 @ 0x560020a9da00] 264 - core 163 r3060 5db6aa6 - H.264/MPEG-4 AVC codec - Copyleft 2003-2021 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=18 lookahead_threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=cbr mbtree=1 bitrate=32000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=32000 vbv_bufsize=2000 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
[swscaler @ 0x5600210d0800] deprecated pixel format used, make sure you did set range correctly
Output #0, mp4, to '/mnt/d/GoPro/output.mp4':
  Stream #0:0: Video: h264, yuvj420p(pc), 2704x1520 [SAR 1520:1521 DAR 16:9], q=2-31, 32000 kb/s, 59.94 tbn
  Stream #0:1: Audio: aac (LC), 48000 Hz, stereo, fltp, 128 kb/s
Parsing '../samples/layout-1920x1080.xml' layout file
Load widget 'position'
Initialize position widget
Load widget 'grade'
Initialize grade widget
Load widget 'speed'
Initialize speed widget
Load widget 'elevation'
Initialize elevation widget
Load widget 'time'
Initialize time widget
Load widget 'date'
Initialize date widget
Load widget 'duration'
Initialize duration widget
Load widget 'cadence'
Initialize cadence widget
Load widget 'heartrate'
Initialize heartrate widget
Load widget 'distance'
Initialize distance widget
Load widget 'avgspeed'
Initialize avgspeed widget
Load widget 'maxspeed'
Initialize maxspeed widget
Load widget 'temperature'
Initialize temperature widget
Skip widget 'gpx'
ERROR: Parsing of '/mnt/d/GoPro/output.gpx' failed due to not well-formed (invalid token) on line 1 and column 4
WARNING: Can't read GPS data, skip map widget
ERROR: Parsing of '/mnt/d/GoPro/output.gpx' failed due to not well-formed (invalid token) on line 1 and column 4
WARNING: Can't read GPS data, skip map widget
Skip map widget
Cache initialization...
Time synchronization...
PACKET: 0 - PTS: 0 - TIMESTAMP: 0 ms - TIME: 2023-02-25 21:45:10 - GPS FIX: 3 - GPS TIME: 2023-02-25 16:45:34.100 - OFFSET: -17976
Video stream synchronized with success (offset: -17976 ms)
Rendering...
FRAME: 0 - PTS: 0 - TIMESTAMP: 0 ms - TIME: 2023-02-25 11:45:34
...
FRAME: 10974 - PTS: 10984974 - TIMESTAMP: 183082 ms - TIME: 2023-02-25 11:48:37
FRAME: 10975 - PTS: 10985975 - TIMESTAMP: 183099 ms - TIME: 2023-02-25 11:48:37
FRAME: 10976 - PTS: 10986976 - TIMESTAMP: 183116 ms - TIME: 2023-02-25 11:48:37
10977 frames 2704x1520 to 2704x1520 proceed in 00:15:38

[FEATURE] Add support for GoPro timelapse videos

It would be nice to have support for timelapse videos. This might be a bit tricky. If I am not wrong, GoPro is using variable video speed while taking timelapse in default setting (speed: auto), so distribution of GPX waypoints might not be uniform thoughout the video. But, it should be possible to pair every GPS fix timespamp from the video to the closest waypoint timespamp from GPX file and then distribute rest of GPX waypoints to the video frames between GPS marks in the video.

I see the comment in README stating some GPX interpolation is maybe planned, this seems a bit different direction, but might be related to that.

Thank you!

Failed to parse GPX

Hi, I'm using the last version of your program but when a GoPro video is imported the program can't decode some of the data streams, therefore the final video with gauges is not created.
I used the command I found in the readme to render the video stream with telemetry data.
./gpx2video -m myvideo.MP4 -g myactivity.gpx -l layout.xml -o output.mp4 --map-source=1 --map-zoom=11 --map-factor 2.0

gpx2video v0.0.0
creation_time = 2022-01-01T15:13:30.000000Z
Failed to find decoder for stream #2
Failed to find decoder for stream #3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'GX010017.MP4':
  Metadata:
    major_brand     : mp41
    minor_version   : 538120216
    compatible_brands: mp41
    creation_time   : 2022-01-01T15:13:30.000000Z
    firmware        : H21.01.01.20.00
  Duration: 00:00:33.87, start: 0.000000, bitrate: 45393 kb/s
  Stream #0:0(eng): Video: hevc (Main) (hvc1 / 0x31637668), yuvj420p(pc, bt709), 3840x2160 [SAR 1:1 DAR 16:9], 45128 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 29.97 tbc (default)
    Metadata:
      rotate          : 180
      creation_time   : 2022-01-01T15:13:30.000000Z
      handler_name    : GoPro H.265
      encoder         : GoPro H.265 encoder
      timecode        : 15:12:35:21
    Side data:
      displaymatrix: rotation of -180.00 degrees
  Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s (default)
    Metadata:
      creation_time   : 2022-01-01T15:13:30.000000Z
      handler_name    : GoPro AAC
      vendor_id       : [0][0][0][0]
      timecode        : 15:12:35:21
  Stream #0:2(eng): Data: none (tmcd / 0x64636D74) (default)
    Metadata:
      creation_time   : 2022-01-01T15:13:30.000000Z
      handler_name    : GoPro TCD
      timecode        : 15:12:35:21
  Stream #0:3(eng): Data: bin_data (gpmd / 0x646D7067), 54 kb/s (default)
    Metadata:
      creation_time   : 2022-01-01T15:13:30.000000Z
      handler_name    : GoPro MET

This seems to occur with every video I put.
I'm on Manjaro.

Thank you.

[BUG] GPX data is offset by exactly the length of the video

Describe the bug
When examining the GPX data is seems like the overlay and map data is off by exactly the length of the video. This may be an artifact of how I processed my video and the metadata to this point, but I tried to map the metadata to the final video.

I'm able to get around this by using ffprobe and setting that as the default offset:

  LENGTH="$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 $f)"
  OFFSET=$(echo "-1000*$LENGTH" | bc)

But if its an internal issue it seems like an easy fix

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

[BUG] Audio cuts out after about halfway through the video

Describe the bug
For pretty much all of my videos, the audio stream is correct for the first half of the video (not exactly halfway) but after that it goes blank

To Reproduce
Steps to reproduce the behavior: (I dont think there are any special steps to reproduce this but Im using 1080x1920 resolution)

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
Id expect the audio stream to continue to match the video

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

Additional context
Add any other context about the problem here.

Won't build extractor on Arch Linux

When installing as usual an error about "std::setprecision" comes up. After doing the fix 'make' recommends it errors at 97% because of "av_mallocz_array". I should have all dependencies installed, at least 'cmake ..' confirmed that everything was there. Although I had some trouble installing certain dependencies due to them not or barely being available on the AUR.
I also tried building on my laptop running fedora, there 'cmake ..' errors due to not finding libevent (even though it is installed using dnf).

Steps to reproduce the behaviour:

  1. Install the program as described in the README
  2. Wait for 'make' to reach about 70%
  3. Error
  4. #include <iomanip> in extractor.cpp
  5. Wait for 'make' to reach 97%
  6. Error

Expected behaviour:
The program builds as usual lol

System Specifications:

  • OS: Arch Linux x86_64
  • Kernel: 6.4.12-arch1-1
  • DE: Plasma 5.27.7
  • WM: KWin
  • Shell: bash 5.1.16

Error before "fix"
[ 70%] Building CXX object CMakeFiles/gpx2video.dir/src/frame.cpp.o [ 71%] Building CXX object CMakeFiles/gpx2video.dir/src/extractor.cpp.o gpx2video/src/extractor.cpp: In member function ‘virtual bool Extractor::run()’: gpx2video/src/extractor.cpp:215:46: error: ‘setprecision’ is not a member of ‘std’ 215 | out_ << std::setprecision(9); | ^~~~~~~~~~~~ gpx2video/src/extractor.cpp:14:1: note: ‘std::setprecision’ is defined in header ‘<iomanip>’; did you forget to ‘#include <iomanip>’? 13 | #include "extractor.h" +++ |+#include <iomanip> 14 | make[2]: *** [CMakeFiles/gpx2video.dir/build.make:230: CMakeFiles/gpx2video.dir/src/extractor.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:139: CMakeFiles/gpx2video.dir/all] Error 2 make: *** [Makefile:136: all] Error 2

Error after "fix"
[ 96%] Building C object tests/CMakeFiles/extract-gpx.dir/test-extract.c.o gpx2video/tests/test-extract.c: In function ‘open_input_file’: gpx2video/tests/test-extract.c:77:22: warning: implicit declaration of function ‘av_mallocz_array’; did you mean ‘av_malloc_array’? [-Wimplicit-function-declaration] 77 | stream_ctx = av_mallocz_array(ifmt_ctx->nb_streams, sizeof(*stream_ctx)); | ^~~~~~~~~~~~~~~~ | av_malloc_array gpx2video/tests/test-extract.c:77:20: warning: assignment to ‘StreamContext *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion] 77 | stream_ctx = av_mallocz_array(ifmt_ctx->nb_streams, sizeof(*stream_ctx)); | ^ [ 97%] Linking C executable extract-gpx /usr/bin/ld: CMakeFiles/extract-gpx.dir/test-extract.c.o: in function 'open_input_file': gpx2video/tests/test-extract.c:77:(.text.startup+0xe5): undefined reference to 'av_mallocz_array' collect2: error: ld returned 1 exit status make[2]: *** [tests/CMakeFiles/extract-gpx.dir/build.make:97: tests/extract-gpx] Error 1 make[1]: *** [CMakeFiles/Makefile2:217: tests/CMakeFiles/extract-gpx.dir/all] Error 2 make: *** [Makefile:136: all] Error 2

[BUILD] macOS Big Sur build error has private copy constructor

Describe the build issue

I am trying to build a program on mac os, but I get the error: base class 'std::__1::ios_base' has private copy constructor

To Reproduce

Build the program as described in the README:

git clone https://github.com/progweb/gpx2video.git
mkdir gpx2video/build
cd gpx2video/build
cmake ..
make

Wait for 'make' to reach about 66%
Error
base class 'std::__1::ios_base' has private copy constructor

Build outputs

cmake output:

cmake ..
-- The C compiler identification is AppleClang 11.0.0.11000033
-- The CXX compiler identification is AppleClang 11.0.0.11000033
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.29.2") 
-- Checking for module 'libevent>=2.0.0'
--   Found libevent, version 2.1.12-stable
-- Checking for module 'libssl>=1.0.0'
--   Found libssl, version 3.1.2
-- Checking for module 'libcurl>=7.38.0'
--   Found libcurl, version 7.64.1
-- Checking for module 'libavutil>=3.0.0'
--   Found libavutil, version 58.2.100
-- Checking for module 'libavformat>=3.0.0'
--   Found libavformat, version 60.3.100
-- Checking for module 'libavcodec>=3.0.0'
--   Found libavcodec, version 60.3.100
-- Checking for module 'libavfilter>=3.0.0'
--   Found libavfilter, version 9.3.100
-- Checking for module 'libswresample>=2.0.0'
--   Found libswresample, version 4.10.100
-- Checking for module 'libswscale>=3.0.0'
--   Found libswscale, version 7.1.100
-- Checking for module 'geographiclib'
--   Found geographiclib, version 2.3
-- Checking for module 'freetype2'
--   Found freetype2, version 26.1.20
-- Checking for module 'cairo'
--   Found cairo, version 1.16.0
-- Found OpenImageIO: /usr/local/lib/libOpenImageIO.dylib;/usr/local/lib/libOpenImageIO_Util.dylib (found suitable version "2.4.15", minimum required is "2.1.12") 
-- Found EXPAT: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/lib/libexpat.tbd (found version "2.2.6") 
-- Configuring done
-- Generating done

make output

make
Scanning dependencies of target layoutlib
[  1%] Building CXX object layoutlib/CMakeFiles/layoutlib.dir/Node.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[  2%] Building CXX object layoutlib/CMakeFiles/layoutlib.dir/Boolean.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[  4%] Building CXX object layoutlib/CMakeFiles/layoutlib.dir/Decimal.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[  5%] Building CXX object layoutlib/CMakeFiles/layoutlib.dir/String.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[  6%] Building CXX object layoutlib/CMakeFiles/layoutlib.dir/Unsigned.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[  8%] Building CXX object layoutlib/CMakeFiles/layoutlib.dir/Map.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[  9%] Building CXX object layoutlib/CMakeFiles/layoutlib.dir/Track.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 10%] Building CXX object layoutlib/CMakeFiles/layoutlib.dir/Widget.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 12%] Building CXX object layoutlib/CMakeFiles/layoutlib.dir/Layout.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 13%] Building CXX object layoutlib/CMakeFiles/layoutlib.dir/Parser.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 14%] Building CXX object layoutlib/CMakeFiles/layoutlib.dir/Report.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 16%] Building CXX object layoutlib/CMakeFiles/layoutlib.dir/ReportCerr.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 17%] Linking CXX static library liblayoutlib.a
[ 17%] Built target layoutlib
Scanning dependencies of target gpxlib
[ 18%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/Node.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 20%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/Decimal.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 21%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/DateTime.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 22%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/String.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 24%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/Unsigned.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 25%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/DGPSStation.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 27%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/Fix.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 28%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/Degrees.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 29%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/Longitude.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 31%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/Latitude.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 32%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/Bounds.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 33%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/PTSeg.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 35%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/PT.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 36%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/EMail.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 37%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/Link.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 39%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/Person.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 40%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/URI.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 41%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/Copyright.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 43%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/TRKSeg.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 44%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/Extensions.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 45%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/TRK.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 47%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/WPT.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 48%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/RTE.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 50%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/Metadata.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 51%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/GPX.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 52%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/Parser.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 54%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/Writer.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 55%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/Report.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 56%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/ReportCerr.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 58%] Building CXX object gpxlib/CMakeFiles/gpxlib.dir/Algorithm.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 59%] Linking CXX static library libgpxlib.a
[ 59%] Built target gpxlib
Scanning dependencies of target gpx2video
[ 60%] Building C object CMakeFiles/gpx2video.dir/src/log.c.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 62%] Building C object CMakeFiles/gpx2video.dir/src/evcurl.c.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
/Users/user/gopro_tmp/gpx2video/src/evcurl.c:61:3: warning: 'SSL_CTX_set_ssl_version' is deprecated
      [-Wdeprecated-declarations]
                SSL_CTX_set_ssl_version(context, SSLv23_client_method());
                ^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/ssl.h:1995:1: note: 'SSL_CTX_set_ssl_version' has
      been explicitly marked deprecated here
OSSL_DEPRECATEDIN_3_0
^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/macros.h:193:49: note: expanded from macro
      'OSSL_DEPRECATEDIN_3_0'
#   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
                                                ^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/macros.h:62:52: note: expanded from macro
      'OSSL_DEPRECATED'
#     define OSSL_DEPRECATED(since) __attribute__((deprecated))
                                                   ^
/Users/user/gopro_tmp/gpx2video/src/evcurl.c:65:3: warning: 'SSL_CTX_set_ssl_version' is deprecated
      [-Wdeprecated-declarations]
                SSL_CTX_set_ssl_version(context, TLSv1_client_method());
                ^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/ssl.h:1995:1: note: 'SSL_CTX_set_ssl_version' has
      been explicitly marked deprecated here
OSSL_DEPRECATEDIN_3_0
^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/macros.h:193:49: note: expanded from macro
      'OSSL_DEPRECATEDIN_3_0'
#   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
                                                ^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/macros.h:62:52: note: expanded from macro
      'OSSL_DEPRECATED'
#     define OSSL_DEPRECATED(since) __attribute__((deprecated))
                                                   ^
/Users/user/gopro_tmp/gpx2video/src/evcurl.c:65:36: warning: 'TLSv1_client_method' is deprecated
      [-Wdeprecated-declarations]
                SSL_CTX_set_ssl_version(context, TLSv1_client_method());
                                                 ^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/ssl.h:2020:1: note: 'TLSv1_client_method' has been
      explicitly marked deprecated here
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_client_method(void);
^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/macros.h:215:49: note: expanded from macro
      'OSSL_DEPRECATEDIN_1_1_0'
#   define OSSL_DEPRECATEDIN_1_1_0              OSSL_DEPRECATED(1.1.0)
                                                ^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/macros.h:62:52: note: expanded from macro
      'OSSL_DEPRECATED'
#     define OSSL_DEPRECATED(since) __attribute__((deprecated))
                                                   ^
/Users/user/gopro_tmp/gpx2video/src/evcurl.c:69:3: warning: 'SSL_CTX_set_ssl_version' is deprecated
      [-Wdeprecated-declarations]
                SSL_CTX_set_ssl_version(context, TLSv1_1_client_method());
                ^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/ssl.h:1995:1: note: 'SSL_CTX_set_ssl_version' has
      been explicitly marked deprecated here
OSSL_DEPRECATEDIN_3_0
^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/macros.h:193:49: note: expanded from macro
      'OSSL_DEPRECATEDIN_3_0'
#   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
                                                ^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/macros.h:62:52: note: expanded from macro
      'OSSL_DEPRECATED'
#     define OSSL_DEPRECATED(since) __attribute__((deprecated))
                                                   ^
/Users/user/gopro_tmp/gpx2video/src/evcurl.c:69:36: warning: 'TLSv1_1_client_method' is deprecated
      [-Wdeprecated-declarations]
                SSL_CTX_set_ssl_version(context, TLSv1_1_client_method());
                                                 ^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/ssl.h:2028:1: note: 'TLSv1_1_client_method' has
      been explicitly marked deprecated here
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_client_method(void);
^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/macros.h:215:49: note: expanded from macro
      'OSSL_DEPRECATEDIN_1_1_0'
#   define OSSL_DEPRECATEDIN_1_1_0              OSSL_DEPRECATED(1.1.0)
                                                ^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/macros.h:62:52: note: expanded from macro
      'OSSL_DEPRECATED'
#     define OSSL_DEPRECATED(since) __attribute__((deprecated))
                                                   ^
/Users/user/gopro_tmp/gpx2video/src/evcurl.c:73:3: warning: 'SSL_CTX_set_ssl_version' is deprecated
      [-Wdeprecated-declarations]
                SSL_CTX_set_ssl_version(context, TLSv1_2_client_method());
                ^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/ssl.h:1995:1: note: 'SSL_CTX_set_ssl_version' has
      been explicitly marked deprecated here
OSSL_DEPRECATEDIN_3_0
^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/macros.h:193:49: note: expanded from macro
      'OSSL_DEPRECATEDIN_3_0'
#   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
                                                ^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/macros.h:62:52: note: expanded from macro
      'OSSL_DEPRECATED'
#     define OSSL_DEPRECATED(since) __attribute__((deprecated))
                                                   ^
/Users/user/gopro_tmp/gpx2video/src/evcurl.c:73:36: warning: 'TLSv1_2_client_method' is deprecated
      [-Wdeprecated-declarations]
                SSL_CTX_set_ssl_version(context, TLSv1_2_client_method());
                                                 ^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/ssl.h:2036:1: note: 'TLSv1_2_client_method' has
      been explicitly marked deprecated here
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_client_method(void);
^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/macros.h:215:49: note: expanded from macro
      'OSSL_DEPRECATEDIN_1_1_0'
#   define OSSL_DEPRECATEDIN_1_1_0              OSSL_DEPRECATED(1.1.0)
                                                ^
/usr/local/Cellar/openssl@3/3.1.2/include/openssl/macros.h:62:52: note: expanded from macro
      'OSSL_DEPRECATED'
#     define OSSL_DEPRECATED(since) __attribute__((deprecated))
                                                   ^
7 warnings generated.
[ 63%] Building CXX object CMakeFiles/gpx2video.dir/src/evcurl++.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 64%] Building C object CMakeFiles/gpx2video.dir/src/kalman.c.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
[ 66%] Building CXX object CMakeFiles/gpx2video.dir/src/gpx.cpp.o
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
In file included from /Users/user/gopro_tmp/gpx2video/src/gpx.cpp:12:
In file included from /usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Geodesic.hpp:13:
In file included from /usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Constants.hpp:87:
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Math.hpp:80:14: warning: deleted function
      definitions are a C++11 extension [-Wc++11-extensions]
    Math() = delete;            // Disable constructor
             ^
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Math.hpp:183:23: warning: default template
      arguments for a function template are a C++11 extension [-Wc++11-extensions]
    template<typename T = real> static T pi() {
                      ^   ~~~~
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Math.hpp:193:23: warning: default template
      arguments for a function template are a C++11 extension [-Wc++11-extensions]
    template<typename T = real> static T degree() {
                      ^   ~~~~
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Math.hpp:493:23: warning: default template
      arguments for a function template are a C++11 extension [-Wc++11-extensions]
    template<typename T = real> static T NaN();
                      ^   ~~~~
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Math.hpp:501:23: warning: default template
      arguments for a function template are a C++11 extension [-Wc++11-extensions]
    template<typename T = real> static T infinity();
                      ^   ~~~~
In file included from /Users/user/gopro_tmp/gpx2video/src/gpx.cpp:12:
In file included from /usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Geodesic.hpp:13:
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Constants.hpp:110:19: warning: deleted
      function definitions are a C++11 extension [-Wc++11-extensions]
    Constants() = delete;       // Disable constructor
                  ^
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Constants.hpp:135:23: warning: default
      template arguments for a function template are a C++11 extension [-Wc++11-extensions]
    template<typename T = real> static T WGS84_a()
                      ^   ~~~~
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Constants.hpp:141:23: warning: default
      template arguments for a function template are a C++11 extension [-Wc++11-extensions]
    template<typename T = real> static T WGS84_f() {
                      ^   ~~~~
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Constants.hpp:152:23: warning: default
      template arguments for a function template are a C++11 extension [-Wc++11-extensions]
    template<typename T = real> static T WGS84_GM()
                      ^   ~~~~
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Constants.hpp:159:23: warning: default
      template arguments for a function template are a C++11 extension [-Wc++11-extensions]
    template<typename T = real> static T WGS84_omega()
                      ^   ~~~~
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Constants.hpp:165:23: warning: default
      template arguments for a function template are a C++11 extension [-Wc++11-extensions]
    template<typename T = real> static T GRS80_a()
                      ^   ~~~~
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Constants.hpp:172:23: warning: default
      template arguments for a function template are a C++11 extension [-Wc++11-extensions]
    template<typename T = real> static T GRS80_GM()
                      ^   ~~~~
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Constants.hpp:186:23: warning: default
      template arguments for a function template are a C++11 extension [-Wc++11-extensions]
    template<typename T = real> static T GRS80_omega()
                      ^   ~~~~
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Constants.hpp:193:23: warning: default
      template arguments for a function template are a C++11 extension [-Wc++11-extensions]
    template<typename T = real> static T GRS80_J2()
                      ^   ~~~~
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Constants.hpp:199:23: warning: default
      template arguments for a function template are a C++11 extension [-Wc++11-extensions]
    template<typename T = real> static T UTM_k0()
                      ^   ~~~~
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Constants.hpp:205:23: warning: default
      template arguments for a function template are a C++11 extension [-Wc++11-extensions]
    template<typename T = real> static T UPS_k0()
                      ^   ~~~~
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Constants.hpp:219:23: warning: default
      template arguments for a function template are a C++11 extension [-Wc++11-extensions]
    template<typename T = real> static T meter() { return T(1); }
                      ^   ~~~~
/usr/local/Cellar/geographiclib/2.3/include/GeographicLib/Constants.hpp:239:23: warning: default
      template arguments for a function template are a C++11 extension [-Wc++11-extensions]
    template<typename T = real> static T square_meter()
                      ^   ~~~~
In file included from /Users/user/gopro_tmp/gpx2video/src/gpx.cpp:1:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/fstream:184:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ostream:139:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/streambuf:493:64: error: 
      base class 'std::__1::ios_base' has private copy constructor
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ios<char>)
                                                               ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iosfwd:145:32: note: 
      in implicit copy constructor for 'std::__1::basic_ios<char>' first required here
    class _LIBCPP_TEMPLATE_VIS basic_ifstream;
                               ^
/Users/user/gopro_tmp/gpx2video/src/gpx.cpp:554:28: note: in implicit copy constructor for
      'std::__1::basic_ifstream<char, std::__1::char_traits<char> >' first required here
    std::ifstream stream = std::ifstream(filename);
                           ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:313:5: note: 
      declared private here
    ios_base(const ios_base&); // = delete;
    ^
/Users/user/gopro_tmp/gpx2video/src/gpx.cpp:761:57: warning: format specifies type 'long' but the
      argument has type 'int64_t' (aka 'long long') [-Wformat]
        log_debug("retrieve next timestamp: %ld (filter: %d)", timestamp, filter_);
                                            ~~~                ^~~~~~~~~
                                            %lld
/Users/user/gopro_tmp/gpx2video/src/log.h:85:34: note: expanded from macro 'log_debug'
        log_debug_raw(format, ## __VA_ARGS__);  \
                      ~~~~~~     ^~~~~~~~~~~
/Users/user/gopro_tmp/gpx2video/src/log.h:32:47: note: expanded from macro 'log_debug_raw'
            __PRETTY_FUNCTION__, __LINE__, ## __VA_ARGS__)
                                              ^~~~~~~~~~~
In file included from /Users/user/gopro_tmp/gpx2video/src/gpx.cpp:19:
/Users/user/gopro_tmp/gpx2video/src/gpx.h:297:20: warning: private field 'stream_' is not used
      [-Wunused-private-field]
    std::ifstream &stream_;
                   ^
20 warnings and 1 error generated.
make[2]: *** [CMakeFiles/gpx2video.dir/src/gpx.cpp.o] Error 1
make[1]: *** [CMakeFiles/gpx2video.dir/all] Error 2
make: *** [all] Error 2

MacBook Air (13-inch, Early 2015:

  • OS: macOS Big Sur
  • Version 11.6

Additional context

[FEATURE] Export overlay sequence to set of PNGs

Is your feature request related to a problem? Please describe.
I would like to have the option for exporting the overlay to PNG files so that I can then use them in another application (Adobe Premiere). For example Garmin VIRB has the same functionality.

Describe the solution you'd like
I would like to be able to use an optional parameter to export only the overlay (indicators), e.g. in 1 second intervals.

Describe alternatives you've considered
Export only the overlay layer to a video file.

[FEATURE] Vertical video support

Is your feature request related to a problem? Please describe.
I'm trying to add overlays to a vertical video and I've made some progress by switching height and width here and there however I am struggling to capture when a video is rotated from the metadata, and render the video correctly. I did manage to render a scrambled vertical video with the overlay correct, however Im not sure if thats the best approach.

Describe the solution you'd like
I'd like to either pass flags to indicate its a vertical video, or have the system detect "Rotation" from the video metadata and correctly render the overlay.

Describe alternatives you've considered
I've started manually changing code to try and find a solution but I'm struggling to transform the frames correctly

Additional context
The default behavior is that the video is transformed to a horizontal video and the overlay is shown in the normal horizontal layout.

[BUG] PNG Does not Support Tiles

The bug
When running the command given in raedme:
./gpx2video -g 20240601.gpx -o map.png --map-source=1 --map-zoom=11 --map-factor 2.0 map
I get the following bug from OpenImageIO:

Build map...
width = 512 height = 512
Tiles are not supported
TILESIZE = 256
ERROR: Build map failure, can't open 'map.png' file
error = png does not support tiled images

To Reproduce
Add this code in map.cpp, lines 573++
std::unique_ptrOIIO::ImageOutput out = OIIO::ImageOutput::create("map.png");
OIIO::ImageSpec outspec(width, height, 4);
if (!out->supports("tiles")) {
std::cerr << "Tiles are not supported" << "\n";
}

Expected behavior
Convincing the code to use .tif format works fine.
std::unique_ptrOIIO::ImageOutput out = OIIO::ImageOutput::create("map.tif");

Desktop (please complete the following information):
Linux 6.8.9-arch1-2 #1 SMP PREEMPT_DYNAMIC Tue, 07 May 2024 21:35:54 +0000 x86_64 GNU/Linux

Additional context

pacman -Ss openimageio

extra/openimageio 2.5.10.1-1 [installed]

[BUG] The time field haven't time zone in GPX file

Command:

./gpx2video -v -m xxxx.MP4 -o output.gpx -f 3 extract

Result:

...
      <trkpt lat="xxxx" lon="xxxx">
        <ele>38.962</ele>
        <time>2022-06-24T00:21:48.095</time>
      </trkpt>
...

I am using this exciting tool to Dashware(overlay gauges tool) , but the display time is wrong.
The reason is that the time in the gpx file does not have a time zone.

I hope so

      <trkpt lat="xxxx" lon="xxxx">
        <ele>38.962</ele>
        <time>2022-06-24T00:21:48.095Z</time>
      </trkpt>

Add 'Z' in time field

I'm blank paper in C++ , so i can't push code ...

Also, are there plans to support Windows?

[BUILD]

Describe the build issue
home/user/gpx2video/src/evcurl.c:5:10: fatal error: openssl/ssl.h: No such file or directory
5 | #include <openssl/ssl.h>
| ^~~~~~~~~~~~~~~

compilation terminated.

To Reproduce
Run Make on Ubuntu 21

Expected behavior
It should just compile

Build outputs
If applicable, add build console outputs to help explain your problem.

Desktop (please complete the following information):

  • OS: Ubuntu 21
  • Virtual Machine

[FEATURE] Render GPX to MP4 without source media file

Is your feature request related to a problem? Please describe.

Hello there, and thank you for your project! Allow me to explain my situation to help you better understand why I'm requesting this feature. I'm a happy user of the GoPro 11, which unfortunately lacks a built-in GPS feature. To compensate, I record a GPX file using an app on my mobile phone, which I always have with me when riding my bike.

After each ride, I'd love the option to render the GPX file into an MP4 format. This way, I could easily combine multiple short recorded videos into one cohesive video in my video editor and add an overlay with real-time data such as speed and altitude.

Describe the solution you'd like

./gpx2video -v -g ./path/to.gpx -l layout.xml -o output.mp4 video # without --media flag

[FEATURE] Why is the render part so slow?

Let me start with a thank you for the effort. The tool looks promising.

Is your feature request related to a problem? Please describe.
I am trying to render a 00:05:08 (5 minutes & 8 seconds) 4k GoPro Hero 10 clip with some layouts (I doubt this is the bottleneck) and it takes so long: more than 1 hour to barely render 3 minutes of the video.

Describe the solution you'd like
I would like to know what the bottleneck is and, in case you might need help, I would like to help improve this toold using some GPU, if it does not at the moment.
I believe this is a simple and yet good alternative to already existing high fee tools like telemetry

Describe alternatives you've considered

Additional context
OS: Ubuntu 22.04 LTS
Arch: x86_64
Commit used: 3a9eafcb7478d8b95932b1e494092e2943684b5d
Command used: ./gpx2video -v -m GH020340.MP4 -g ACTIVITY.gpx -l layout.xml -o output.mp4 video
GPU: GeForce GTX 960M
CPU: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz

[BUG] increadible text refresh speed

Describe the bug

When doing an OpenStreetMap widget, the text progress line for download gets refreshed as fast as possible.
I got around 150mbit/s and 50% CPU over SSH just watching the output (from a WSL window, but the actual process runs on my NAS).
Can you put a sleep there? I guess its eating CPU a lot on the host as well just refreshing the progress bar.

Option `--offset` doesn't work when no GPS fix in video

I have some short video where there is no GPS fix. If I provide --offset [in ms] that I manually computed, I still see message saying that time sync failed. In verbose mode, correct speed seems to be reported for each frame, but resulting video is without widgets (probably there is a problem with timezones, not sure why GPX time is converted to local timezone).

Also, I have to provide the offset of roughly one hour, even though video and GPX seems both to use UTC timezone (that I got computed from other videos of the ride, those videos with GPS fix contains the widgets after render).

...
Time synchronization...
ERROR: No GPS data stream found
WARNING: Time synchronization failure!
Rendering...
FRAME: 0 - PTS: 0 - TIMESTAMP: 0 ms - TIME: 2023-11-04 10:13:52
  [41755] GPX Time: 2023-11-04 11:13:39 Distance: 24.561 km in 4284 seconds, current speed is 11.298 (valid: true)
FRAME: 1 - PTS: 16683 - TIMESTAMP: 16 ms - TIME: 2023-11-04 10:13:52
  [41755] GPX Time: 2023-11-04 11:13:39 Distance: 24.561 km in 4284 seconds, current speed is 11.298 (valid: true)
FRAME: 2 - PTS: 33366 - TIMESTAMP: 33 ms - TIME: 2023-11-04 10:13:52
...

[BUG] --start-time not recognized

Describe the bug
When specifying the --start-time option, the following is returned:
./gpx2video: unrecognized option '--start-time'
To Reproduce
Steps to reproduce the behavior:
Specify a --start-time value

Expected behavior
It runs, setting the creation_time to the specified time.

Additional context
It appears that start-time is missing from the options[] in the main file. I added the entry and rebuilt, which yielded the following at runtime:

terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_M_construct null not valid
Aborted (core dumped)

Then I ran again using --start-time=yyyy-mm-ddT00:00:00Z format instead of --start-time "yyyy-mm-ddT00:00:00Z"
That was successful.

[BUG] Quality drops significantly

Describe the bug
Here is screenshot of 4K video before and after overlay, the quality drop is more than noticeable, and the motion in video is teary and unwatchable. Also, encoding utilizes only half of the cores available, is there some configuration for that?

Screenshots
Before:
image

After:
image

[BUG] Segfault on video without audio stream

The program fails to process a video from GoPro, which doesn't contain an audio stream. It is a "time-wrap" video and audio is not added there by default.

Not sure about the audio stream, but that's how I understand the gdb output (see below).

Desktop:

  • OS: Arch Linux (5.17.7-arch1-1, x86_64)
  • Version: main branch

Additional context

GDB:

(gdb) run --verbose --media ~/archive/tmp/100GOPRO/2022-05-28_ride.mp4 --gpx ~/archive/tmp/100GOPRO/2022-05-28-083827-ELEMNT\ BCA8-120-0.gpx --layout layout.xml --output 2022-05-25_ride_overlay.mp4 video
Starting program: /home/zebradil/development/vendor/gpx2video/build/gpx2video --verbose --media ~/archive/tmp/100GOPRO/2022-05-28_ride.mp4 --gpx ~/archive/tmp/100GOPRO/2022-05-28-083827-ELEMNT\ BCA8-120-0.gpx --layout layout.xml --output 2022-05-25_ride_overlay.mp4 video
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
gpx2video v0.0.0
Failed to find decoder for stream #1
Failed to find decoder for stream #2
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/zebradil/archive/tmp/100GOPRO/2022-05-28_ride.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf59.16.100
  Duration: 00:12:19.12, start: 0.000000, bitrate: 100434 kb/s
  Stream #0:0[0x1](eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709, progressive), 3840x2160 [SAR 1:1 DAR 16:9], 100046 kb/s, 25 fps, 25 tbr, 90k tbn (default)
    Metadata:
      handler_name    : GoPro AVC
      vendor_id       : [0][0][0][0]
      timecode        : 10:39:43:17
    Side data:
      displaymatrix: rotation of -180.00 degrees
  Stream #0:1[0x2](eng): Data: bin_data (gpmd / 0x646D7067), 382 kb/s
    Metadata:
      handler_name    : GoPro MET
  Stream #0:2[0x3](eng): Data: none (tmcd / 0x64636D74)
    Metadata:
      handler_name    : GoPro AVC
      timecode        : 10:39:43:17

Program received signal SIGSEGV, Segmentation fault.
0x000055555558cd17 in AudioParams::AudioParams (this=this@entry=0x7fffffffd180, sample_rate=<error reading variable: Cannot access memory at address 0x50>, channel_layout=<error reading variable: Cannot access memory at address 0x58>, format=<error reading variable: Cannot access memory at address 0x60>) at /home/zebradil/development/vendor/gpx2video/src/audioparams.cpp:14
14              : sample_rate_(sample_rate)

Backtrace:

#0  0x000055555558cd17 in AudioParams::AudioParams(int const&, unsigned long const&, AudioParams::Format const&)
    (this=this@entry=0x7fffffffd180, sample_rate=<error reading variable: Cannot access memory at address 0x50>, channel_layout=<error reading variable: Cannot access memory at address 0x58>, format=<error reading variable: Cannot access memory at address 0x60>)
    at /home/zebradil/development/vendor/gpx2video/src/audioparams.cpp:14
#1  0x000055555559263d in Renderer::init() (this=0x555556e911f0) at /home/zebradil/development/vendor/gpx2video/src/renderer.cpp:99
#2  0x00005555555949a9 in Renderer::create(GPX2Video&) (app=...) at /home/zebradil/development/vendor/gpx2video/src/renderer.cpp:59
#3  0x000055555557738c in main(int, char**, char**) (argc=<optimized out>, argv=<optimized out>, envp=<optimized out>) at /home/zebradil/development/vendor/gpx2video/src/main.cpp:524

[BUILD] av_get_channel_layout_nb_channels was not declared in this scope

Describe the build issue
Not able to complete the build with the following error:

gpx2video/src/encoder.cpp:320:43: error: ‘av_get_channel_layout_nb_channels’ was not declared in this scope
  320 |                 codec_context->channels = av_get_channel_layout_nb_channels(codec_context->channel_layout);

To Reproduce

$ git clone https://github.com/progweb/gpx2video.git
$ mkdir gpx2video/build
$ cd gpx2video/build
$ cmake ..
$ make

Desktop (please complete the following information):

  • OS: Arch Linux (5.17.7-arch1-1, x86_64)
  • Version: main branch

[FEATURE] Support Insta360 video

Hi ! I have an insta360 one X2 and I would like to extract GPS data from it (some soft do it on gopro and insta360).
Any idea if it will work out ouf the box ?

[BUILD] Unable to find cairo.h and libevent pkgconfig

Attempting to build on Ubuntu 22.04 I saw these two errors. To successfully build I ran the following two commands:

export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/
export CPLUS_INCLUDE_PATH=/usr/include/cairo/

And the build succeeded.

[FEATURE] Add power widget

I have recently bought powermeter for my bike, it would be nice to display power data in video. Example of GPX point produced by strava:

   <trkpt lat="XX.XXXXXXX" lon="YY.YYYYYYY">
    <ele>444.0</ele>
    <time>2024-07-28T16:04:49Z</time>
    <extensions>
     <power>138</power>
     <gpxtpx:TrackPointExtension>
      <gpxtpx:atemp>27</gpxtpx:atemp>
      <gpxtpx:hr>102</gpxtpx:hr>
      <gpxtpx:cad>49</gpxtpx:cad>
     </gpxtpx:TrackPointExtension>
    </extensions>
   </trkpt>

Thanks!

Error while building the program

 In file included from /home/lore/gpx2video/src/oiioutils.cpp:1:
 /home/lore/gpx2video/src/oiioutils.h:12:10: fatal error: OpenImageIO/imageio.h: No such file or directory
    12 | #include <OpenImageIO/imageio.h>
       |          ^~~~~~~~~~~~~~~~~~~~~~~
 compilation terminated.
 make[2]: *** [CMakeFiles/gpx2video.dir/build.make:132: CMakeFiles/gpx2video.dir/src/oiioutils.cpp.o] Error 1
 make[1]: *** [CMakeFiles/Makefile2:139: CMakeFiles/gpx2video.dir/all] Error 2
 make: *** [Makefile:136: all] Error 2

Hi, I was trying to build the last version of your project and this error occurred. I'm on Manjaro.

[FEATURE] Add option to use multiple videos

Is your feature request related to a problem? Please describe.
GoPro likes to chop up long videos to multiple files (4G/10G, depending on version).
Due to this using this tool will result in "broken" graphs, maps, etc.

Describe the solution you'd like
Add the option to specify multiple input videos.
For "easy" implementation (or POC):

  • export GPX (as you are doing now)
  • combine the GPX files somehow
  • concat the videos using ffmpeg (I get that it will use double storage, but its easy)
  • render the result

Describe alternatives you've considered
Manually exporting the GPX data, combining them, doing the concat manually and specifying the video/data manually:

Not sure how big this request is in the grand scheme of things, but it would be a good-to-have.

[BUG] gpx file almost empty when extractinf with -f 3 option

Hi,

I have been able to compile, then I ran this command :
./gpx2video -v -m ${fichier_gopro} -o ${dossier_exports}/gpx/output.gpx -f 3 extract

fichier_gopro is the .LRV file from a gopro 6 black camera

However, the gpx created file is almost empty :

<?xml version="1.0" encoding="utf-8"?> <gpx version="1.0" creator="gpx2video" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/0" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd"> <trk> <number>1</number> <trkseg> </trkseg> </trk> </gpx>

The same command with -f 2 extract option is working fine : the .bin file is created and is the exact same file than the one created on windows by this tool : https://github.com/jeeve/GoproToGpx/blob/master/GPMD2CSV.bat)

I can send you the .bin file if needed

another try with a gopro 7 black camera file is working better :
the gpx file has a content, but only around 1 trkpt by second, (sometime3 trkpt in a second, sometimes only 1 point for 3 seconds)
though I know the camera records arond 18 gps position by second.

merci

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.