Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft: JIT #10

Draft
wants to merge 146 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
146 commits
Select commit Hold shift + click to select a range
e8986dd
implement seek
sirf Nov 26, 2021
c5770e6
better keyboard handling
sirf Mar 1, 2022
26e3d35
bugfix
sirf Mar 9, 2022
5c482e9
protobuf
sirf Mar 16, 2022
ded7492
protobuf i/o
sirf Mar 23, 2022
42b9247
add missing files
sirf Mar 29, 2022
47a2479
fix seek
sirf Mar 29, 2022
b2a16f3
bugfix
sirf Mar 29, 2022
b18821f
fix seek
sirf Mar 29, 2022
5ec99f0
refresh
sirf Mar 29, 2022
6a94334
fix seek
sirf Mar 29, 2022
163b976
seek to 0
sirf Mar 29, 2022
f28d70a
fix
sirf Mar 29, 2022
d14bf66
moar logging
sirf Mar 29, 2022
1e47d18
don't exit
sirf Mar 29, 2022
7a0d821
don't advance one frame
sirf Mar 29, 2022
6b29269
better pause
sirf Mar 29, 2022
8d59634
implement playback rate
sirf Mar 29, 2022
a5dd531
send fps and duration
sirf Mar 29, 2022
270d2ea
set playback speed in status
sirf Mar 30, 2022
8ace2a9
set total_channels
sirf Apr 1, 2022
d01b322
add media tracks
sirf Apr 1, 2022
ad10b25
FGIX
sirf Apr 1, 2022
b63957e
bytes instead of char
sirf Apr 1, 2022
15ffa18
bugfix
sirf Apr 1, 2022
ec893d2
fix compile error
sirf Apr 1, 2022
a5ada67
set playing state
sirf Apr 4, 2022
05ae088
rename variable
sirf Apr 4, 2022
8e2a5c2
bytes -> string
sirf Apr 4, 2022
50d297b
write status to named pipe
sirf Apr 5, 2022
9b3cb75
Merge pull request #1 from sirf/feature/protobuf-ipc
sirf Apr 6, 2022
06aa5ab
debug logging
sirf Apr 12, 2022
2b9f4ce
more logging
sirf Apr 12, 2022
de3a97d
improve pipes
sirf May 9, 2022
3249fdd
Don't pause when already paused
Tjoppen May 12, 2022
f13faec
Indent
Tjoppen May 12, 2022
ef7b539
Only silence audio when going backward
Tjoppen May 12, 2022
6d8fa2e
unique named pipes
sirf May 16, 2022
6b4c416
revert to proto2
sirf May 16, 2022
d9d0ba4
fix
sirf May 16, 2022
338b538
consumer_avformat: Dummy out apre and vpre stuff
Tjoppen May 25, 2022
9630cfb
producer_avformat: Use av_codec_is_decoder() instead of accessing cod…
Tjoppen May 25, 2022
0540e7e
producer_avformat: Set options before avcodec_open2()
Tjoppen May 25, 2022
150b071
melt: Add -disable-status-fifo option
Tjoppen May 25, 2022
c99e773
Fix seek on pause, reduce buffer -> faster pause
Tjoppen Aug 25, 2022
e21a37a
seek on pause
sirf Sep 23, 2022
43407f4
start paused
sirf Sep 27, 2022
5b4517d
Merge remote-tracking branch 'origin/upstream'
sirf Oct 3, 2022
c44ff2d
fix build error
sirf Oct 3, 2022
9ae7249
use unix domain socket
sirf Oct 6, 2022
311c936
Merge pull request #7 from sirf/unix-socket
sirf Oct 7, 2022
63b62f7
producer_avformat: Always seek when file is intra-only
Tjoppen Oct 7, 2022
dc20ac6
support relative seek
sirf Oct 19, 2022
fc98b7d
fps multiplier
sirf Oct 21, 2022
683fe2a
more logging
sirf Oct 21, 2022
9b99be6
fix
sirf Oct 21, 2022
57a2d79
fix
sirf Oct 21, 2022
3d0d368
seek
sirf Oct 21, 2022
8fda63f
ceil seek relativ
sirf Oct 21, 2022
c80a226
more fix
sirf Oct 21, 2022
08d27ef
fix seek-on-pause
sirf Oct 21, 2022
cd8a51a
Merge remote-tracking branch 'origin/decimation'
sirf Oct 24, 2022
354d170
add resolution to video stream
sirf Oct 31, 2022
94c0152
pause when reaching beginning
sirf Nov 2, 2022
975745c
Fallback to r_frame_rate
sirf Dec 8, 2022
595d7c6
fix framerate problem
sirf Dec 9, 2022
da00e69
only start paused when using status fifo
sirf Dec 16, 2022
6822799
add empty statement
sirf Jan 24, 2023
e4aeeb6
producer_avformat: Use filtergraph dimensions and pixel format where …
Tjoppen Jan 27, 2023
cadd389
Merge branch 'filtergraph_dims' into filtergraph
Tjoppen Jan 27, 2023
3201851
Add Code::Blocks project files
Tjoppen Jan 24, 2023
0ae9204
Merge remote-tracking branches 'origin/master' and 'mlt/master' into …
Tjoppen Jan 30, 2023
edf234f
Ignore mlt.layout
Tjoppen Feb 16, 2023
f06c6d0
Merge branch 'master' into threaded_avformat_producer_merged
Tjoppen Feb 16, 2023
7ab9dc2
Change -disable-status-fifo to -enable-status-fifo
Tjoppen Feb 22, 2023
c77e4a8
Actually, don't track mlt.cbp because that makes it harder to switch …
Tjoppen Feb 22, 2023
7e6d948
Merge branch 'master' into threaded_avformat_producer_merged
Tjoppen Feb 22, 2023
9916813
Merge remote-tracking branch 'mlt/master' into threaded_avformat_prod…
Tjoppen Feb 22, 2023
f64f7ec
Bring melt.c more in line with upstream
Tjoppen Feb 24, 2023
dbc3a26
Oops
Tjoppen Feb 24, 2023
65fe737
Generate protobuf files using CMake
Tjoppen Feb 24, 2023
2068e0d
generate protobuf headers
sirf May 11, 2023
9d9e900
refactor data transport
sirf May 11, 2023
71a1583
idebug
sirf May 11, 2023
944940a
trial
sirf May 11, 2023
7ab039f
test
sirf May 11, 2023
a5646a0
mofy
sirf May 11, 2023
5836c72
new attempt
sirf May 11, 2023
b85384e
this time!
sirf May 11, 2023
0917bc3
remove debug print
sirf May 11, 2023
fdfbe50
remove debug print
sirf May 11, 2023
40eeb8e
refactor
sirf May 12, 2023
f7688b5
null check
sirf Feb 12, 2024
fd8e5ba
more error checking
sirf Feb 12, 2024
025afaf
Also check for Wayland's WAYLAND_DISPLAY to detect a graphical sessio…
j-b-m Feb 27, 2024
0f8841c
fix wave filter distorts on wave=1 with preview scaling
ddennedy Feb 29, 2024
3011561
clang-format
ddennedy Feb 29, 2024
11a89df
Report the channel layout so the application can use it
bmatherly Mar 9, 2024
7930382
Set the channel layout for some audio producers
bmatherly Mar 9, 2024
ab761ae
Avoid FAST_FAIL_RANGE_CHECK_FAILURE at preset enumeration (#974)
hmartinez82 Mar 10, 2024
6a06b32
Fix crash when using chains from melt
bmatherly Mar 14, 2024
0ceb9b6
fix #976 outline maximum for text & dynamictext filters
ddennedy Mar 18, 2024
92840ba
Add missing KEEP_ALIVE cmd
sirf Mar 19, 2024
e896a41
add ambisonic-encoder filter to spatialaudio module
ddennedy Mar 20, 2024
b2a82de
Don't allow connecting a null producer to a service (#979)
j-b-m Apr 12, 2024
a089fcc
fix #873 remove some unnecessary null pointer checks
ddennedy Apr 13, 2024
0a7a3fe
fix #980 building with FFmpeg v7
ddennedy Apr 17, 2024
245b243
Include locale.h on any GNU libc platform (#925)
pinotree Apr 17, 2024
e64eee5
update gitlab CI and fix debian stable
ddennedy Apr 17, 2024
fd4d9ad
version 7.24.0
ddennedy Apr 27, 2024
ef36d29
fix movit transition with non-movit filter on input
ddennedy May 6, 2024
0aa2781
revert log changes
ddennedy May 6, 2024
f4785b6
fix gitlab CI for ubuntu:24.04
ddennedy May 6, 2024
a2aa654
fix gitlab CI YAML
ddennedy May 6, 2024
23b79f5
add "nvdec" as alias for hwaccel "cuda"
ddennedy May 15, 2024
4c4053f
prefer r_frame_rate over avg_frame_rate
ddennedy May 15, 2024
5f22110
producer_avformat: Fix lowres if set too high
Tjoppen May 15, 2024
fb3f2a9
more places to prefer r_frame_rate
ddennedy May 15, 2024
296da35
producer_avformat: Fix #985 lowres if set too high
Tjoppen May 15, 2024
857e358
clang-format
ddennedy May 15, 2024
5426d3b
fix compile warning pointer-to-int-cast
ddennedy May 24, 2024
5c39815
fix compile warning in glaxnimate module on gcc 14
ddennedy May 24, 2024
a1e8314
fix compile error on FFmpeg < 7
ddennedy May 24, 2024
f27a61e
switch AV1 encode presets to SVT-AV1
May 29, 2024
49fcfd3
Merge pull request #989 from austincbrooks/svtav1
ddennedy May 29, 2024
ad0d355
Merge branch 'master' into feature/jit
Tjoppen May 31, 2024
9dc23e6
jit.c: Tabs -> spaces
Tjoppen May 31, 2024
77892ff
consumer_avformat: Also silence when speed == 0
Tjoppen May 31, 2024
b200315
consumer_avformat: Set mute_on_pause=1 instead
Tjoppen May 31, 2024
e534536
Merge branch 'feature/jit-merge-pausefix' into feature/jit-merge
Tjoppen May 31, 2024
27a9984
fix duration in glaxnimate producer
ddennedy May 31, 2024
d4bdbcc
add dropshadow filter to qt module
ddennedy May 31, 2024
dc15d1d
fix #990 compile error: undeclared identifiers
ddennedy Jun 4, 2024
65a411b
avformat_producer: Use AVRational in video timestamp calculation and …
Tjoppen Jun 4, 2024
2fdbf9b
producer_avformat: Only bother decoding intra-only packets that we'll…
Tjoppen Jun 4, 2024
526fd85
Merge branch 'sparse_intra_only_decode' into feature/jit-merge
Tjoppen Jun 4, 2024
acb4c23
producer_avformat: Remove the intra-only seek hack
Tjoppen Jun 4, 2024
7a6cc5d
Fix double free crash
bmatherly Jun 5, 2024
80e6347
stop using temporary Mlt::Profile
ddennedy Jun 5, 2024
fda7c02
Fix resetting title animation
j-b-m Jun 5, 2024
8b86000
producer_avformat: Check audio_index=all and astream=all before using…
Tjoppen Jun 11, 2024
15a46c9
producer_avformat: Reindent
Tjoppen Jun 11, 2024
57c8432
Merge remote-tracking branch 'mlt/master' into feature/jit-proper-int…
Tjoppen Jun 12, 2024
ab5d33c
Merge branch 'feature/jit-proper-intra-threading' into feature/jit
Tjoppen Jun 12, 2024
886cfbc
src/modules/core/transition_mix.c: Increase MAX_CHANNELS to 32
Tjoppen Jun 19, 2024
04430f2
Merge branch 'max_channels_32' into feature/max_channels_32
Tjoppen Jun 19, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,9 @@ src/modules/glaxnimate/mltglaxnimate-qt6_autogen/
out
src/swig/ruby/markdown/
CMakeLists.txt.user
mlt.kdev4
src/melt/JitControl.pb-c.c
src/melt/JitControl.pb-c.h
src/melt/JitStatus.pb-c.c
src/melt/JitStatus.pb-c.h

30 changes: 11 additions & 19 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
ubuntu-latest:
image: ubuntu:latest
ubuntu-24.04:
image: ubuntu:24.04
script:
- sed -i '/^#\sdeb-src /s/^#//' "/etc/apt/sources.list"
- "sed -i 's/^Types: deb/Types: deb deb-src/' /etc/apt/sources.list.d/ubuntu.sources"
- DEBIAN_FRONTEND=noninteractive apt-get -qq update
- DEBIAN_FRONTEND=noninteractive apt-get -yqq build-dep mlt
- DEBIAN_FRONTEND=noninteractive apt-get -yqq install cmake
- cmake -DCMAKE_BUILD_TYPE=Debug . && make -j -f Makefile install

ubuntu-lts:
image: ubuntu:20.04
ubuntu-22.04:
image: ubuntu:22.04
script:
- sed -i '/^#\sdeb-src /s/^#//' "/etc/apt/sources.list"
- DEBIAN_FRONTEND=noninteractive apt-get -qq update
Expand Down Expand Up @@ -38,37 +38,29 @@ debian-stable:
image: debian:stable
script:
- echo -e 'deb-src http://deb.debian.org/debian stable main\ndeb-src http://deb.debian.org/debian stable-updates main' >> /etc/apt/sources.list
- echo 'deb http://deb.debian.org/debian buster-backports main' >> /etc/apt/sources.list
- echo 'deb http://deb.debian.org/debian bookworm-backports main' >> /etc/apt/sources.list
- apt-get -qq update
- apt-get -yqq build-dep mlt
- apt-get -yqq install cmake
- cmake -DCMAKE_BUILD_TYPE=Debug . && make -j -f Makefile install

fedora-38:
image: fedora:38
fedora-39:
image: fedora:39
script:
- yum --assumeyes groupinstall "Development Tools"
- yum --assumeyes install yasm gavl-devel libsamplerate-devel libxml2-devel ladspa-devel jack-audio-connection-kit-devel sox-devel SDL-devel gtk2-devel qt-devel libexif-devel libtheora-devel libvorbis-devel libvdpau-devel libsoup-devel liboil-devel python-devel alsa-lib pulseaudio-libs-devel gcc-c++ cmake
# unclear why `gcc-c++` isn't in `Development Tools`
- cmake -DCMAKE_BUILD_TYPE=Debug . && make -j -f Makefile install

fedora-36:
image: fedora:36
script:
- yum --assumeyes groupinstall "Development Tools"
- yum --assumeyes install yasm gavl-devel libsamplerate-devel libxml2-devel ladspa-devel jack-audio-connection-kit-devel sox-devel SDL-devel gtk2-devel qt-devel libexif-devel libtheora-devel libvorbis-devel libvdpau-devel libsoup-devel liboil-devel python-devel alsa-lib pulseaudio-libs-devel gcc-c++ cmake
# unclear why `gcc-c++` isn't in `Development Tools`
- cmake -DCMAKE_BUILD_TYPE=Debug . && make -j -f Makefile install

fedora-34:
image: fedora:34
fedora-38:
image: fedora:38
script:
- yum --assumeyes groupinstall "Development Tools"
- yum --assumeyes install yasm gavl-devel libsamplerate-devel libxml2-devel ladspa-devel jack-audio-connection-kit-devel sox-devel SDL-devel gtk2-devel qt-devel libexif-devel libtheora-devel libvorbis-devel libvdpau-devel libsoup-devel liboil-devel python-devel alsa-lib pulseaudio-libs-devel gcc-c++ cmake
# unclear why `gcc-c++` isn't in `Development Tools`
- cmake -DCMAKE_BUILD_TYPE=Debug . && make -j -f Makefile install

fedora-30:
fedora-32:
image: fedora:32
script:
- yum --assumeyes groupinstall "Development Tools"
Expand Down
5 changes: 4 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.14)

project(MLT
VERSION 7.23.0
VERSION 7.25.0
DESCRIPTION "Multimedia Framework"
HOMEPAGE_URL "https://www.mltframework.org"
LANGUAGES C CXX
Expand Down Expand Up @@ -150,6 +150,9 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_BUILD_TYPE STREQUAL "Debug")
set(GCC_FLAGS "-Wall -Werror -Wno-deprecated-declarations")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_FLAGS} -Wno-class-memaccess -Wno-array-compare -Wno-unused-result -Wno-maybe-uninitialized")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GCC_FLAGS} -Wno-discarded-qualifiers")
# The following showed up in GCC 14, which I am using via msys2 on Windows.
# Remove the following when Glaxnimate is fixed.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-c++20-compat -Wno-dangling-reference")
endif ()

if(MSVC)
Expand Down
2 changes: 1 addition & 1 deletion Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ PROJECT_NAME = MLT
# This could be handy for archiving the generated documentation or
# if some version control system is used.

PROJECT_NUMBER = 7.22.0
PROJECT_NUMBER = 7.24.0

# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
Expand Down
36 changes: 36 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
@@ -1,6 +1,42 @@
MLT Release Notes
-----------------

Version 7.24.0

Framework
* Fixed a small memory leak in `mlt_repository`.
* Fixed a small memory leak in `MltPushConsumer` C++ class.
* Block connecting a null producer to a service.
* Include `locale.h` on any GNU libc platform.

Modules
* Added a new `spatialaudio` module with filters:
- `ambisonic-decoder`
- `ambisonic-encoder`
* Fixed building with FFmpeg 7.
* Fixed text keywords do not work with non-ASCII filenames on Windows:
- `pixbuf` producer
- `opencv_tracker` filter
- `dynamictext` filter
- `qimage` producer
* Added "meta.media.aspect_ratio" property to the `avformat` producer.
* Fixed `distort` property not working in `movit.rect` filter.
* Fixed frames dropping or repeating in the `multi` consumer.
* Fixed the `dynamic_loudness` filter maximizing audio gain.
* Fixed distortion in the `mono` filter.
* Also check for `WAYLAND_DISPLAY` to detect a graphical session in the `qt`
and `glaxnimate` modules.
* Fixed the `wave` filter distorts if `wave` = 1 with preview scaling.
* Added the read-only `meta.media.%u.codec.layout` property to `avformat` producer.
* Set the `channel_layout` property on the frame for the `noise` and `tone`
audio producers.
* Fixed `outline` maximum for the `text` and `dynamictext` filters.

Other
* Fixed crash when using `-chain` from `melt`.
* Fixed a small memory leak on Windows `fopen()`.


Version 7.22.0

Framework
Expand Down
4 changes: 2 additions & 2 deletions docs/melt.1
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.38.4.
.TH MELT "1" "November 2023" "melt 7.22.0" "User Commands"
.TH MELT "1" "April 2024" "melt 7.24.0" "User Commands"
.SH NAME
melt \- author, play, and encode multitrack audio/video compositions
.SH SYNOPSIS
Expand Down Expand Up @@ -149,7 +149,7 @@ Add a video\-only track
.PP
For more help: <https://www.mltframework.org/>
.SH COPYRIGHT
Copyright \(co 2002\-2023 Meltytech, LLC
Copyright \(co 2002\-2024 Meltytech, LLC
<https://www.mltframework.org/>
.br
This is free software; see the source for copying conditions. There is NO
Expand Down
1 change: 1 addition & 0 deletions presets/consumer/avformat/AV1
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,4 @@ strict=experimental
meta.preset.name=AV1 WebM
meta.preset.extension=webm
meta.preset.note=AV1 video with Opus audio in Matroska container: Just say no to patents
meta.preset.hidden=1
16 changes: 16 additions & 0 deletions presets/consumer/avformat/SVT-AV1
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
f=webm

acodec=libopus
ar=48000
ab=192k
vbr=off

vcodec=libsvtav1
crf=32
bf=1
svtav1-params=preset=5:tile-columns=1:fast-decode=0:tune=0:film-grain=0:film-grain-denoise=0:enable-overlays=1:enable-variance-boost=1:variance-boost-strength=1:variance-octile=7:enable-qm=1:qm-min=0
progressive=1

meta.preset.name=AV1 WebM
meta.preset.extension=webm
meta.preset.note=AV1 video with Opus audio in WebM container: Just say no to patents
1 change: 1 addition & 0 deletions presets/consumer/avformat/ten_bit/AV1
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@ pix_fmt=yuv420p10le
meta.preset.name=ten_bit/10-bit AV1 WebM
meta.preset.extension=webm
meta.preset.note=10-bit AV1 video with Opus audio in Matroska container: Just say no to patents
meta.preset.hidden=1
17 changes: 17 additions & 0 deletions presets/consumer/avformat/ten_bit/SVT-AV1
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
f=webm

acodec=libopus
ar=48000
ab=192k
vbr=off

vcodec=libsvtav1
crf=32
bf=1
svtav1-params=preset=5:tile-columns=1:fast-decode=0:tune=0:film-grain=0:film-grain-denoise=0:enable-overlays=1:enable-variance-boost=1:variance-boost-strength=1:variance-octile=7:enable-qm=1:qm-min=0
pix_fmt=yuv420p10le
progressive=1

meta.preset.name=ten_bit/10-bit AV1 WebM
meta.preset.extension=webm
meta.preset.note=10-bit AV1 video with Opus audio in WebM container: Just say no to patents
2 changes: 1 addition & 1 deletion src/framework/mlt_property.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
#include <sys/param.h>
#endif

#if (defined(__linux__) && !defined(__APPLE__))
#if defined(__linux__) || defined(__GLIBC__)
#include <locale.h>
typedef locale_t mlt_locale_t;
#elif defined(__APPLE__) || (defined(__FreeBSD_version) && __FreeBSD_version >= 900506)
Expand Down
2 changes: 1 addition & 1 deletion src/framework/mlt_repository.c
Original file line number Diff line number Diff line change
Expand Up @@ -581,7 +581,7 @@ static void list_presets(mlt_properties properties, const char *path, const char
// load the preset
mlt_properties preset = mlt_properties_load(fullname);
if (preset && mlt_properties_count(preset)) {
snprintf(fullname, 1024, "%s/%s", path, de->d_name);
snprintf(fullname, sizeof(fullname), "%s/%s", path, de->d_name);
mlt_properties_set_data(properties,
fullname,
preset,
Expand Down
5 changes: 2 additions & 3 deletions src/framework/mlt_service.c
Original file line number Diff line number Diff line change
Expand Up @@ -207,13 +207,12 @@ int mlt_service_connect_producer(mlt_service self, mlt_service producer, int ind
}

// If we have space, assign the input
if (base->in != NULL && index >= 0 && index < base->size) {
if (producer != NULL && base->in != NULL && index >= 0 && index < base->size) {
// Get the current service
mlt_service current = (index < base->count) ? base->in[index] : NULL;

// Increment the reference count on this producer
if (producer != NULL)
mlt_properties_inc_ref(MLT_SERVICE_PROPERTIES(producer));
mlt_properties_inc_ref(MLT_SERVICE_PROPERTIES(producer));

// Now we disconnect the producer service from its consumer
mlt_service_disconnect(producer);
Expand Down
4 changes: 2 additions & 2 deletions src/framework/mlt_version.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* \file mlt_version.h
* \brief contains version information
*
* Copyright (C) 2010-2023 Meltytech, LLC
* Copyright (C) 2010-2024 Meltytech, LLC
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
Expand All @@ -27,7 +27,7 @@
#define MLT_STRINGIZE(s) MLT_STRINGIZE2(s)

#define LIBMLT_VERSION_MAJOR 7
#define LIBMLT_VERSION_MINOR 23
#define LIBMLT_VERSION_MINOR 25
#define LIBMLT_VERSION_REVISION 0
#define LIBMLT_VERSION_INT \
((LIBMLT_VERSION_MAJOR << 16) + (LIBMLT_VERSION_MINOR << 8) + LIBMLT_VERSION_REVISION)
Expand Down
16 changes: 14 additions & 2 deletions src/melt/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,20 @@
add_executable(melt melt.c io.c io.h)
add_custom_command(
OUTPUT JitControl.pb-c.c JitControl.pb-c.h
COMMAND protoc-c --c_out=. JitControl.proto
DEPENDS JitControl.proto
)

add_custom_command(
OUTPUT JitStatus.pb-c.c JitStatus.pb-c.h
COMMAND protoc-c --c_out=. JitStatus.proto
DEPENDS JitStatus.proto
)

add_executable(melt melt.c io.c io.h JitControl.pb-c.c JitStatus.pb-c.c)

target_compile_options(melt PRIVATE ${MLT_COMPILE_OPTIONS})

target_link_libraries(melt PRIVATE mlt Threads::Threads)
target_link_libraries(melt PRIVATE mlt Threads::Threads protobuf-c m)

target_compile_definitions(melt PRIVATE VERSION="${MLT_VERSION}")

Expand Down
17 changes: 17 additions & 0 deletions src/melt/JitControl.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
syntax = "proto2";

message JitControl {
optional ControlType type = 1;
optional int32 play_rate = 2;
optional int64 seek_position = 3;
}

enum ControlType {
PAUSE = 0;
PLAY = 1;
PLAY_RATE = 2;
QUIT = 3;
SEEK = 4;
SEEK_REL = 5;
KEEP_ALIVE = 6;
}
38 changes: 38 additions & 0 deletions src/melt/JitStatus.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
syntax = "proto2";

message JitStatus {
optional int64 duration = 1;
optional double frame_rate = 2;
optional bool playing = 3;
optional int32 play_rate = 4;
optional int64 position = 5;
optional int32 total_channels = 6;
optional MediaInfo media_info = 7;
}

message MediaInfo {
repeated Stream streams = 1;
}

message Stream {
optional StreamType type = 1;
optional AudioStream audio = 2;
optional VideoStream video = 3;
}

message AudioStream {
optional int32 channels = 1;
optional string language = 2;
}

message VideoStream {
optional double frame_rate = 1;
optional int32 width = 2;
optional int32 height = 3;
}

enum StreamType {
UNKNOWN = 0;
AUDIO = 1;
VIDEO = 2;
}
Loading
Loading