Skip to content

Commit

Permalink
add ambisonic-encoder filter to spatialaudio module
Browse files Browse the repository at this point in the history
  • Loading branch information
ddennedy committed Mar 20, 2024
1 parent 0ceb9b6 commit e896a41
Show file tree
Hide file tree
Showing 5 changed files with 535 additions and 302 deletions.
12 changes: 10 additions & 2 deletions src/modules/spatialaudio/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
add_library(mltspatialaudio MODULE factory.c filter_ambisonic-decoder.cpp)
add_library(mltspatialaudio MODULE
factory.c
filter_ambisonic-decoder.cpp
filter_ambisonic-encoder.cpp
)

file(GLOB YML "*.yml")
add_custom_target(Other_spatialaudio_Files SOURCES
Expand All @@ -13,4 +17,8 @@ set_target_properties(mltspatialaudio PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${MLT

install(TARGETS mltspatialaudio LIBRARY DESTINATION ${MLT_INSTALL_MODULE_DIR})

install(FILES filter_ambisonic-decoder.yml DESTINATION ${MLT_INSTALL_DATA_DIR}/spatialaudio)
install(FILES
filter_ambisonic-decoder.yml
filter_ambisonic-encoder.yml
DESTINATION ${MLT_INSTALL_DATA_DIR}/spatialaudio
)
98 changes: 52 additions & 46 deletions src/modules/spatialaudio/factory.c
Original file line number Diff line number Diff line change
@@ -1,46 +1,52 @@
/*
* factory.c -- the factory method interfaces
* Copyright (C) 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
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

#include <framework/mlt.h>

#include <limits.h>
#include <string.h>

extern mlt_filter filter_ambisonic_decoder_init(mlt_profile profile,
mlt_service_type type,
const char *id,
char *arg);

static mlt_properties metadata(mlt_service_type type, const char *id, void *data)
{
char file[PATH_MAX];
mlt_properties result = NULL;

// Load the yaml file
snprintf(file, PATH_MAX, "%s/spatialaudio/filter_%s.yml", mlt_environment("MLT_DATA"), id);
result = mlt_properties_parse_yaml(file);

return result;
}

MLT_REPOSITORY
{
MLT_REGISTER(mlt_service_filter_type, "ambisonic-decoder", filter_ambisonic_decoder_init);
MLT_REGISTER_METADATA(mlt_service_filter_type, "ambisonic-decoder", metadata, NULL);
}
/*
* factory.c -- the factory method interfaces
* Copyright (C) 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
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

#include <framework/mlt.h>

#include <limits.h>
#include <string.h>

extern mlt_filter filter_ambisonic_decoder_init(mlt_profile profile,
mlt_service_type type,
const char *id,
char *arg);
extern mlt_filter filter_ambisonic_encoder_init(mlt_profile profile,
mlt_service_type type,
const char *id,
char *arg);

static mlt_properties metadata(mlt_service_type type, const char *id, void *data)
{
char file[PATH_MAX];
mlt_properties result = NULL;

// Load the yaml file
snprintf(file, PATH_MAX, "%s/spatialaudio/filter_%s.yml", mlt_environment("MLT_DATA"), id);
result = mlt_properties_parse_yaml(file);

return result;
}

MLT_REPOSITORY
{
MLT_REGISTER(mlt_service_filter_type, "ambisonic-decoder", filter_ambisonic_decoder_init);
MLT_REGISTER_METADATA(mlt_service_filter_type, "ambisonic-decoder", metadata, NULL);
MLT_REGISTER(mlt_service_filter_type, "ambisonic-encoder", filter_ambisonic_encoder_init);
MLT_REGISTER_METADATA(mlt_service_filter_type, "ambisonic-encoder", metadata, NULL);
}
Loading

0 comments on commit e896a41

Please sign in to comment.