/*
 *			GPAC - Multimedia Framework C SDK
 *
 *			Authors: Jean Le Feuvre
 *			Copyright (c) Telecom ParisTech 2000-2024
 *					All rights reserved
 *
 *  This file is part of GPAC
 *
 *  GPAC 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, or (at your option)
 *  any later version.
 *
 *  GPAC 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; see the file COPYING.  If not, write to
 *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 */

/*this file is only used with Win32&MSVC to export the symbols from libgpac(static) to libgpac(dynamic) based on the GPAC configuration*/
#include <gpac/setup.h>

#if defined(_WIN32_WCE) || defined(_WIN64)
#define EXPORT_SYMBOL(a) "/export:"#a
#else
#define EXPORT_SYMBOL(a) "/export:_"#a
#endif

#ifdef _WIN32_WCE
#pragma comment (linker, EXPORT_SYMBOL(CE_Assert) )
#pragma comment (linker, EXPORT_SYMBOL(CE_CharToWide) )
#pragma comment (linker, EXPORT_SYMBOL(CE_WideToChar) )
#endif

#pragma comment (linker, EXPORT_SYMBOL(gf_gpac_version) )
#pragma comment (linker, EXPORT_SYMBOL(gf_gpac_copyright) )
#pragma comment (linker, EXPORT_SYMBOL(gf_gpac_copyright_cite) )

#pragma comment (linker, EXPORT_SYMBOL(gf_gpac_abi_major) )
#pragma comment (linker, EXPORT_SYMBOL(gf_gpac_abi_minor) )
#pragma comment (linker, EXPORT_SYMBOL(gf_gpac_abi_micro) )

#pragma comment (linker, EXPORT_SYMBOL(gf_sys_init) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_close) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_set_args) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_get_argc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_get_argv) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_get_arg) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_find_global_arg) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_is_arg_used) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_mark_arg_used) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_is_test_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_old_arch_compat) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_is_quiet) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_features) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_clock) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_clock_high_res) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_get_rti) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_get_battery_state) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_get_options) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_is_gpac_arg) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_print_arg) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_print_core_help) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_set_cfg_option) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_localized) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_get_process_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_set_console_code) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_format_help) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_word_match) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_profiler_set_callback) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_profiler_log) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_profiler_send) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_profiler_enable_sampling) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_profiler_sampling_enabled) )

#ifdef GPAC_ENABLE_COVERAGE
#pragma comment (linker, EXPORT_SYMBOL(gf_sys_is_cov_mode) )
#endif

#pragma comment (linker, EXPORT_SYMBOL(gf_sleep) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mkdir) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rmdir) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dir_exists) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dir_cleanup) )
#pragma comment (linker, EXPORT_SYMBOL(gf_get_default_cache_directory) )
#pragma comment (linker, EXPORT_SYMBOL(gf_get_default_font_dir) )
#pragma comment (linker, EXPORT_SYMBOL(gf_4cc_to_str) )
#pragma comment (linker, EXPORT_SYMBOL(gf_4cc_to_str_safe) )
#pragma comment (linker, EXPORT_SYMBOL(gf_4cc_parse) )
#pragma comment (linker, EXPORT_SYMBOL(gf_error_to_string) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rand_init) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rand) )
#pragma comment (linker, EXPORT_SYMBOL(gf_get_user_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_enum_directory) )
#pragma comment (linker, EXPORT_SYMBOL(gf_file_load_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dynstrcat) )
#pragma comment (linker, EXPORT_SYMBOL(gf_parse_lfrac) )
#pragma comment (linker, EXPORT_SYMBOL(gf_parse_frac) )
#pragma comment (linker, EXPORT_SYMBOL(gf_gmtime) )
#pragma comment (linker, EXPORT_SYMBOL(gf_strnistr) )
#pragma comment (linker, EXPORT_SYMBOL(gf_getch) )
#pragma comment (linker, EXPORT_SYMBOL(gf_read_line_input) )

#pragma comment (linker, EXPORT_SYMBOL(gf_log_modify_tools_levels) )
#pragma comment (linker, EXPORT_SYMBOL(gf_log_set_tools_levels) )
#pragma comment (linker, EXPORT_SYMBOL(gf_log_set_tool_level) )
#pragma comment (linker, EXPORT_SYMBOL(gf_log_get_tool_level) )
#pragma comment (linker, EXPORT_SYMBOL(gf_log_set_strict_error) )
#pragma comment (linker, EXPORT_SYMBOL(gf_log_set_callback) )
#pragma comment (linker, EXPORT_SYMBOL(gf_log_get_tools_levels) )
#pragma comment (linker, EXPORT_SYMBOL(gf_log_reset_file) )
#pragma comment (linker, EXPORT_SYMBOL(gf_log_tool_level_on) )
#pragma comment (linker, EXPORT_SYMBOL(gf_log_use_color) )
#pragma comment (linker, EXPORT_SYMBOL(gf_log_use_file) )

#ifndef GPAC_DISABLE_LOG
#pragma comment (linker, EXPORT_SYMBOL(gf_log) )
#pragma comment (linker, EXPORT_SYMBOL(gf_log_va_list) )
#pragma comment (linker, EXPORT_SYMBOL(gf_log_lt) )
#else
#pragma comment (linker, EXPORT_SYMBOL(gf_log_check_error) )
#endif

#pragma comment (linker, EXPORT_SYMBOL(gf_fsize) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fileio_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fileio_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fileio_get_udta) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fileio_url) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fileio_resource_url) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fileio_translate_url) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fileio_set_stats) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fileio_tag_main_thread) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fileio_is_main_thread) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fileio_set_write_state) )

#pragma comment (linker, EXPORT_SYMBOL(gf_set_progress) )
#pragma comment (linker, EXPORT_SYMBOL(gf_set_progress_callback) )
#pragma comment (linker, EXPORT_SYMBOL(gf_file_delete) )
#pragma comment (linker, EXPORT_SYMBOL(gf_file_move) )
#pragma comment (linker, EXPORT_SYMBOL(gf_file_temp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_file_modification_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fwrite) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fopen) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fclose) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fseek) )
#pragma comment (linker, EXPORT_SYMBOL(gf_ftell) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fread) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fgets) )

#pragma comment (linker, EXPORT_SYMBOL(gf_file_exists) )
#pragma comment (linker, EXPORT_SYMBOL(gf_file_basename) )
#pragma comment (linker, EXPORT_SYMBOL(gf_file_ext_start) )
#pragma comment (linker, EXPORT_SYMBOL(gf_url_colon_suffix) )
#pragma comment (linker, EXPORT_SYMBOL(gf_prompt_has_input) )
#pragma comment (linker, EXPORT_SYMBOL(gf_prompt_get_char) )
#pragma comment (linker, EXPORT_SYMBOL(gf_prompt_set_echo_off) )
#pragma comment (linker, EXPORT_SYMBOL(gf_prompt_get_size) )

#pragma comment (linker, EXPORT_SYMBOL(gf_crc_32) )
#pragma comment (linker, EXPORT_SYMBOL(gf_gz_compress_payload) )
#pragma comment (linker, EXPORT_SYMBOL(gf_gz_compress_payload_ex) )
#pragma comment (linker, EXPORT_SYMBOL(gf_gz_decompress_payload) )
#pragma comment (linker, EXPORT_SYMBOL(gf_gz_decompress_payload_ex) )
#pragma comment (linker, EXPORT_SYMBOL(gf_lz_compress_payload) )
#pragma comment (linker, EXPORT_SYMBOL(gf_lz_decompress_payload) )
#pragma comment (linker, EXPORT_SYMBOL(gf_file_handles_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_timestamp_rescale) )
#pragma comment (linker, EXPORT_SYMBOL(gf_timestamp_rescale_signed) )
#pragma comment (linker, EXPORT_SYMBOL(gf_timestamp_less) )
#pragma comment (linker, EXPORT_SYMBOL(gf_timestamp_less_or_equal) )
#pragma comment (linker, EXPORT_SYMBOL(gf_timestamp_greater) )
#pragma comment (linker, EXPORT_SYMBOL(gf_timestamp_greater_or_equal) )
#pragma comment (linker, EXPORT_SYMBOL(gf_timestamp_equal) )

/* Memory */
#ifdef GPAC_MEMORY_TRACKING
#pragma comment (linker, EXPORT_SYMBOL(gf_mem_malloc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mem_calloc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mem_realloc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mem_free) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mem_strdup) )
#pragma comment (linker, EXPORT_SYMBOL(gf_memory_print) )
#pragma comment (linker, EXPORT_SYMBOL(gf_memory_size) )
#else
#pragma comment (linker, EXPORT_SYMBOL(gf_malloc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_calloc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_realloc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_free) )
#pragma comment (linker, EXPORT_SYMBOL(gf_strdup) )
#endif /*GPAC_MEMORY_TRACKING*/

#pragma comment (linker, EXPORT_SYMBOL(gf_strlcpy) )

/* Sound */
#if !defined(GPAC_DISABLE_COMPOSITOR) &&  !defined(GPAC_DISABLE_RESAMPLE)
#pragma comment (linker, EXPORT_SYMBOL(gf_mixer_set_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mixer_get_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mixer_reconfig) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mixer_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mixer_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mixer_empty) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mixer_lock) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mixer_add_input) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mixer_get_output) )
#endif


/* List */
#pragma comment (linker, EXPORT_SYMBOL(gf_list_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_list_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_list_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_list_add) )
#pragma comment (linker, EXPORT_SYMBOL(gf_list_insert) )
#pragma comment (linker, EXPORT_SYMBOL(gf_list_rem) )
#pragma comment (linker, EXPORT_SYMBOL(gf_list_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_list_enum) )
#pragma comment (linker, EXPORT_SYMBOL(gf_list_find) )
#pragma comment (linker, EXPORT_SYMBOL(gf_list_del_item) )
#pragma comment (linker, EXPORT_SYMBOL(gf_list_reset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_list_last) )
#pragma comment (linker, EXPORT_SYMBOL(gf_list_rem_last) )
#pragma comment (linker, EXPORT_SYMBOL(gf_list_swap) )
#pragma comment (linker, EXPORT_SYMBOL(gf_list_transfer) )
#pragma comment (linker, EXPORT_SYMBOL(gf_list_clone) )
#pragma comment (linker, EXPORT_SYMBOL(gf_list_pop_front) )
#pragma comment (linker, EXPORT_SYMBOL(gf_list_pop_back) )


/* Bitstream */
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_from_file) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_read_bit) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_read_int) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_read_long_int) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_read_u8) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_read_u16) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_read_u24) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_read_u32) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_read_u64) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_read_float) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_read_double) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_read_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_write_int) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_write_long_int) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_write_u8) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_write_u16) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_write_u24) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_write_u32) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_write_u64) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_write_float) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_write_double) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_write_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_set_eos_callback) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_align) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_available) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_get_content) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_skip_bytes) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_seek) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_peek_bits) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_get_position) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_get_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_get_refreshed_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_transfer) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_flush) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_bits_available) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_get_bit_offset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_get_bit_position) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_get_content_no_truncate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_read_vluimsbf5) )

#pragma comment (linker, EXPORT_SYMBOL(gf_bs_read_u16_le) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_read_u32_le) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_truncate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_write_byte) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_write_u16_le) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_write_u32_le) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_enable_emulation_byte_removal ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_get_emulation_byte_removed ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_read_utf8 ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bs_write_utf8 ) )


/* Thread */
#pragma comment (linker, EXPORT_SYMBOL(gf_th_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_th_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_th_run) )
#pragma comment (linker, EXPORT_SYMBOL(gf_th_stop) )
#pragma comment (linker, EXPORT_SYMBOL(gf_th_status) )
#pragma comment (linker, EXPORT_SYMBOL(gf_th_set_priority) )
#pragma comment (linker, EXPORT_SYMBOL(gf_th_id) )

/* Lock */
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_v) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_p) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_try_lock) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_get_num_locks) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sema_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sema_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sema_notify) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sema_wait) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sema_wait_for) )

/* Socket */
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_new_ex) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_reset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_set_buffer_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_set_block_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_get_handle) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_bind) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_connect) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_send) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_receive) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_listen) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_accept) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_server_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_get_host_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_get_local_ip) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_get_local_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_get_remote_address) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_setup_multicast) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_is_multicast_address) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_receive_no_select) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sk_set_usec_wait) )

#pragma comment (linker, EXPORT_SYMBOL(gf_url_is_local) )
#pragma comment (linker, EXPORT_SYMBOL(gf_url_get_absolute_path) )
#pragma comment (linker, EXPORT_SYMBOL(gf_url_concatenate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_url_free) )
#pragma comment (linker, EXPORT_SYMBOL(gf_url_get_resource_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_url_to_fs_path) )
#pragma comment (linker, EXPORT_SYMBOL(gf_url_is_relative) )
#pragma comment (linker, EXPORT_SYMBOL(gf_utc_time_since_1970) )
#pragma comment (linker, EXPORT_SYMBOL(gf_net_get_ntp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_net_get_ntp_ts) )
#pragma comment (linker, EXPORT_SYMBOL(gf_net_get_ntp_diff_ms) )
#pragma comment (linker, EXPORT_SYMBOL(gf_net_set_ntp_shift) )
#pragma comment (linker, EXPORT_SYMBOL(gf_net_get_utc_ts) )
#pragma comment (linker, EXPORT_SYMBOL(gf_net_ntp_to_utc) )

#pragma comment (linker, EXPORT_SYMBOL(gf_errno_str) )
#pragma comment (linker, EXPORT_SYMBOL(gf_get_next_pow2) )
#pragma comment (linker, EXPORT_SYMBOL(gf_htonl) )
#pragma comment (linker, EXPORT_SYMBOL(gf_htons) )
#pragma comment (linker, EXPORT_SYMBOL(gf_ntohl) )
#pragma comment (linker, EXPORT_SYMBOL(gf_ntohs) )

#pragma comment (linker, EXPORT_SYMBOL(gf_blob_register) )
#pragma comment (linker, EXPORT_SYMBOL(gf_blob_unregister) )
#pragma comment (linker, EXPORT_SYMBOL(gf_blob_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_blob_release) )


#pragma comment (linker, EXPORT_SYMBOL(gf_net_get_utc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_net_parse_date) )
#pragma comment (linker, EXPORT_SYMBOL(gf_net_get_timezone) )
#pragma comment (linker, EXPORT_SYMBOL(gf_net_has_ipv6) )
#pragma comment (linker, EXPORT_SYMBOL(gf_net_is_ipv6) )
#pragma comment (linker, EXPORT_SYMBOL(gf_net_enum_interfaces) )
#pragma comment (linker, EXPORT_SYMBOL(gf_base64_encode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_base64_decode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_base16_encode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_base16_decode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bin128_parse) )

#pragma comment (linker, EXPORT_SYMBOL(gf_token_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_token_get_line) )
#pragma comment (linker, EXPORT_SYMBOL(gf_token_find) )
#pragma comment (linker, EXPORT_SYMBOL(gf_token_get_strip) )
#pragma comment (linker, EXPORT_SYMBOL(gf_token_find_word) )

#pragma comment (linker, EXPORT_SYMBOL(gf_cfg_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cfg_force_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cfg_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cfg_save) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cfg_get_key) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cfg_set_key) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cfg_get_section_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cfg_get_section_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cfg_get_key_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cfg_get_key_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cfg_del_section) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cfg_get_filename) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cfg_discard_changes) )

#pragma comment (linker, EXPORT_SYMBOL(gf_opts_get_key) )
#pragma comment (linker, EXPORT_SYMBOL(gf_opts_set_key) )
#pragma comment (linker, EXPORT_SYMBOL(gf_opts_get_key_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_opts_del_section) )
#pragma comment (linker, EXPORT_SYMBOL(gf_opts_get_section_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_opts_get_section_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_opts_get_key_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_opts_discard_changes) )
#pragma comment (linker, EXPORT_SYMBOL(gf_opts_get_bool) )
#pragma comment (linker, EXPORT_SYMBOL(gf_opts_get_int) )
#pragma comment (linker, EXPORT_SYMBOL(gf_opts_get_filename) )
#pragma comment (linker, EXPORT_SYMBOL(gf_opts_default_shared_directory) )
#pragma comment (linker, EXPORT_SYMBOL(gf_opts_save) )
#pragma comment (linker, EXPORT_SYMBOL(gf_creds_check_password) )
#pragma comment (linker, EXPORT_SYMBOL(gf_creds_check_membership) )


#ifndef GPAC_DISABLE_COMPOSITOR
#pragma comment (linker, EXPORT_SYMBOL(gf_modules_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_modules_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_modules_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_modules_get_file_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_module_get_file_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_module_load_static) )
#pragma comment (linker, EXPORT_SYMBOL(gf_modules_load) )
#pragma comment (linker, EXPORT_SYMBOL(gf_modules_load_by_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_modules_close_interface) )
#endif
#pragma comment (linker, EXPORT_SYMBOL(gf_module_get_key) )
#pragma comment (linker, EXPORT_SYMBOL(gf_module_get_bool) )
#pragma comment (linker, EXPORT_SYMBOL(gf_module_get_int) )

#pragma comment (linker, EXPORT_SYMBOL(gf_utf8_wcstombs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_utf8_mbstowcs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_utf8_wcslen) )
#pragma comment (linker, EXPORT_SYMBOL(gf_utf8_to_wcs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_wcs_to_utf8) )
#pragma comment (linker, EXPORT_SYMBOL(gf_utf8_is_legal) )

#if !defined(GPAC_DISABLE_SVG) && !defined(GPAC_DISABLE_COMPOSITOR)
#pragma comment (linker, EXPORT_SYMBOL(gf_utf8_is_right_to_left) )
#pragma comment (linker, EXPORT_SYMBOL(gf_utf8_reorder_bidi) )
#endif


#pragma comment (linker, EXPORT_SYMBOL(gf_lang_get_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_lang_find) )
#pragma comment (linker, EXPORT_SYMBOL(gf_lang_get_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_lang_get_2cc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_lang_get_3cc) )


#pragma comment (linker, EXPORT_SYMBOL(gf_dm_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_new_simple) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_process) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_process_headers) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_get_cache_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_get_stats) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_get_utc_start) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_fetch_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_last_error) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_get_resource_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_mime_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_get_header) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_get_header_sizes_and_times) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_enum_headers) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_set_data_rate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_get_data_rate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_set_auth_callback) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_delete_cached_file_entry_session) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_url_info_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_get_url_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_url_info_init) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_abort) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_set_range) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_sess_setup_from_url) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_get_global_rate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_wget) )

#pragma comment (linker, EXPORT_SYMBOL(gf_xml_sax_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_sax_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_sax_init) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_sax_parse) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_sax_suspend) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_sax_parse_file) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_sax_get_line) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_sax_peek_node) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_sax_binary_file) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_sax_get_error) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_get_root_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_sax_get_node_start_pos) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_sax_get_node_end_pos) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_dom_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_dom_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_dom_parse) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_dom_create_attribute) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_dom_append_child) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_dom_get_root) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_dom_get_error) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_dom_get_line) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_dom_serialize) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_dom_serialize_root) )

#pragma comment (linker, EXPORT_SYMBOL(gf_xml_dom_node_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_dom_node_reset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_dom_parse_string) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_dom_get_root_nodes_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_dom_get_root_idx) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_dom_detach_root) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_parse_bit_sequence) )

#ifndef GPAC_DISABLE_SVG
#pragma comment (linker, EXPORT_SYMBOL(gf_dom_get_key_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dom_get_key_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dom_event_get_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dom_event_fire_ex) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dom_listener_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dom_listener_get) )
#endif

#ifdef GPAC_FIXED_POINT
#pragma comment (linker, EXPORT_SYMBOL(gf_invfix) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mulfix) )
#pragma comment (linker, EXPORT_SYMBOL(gf_muldiv) )
#pragma comment (linker, EXPORT_SYMBOL(gf_divfix) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cos) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sin) )
#pragma comment (linker, EXPORT_SYMBOL(gf_tan) )
#pragma comment (linker, EXPORT_SYMBOL(gf_atan2) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sqrt) )
#pragma comment (linker, EXPORT_SYMBOL(gf_ceil) )
#pragma comment (linker, EXPORT_SYMBOL(gf_floor) )
#pragma comment (linker, EXPORT_SYMBOL(gf_acos) )
#pragma comment (linker, EXPORT_SYMBOL(gf_asin) )
#endif /*GPAC_FIXED_POINT*/

#ifndef GPAC_DISABLE_COMPOSITOR
#pragma comment (linker, EXPORT_SYMBOL(gf_angle_diff) )
#pragma comment (linker, EXPORT_SYMBOL(gf_v2d_len) )
#pragma comment (linker, EXPORT_SYMBOL(gf_v2d_from_polar) )
#pragma comment (linker, EXPORT_SYMBOL(gf_v2d_distance) )
#pragma comment (linker, EXPORT_SYMBOL(gf_irect_union) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rect_union) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rect_center) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rect_overlaps) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rect_equal) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rect_pixelize) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx2d_add_matrix) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx2d_pre_multiply) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx2d_add_translation) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx2d_add_rotation) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx2d_add_scale) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx2d_add_scale_at) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx2d_add_skew) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx2d_add_skew_x) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx2d_add_skew_y) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx2d_inverse) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx2d_apply_coords) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx2d_apply_point) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx2d_apply_rect) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx2d_decompose) )

#pragma comment (linker, EXPORT_SYMBOL(gf_get_bit_size) )

/*exported for 3D tools*/
#pragma comment (linker, EXPORT_SYMBOL(gf_vec_len) )
#pragma comment (linker, EXPORT_SYMBOL(gf_vec_lensq) )
#pragma comment (linker, EXPORT_SYMBOL(gf_vec_dot) )
#pragma comment (linker, EXPORT_SYMBOL(gf_vec_norm) )
#pragma comment (linker, EXPORT_SYMBOL(gf_vec_scale) )
#pragma comment (linker, EXPORT_SYMBOL(gf_vec_cross) )
#pragma comment (linker, EXPORT_SYMBOL(gf_vec_scale_p) )
#pragma comment (linker, EXPORT_SYMBOL(gf_vec_cross_p) )
#pragma comment (linker, EXPORT_SYMBOL(gf_quat_to_rotation) )
#pragma comment (linker, EXPORT_SYMBOL(gf_quat_from_matrix) )
#pragma comment (linker, EXPORT_SYMBOL(gf_quat_from_rotation) )
#pragma comment (linker, EXPORT_SYMBOL(gf_quat_get_inv) )
#pragma comment (linker, EXPORT_SYMBOL(gf_quat_multiply) )
#pragma comment (linker, EXPORT_SYMBOL(gf_quat_rotate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_quat_from_axis_cos) )
#pragma comment (linker, EXPORT_SYMBOL(gf_quat_slerp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bbox_refresh) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bbox_from_rect) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rect_from_bbox) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bbox_grow_point) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bbox_union) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bbox_equal) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bbox_point_inside) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bbox_get_vertices) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_from_mx2d) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_equal) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_add_translation) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_add_scale) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_add_rotation) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_add_matrix) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_add_matrix_2d) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_inverse) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_apply_vec) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_apply_rect) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_ortho) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_perspective) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_lookat) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_apply_bbox) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_apply_bbox_4x4) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_add_matrix_4x4) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_inverse_4x4) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_apply_vec_4x4) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_decompose) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_rotate_vector) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_rotation_matrix_from_vectors) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_apply_bbox_sphere) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_get_yaw_pitch_roll) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_transpose) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx2d_from_mx) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_apply_plane) )
#pragma comment (linker, EXPORT_SYMBOL(gf_plane_get_distance) )
#pragma comment (linker, EXPORT_SYMBOL(gf_plane_intersect_line) )
#pragma comment (linker, EXPORT_SYMBOL(gf_closest_point_to_line) )
#pragma comment (linker, EXPORT_SYMBOL(gf_plane_get_p_vertex_idx) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bbox_plane_relation) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mx_apply_ray) )
#pragma comment (linker, EXPORT_SYMBOL(gf_ray) )
#pragma comment (linker, EXPORT_SYMBOL(gf_ray_hit_box) )
#pragma comment (linker, EXPORT_SYMBOL(gf_ray_hit_sphere) )
#pragma comment (linker, EXPORT_SYMBOL(gf_ray_hit_triangle) )

/*color.h exports*/
#pragma comment (linker, EXPORT_SYMBOL(gf_stretch_bits) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cmx_init) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cmx_set) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cmx_copy) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cmx_multiply) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cmx_apply) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cmx_apply_fixed) )
#pragma comment (linker, EXPORT_SYMBOL(gf_color_parse) )
#pragma comment (linker, EXPORT_SYMBOL(gf_color_get_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_color_enum) )



/*path2d.h exports*/
#pragma comment (linker, EXPORT_SYMBOL(gf_path_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_reset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_close) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_add_move_to) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_add_move_to_vec) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_add_line_to) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_add_line_to_vec) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_add_cubic_to) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_add_cubic_to_vec) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_add_quadratic_to) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_add_quadratic_to_vec) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_add_rect_center) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_add_rect) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_add_ellipse) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_add_bezier) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_add_arc_to) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_add_svg_arc_to) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_add_arc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_get_control_bounds) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_get_bounds) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_flatten) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_get_flatten) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_iterator_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_iterator_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_iterator_get_length) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_iterator_get_transform) )
#pragma comment (linker, EXPORT_SYMBOL(gf_polygone2d_get_convexity) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_get_outline) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_point_over) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_clone) )
#pragma comment (linker, EXPORT_SYMBOL(gf_path_is_empty) )

#endif //GPAC_DISABLE_COMPOSITOR

/*mpeg4_odf.h exports*/
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_desc_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_desc_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_desc_esd_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_parse_descriptor) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_write_descriptor) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_desc_read) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_desc_copy) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_codec_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_codec_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_codec_add_com) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_codec_encode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_codec_get_au) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_codec_set_au) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_codec_decode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_codec_get_com) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_com_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_com_del) )

#pragma comment (linker, EXPORT_SYMBOL(gf_odf_slc_set_pref) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_get_bifs_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_get_text_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_get_laser_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_encode_ui_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sl_depacketize) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_desc_write) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_desc_size) )

#pragma comment (linker, EXPORT_SYMBOL(gf_odf_avc_cfg_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_avc_cfg_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_avc_cfg_read) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_avc_cfg_write) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_avc_cfg_write_bs) )

#pragma comment (linker, EXPORT_SYMBOL(gf_odf_hevc_cfg_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_hevc_cfg_read) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_hevc_cfg_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_hevc_cfg_read_bs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_hevc_cfg_write) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_hevc_cfg_write_bs) )

#pragma comment (linker, EXPORT_SYMBOL(gf_odf_vvc_cfg_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_vvc_cfg_read) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_vvc_cfg_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_vvc_cfg_read_bs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_vvc_cfg_write) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_vvc_cfg_write_bs) )

#pragma comment (linker, EXPORT_SYMBOL(gf_odf_av1_cfg_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_av1_cfg_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_av1_cfg_write) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_av1_cfg_write_bs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_av1_cfg_del ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_desc_write_bs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_vp_cfg_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_vp_cfg_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_vp_cfg_read) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_vp_cfg_read_bs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_vp_cfg_write) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_vp_cfg_write_bs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_dump_txtcfg) )

#pragma comment (linker, EXPORT_SYMBOL(gf_odf_dovi_cfg_del) )


#ifndef GPAC_MINIMAL_ODF
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_desc_add_desc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_desc_list_read) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_desc_list_write) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_desc_list_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_desc_list_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_qos_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_qos_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_qos_add_qualif) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_event_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_event_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_event_set_start_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_event_set_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_event_add_desc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_event_get_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_event_get_start_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_event_get_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_event_get_desc_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_event_get_desc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_event_rem_desc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_codec_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_codec_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_codec_add_event) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_codec_encode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_codec_decode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_codec_get_event) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sl_packetize) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sl_get_header_size) )
#endif /*GPAC_MINIMAL_ODF*/

/*isomedia.h exports*/
#ifndef GPAC_DISABLE_ISOM
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_sample_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_sample_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_last_error) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_probe_file) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_open) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_close) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_delete) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_write_callback) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_moov_first) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_box_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_box_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_box_parse) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_clone_box) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_xml_metadata_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_dims_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_stxt_get_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_new_xml_subtitle_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_xml_subtitle_get_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_open_progressive) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_missing_bytes) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_freeze_order) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_inplace_padding) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_fragmented) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_fragmented_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_fragments_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_fragmented_samples_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_track_fragmented) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_reset_tables) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_reset_data_offset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_release_segment) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_open_segment) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_highest_track_in_scalable_segment) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_refresh_fragmented) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_track_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_timescale) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_original_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_creation_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_track_creation_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_track_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_track_by_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_track_enabled) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_track_flags) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_enum_track_group) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_track_encrypted) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_track_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_media_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_media_subtype) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_mpeg4_subtype) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_media_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sample_description_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sample_description_index) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_self_contained) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_media_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_media_original_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_media_timescale) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_chunks_infos) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_handler_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_media_language) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_check_data_reference) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_data_reference) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sample_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_sample_padding) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sample) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sample_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sample_flags) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sample_for_media_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sample_for_movie_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sample_dts) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sample_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sample_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sample_sync) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_edit_list_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_edits_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_edit) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_copyright_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_copyright) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_has_sync_points) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_has_time_offset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_cts_to_dts_shift) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sync_point_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_root_od) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_disable_odf_conversion) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_track_in_root_od) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_esd) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_decoder_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_reference_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_reference) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_reference_ID) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_has_track_reference) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_filename) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_brand_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_alternate_brand) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_has_padding_bits) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_visual_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_visual_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_visual_bit_depth) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_pixel_aspect_ratio) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_audio_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_chapter_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_chapter) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_user_data_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_user_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_generic_sample_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_fragment_defaults) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_default_sync_track) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_3gp_config_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_ac3_config_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_truehd_config_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_text_set_streaming_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_track_layout_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_track_matrix) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_pl_indication) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_media_encrypted) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_ismacryp_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_ismacryp_media) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_ismacryp_delete_sample) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_ismacryp_sample) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_cenc_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_original_format_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_pssh_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_pssh_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_cenc_media) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sample_cenc_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_cenc_get_sample_aux_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_cenc_get_default_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_avc_svc_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_avc_config_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_svc_config_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_3gp_config_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_hevc_config_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_lhvc_config_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_hevc_lhvc_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_vvc_config_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_vvc_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_meta_item_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_meta_item_by_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_meta_get_next_item_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_meta_item_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_meta_item_flags) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_meta_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_has_meta_xml) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_extract_meta_xml) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_extract_meta_item) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_extract_meta_item_mem) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_meta_image_props) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_has_movie) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_has_segment) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_segment_get_fragment_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_segment_get_track_fragment_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_segment_get_track_fragment_decode_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_segment_get_fragment_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_single_av) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_guess_specification) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_keep_utc_times) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_has_keep_utc_times) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_has_sync_shadows) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_has_sample_dependency) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_find_od_id_for_track) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_apple_get_tag) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_apple_enum_tag) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_wma_enum_tag) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_enum_udta_keys) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_media_data_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_omadrm_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_omadrm_media) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_track_switch_group_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_track_switch_parameter) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_next_alternate_group_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_meta_primary_item_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_meta_get_item_ref_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_meta_item_has_ref) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_meta_get_item_ref_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_JPEG2000) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_rvc_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sample_rap_roll_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_reset_fragment_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_reset_sample_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_reset_seq_num) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_track_original_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_nalu_extract_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_nalu_extract_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_composition_offset_shift) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_needs_layer_reconstruction) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_last_producer_time_box) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_current_tfdt) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_smooth_streaming_moov) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_smooth_next_tfdt) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_adobe_protection_media) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_adobe_protection_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sample_group_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_tile_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_oinf_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_udta_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_udta_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_video_handler_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_sample_is_fragment_start) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_constant_sample_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_constant_sample_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_enable_raw_pack) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_track_magic) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sample_from_dts) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_sample_padding_bits) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_sample_get_subsample) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_sample_has_subsamples) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_sample_get_subsamples_buffer) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_max_sample_delta) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_mpegh_compatible_profiles) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_av1_config_get ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_mvc_config_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_extract_meta_item_get_cenc_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_subtitle_get_mime) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_chunk_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_chunk_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_first_mdat_start) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_unused_box_bytes) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_clean_aperture) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_dovi_config_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_opus_config_get_desc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_pcm_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_lpcm_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_enum_track_references) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_text_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_track_referenced) )

# ifndef GPAC_DISABLE_ISOM_DUMP
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_dump) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_num_supported_boxes) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_supported_box_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_dump_supported_box) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_text_dump) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_dump_ismacryp_protection) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_dump_ismacryp_sample) )
#endif

#ifndef GPAC_DISABLE_ISOM_HINTING
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_payt_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_payt_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_sdp_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_sdp_track_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hinter_track_force_no_offsets) )

# ifndef GPAC_DISABLE_ISOM_DUMP
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_dump_hint_sample) )
#endif

#pragma comment (linker, EXPORT_SYMBOL(gf_isom_hint_pck_read) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_hint_pck_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_hint_pck_new) )

#ifndef GPAC_DISABLE_ISOM_WRITE
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_hint_pck_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_hint_pck_write) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_hint_pck_length) )
#endif

#endif

#ifndef GPAC_DISABLE_ISOM_WRITE
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_timescale) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_new_track) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_remove_track) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_creation_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_track_creation_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_media_creation_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_update_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_track_enabled) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_track_flags) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_track_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_rewrite_track_dependencies) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_add_sample) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_add_sample_shadow) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_append_sample_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_refresh_size_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_add_sample_reference) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_last_sample_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_last_sample_duration_ex) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_track_reference) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_remove_track_references) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_remove_track_reference) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_update_sample) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_update_sample_reference) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_remove_sample) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_final_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_storage_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_enable_compression) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_force_64bit_chunk_offset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_interleave_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_copyright) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_media_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_media_subtype) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_add_track_kind) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_remove_track_kind) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_track_kind) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_track_kind_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_edit) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_edit_with_rate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_modify_edit) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_append_edit) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_remove_edit) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_remove_edits) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_update_edit_list_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_media_language) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_handler_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_add_user_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_add_user_data_boxes) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_remove_user_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_remove_user_data_item) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_add_uuid) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_use_compact_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_disable_brand_rewrite) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_brand_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_modify_alternate_brand) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_reset_alt_brands) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_reset_alt_brands_ex) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_visual_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_visual_color_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_visual_bit_depth) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_dolby_vision_profile) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_pixel_aspect_ratio) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_track_layout_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_track_matrix) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_audio_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_cts_packing) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_shift_cts_offset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_pl_indication) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_root_od_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_root_od_url) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_remove_root_od) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_add_desc_to_root_od) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_add_track_to_root_od) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_remove_track_from_root_od) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_new_mpeg4_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_change_mpeg4_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_add_desc_to_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_new_generic_sample_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_update_bitrate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_clone_sample_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_clone_track) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_clone_pl_indications) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_same_sample_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_add_chapter) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_remove_chapter) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_track_interleaving_group) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_track_priority_in_group) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_hint_max_chunk_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_hint_max_chunk_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_extraction_slc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_make_interleave) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_3gp_config_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_3gp_config_update) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_new_text_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_new_text_sample) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_text_reset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_text_add_text) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_text_add_style) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_text_add_highlight) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_text_set_highlight_color) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_text_add_karaoke) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_text_set_karaoke_segment) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_text_set_scroll_delay) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_text_add_hyperlink) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_text_set_box) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_text_add_blink) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_text_set_wrap) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_text_set_forced) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_text_set_display_flags) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_text_to_sample) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_ismacryp_protection) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_change_ismacryp_protection) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_avc_config_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_avc_config_update) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_avc_set_inband_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_svc_config_update) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_hevc_config_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_hevc_config_update) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_hevc_set_inband_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_lhvc_force_inband_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_lhvc_config_update) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_3gp_config_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_3gp_config_update) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_media_timescale) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_estimate_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_meta_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_add_meta_item) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_add_meta_item_memory) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_remove_meta_item) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_meta_primary_item) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_meta_xml) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_meta_add_item_ref) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_meta_add_item_group) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_iff_create_image_item_from_track) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_iff_create_image_grid_item) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_iff_create_image_overlay_item) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_iff_create_image_identity_item) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_remove_meta_xml) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_apple_set_tag) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_wma_set_tag) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_qt_key) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_next_alternate_group_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_ipod_compatible) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_is_inplace_rewrite) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_disable_inplace_rewrite) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_reset_switch_parameters) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_reset_track_switch_parameter) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_track_switch_parameter) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_alternate_group_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_new_dims_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_rvc_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_sample_rap_group) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_sample_roll_group) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_sample_cenc_group) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_composition_offset_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_add_sample_group_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_add_sample_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_copy_sample_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_remove_sample_group) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_track_group) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_progress_callback) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_apply_box_patch) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_ac3_config_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_ac3_config_update) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_box_write) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_box_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_tmcd_config_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_tmcd_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_track_magic) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_vvc_config_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_vvc_set_inband_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_subtitle_set_mime) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_track_index) )


#ifndef GPAC_DISABLE_ISOM_HINTING
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_setup_hint_track) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_new_hint_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_begin_hint_sample) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_end_hint_sample) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_hint_blank_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_hint_direct_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_hint_sample_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_hint_sample_description_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_rtp_packet_begin) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_rtp_packet_set_flags) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_rtp_packet_set_offset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_rtp_set_timescale) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_rtp_set_time_offset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_rtp_set_time_sequence_offset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_sdp_add_track_line) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_sdp_clean_track) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_sdp_add_line) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_sdp_clean) )
#endif /*GPAC_DISABLE_ISOM_HINTING*/

#ifndef GPAC_DISABLE_ISOM_FRAGMENTS
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_setup_track_fragment) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_finalize_for_fragment) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_start_fragment) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_flush_fragments) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_fragment_reference_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_traf_mss_timeext) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_fragment_option) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_single_moof_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_fragment_add_sample) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_fragment_append_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_clone_pssh) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_start_segment) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_close_segment) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_traf_base_media_decode_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_next_moof_number) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_next_moof_number) )
#endif

#endif /*GPAC_DISABLE_ISOM_WRITE*/

/*isomedia_dev.h exports*/
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_parse_text_sample) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_delete_text_sample) )

#ifndef GPAC_DISABLE_STREAMING
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_streamer_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_streamer_new_ex) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_streamer_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_streamer_append_sdp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_streamer_append_sdp_extended) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_streamer_send_au) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_streamer_send_au_with_sn) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_streamer_send_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_streamer_format_sdp_header) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_streamer_disable_auto_rtcp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_streamer_send_rtcp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_streamer_get_payload_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_streamer_set_interleave_callbacks) )

#endif

#pragma comment (linker, EXPORT_SYMBOL(gf_media_map_esd) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_map_item_esd) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_get_file_hash) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_reduce_aspect_ratio) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_get_reduced_frame_rate) )


#pragma comment (linker, EXPORT_SYMBOL(gf_isom_av1_config_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_av1_config_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_box_equal) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_box_write_header) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_close_fragments) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_get_bitrate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_hevc_set_tile_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_mvc_config_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_mvc_config_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_high_dynamic_range_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_clean_aperture) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_image_sequence_alpha) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_set_image_sequence_coding_constraints) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_svc_config_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_vp_config_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_isom_vp_config_new) )

#endif /*GPAC_DISABLE_ISOM*/


/*service.h exports*/
#ifndef GPAC_DISABLE_COMPOSITOR

/*mediaobject.h exports*/
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_register) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_unregister) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_play) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_stop) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_restart) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_pause) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_resume) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_set_speed) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_get_speed) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_get_loop) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_get_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_should_deactivate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_url_changed) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_fetch_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_release_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_get_object_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_is_muted) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_is_done) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_adjust_clock) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_get_visual_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_get_audio_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_get_current_speed) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_has_audio) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_set_flag) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_get_min_frame_dur) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_event_target_add_node) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_get_nb_views) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_is_started) )

#ifndef GPAC_DISABLE_SVG
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_load_xlink_resource) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_unload_xlink_resource) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_get_scenegraph) )
#endif

#endif

/*ietf.h exports*/
#ifndef GPAC_DISABLE_STREAMING
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_nc_to_string) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_range_parse) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_range_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_range_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_transport_clone) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_transport_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_command_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_command_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_command_reset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_response_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_response_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_response_reset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_session_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_session_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_set_buffer_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_session_reset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_is_my_session) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_get_server_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_get_response) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_get_session_state) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_reset_aggregation) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_send_command) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_set_interleave_callback) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_session_read) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_register_interleave) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_unregister_interleave) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_session_new_server) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_get_command) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_generate_session_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_send_response) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_get_session_ip) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_get_remote_address) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_get_session_port) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_use_tls) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtsp_session_write_interleaved) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_setup_transport) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_set_ports) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_setup_payload) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_enable_nat_keepalive) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_initialize) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_stop) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_set_info_rtp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_get_current_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_reset_buffers) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_read_rtp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_read_rtcp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_decode_rtp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_decode_rtcp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_send_rtcp_report) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_set_loss_rate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_send_bye) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_send_packet) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_is_unicast) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_is_interleaved) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_get_clockrate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_get_low_interleave_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_get_hight_interleave_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_get_transport) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_get_loss) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_get_tcp_bytes_sent) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_get_ports) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sdp_info_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sdp_info_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sdp_info_reset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sdp_info_parse) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sdp_media_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sdp_media_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sdp_conn_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sdp_conn_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sdp_fmtp_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sdp_fmtp_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_builder_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_builder_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_builder_init) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_builder_process) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_builder_format_sdp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_builder_get_payload_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_builder_set_cryp_info) )

#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_depacketizer_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_depacketizer_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_depacketizer_reset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_depacketizer_process) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_reorderer_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_reorderer_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_reorderer_reset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_reorderer_add) )
#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_reorderer_get) )

#pragma comment (linker, EXPORT_SYMBOL(gf_rtp_reset_ssrc) )

#endif /*GPAC_DISABLE_STREAMING*/



#ifndef GPAC_DISABLE_AVILIB
/*avilib exports*/
#pragma comment (linker, EXPORT_SYMBOL(AVI_open_output_file) )
#pragma comment (linker, EXPORT_SYMBOL(AVI_close) )
#pragma comment (linker, EXPORT_SYMBOL(AVI_set_video) )
#pragma comment (linker, EXPORT_SYMBOL(AVI_write_frame) )
#pragma comment (linker, EXPORT_SYMBOL(AVI_set_audio) )
#pragma comment (linker, EXPORT_SYMBOL(AVI_write_audio) )

#endif /*GPAC_DISABLE_AVILIB*/

/*media.h exports*/
#ifndef GPAC_DISABLE_ISOM_HINTING
#pragma comment (linker, EXPORT_SYMBOL(gf_hinter_track_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hinter_track_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hinter_track_process) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hinter_track_finalize) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hinter_finalize) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hinter_track_get_bandwidth) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hinter_track_get_flags) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hinter_track_get_payload_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hinter_can_embbed_data) )
#endif

#ifndef GPAC_DISABLE_MEDIA_IMPORT
#pragma comment (linker, EXPORT_SYMBOL(gf_media_make_isma) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_make_3gpp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_make_psp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_check_qt_prores) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_import) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_import_chapters) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_import_chapters_file) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_change_pl) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_change_color) )

#pragma comment (linker, EXPORT_SYMBOL(gf_media_split_svc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_merge_svc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_split_hevc_tiles) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_split_lhvc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_filter_hevc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dolby_vision_level) )

#endif /*GPAC_DISABLE_MEDIA_IMPORT*/

#pragma comment (linker, EXPORT_SYMBOL(gf_inspect_dump_nalu) )
#pragma comment (linker, EXPORT_SYMBOL(gf_inspect_dump_obu) )
#pragma comment (linker, EXPORT_SYMBOL(gf_inspect_dump_opus) )
#pragma comment (linker, EXPORT_SYMBOL(gf_inspect_dump_prores) )
#pragma comment (linker, EXPORT_SYMBOL(gf_inspect_format_timecode) )

#ifndef GPAC_DISABLE_ISOM_WRITE
#pragma comment (linker, EXPORT_SYMBOL(gf_media_change_par) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_remove_non_rap) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_update_bitrate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_isom_apply_qt_key) )
#endif

#pragma comment (linker, EXPORT_SYMBOL(gf_media_nal_rewrite_samples) )


#ifndef GPAC_DISABLE_AV_PARSERS
#pragma comment (linker, EXPORT_SYMBOL(gf_media_nalu_next_start_code) )
#pragma comment (linker, EXPORT_SYMBOL(gf_media_nalu_remove_emulation_bytes) )

#pragma comment (linker, EXPORT_SYMBOL(gf_avc_get_sps_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_avc_get_pps_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_avc_get_profile_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_avc_hevc_get_chroma_format_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_avc_parse_nalu) )
#pragma comment (linker, EXPORT_SYMBOL(gf_avc_read_sps) )
#pragma comment (linker, EXPORT_SYMBOL(gf_avc_read_pps) )
#pragma comment (linker, EXPORT_SYMBOL(gf_avc_read_sps_bs ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_avc_read_pps_bs ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_avc_hevc_get_chroma_format_name) )

#pragma comment (linker, EXPORT_SYMBOL(gf_hevc_read_vps) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hevc_read_vps_ex) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hevc_read_vps_bs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hevc_read_sps) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hevc_read_sps_ex) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hevc_read_sps_bs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hevc_read_pps) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hevc_read_pps_bs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hevc_get_profile_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hevc_get_sps_info_with_state) )
#pragma comment (linker, EXPORT_SYMBOL(gf_hevc_parse_nalu) )
#pragma comment (linker, EXPORT_SYMBOL(gf_vvc_get_sps_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_vvc_get_profile_name) )

#pragma comment (linker, EXPORT_SYMBOL(gf_av1_parse_obu) )
#pragma comment (linker, EXPORT_SYMBOL(gf_av1_get_obu_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_av1_reset_state) )
#pragma comment (linker, EXPORT_SYMBOL(gf_av1_init_state) )
#pragma comment (linker, EXPORT_SYMBOL(gf_av1_leb128_read) )
#pragma comment (linker, EXPORT_SYMBOL(gf_av1_parse_obu_header) )

#endif /*GPAC_DISABLE_AV_PARSERS*/

#pragma comment (linker, EXPORT_SYMBOL(gf_mpegh_get_mhas_pl) )


#ifndef GPAC_DISABLE_MEDIA_EXPORT
#pragma comment (linker, EXPORT_SYMBOL(gf_media_export) )
#endif /*GPAC_DISABLE_MEDIA_EXPORT*/

/*crypto exports*/
#ifndef GPAC_DISABLE_CRYPTO
#pragma comment (linker, EXPORT_SYMBOL(gf_crypt_open) )
#pragma comment (linker, EXPORT_SYMBOL(gf_crypt_close) )
#pragma comment (linker, EXPORT_SYMBOL(gf_crypt_init) )
#pragma comment (linker, EXPORT_SYMBOL(gf_crypt_decrypt) )
#pragma comment (linker, EXPORT_SYMBOL(gf_crypt_encrypt) )
#pragma comment (linker, EXPORT_SYMBOL(gf_crypt_set_key) )
#pragma comment (linker, EXPORT_SYMBOL(gf_crypt_set_IV) )
#pragma comment (linker, EXPORT_SYMBOL(gf_crypt_get_IV) )
#endif GPAC_DISABLE_CRYPTO

#pragma comment (linker, EXPORT_SYMBOL(gf_sha1_csum) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sha1_file) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sha256_csum) )

#ifndef GPAC_DISABLE_AV_PARSERS
#pragma comment (linker, EXPORT_SYMBOL(gf_m4v_parser_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m4v_parser_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m4v_parse_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m4v_parse_frame) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m4v_get_object_start) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m4v_get_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m4v_rewrite_pl) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mp3_num_channels) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mp3_sampling_rate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mp3_window_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mp3_object_type_indication) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mp3_layer) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mp3_frame_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mp3_get_next_header) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mp3_get_next_header_mem) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m4a_get_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m4a_get_channel_cfg) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m4a_write_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m4a_write_config_bs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m4a_parse_config) )

#pragma comment (linker, EXPORT_SYMBOL(gf_ac3_parser_bs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_eac3_parser_bs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_eac3_parser) )
#pragma comment (linker, EXPORT_SYMBOL(gf_ac3_get_total_channels) )
#pragma comment (linker, EXPORT_SYMBOL(gf_ac3_get_surround_channels) )
#pragma comment (linker, EXPORT_SYMBOL(gf_ac3_get_bitrate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_eac3_get_chan_loc_count) )

#ifndef GPAC_DISABLE_OGG
#pragma comment (linker, EXPORT_SYMBOL(gf_vorbis_parse_header) )
#pragma comment (linker, EXPORT_SYMBOL(gf_vorbis_check_frame) )
#endif

#endif

#pragma comment (linker, EXPORT_SYMBOL(gf_img_parse) )
#pragma comment (linker, EXPORT_SYMBOL(gf_img_jpeg_dec) )
#pragma comment (linker, EXPORT_SYMBOL(gf_img_png_dec) )
#pragma comment (linker, EXPORT_SYMBOL(gf_img_png_enc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m4v_get_profile_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mp3_version) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mp3_version_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m4a_object_type_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m4a_get_profile_name) )

#ifndef GPAC_DISABLE_AV_PARSERS
#pragma comment (linker, EXPORT_SYMBOL(gf_m4a_get_profile) )
#endif

#pragma comment (linker, EXPORT_SYMBOL(gf_mpegv12_get_config) )

#if !defined(GPAC_DISABLE_CRYPTO) && !defined(GPAC_DISABLE_ISOM_WRITE)
/*crypt_tools.h exports*/
#pragma comment (linker, EXPORT_SYMBOL(gf_crypt_file) )
#pragma comment (linker, EXPORT_SYMBOL(gf_crypt_fragment) )
#pragma comment (linker, EXPORT_SYMBOL(gf_decrypt_file) )
#pragma comment (linker, EXPORT_SYMBOL(gf_decrypt_fragment) )
#pragma comment (linker, EXPORT_SYMBOL(gf_crypt_info_load) )
#pragma comment (linker, EXPORT_SYMBOL(gf_crypt_info_del) )

#endif

/*scene_manager.h exports*/

#ifndef GPAC_DISABLE_SCENE_STATS
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_stats_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_stats_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_stats_reset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_stats_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_stats_for_graph) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_stats_for_scene) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_stats_for_command) )
#endif

#ifndef GPAC_DISABLE_SMGR
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_stream_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_stream_au_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_aggregate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_load_init) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_load_done) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_load_string) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_load_run) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_import_bifs_subtitle) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_get_mux_info) )
#endif

#ifndef GPAC_DISABLE_LOADER_BT
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_load_bt_from_string) )
#endif

#if !defined(GPAC_DISABLE_SCENE_ENCODER) && !defined(GPAC_DISABLE_ISOM_WRITE)
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_encode_to_file) )
#endif

#ifndef GPAC_DISABLE_SCENE_DUMP
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_dumper_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_dumper_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_dump) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_dump_command_list) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_dump_graph) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sm_dumper_set_extra_graph) )
#ifndef GPAC_DISABLE_OD_DUMP
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_dump_com) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_dump_desc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odf_dump_com_list) )
#ifndef GPAC_MINIMAL_ODF
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_dump_event) )
#pragma comment (linker, EXPORT_SYMBOL(gf_oci_dump_au) )
#endif
#endif
#endif

#ifndef GPAC_DISABLE_SENG
/*bifsengine exports*/
#pragma comment (linker, EXPORT_SYMBOL(gf_seng_init) )
#pragma comment (linker, EXPORT_SYMBOL(gf_seng_get_stream_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_seng_get_stream_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_seng_encode_context) )
#pragma comment (linker, EXPORT_SYMBOL(gf_seng_encode_from_file) )
#pragma comment (linker, EXPORT_SYMBOL(gf_seng_encode_from_string) )
#pragma comment (linker, EXPORT_SYMBOL(gf_seng_save_context) )
#pragma comment (linker, EXPORT_SYMBOL(gf_seng_enable_aggregation) )
#pragma comment (linker, EXPORT_SYMBOL(gf_seng_aggregate_context) )
#pragma comment (linker, EXPORT_SYMBOL(gf_seng_get_base64_iod) )
#pragma comment (linker, EXPORT_SYMBOL(gf_seng_get_iod) )
#pragma comment (linker, EXPORT_SYMBOL(gf_seng_terminate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_seng_get_stream_carousel_info) )
#endif

/*bifs.h exports*/
#ifndef GPAC_DISABLE_BIFS
#pragma comment (linker, EXPORT_SYMBOL(gf_bifs_decoder_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bifs_decoder_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bifs_decoder_configure_stream) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bifs_decode_au) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bifs_decode_command_list) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bifs_get_aq_info) )
#ifndef GPAC_DISABLE_BIFS_ENC
#pragma comment (linker, EXPORT_SYMBOL(gf_bifs_encoder_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bifs_encoder_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bifs_encoder_new_stream) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bifs_encode_au) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bifs_encoder_get_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bifs_encoder_get_version) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bifs_encoder_get_rap) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bifs_encoder_set_source_url) )
#pragma comment (linker, EXPORT_SYMBOL(gf_bifs_get_child_table) )


#endif
#endif /*GPAC_DISABLE_BIFS*/

#if !defined(GPAC_DISABLE_VRML) || !defined(GPAC_DISABLE_X3D) || !defined(GPAC_DISABLE_SVG)

/*scenegraph.h exports*/
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_tag) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_set_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_name_and_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_private) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_set_private) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_set_callback_function) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_register) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_unregister) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_replace) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_unregister_children) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_allow_cyclic_traverse) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_traverse) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_traverse_children) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_parent_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_parent) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_parent_of) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_class_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_dirty_set) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_dirty_clear) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_dirty_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_dirty_reset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_field) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_field_by_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_graph) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_init) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_scene_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_new_subscene) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_set_scene_time_callback) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_set_node_callback) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_set_private) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_get_private) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_set_scene_size_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_use_pixel_metrics) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_get_scene_size_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_reset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_get_root_node) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_set_root_node) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_find_node) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_find_node_by_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_add_namespace) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_changed) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_clone) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_has_scripting) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_command_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_command_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_command_apply) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_command_apply_list) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_command_field_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_get_next_available_node_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_get_max_node_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_field_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_list_add_child) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_list_add_child_last) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_list_insert_child) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_list_del_child) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_list_find_child) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_list_get_child) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_list_get_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_list_del_child_idx) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_script_get_field_index) )


#pragma comment (linker, EXPORT_SYMBOL(gf_node_dirty_parent_graph) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_dirty_parents) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_proto_root) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_proto_is_grouping) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_proto_set_grouping) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_remove_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_set_cyclic_traverse_flag) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_store_embedded_data) )


#ifndef GPAC_DISABLE_SVG
#pragma comment (linker, EXPORT_SYMBOL(gf_node_dom_listener_add) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dom_event_type_by_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dom_event_fire) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dom_add_text_node) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dom_set_textContent) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dom_flatten_textContent) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_attribute_by_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dom_listener_build) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dom_listener_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_handle_dom_event) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_fire_dom_event) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_event_target_get) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_event_target_remove_by_node) )
#pragma comment (linker, EXPORT_SYMBOL(gf_event_target_get_node) )

#pragma comment (linker, EXPORT_SYMBOL(gf_svg_parse_attribute) )
#pragma comment (linker, EXPORT_SYMBOL(gf_svg_parse_style) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_attribute_by_tag) )
#pragma comment (linker, EXPORT_SYMBOL(gf_svg_create_attribute_value) )
#pragma comment (linker, EXPORT_SYMBOL(gf_svg_flatten_attributes) )
#pragma comment (linker, EXPORT_SYMBOL(gf_svg_apply_inheritance) )
#pragma comment (linker, EXPORT_SYMBOL(gf_svg_properties_init_pointers) )
#pragma comment (linker, EXPORT_SYMBOL(gf_svg_properties_reset_pointers) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_register_iri) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_unregister_iri) )
#pragma comment (linker, EXPORT_SYMBOL(gf_svg_parse_element_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_svg_is_animation_tag) )
#pragma comment (linker, EXPORT_SYMBOL(gf_svg_apply_animations) )
#pragma comment (linker, EXPORT_SYMBOL(gf_svg_attributes_copy) )
#pragma comment (linker, EXPORT_SYMBOL(gf_xml_get_element_tag) )

#pragma comment (linker, EXPORT_SYMBOL(gf_smil_set_media_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_smil_timing_init_runtime_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_smil_timing_insert_clock) )
#pragma comment (linker, EXPORT_SYMBOL(gf_smil_timing_is_active) )

#endif


#ifdef GPAC_HAS_QJS

#ifndef GPAC_DISABLE_SVG
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_js_dom_pre_destroy) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_js_event_add_listener) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_js_event_remove_listener) )
#endif

#endif /*GPAC_HAS_QJS*/

/* scenegraph_vrml.h exports*/
#pragma comment (linker, EXPORT_SYMBOL(gf_node_replace_child) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_sfrotation_interpolate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_mfurl_del) )
#ifndef GPAC_DISABLE_VRML
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_num_fields_in_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_insert_child) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_event_out) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_event_out_str) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_vrml_get_event_type_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_vrml_field_pointer_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_vrml_field_pointer_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_vrml_is_sf_field) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_vrml_get_sf_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_vrml_mf_insert) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_vrml_mf_append) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_vrml_mf_remove) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_vrml_mf_alloc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_vrml_mf_get_item) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_vrml_mf_reset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_vrml_field_copy) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_vrml_field_equal) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_vrml_field_clone) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_route_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_route_new_to_callback) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_route_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_route_del_by_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_route_find) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_route_find_by_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_route_set_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_route_set_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_route_get_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_activate_routes) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_proto_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_proto_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_proto_get_graph) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_proto_get_extern_url) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_proto_add_node_code) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_proto_get_field_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_proto_field_find_by_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_proto_field_find) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_proto_field_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_proto_field_set_ised) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_proto_field_get_field) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_proto_create_instance) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_proto_load_code) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_find_proto) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_delete_all_protos) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_get_proto) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_proto_get_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_proto_get_class_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_proto_field_is_sftime_offset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_proto_instance_set_ised) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_set_proto_eventin_handler) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_script_field_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_script_field_get_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_script_load) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_script_event_in) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_mpeg4_type_by_class_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_get_next_available_route_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_set_max_defined_route_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_get_next_available_proto_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_set_proto_loader) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_sfcolor_to_rgba) )
#pragma comment (linker, EXPORT_SYMBOL(gf_node_in_table_by_tag) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_vrml_get_field_type_name) )

#ifdef GPAC_HAS_QJS
#pragma comment (linker, EXPORT_SYMBOL(gf_js_vrml_flush_event_out) )
#endif


#ifndef GPAC_DISABLE_X3D
#pragma comment (linker, EXPORT_SYMBOL(gf_node_x3d_type_by_class_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_x3d_get_node_type) )
#endif

#ifdef GPAC_HAS_QJS
#ifndef GPAC_DISABLE_SVG
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_handle_dom_event_for_vrml) )
#endif
#endif

#endif /*GPAC_DISABLE_VRML*/

#endif //!defined(GPAC_DISABLE_VRML) && !defined(GPAC_DISABLE_X3D) && !defined(GPAC_DISABLE_SVG)

#ifdef GPAC_HAS_QJS
#pragma comment (linker, EXPORT_SYMBOL(gf_sg_js_get_node) )
#endif


#ifndef GPAC_DISABLE_COMPOSITOR
//compositor exports
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_disconnect) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_navigate_to) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_play_from_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_get_time_in_ms) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_select_service) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_toggle_addons) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_get_url) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_get_main_pid) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_get_world_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_get_current_service_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_dump_scene) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_get_simulation_frame_rate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_connect_from_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_is_supported_url) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_register) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_unregister) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mo_get_scenegraph) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_switch_quality) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_scene_update) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_set_speed) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_get_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_attach_to_compositor) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_find_odm) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_set_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_setup_object) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_register_extra_graph) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_force_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_process_anchor) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_disconnect) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_set_addon_layout_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_select_object) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odm_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odm_setup_object) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odm_disconnect) )
#pragma comment (linker, EXPORT_SYMBOL(gf_clock_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_get_media_object_ex) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_resume_live) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_set_timeshift_depth) )

#pragma comment (linker, EXPORT_SYMBOL(gf_sc_load) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_unload) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_set_fps) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_set_scene) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_draw_frame) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_invalidate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_get_clock) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_lock) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_user_event) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_map_point) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_set_option) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_get_option) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_get_fps) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_get_screen_buffer) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_release_screen_buffer) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_reset_graphics) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_get_viewpoint) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_set_viewpoint) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_set_size) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_register_extra_graph) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_get_compositor) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_focus_switch_ring) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_is_over) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_navigation_supported) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_on_event) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_has_text_selection) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_get_selected_text) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_paste_text) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_add_object) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_get_offscreen_buffer) )


#ifndef GPAC_DISABLE_SVG
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_svg_convert_length_to_display) )
#endif

/*compositor_dev.h exports*/
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_register_time_node) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_unregister_time_node) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_texture_setup) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_texture_destroy) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_texture_get_handler) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_texture_check_url_change) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_texture_play) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_texture_play_from_to) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_texture_stop) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_texture_restart) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_texture_update_frame) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_texture_release_stream) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_audio_register) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_audio_unregister) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_audio_setup) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_audio_open) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_audio_stop) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_audio_restart) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_reload_config) )

#pragma comment (linker, EXPORT_SYMBOL(gf_sc_audio_check_url) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_texture_open) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_texture_stop_no_unregister) )

#pragma comment (linker, EXPORT_SYMBOL(gf_font_manager_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_font_manager_set_font) )
#pragma comment (linker, EXPORT_SYMBOL(gf_font_manager_create_span) )
#pragma comment (linker, EXPORT_SYMBOL(gf_font_manager_refresh_span_bounds) )

#pragma comment (linker, EXPORT_SYMBOL(gf_sc_connect_from_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_disconnect) )
#pragma comment (linker, EXPORT_SYMBOL(gf_sc_send_event) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_switch_quality) )
#pragma comment (linker, EXPORT_SYMBOL(gf_scene_set_service_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_odm_get_object_info) )

#endif

/*mpegts.h exports*/
#ifndef GPAC_DISABLE_MPEG2TS
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_demux_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_demux_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_process_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_reset_parsers) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_reset_parsers_for_program) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_set_pes_framing) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_get_stream_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_restamp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_get_sdt_info) )


/* carousel.h */
#ifdef GPAC_ENABLE_DSMCC
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_get_channel_application_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_process_dsmcc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_init_dsmcc_overlord) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_get_dmscc_overlord) )
#endif
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_demux_dmscc_init) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_probe_file) )



#ifndef GPAC_DISABLE_MPEG2TS_MUX
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_mux_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_mux_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_mux_set_pcr_max_interval) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_mux_program_add) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_program_stream_add) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_mux_update_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_mux_process) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_get_sys_clock) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_get_ts_clock) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_mux_use_single_au_pes_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_mux_set_initial_pcr) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_mux_program_set_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_mux_enable_sdt) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_mux_program_find) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m2ts_mux_enable_pcr_only_packets) )

#endif /*GPAC_DISABLE_MPEG2TS_MUX*/
/* M3U8 & MPD related functions */
#pragma comment (linker, EXPORT_SYMBOL(gf_mpd_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mpd_init_from_dom) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mpd_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m3u8_to_mpd) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mpd_smooth_to_mpd) )

#pragma comment (linker, EXPORT_SYMBOL(gf_m3u8_solve_representation_xlink) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mpd_solve_segment_list_xlink) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mpd_delete_segment_list) )
#pragma comment (linker, EXPORT_SYMBOL(gf_m3u8_parse_master_playlist) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mpd_write) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mpd_write_file) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mpd_get_base_url_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mpd_resolve_url) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mpd_get_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mpd_resolve_segment_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mpd_init_smooth_from_dom) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mpd_complete_from_dom) )
#pragma comment (linker, EXPORT_SYMBOL(gf_mpd_get_segment_start_time_with_timescale) )


#endif /*GPAC_DISABLE_MPEG2TS*/

/*laser.h exports*/
#ifndef GPAC_DISABLE_LASER
#pragma comment (linker, EXPORT_SYMBOL(gf_laser_decoder_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_laser_decoder_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_laser_decoder_set_clock) )
#pragma comment (linker, EXPORT_SYMBOL(gf_laser_decoder_configure_stream) )
#pragma comment (linker, EXPORT_SYMBOL(gf_laser_decoder_remove_stream) )
#pragma comment (linker, EXPORT_SYMBOL(gf_laser_decode_au) )
#pragma comment (linker, EXPORT_SYMBOL(gf_laser_decode_command_list) )
#pragma comment (linker, EXPORT_SYMBOL(gf_laser_encoder_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_laser_encoder_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_laser_encoder_new_stream) )
#pragma comment (linker, EXPORT_SYMBOL(gf_laser_encode_au) )
#pragma comment (linker, EXPORT_SYMBOL(gf_laser_encoder_get_config) )
#pragma comment (linker, EXPORT_SYMBOL(gf_laser_encoder_get_rap) )
#endif /*GPAC_DISABLE_LASER*/

/*download.h exports*/
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_wget) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_wget_with_cache) )

#ifndef GPAC_DISABLE_ISOM_WRITE
/*to be removed once TS fragmenter is moved to libgpac */
#pragma comment (linker, EXPORT_SYMBOL(gf_media_mpd_format_segment_name) )

#pragma comment (linker, EXPORT_SYMBOL(gf_media_get_rfc_6381_codec_name) )
#ifndef GPAC_DISABLE_ISOM_FRAGMENTS
#pragma comment (linker, EXPORT_SYMBOL(gf_media_fragment_file) )
#endif
#endif

#ifndef GPAC_DISABLE_ISOM_WRITE

#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_clean_inputs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_set_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_set_location) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_add_base_url) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_enable_url_template) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_enable_segment_timeline) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_enable_single_segment) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_enable_single_file) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_set_switch_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_set_durations) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_enable_rap_splitting) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_set_segment_marker) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_enable_sidx) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_set_dynamic_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_set_min_buffer) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_set_ast_offset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_enable_memory_fragmenting) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_set_initial_isobmf) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_enable_memory_fragmenting) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_configure_isobmf_default) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_enable_utc_ref) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_enable_real_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_set_content_protection_location_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_set_profile_extension) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_add_input) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_process) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_set_start_date) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_enable_cached_inputs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_enable_loop_inputs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_set_split_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_set_cues) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_print_session_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_keep_source_utc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_set_last_segment_merge) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_next_update_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dasher_set_hls_clock ) )

#endif

/* dvb_mpe.h */
#ifdef GPAC_ENABLE_MPE
#pragma comment (linker, EXPORT_SYMBOL(gf_dvb_mpe_section_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dvb_mpe_init) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dvb_mpe_section_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dvb_mpe_shutdown) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dvb_mpe_print_info) )
#endif

#ifndef GPAC_DISABLE_DASHIN
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_open) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_close) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_get_url) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_is_m3u8) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_get_group_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_get_group_udta) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_set_group_udta) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_is_group_selected) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_is_group_selectable) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_debug_groups) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_get_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_switch_quality) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_get_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_get_time_shift_buffer_depth) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_get_segment_mime) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_get_segment_init_url) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_get_segment_init_keys) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_select) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_seek) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_groups_set_language) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_in_last_period) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_get_period_switch_status) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_request_period_switch) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_is_running) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_is_in_setup) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_discard_segment) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_get_next_segment_location) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_set_group_done) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_in_period_setup) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_seek) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_get_start_range) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_segment_switch_forced) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_get_presentation_time_offset) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_get_video_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_check_bandwidth) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_loop_detected) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_is_dynamic_mpd) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_get_min_buffer_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_set_utc_shift) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_enable_utc_drift_compensation) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_set_max_resolution) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_set_min_timeout_between_404) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_set_segment_expiration_threshold) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_set_user_buffer) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_set_speed) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_set_switching_probe_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_set_agressive_adaptation) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_enable_single_range_llhls) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_get_period_start) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_get_period_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_get_language) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_get_audio_channels) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_enum_descriptor) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_get_num_qualities) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_get_quality_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_get_automatic_switching) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_set_automatic_switching) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_select_quality) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_set_timeshift) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_get_timeshift_buffer_pos) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_set_codec_stat) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_set_buffer_levels) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_set_max_buffer_playout) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_disable_speed_adaptation) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_override_ntp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_has_dependent_group) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_get_num_groups_depending_on) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_get_dependent_group_index) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_set_tile_adaptation_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_get_tile_adaptation_mode) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_disable_low_quality_tiles) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_get_srd_max_size_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_get_srd_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_set_quality_degradation_hint) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_set_visible_rect) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_get_utc_drift_estimate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_set_algo) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_set_route_ast_shift) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_set_suggested_presentation_delay) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_ignore_xlink) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_group_get_num_components) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_all_groups_done) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dash_set_period_xlink_query_string) )

#endif

#if !defined(GPAC_DISABLE_ISOM_WRITE) && !defined(GPAC_DISABLE_VTT)
#pragma comment (linker, EXPORT_SYMBOL(gf_webvtt_parse_cues_from_data) )
#pragma comment (linker, EXPORT_SYMBOL(gf_webvtt_parse_iso_cues) )
#pragma comment (linker, EXPORT_SYMBOL(gf_webvtt_cue_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_webvtt_dump_iso_track) )
#endif

#pragma comment (linker, EXPORT_SYMBOL(utf8_to_ucs4) )


#pragma comment (linker, EXPORT_SYMBOL(gf_route_atsc_dmx_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_atsc_dmx_new_ex) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_dmx_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_dmx_new_ex) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_dmx_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_atsc3_tune_in) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_dmx_process) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_dmx_get_object_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_dmx_remove_object_by_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_dmx_remove_first_object) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_dmx_find_atsc3_service) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_dmx_purge_objects) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_dmx_get_first_packet_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_dmx_get_last_packet_time) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_dmx_get_nb_packets) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_dmx_get_recv_bytes) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_dmx_set_service_udta) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_dmx_get_service_udta) )
#pragma comment (linker, EXPORT_SYMBOL(gf_route_dmx_debug_tsi) )

#pragma comment (linker, EXPORT_SYMBOL(gf_dm_add_cache_entry) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_force_headers) )
#pragma comment (linker, EXPORT_SYMBOL(gf_dm_set_localcache_provider) )

/*filter session exports*/
#pragma comment (linker, EXPORT_SYMBOL(gf_itags_find_by_id3tag) )
#pragma comment (linker, EXPORT_SYMBOL(gf_itags_find_by_itag) )
#pragma comment (linker, EXPORT_SYMBOL(gf_itags_find_by_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_itags_get_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_itags_get_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_itags_get_alt_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_itags_get_itag) )
#pragma comment (linker, EXPORT_SYMBOL(gf_itags_get_id3tag) )
#pragma comment (linker, EXPORT_SYMBOL(gf_itags_enum_tags) )
#pragma comment (linker, EXPORT_SYMBOL(gf_id3_get_genre) )
#pragma comment (linker, EXPORT_SYMBOL(gf_id3_get_genre_tag) )

#pragma comment (linker, EXPORT_SYMBOL(gf_audio_fmt_bit_depth) )
#pragma comment (linker, EXPORT_SYMBOL(gf_audio_fmt_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_audio_fmt_get_cicp_layout) )
#pragma comment (linker, EXPORT_SYMBOL(gf_audio_fmt_get_layout_from_cicp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_audio_fmt_get_layout_name_from_cicp) )
#pragma comment (linker, EXPORT_SYMBOL(gf_audio_fmt_get_layout_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_audio_fmt_get_layout_from_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_audio_fmt_get_cicp_from_layout) )
#pragma comment (linker, EXPORT_SYMBOL(gf_audio_fmt_all_names) )
#pragma comment (linker, EXPORT_SYMBOL(gf_audio_fmt_all_shortnames) )
#pragma comment (linker, EXPORT_SYMBOL(gf_audio_fmt_enum) )
#pragma comment (linker, EXPORT_SYMBOL(gf_audio_fmt_parse) )
#pragma comment (linker, EXPORT_SYMBOL(gf_audio_fmt_get_dolby_chanmap) )
#pragma comment (linker, EXPORT_SYMBOL(gf_audio_fmt_to_isobmf) )



#pragma comment (linker, EXPORT_SYMBOL(gf_stream_type_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_stream_type_short_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_stream_types_enum) )
#pragma comment (linker, EXPORT_SYMBOL(gf_stream_type_by_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_stream_type_afx_name) )

#pragma comment (linker, EXPORT_SYMBOL(gf_pixel_fmt_all_names) )
#pragma comment (linker, EXPORT_SYMBOL(gf_pixel_fmt_all_shortnames) )
#pragma comment (linker, EXPORT_SYMBOL(gf_pixel_get_size_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_pixel_fmt_enum) )
#pragma comment (linker, EXPORT_SYMBOL(gf_pixel_get_bytes_per_pixel) )
#pragma comment (linker, EXPORT_SYMBOL(gf_pixel_fmt_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_pixel_fmt_sname) )
#pragma comment (linker, EXPORT_SYMBOL(gf_pixel_fmt_parse) )
#pragma comment (linker, EXPORT_SYMBOL(gf_pixel_fmt_from_qt_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_pixel_fmt_to_qt_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_pixel_is_wide_depth) )
#pragma comment (linker, EXPORT_SYMBOL(gf_pixel_fmt_probe) )

#pragma comment (linker, EXPORT_SYMBOL(gf_codecid_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_codecid_enum) )
#pragma comment (linker, EXPORT_SYMBOL(gf_codecid_mime) )
#pragma comment (linker, EXPORT_SYMBOL(gf_codecid_alt) )
#pragma comment (linker, EXPORT_SYMBOL(gf_codecid_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_codecid_4cc_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_codecid_file_ext) )
#pragma comment (linker, EXPORT_SYMBOL(gf_codecid_parse) )
#pragma comment (linker, EXPORT_SYMBOL(gf_codec_id_from_isobmf) )
#pragma comment (linker, EXPORT_SYMBOL(gf_codecid_from_oti) )
#pragma comment (linker, EXPORT_SYMBOL(gf_audio_fmt_cicp_enum) )

#pragma comment (linker, EXPORT_SYMBOL(gf_props_get_type_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_props_get_type_desc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_props_parse_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_props_dump_val) )
#pragma comment (linker, EXPORT_SYMBOL(gf_props_dump_alloc) )
#pragma comment (linker, EXPORT_SYMBOL(gf_props_get_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_props_get_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_props_4cc_get_type) )
#pragma comment (linker, EXPORT_SYMBOL(gf_props_4cc_get_name) )

#pragma comment (linker, EXPORT_SYMBOL(gf_props_type_is_enum) )
#pragma comment (linker, EXPORT_SYMBOL(gf_props_parse_enum) )
#pragma comment (linker, EXPORT_SYMBOL(gf_props_enum_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_props_enum_all_names) )
#pragma comment (linker, EXPORT_SYMBOL(gf_props_reset_single) )

#pragma comment (linker, EXPORT_SYMBOL(gf_fs_new) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_new_defaults) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_del) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_load_filter) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_run) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_stop) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_print_stats) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_print_connections) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_print_non_connected) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_print_non_connected_ex) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_print_unused_args) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_set_separators) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_filters_registers_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_get_filter_register) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_send_deferred_play) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_lock_filters) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_get_filters_count) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_get_filter) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_get_filter_stats) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_register_test_filters) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_load_source) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_load_destination) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_post_user_task ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_post_user_task_main ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_abort ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_is_last_task ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_in_final_flush) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_set_source ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_set_source_restricted ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_abort ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_lock ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_lock_all) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_print_all_connections ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_check_filter_register_cap ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_set_max_resolution_chain_length ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_get_max_resolution_chain_length ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_add_filter_register ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_remove_filter_register ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_get_last_connect_error ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_get_last_process_error ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_filter_exists ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_enable_reporting) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_set_ui_callback) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_enum_unmapped_options) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_send_update) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_load_script) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_new_filter) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_get_http_rate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_get_http_max_rate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_set_http_max_rate) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_fire_event) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_is_supported_mime) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_is_supported_source) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_set_filter_creation_callback) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_get_rt_udta) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_set_external_gl_provider) )
#pragma comment (linker, EXPORT_SYMBOL(gf_fs_print_debug_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_send_update ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_arg ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_arg_str ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_ui_event ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_is_alias ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_stats ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_in_parent_chain ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_push_caps) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_set_process_ckb) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_set_configure_ckb) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_set_process_event_ckb) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_set_reconfigure_output_ckb) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_set_probe_data_cbk) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_set_rt_udta) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_rt_udta) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_update_status) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_prevent_blocking) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_block_eos) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_set_max_extra_input_pids) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_block_enabled) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_connections_pending) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_reconnect_output) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_add_event_listener ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_remove_event_listener ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_description) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_version) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_author) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_help) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_args) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_caps) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_release_property) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_udta ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_max_extra_input_pids ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_id ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_enumerate_args) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_info_str) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_ipid_count ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_ipid ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_opid_count ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_opid ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_ask_rt_reschedule ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_set_setup_failure_callback ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_notification_failure ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_setup_failure ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_post_task ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_remove_src ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_remove ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_connect_source ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_connect_destination ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_load_filter ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_is_supported_source ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_url_is_filter) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_output_buffer_max ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_make_sticky ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_hint_single_clock ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_clock_hint ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_override_caps ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_netcap_id ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_name ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_set_name ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_reset_source ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_register_opengl_provider) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_request_opengl) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_count_source_by_protocol) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_disable_probe) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_disable_inputs) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_num_events_queued) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_all_sinks_done) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_has_pid_connection_pending) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_reporting_enabled) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_event_name ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_send_event ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_post_process_task ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_require_source_id ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_register ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_print_all_connections ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_force_main_thread ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_is_sink ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_is_source ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_tag_subsession ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_has_connect_errors ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_is_temporary ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_meta_set_instances ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_meta_get_instances ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_probe_link ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_get_possible_destinations ) )

#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_discard ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_ref ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_ref_props ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_unref ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_data ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_property ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_property_str ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_property_dyn ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_has_properties ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_property ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_property_str ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_enum_properties ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_framing ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_framing ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_dts ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_dts ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_cts ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_cts ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_timescale ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_sap ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_sap ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_roll_info ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_roll_info ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_interlaced ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_interlaced ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_corrupted ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_corrupted ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_duration ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_duration ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_seek_flag ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_seek_flag ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_dependency_flags ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_dependency_flags ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_carousel_version ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_carousel_version ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_byte_offset ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_byte_offset ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_crypt_flags ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_crypt_flags ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_seq_num ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_seq_num ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_clock_type ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_clock_type ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_get_frame_interface ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_expand ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_truncate ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_merge_properties_filter ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_merge_properties ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_new_alloc ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_new_alloc_destructor ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_new_shared_internal ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_new_shared ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_new_ref ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_new_ref_destructor ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_new_frame_interface) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_forward ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_send ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_new_clone ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_new_copy ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_is_blocking_ref) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_ref_ex) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_set_readonly) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_dangling_copy) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pck_check_realloc) )

#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_check_caps ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_copy_properties ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_drop_packet ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_set_name ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_name ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_filter_name ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_orig_src_args ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_buffer_occupancy ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_set_udta ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_udta ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_set_udta_flags ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_udta_flags ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_packet_count ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_packet ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_first_packet_cts ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_first_packet_is_empty ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_is_eos ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_set_eos ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_enum_properties ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_would_block ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_is_sparse ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_query_buffer_duration ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_has_seen_eos ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_eos_received ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_send_event ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_exec_event ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_is_filter_in_parents ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_statistics ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_remove ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_try_pull ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_clock_info ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_timescale ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_clear_eos ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_set_clock_mode ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_args ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_set_max_buffer ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_max_buffer ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_set_loose_connect ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_caps_query ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_caps_query_str ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_resolve_file_template ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_set_discard ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_destination ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_source ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_property ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_property_str ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_info_str) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_set_property ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_set_property_str ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_set_property_dyn ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_set_info) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_set_info_str) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_set_info_dyn) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_set_framing_mode ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_new ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_allow_direct_dispatch ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_alias_udta ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_init_play_event ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_negotiate_property ) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_negotiate_property_str) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_negotiate_property_dyn) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_source_filter) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_enum_destinations) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_discard_block) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_reset_properties) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_require_source_id) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_recompute_dts) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_min_pck_duration) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_is_playing) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_ignore_blocking) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_next_ts) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_has_decoder) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_set_rt_stats) )
#pragma comment (linker, EXPORT_SYMBOL(gf_filter_pid_get_rfc_6381_codec_string) )

#pragma comment (linker, EXPORT_SYMBOL(gf_filter_bind_dash_algo_callbacks) )

#pragma comment (linker, EXPORT_SYMBOL(gf_filter_bind_httpout_callbacks) )
#pragma comment (linker, EXPORT_SYMBOL(gf_httpout_send_request) )


#pragma comment (linker, EXPORT_SYMBOL(gf_cicp_parse_color_primaries) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cicp_parse_color_transfer) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cicp_parse_color_matrix) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cicp_color_primaries_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cicp_color_transfer_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cicp_color_matrix_name) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cicp_color_primaries_all_names) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cicp_color_transfer_all_names) )
#pragma comment (linker, EXPORT_SYMBOL(gf_cicp_color_matrix_all_names) )
