diff --git a/ext_includes/libavutil/ffversion.h b/ext_includes/libavutil/ffversion.h index 44703a1e..b4f4624c 100644 --- a/ext_includes/libavutil/ffversion.h +++ b/ext_includes/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-87071-g511fb115ac" +#define FFMPEG_VERSION "N-87071-gf77e7dd324" #endif /* AVUTIL_FFVERSION_H */ diff --git a/ext_includes/libswresample/swresample.h b/ext_includes/libswresample/swresample.h new file mode 100644 index 00000000..c7b84fbc --- /dev/null +++ b/ext_includes/libswresample/swresample.h @@ -0,0 +1,579 @@ +/* + * Copyright (C) 2011-2013 Michael Niedermayer (michaelni@gmx.at) + * + * This file is part of libswresample + * + * libswresample is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * libswresample 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 libswresample; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef SWRESAMPLE_SWRESAMPLE_H +#define SWRESAMPLE_SWRESAMPLE_H + +/** + * @file + * @ingroup lswr + * libswresample public header + */ + +/** + * @defgroup lswr libswresample + * @{ + * + * Audio resampling, sample format conversion and mixing library. + * + * Interaction with lswr is done through SwrContext, which is + * allocated with swr_alloc() or swr_alloc_set_opts(). It is opaque, so all parameters + * must be set with the @ref avoptions API. + * + * The first thing you will need to do in order to use lswr is to allocate + * SwrContext. This can be done with swr_alloc() or swr_alloc_set_opts(). If you + * are using the former, you must set options through the @ref avoptions API. + * The latter function provides the same feature, but it allows you to set some + * common options in the same statement. + * + * For example the following code will setup conversion from planar float sample + * format to interleaved signed 16-bit integer, downsampling from 48kHz to + * 44.1kHz and downmixing from 5.1 channels to stereo (using the default mixing + * matrix). This is using the swr_alloc() function. + * @code + * SwrContext *swr = swr_alloc(); + * av_opt_set_channel_layout(swr, "in_channel_layout", AV_CH_LAYOUT_5POINT1, 0); + * av_opt_set_channel_layout(swr, "out_channel_layout", AV_CH_LAYOUT_STEREO, 0); + * av_opt_set_int(swr, "in_sample_rate", 48000, 0); + * av_opt_set_int(swr, "out_sample_rate", 44100, 0); + * av_opt_set_sample_fmt(swr, "in_sample_fmt", AV_SAMPLE_FMT_FLTP, 0); + * av_opt_set_sample_fmt(swr, "out_sample_fmt", AV_SAMPLE_FMT_S16, 0); + * @endcode + * + * The same job can be done using swr_alloc_set_opts() as well: + * @code + * SwrContext *swr = swr_alloc_set_opts(NULL, // we're allocating a new context + * AV_CH_LAYOUT_STEREO, // out_ch_layout + * AV_SAMPLE_FMT_S16, // out_sample_fmt + * 44100, // out_sample_rate + * AV_CH_LAYOUT_5POINT1, // in_ch_layout + * AV_SAMPLE_FMT_FLTP, // in_sample_fmt + * 48000, // in_sample_rate + * 0, // log_offset + * NULL); // log_ctx + * @endcode + * + * Once all values have been set, it must be initialized with swr_init(). If + * you need to change the conversion parameters, you can change the parameters + * using @ref AVOptions, as described above in the first example; or by using + * swr_alloc_set_opts(), but with the first argument the allocated context. + * You must then call swr_init() again. + * + * The conversion itself is done by repeatedly calling swr_convert(). + * Note that the samples may get buffered in swr if you provide insufficient + * output space or if sample rate conversion is done, which requires "future" + * samples. Samples that do not require future input can be retrieved at any + * time by using swr_convert() (in_count can be set to 0). + * At the end of conversion the resampling buffer can be flushed by calling + * swr_convert() with NULL in and 0 in_count. + * + * The samples used in the conversion process can be managed with the libavutil + * @ref lavu_sampmanip "samples manipulation" API, including av_samples_alloc() + * function used in the following example. + * + * The delay between input and output, can at any time be found by using + * swr_get_delay(). + * + * The following code demonstrates the conversion loop assuming the parameters + * from above and caller-defined functions get_input() and handle_output(): + * @code + * uint8_t **input; + * int in_samples; + * + * while (get_input(&input, &in_samples)) { + * uint8_t *output; + * int out_samples = av_rescale_rnd(swr_get_delay(swr, 48000) + + * in_samples, 44100, 48000, AV_ROUND_UP); + * av_samples_alloc(&output, NULL, 2, out_samples, + * AV_SAMPLE_FMT_S16, 0); + * out_samples = swr_convert(swr, &output, out_samples, + * input, in_samples); + * handle_output(output, out_samples); + * av_freep(&output); + * } + * @endcode + * + * When the conversion is finished, the conversion + * context and everything associated with it must be freed with swr_free(). + * A swr_close() function is also available, but it exists mainly for + * compatibility with libavresample, and is not required to be called. + * + * There will be no memory leak if the data is not completely flushed before + * swr_free(). + */ + +#include +#include "libavutil/channel_layout.h" +#include "libavutil/frame.h" +#include "libavutil/samplefmt.h" + +#include "libswresample/version.h" + +/** + * @name Option constants + * These constants are used for the @ref avoptions interface for lswr. + * @{ + * + */ + +#define SWR_FLAG_RESAMPLE 1 ///< Force resampling even if equal sample rate +//TODO use int resample ? +//long term TODO can we enable this dynamically? + +/** Dithering algorithms */ +enum SwrDitherType { + SWR_DITHER_NONE = 0, + SWR_DITHER_RECTANGULAR, + SWR_DITHER_TRIANGULAR, + SWR_DITHER_TRIANGULAR_HIGHPASS, + + SWR_DITHER_NS = 64, ///< not part of API/ABI + SWR_DITHER_NS_LIPSHITZ, + SWR_DITHER_NS_F_WEIGHTED, + SWR_DITHER_NS_MODIFIED_E_WEIGHTED, + SWR_DITHER_NS_IMPROVED_E_WEIGHTED, + SWR_DITHER_NS_SHIBATA, + SWR_DITHER_NS_LOW_SHIBATA, + SWR_DITHER_NS_HIGH_SHIBATA, + SWR_DITHER_NB, ///< not part of API/ABI +}; + +/** Resampling Engines */ +enum SwrEngine { + SWR_ENGINE_SWR, /**< SW Resampler */ + SWR_ENGINE_SOXR, /**< SoX Resampler */ + SWR_ENGINE_NB, ///< not part of API/ABI +}; + +/** Resampling Filter Types */ +enum SwrFilterType { + SWR_FILTER_TYPE_CUBIC, /**< Cubic */ + SWR_FILTER_TYPE_BLACKMAN_NUTTALL, /**< Blackman Nuttall windowed sinc */ + SWR_FILTER_TYPE_KAISER, /**< Kaiser windowed sinc */ +}; + +/** + * @} + */ + +/** + * The libswresample context. Unlike libavcodec and libavformat, this structure + * is opaque. This means that if you would like to set options, you must use + * the @ref avoptions API and cannot directly set values to members of the + * structure. + */ +typedef struct SwrContext SwrContext; + +/** + * Get the AVClass for SwrContext. It can be used in combination with + * AV_OPT_SEARCH_FAKE_OBJ for examining options. + * + * @see av_opt_find(). + * @return the AVClass of SwrContext + */ +const AVClass *swr_get_class(void); + +/** + * @name SwrContext constructor functions + * @{ + */ + +/** + * Allocate SwrContext. + * + * If you use this function you will need to set the parameters (manually or + * with swr_alloc_set_opts()) before calling swr_init(). + * + * @see swr_alloc_set_opts(), swr_init(), swr_free() + * @return NULL on error, allocated context otherwise + */ +struct SwrContext *swr_alloc(void); + +/** + * Initialize context after user parameters have been set. + * @note The context must be configured using the AVOption API. + * + * @see av_opt_set_int() + * @see av_opt_set_dict() + * + * @param[in,out] s Swr context to initialize + * @return AVERROR error code in case of failure. + */ +int swr_init(struct SwrContext *s); + +/** + * Check whether an swr context has been initialized or not. + * + * @param[in] s Swr context to check + * @see swr_init() + * @return positive if it has been initialized, 0 if not initialized + */ +int swr_is_initialized(struct SwrContext *s); + +/** + * Allocate SwrContext if needed and set/reset common parameters. + * + * This function does not require s to be allocated with swr_alloc(). On the + * other hand, swr_alloc() can use swr_alloc_set_opts() to set the parameters + * on the allocated context. + * + * @param s existing Swr context if available, or NULL if not + * @param out_ch_layout output channel layout (AV_CH_LAYOUT_*) + * @param out_sample_fmt output sample format (AV_SAMPLE_FMT_*). + * @param out_sample_rate output sample rate (frequency in Hz) + * @param in_ch_layout input channel layout (AV_CH_LAYOUT_*) + * @param in_sample_fmt input sample format (AV_SAMPLE_FMT_*). + * @param in_sample_rate input sample rate (frequency in Hz) + * @param log_offset logging level offset + * @param log_ctx parent logging context, can be NULL + * + * @see swr_init(), swr_free() + * @return NULL on error, allocated context otherwise + */ +struct SwrContext *swr_alloc_set_opts(struct SwrContext *s, + int64_t out_ch_layout, enum AVSampleFormat out_sample_fmt, int out_sample_rate, + int64_t in_ch_layout, enum AVSampleFormat in_sample_fmt, int in_sample_rate, + int log_offset, void *log_ctx); + +/** + * @} + * + * @name SwrContext destructor functions + * @{ + */ + +/** + * Free the given SwrContext and set the pointer to NULL. + * + * @param[in] s a pointer to a pointer to Swr context + */ +void swr_free(struct SwrContext **s); + +/** + * Closes the context so that swr_is_initialized() returns 0. + * + * The context can be brought back to life by running swr_init(), + * swr_init() can also be used without swr_close(). + * This function is mainly provided for simplifying the usecase + * where one tries to support libavresample and libswresample. + * + * @param[in,out] s Swr context to be closed + */ +void swr_close(struct SwrContext *s); + +/** + * @} + * + * @name Core conversion functions + * @{ + */ + +/** Convert audio. + * + * in and in_count can be set to 0 to flush the last few samples out at the + * end. + * + * If more input is provided than output space, then the input will be buffered. + * You can avoid this buffering by using swr_get_out_samples() to retrieve an + * upper bound on the required number of output samples for the given number of + * input samples. Conversion will run directly without copying whenever possible. + * + * @param s allocated Swr context, with parameters set + * @param out output buffers, only the first one need be set in case of packed audio + * @param out_count amount of space available for output in samples per channel + * @param in input buffers, only the first one need to be set in case of packed audio + * @param in_count number of input samples available in one channel + * + * @return number of samples output per channel, negative value on error + */ +int swr_convert(struct SwrContext *s, uint8_t **out, int out_count, + const uint8_t **in , int in_count); + +/** + * Convert the next timestamp from input to output + * timestamps are in 1/(in_sample_rate * out_sample_rate) units. + * + * @note There are 2 slightly differently behaving modes. + * @li When automatic timestamp compensation is not used, (min_compensation >= FLT_MAX) + * in this case timestamps will be passed through with delays compensated + * @li When automatic timestamp compensation is used, (min_compensation < FLT_MAX) + * in this case the output timestamps will match output sample numbers. + * See ffmpeg-resampler(1) for the two modes of compensation. + * + * @param s[in] initialized Swr context + * @param pts[in] timestamp for the next input sample, INT64_MIN if unknown + * @see swr_set_compensation(), swr_drop_output(), and swr_inject_silence() are + * function used internally for timestamp compensation. + * @return the output timestamp for the next output sample + */ +int64_t swr_next_pts(struct SwrContext *s, int64_t pts); + +/** + * @} + * + * @name Low-level option setting functions + * These functons provide a means to set low-level options that is not possible + * with the AVOption API. + * @{ + */ + +/** + * Activate resampling compensation ("soft" compensation). This function is + * internally called when needed in swr_next_pts(). + * + * @param[in,out] s allocated Swr context. If it is not initialized, + * or SWR_FLAG_RESAMPLE is not set, swr_init() is + * called with the flag set. + * @param[in] sample_delta delta in PTS per sample + * @param[in] compensation_distance number of samples to compensate for + * @return >= 0 on success, AVERROR error codes if: + * @li @c s is NULL, + * @li @c compensation_distance is less than 0, + * @li @c compensation_distance is 0 but sample_delta is not, + * @li compensation unsupported by resampler, or + * @li swr_init() fails when called. + */ +int swr_set_compensation(struct SwrContext *s, int sample_delta, int compensation_distance); + +/** + * Set a customized input channel mapping. + * + * @param[in,out] s allocated Swr context, not yet initialized + * @param[in] channel_map customized input channel mapping (array of channel + * indexes, -1 for a muted channel) + * @return >= 0 on success, or AVERROR error code in case of failure. + */ +int swr_set_channel_mapping(struct SwrContext *s, const int *channel_map); + +/** + * Generate a channel mixing matrix. + * + * This function is the one used internally by libswresample for building the + * default mixing matrix. It is made public just as a utility function for + * building custom matrices. + * + * @param in_layout input channel layout + * @param out_layout output channel layout + * @param center_mix_level mix level for the center channel + * @param surround_mix_level mix level for the surround channel(s) + * @param lfe_mix_level mix level for the low-frequency effects channel + * @param rematrix_maxval if 1.0, coefficients will be normalized to prevent + * overflow. if INT_MAX, coefficients will not be + * normalized. + * @param[out] matrix mixing coefficients; matrix[i + stride * o] is + * the weight of input channel i in output channel o. + * @param stride distance between adjacent input channels in the + * matrix array + * @param matrix_encoding matrixed stereo downmix mode (e.g. dplii) + * @param log_ctx parent logging context, can be NULL + * @return 0 on success, negative AVERROR code on failure + */ +int swr_build_matrix(uint64_t in_layout, uint64_t out_layout, + double center_mix_level, double surround_mix_level, + double lfe_mix_level, double rematrix_maxval, + double rematrix_volume, double *matrix, + int stride, enum AVMatrixEncoding matrix_encoding, + void *log_ctx); + +/** + * Set a customized remix matrix. + * + * @param s allocated Swr context, not yet initialized + * @param matrix remix coefficients; matrix[i + stride * o] is + * the weight of input channel i in output channel o + * @param stride offset between lines of the matrix + * @return >= 0 on success, or AVERROR error code in case of failure. + */ +int swr_set_matrix(struct SwrContext *s, const double *matrix, int stride); + +/** + * @} + * + * @name Sample handling functions + * @{ + */ + +/** + * Drops the specified number of output samples. + * + * This function, along with swr_inject_silence(), is called by swr_next_pts() + * if needed for "hard" compensation. + * + * @param s allocated Swr context + * @param count number of samples to be dropped + * + * @return >= 0 on success, or a negative AVERROR code on failure + */ +int swr_drop_output(struct SwrContext *s, int count); + +/** + * Injects the specified number of silence samples. + * + * This function, along with swr_drop_output(), is called by swr_next_pts() + * if needed for "hard" compensation. + * + * @param s allocated Swr context + * @param count number of samples to be dropped + * + * @return >= 0 on success, or a negative AVERROR code on failure + */ +int swr_inject_silence(struct SwrContext *s, int count); + +/** + * Gets the delay the next input sample will experience relative to the next output sample. + * + * Swresample can buffer data if more input has been provided than available + * output space, also converting between sample rates needs a delay. + * This function returns the sum of all such delays. + * The exact delay is not necessarily an integer value in either input or + * output sample rate. Especially when downsampling by a large value, the + * output sample rate may be a poor choice to represent the delay, similarly + * for upsampling and the input sample rate. + * + * @param s swr context + * @param base timebase in which the returned delay will be: + * @li if it's set to 1 the returned delay is in seconds + * @li if it's set to 1000 the returned delay is in milliseconds + * @li if it's set to the input sample rate then the returned + * delay is in input samples + * @li if it's set to the output sample rate then the returned + * delay is in output samples + * @li if it's the least common multiple of in_sample_rate and + * out_sample_rate then an exact rounding-free delay will be + * returned + * @returns the delay in 1 / @c base units. + */ +int64_t swr_get_delay(struct SwrContext *s, int64_t base); + +/** + * Find an upper bound on the number of samples that the next swr_convert + * call will output, if called with in_samples of input samples. This + * depends on the internal state, and anything changing the internal state + * (like further swr_convert() calls) will may change the number of samples + * swr_get_out_samples() returns for the same number of input samples. + * + * @param in_samples number of input samples. + * @note any call to swr_inject_silence(), swr_convert(), swr_next_pts() + * or swr_set_compensation() invalidates this limit + * @note it is recommended to pass the correct available buffer size + * to all functions like swr_convert() even if swr_get_out_samples() + * indicates that less would be used. + * @returns an upper bound on the number of samples that the next swr_convert + * will output or a negative value to indicate an error + */ +int swr_get_out_samples(struct SwrContext *s, int in_samples); + +/** + * @} + * + * @name Configuration accessors + * @{ + */ + +/** + * Return the @ref LIBSWRESAMPLE_VERSION_INT constant. + * + * This is useful to check if the build-time libswresample has the same version + * as the run-time one. + * + * @returns the unsigned int-typed version + */ +unsigned swresample_version(void); + +/** + * Return the swr build-time configuration. + * + * @returns the build-time @c ./configure flags + */ +const char *swresample_configuration(void); + +/** + * Return the swr license. + * + * @returns the license of libswresample, determined at build-time + */ +const char *swresample_license(void); + +/** + * @} + * + * @name AVFrame based API + * @{ + */ + +/** + * Convert the samples in the input AVFrame and write them to the output AVFrame. + * + * Input and output AVFrames must have channel_layout, sample_rate and format set. + * + * If the output AVFrame does not have the data pointers allocated the nb_samples + * field will be set using av_frame_get_buffer() + * is called to allocate the frame. + * + * The output AVFrame can be NULL or have fewer allocated samples than required. + * In this case, any remaining samples not written to the output will be added + * to an internal FIFO buffer, to be returned at the next call to this function + * or to swr_convert(). + * + * If converting sample rate, there may be data remaining in the internal + * resampling delay buffer. swr_get_delay() tells the number of + * remaining samples. To get this data as output, call this function or + * swr_convert() with NULL input. + * + * If the SwrContext configuration does not match the output and + * input AVFrame settings the conversion does not take place and depending on + * which AVFrame is not matching AVERROR_OUTPUT_CHANGED, AVERROR_INPUT_CHANGED + * or the result of a bitwise-OR of them is returned. + * + * @see swr_delay() + * @see swr_convert() + * @see swr_get_delay() + * + * @param swr audio resample context + * @param output output AVFrame + * @param input input AVFrame + * @return 0 on success, AVERROR on failure or nonmatching + * configuration. + */ +int swr_convert_frame(SwrContext *swr, + AVFrame *output, const AVFrame *input); + +/** + * Configure or reconfigure the SwrContext using the information + * provided by the AVFrames. + * + * The original resampling context is reset even on failure. + * The function calls swr_close() internally if the context is open. + * + * @see swr_close(); + * + * @param swr audio resample context + * @param output output AVFrame + * @param input input AVFrame + * @return 0 on success, AVERROR on failure. + */ +int swr_config_frame(SwrContext *swr, const AVFrame *out, const AVFrame *in); + +/** + * @} + * @} + */ + +#endif /* SWRESAMPLE_SWRESAMPLE_H */ diff --git a/ext_includes/libswresample/version.h b/ext_includes/libswresample/version.h new file mode 100644 index 00000000..379177a1 --- /dev/null +++ b/ext_includes/libswresample/version.h @@ -0,0 +1,45 @@ +/* + * Version macros. + * + * This file is part of libswresample + * + * libswresample is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * libswresample 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 libswresample; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef SWRESAMPLE_VERSION_H +#define SWRESAMPLE_VERSION_H + +/** + * @file + * Libswresample version macros + */ + +#include "libavutil/avutil.h" + +#define LIBSWRESAMPLE_VERSION_MAJOR 2 +#define LIBSWRESAMPLE_VERSION_MINOR 8 +#define LIBSWRESAMPLE_VERSION_MICRO 100 + +#define LIBSWRESAMPLE_VERSION_INT AV_VERSION_INT(LIBSWRESAMPLE_VERSION_MAJOR, \ + LIBSWRESAMPLE_VERSION_MINOR, \ + LIBSWRESAMPLE_VERSION_MICRO) +#define LIBSWRESAMPLE_VERSION AV_VERSION(LIBSWRESAMPLE_VERSION_MAJOR, \ + LIBSWRESAMPLE_VERSION_MINOR, \ + LIBSWRESAMPLE_VERSION_MICRO) +#define LIBSWRESAMPLE_BUILD LIBSWRESAMPLE_VERSION_INT + +#define LIBSWRESAMPLE_IDENT "SwR" AV_STRINGIFY(LIBSWRESAMPLE_VERSION) + +#endif /* SWRESAMPLE_VERSION_H */ diff --git a/ext_libs/avcodec-vgmstream-57.dll b/ext_libs/avcodec-vgmstream-57.dll index d1e5829b..40457f95 100644 Binary files a/ext_libs/avcodec-vgmstream-57.dll and b/ext_libs/avcodec-vgmstream-57.dll differ diff --git a/ext_libs/avcodec-vgmstream-57.dll.asc b/ext_libs/avcodec-vgmstream-57.dll.asc index bd0aa9d7..b87597b4 100644 --- a/ext_libs/avcodec-vgmstream-57.dll.asc +++ b/ext_libs/avcodec-vgmstream-57.dll.asc @@ -1,17 +1,17 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 -iQIcBAABCAAGBQJZoOOuAAoJEI1smEefSt5x0TcP/j75QCjmou6nkNu/30KoPTt4 -hqadNthpA16yOSDBwUeX/CguEGWUinnSJ/lYOEtfl8kztOkr9r4Cz19b3Qyy0tP+ -1WSugCJOr92nniaN0NBouLdAo+UxBMCWzegm17hPz3eV+AlpE9K7tvvyqjykzO5e -1YiyiG2JSWF9ePhX6ib8RKdHxRSnNR+0WvsE2yfIRMvIdDsXRY5iNL4kqnYgjqQP -aijWv1/qDwnOdfahVFNnwIdSCkbaieinf+qa+sa61SY4TafHcOwwTLEInMRcyshU -IJiSIGNyBRlW5WPSxgx98SZc9TrfdkyFgYmCq3dy7G1i7hkaMUadHdraQVngSgEo -ocK6j5kJGKo1GAA9ZhvLzMelIj6K+uA/gvni0GMJamcLBeAGHZHVfsUlVRpZ7uh9 -h2C96hju6tQHzh+q3HeVq95V39f9Hi4p1jnxHxx5Sb6P6WqUcOe1UQZgEHpPKnuw -y3eXhkldPP7bXx/VSzbKCXRtSAEgQ+Xx+mPVxuLYRageXXZLCYVcY5EKkgx0QWki -EsWbTQo+komx3XpTQJ0HaS01j/Q0qAZ9M+0PdH9FTayw8ycn13BmC5/klVWILgvs -M2LQSZzJC1/CRJarh7PxyODbBIlItayu/AkhlkI2KPRANWsImHI5ybMTrWi4CpoA -pIDUzD0PXE5FzG6a5Z6p -=gT8M +iQIcBAABCAAGBQJZyDeWAAoJEI1smEefSt5xmPYQAJZb5BEGTRg4o4KD2tvtyXIH +qY10ub7WSTFoEJ4rnXwg3rPVVMmgXGoIcfiald6lNU1cXmMcN/dfPz2HuL19hXz3 +d0B3NAy2HhZVV47D4ixjN3GmKeLjX8UZO3Qa3LsZZSKhNqpAAJPd0efsEjo2P9Rp +b7uq3/B72cn1a1EfeANhOwmzmUPMBLJD5ZCnhDff9jkvakMiSnge+PlsK5eXyOXd +5KcjSXnhHmjsWyccBYbie3LZjcEKyk3h1K8VBE16OIX2NkUyi+LFTmPil51jeH/9 +36L+zISwvJyZoTqVLPQhIhv9hWVMPVBwLr9C0KC3iOrFw72LBkfeCuufv9+xxIwX +lz4+bCsD8aplk9xBmRjo9NVUaawXBmC9HweCv/ImQ8L04EVqwl7efJU64zlpukXP +N25QpIim4uG/AMhaxOVUeQwXRDmmoY+Y879VwY0jgZKkS5vQm97kS0PwwG8xgb+B +q9v6l6vLdRRCIU5b9toSeZEJJ2Hbf9y1ZBKM1+JjOA17GAm118KrPL7YARCcsvRD +IuiamwXRLjfFS4sNsVUC0c11NClAhnyi4egsbLof440Lzk6yvBc+1DER4gWkNeVr +aCBCqU9A7v/jnEyszh4C5R0J9xKNAHeV/H/PdqcKzuhlkR6Pe8a5z5WpyJTMw5Rq +iE+OAEeuA3D1zEW6HbYq +=U168 -----END PGP SIGNATURE----- diff --git a/ext_libs/avformat-vgmstream-57.dll b/ext_libs/avformat-vgmstream-57.dll index 96f4351a..1ccee068 100644 Binary files a/ext_libs/avformat-vgmstream-57.dll and b/ext_libs/avformat-vgmstream-57.dll differ diff --git a/ext_libs/avformat-vgmstream-57.dll.asc b/ext_libs/avformat-vgmstream-57.dll.asc index 85547cf4..bbe2b704 100644 --- a/ext_libs/avformat-vgmstream-57.dll.asc +++ b/ext_libs/avformat-vgmstream-57.dll.asc @@ -1,17 +1,17 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 -iQIcBAABCAAGBQJZoOOvAAoJEI1smEefSt5xSfUQAKZ/tpNg1lL4Sy/bwrC5wnl7 -00glPpfBCIKV+WJp5l/wK0HiKLn3GOV3fy6zVQxBQ1wep7RPWeh9c6Y+EX2ifwFo -Mg688vzxvRf92N+x74h6cEgZpQm9bjOnve6GXkdeLTEVMPfkfTQPniMcMggChX70 -K+GQ6NWBhwZC+3TwBRfIbfNzQl+RaHWCJDF1FudAhwgoIc2+RF4t+XRlvG406ae9 -OvW9r2eIIj40XvL4jD5YRf2+aY+gYrxSSFH/fN9lESFZYI6dH7hdbJIvRHv1mXUT -VvcLRuw9EFrB3YhRt7d07J2AzmnXR0Q1Torr9m5tU5aBxkGbdc+EoEYhEPPKrdn5 -0W8Jrolnpk7rVVv98EotAs+fXpmAlsg0FBQURzMtfyvlWhsroDkP85EjORAV+Qme -+0+qqvcmo1xubMkOlpkPKBiU01Z/u+dlqiico15shxJdqWXhcZYpEyrXXsSb0Zhk -i2I3BK6Acceftrkm3x9ats+MEJ/YQ/isNT0gd3mlz5dg3KeR8131wDjlGG07tkDP -WxnlKPlc9PX+l03KV1SF0I6WUYK0P4hXg3g/cb+MsQtR5JuvafJxU40ddHeZVQSs -Gv/b64bKX5eFmSMvcd2dfKAUBuuagQftIM4XQyrEqi91T5Hodk6ZcFeELYYaopBs -aSIGvswR23LQyPqzNHBq -=c6c1 +iQIcBAABCAAGBQJZyDeYAAoJEI1smEefSt5xtrYP/1FtdtlFhjAqb1LKlUZVQ7Am +C9qXTlxlyuABRK/pznjBeFFFuZsg3VEy0v+aspUuW9frWoFJ4bL754shhXvIfZ0m +bYSJzFPZDkh0dIjani17zIXZtCyXlWJx4gLZ087IWiZU5XGgaQfdUxNYYwF9Zdoe +13L93QdyPHjyw1HnWMX2/sDtz/jB9GZjrO4GkaqQEBDJktF+6vu4Iqq08BmexWYd +3eLN0BTobPdo+slBgRTukmUuVihVlvfi82B567kzcBxxlspdgvIp9XFcD/M1Fy2W +u2/3+zwxceF3EdYY1yEvJLrTCArkBmjUO01KUyiuolxi9BjfAV9xHriql1Ti8FBb +mxJjt5OST3490jk/fAlsfIGD1LtCUKfrFr62qiryz3iUIMPMlmfbjSAtN6V9DLV8 +81GoGi20bPd5wDISDiQJUpnUfcxlQ2FsjGxVXdUdDQhgyN0DLb1o0n4GcnNpvCaI +q+o70wqD3zT+9vrFtwixZurKNJjRAT1QOju5zRdV+FBtWtY/85Abdx2HFrivOuQZ +mDHlRyUIFqlL+iBtuDmaaZvby9FPBLCycTswBBosvfc4flYFA4O7nJu6WKuk9L1w +YKFYDdcoz3vgSdKSuueDCITLU6EQJTiXWpSFyLqaNzLvBbwzLvkm5HGLSJ//Mb7L +bLqqW8+LPjvcaqcbYBc+ +=4AeT -----END PGP SIGNATURE----- diff --git a/ext_libs/avutil-vgmstream-55.dll b/ext_libs/avutil-vgmstream-55.dll index 9b4d3145..6e6ff0d8 100644 Binary files a/ext_libs/avutil-vgmstream-55.dll and b/ext_libs/avutil-vgmstream-55.dll differ diff --git a/ext_libs/avutil-vgmstream-55.dll.asc b/ext_libs/avutil-vgmstream-55.dll.asc index 6cb1857b..a7ab62ea 100644 --- a/ext_libs/avutil-vgmstream-55.dll.asc +++ b/ext_libs/avutil-vgmstream-55.dll.asc @@ -1,17 +1,17 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 -iQIcBAABCAAGBQJZoOOsAAoJEI1smEefSt5xHXAQAK1tDF4/ETaw43JXLgdXAo9d -SKW+q5XCQCmAgBS9Sdq0vUIA29gK0pQPYRH+XVXuBfnOa+uVI+qKlT3RV9eT+2Af -Tl/dgNhWPbJk2im7sCczuaMJ+5bnFEoGeBpXANz6gLfe4mWxaBRRjiRW1UCBNZLq -dGcwnxE9+LwguZE1KvFvCpL/KRhriSw36NQ/Fyfl8ea5ak/oJv2Z7txNRnm2cPa2 -c8n/2QoXo7ZFQXMVhyDiN4Q4G2a8ygRmeMFUXJlNdtX5yiVdVnfVIP8YhKwVXcuQ -za7CDoHB8irDud2nbmi8xrbFBmTDdPObTf6fxwAjINX2qf1aS1uM2YG+Q55u/iBR -CgK7R2J2LN1/Jm+lA6qiKvl4QDA0tOhuON9TfB0nl/mfBoM3LRWPajAl9S0ssRYW -BgXdNJ6UCftULMJc8jtIcM1/DfBaDXUwmPB1h2dNo4FfVH3hlIFGMjjnVr4QlsOn -nMKBfz604LzEhbaYjiZSSR0va02b++41bf+wrkhnIvAzWU1yupXbfOrNujASzVcn -+zyDk6venaFZqo3GJpGKfGb5jrQiGq7cuCa6W8g/qv7Ce5l8wNNppa+4OToF5xST -q6yDBEAFhsXA7DjBOI5kY3D3WBJJx1JG1f/g7ScVVun2qfitJbRSw+LI4WGQVYqv -j3X2VOD3FyfTKLb+faiI -=6ff6 +iQIcBAABCAAGBQJZyDeYAAoJEI1smEefSt5xsEUQAI3hfjwRcQZcHwbO0S3ZMMBt +9bmJKfdH2cAZa4uqaLc9X8ujgLNu5jHe0pLwRp/UEBvjuovy3tgKYsKIaZfSTgoM +EZqN7RBD3xTmd+54zannTU51xtCAMN9aCvq4j/1M4QaR9SL/mENYcJsrA58GGRKZ +4rUDxkA+SMhQLO0qAc0zIoOppOghQVdvJmFKWHLVockSpOyNAcQuzaaXKCAzSFvi +T/ZPeEdP22gn5g6jBRqXXuFnGIsPeZNZDa9N/NL9Rp4XiYjXVaWSrLQZA2j2BqhI +FOQrhmVQj7HdsgNaqwQppaveW8vPiFnLpbXQ/XyUDh6ZzwqKDXaowEEUq4zTaChW +YoMGRFNB9DnjBxAE2iPjonTnEtkpVO1Dwsy56ZAmCJwxCeixRxTi5dL2b0+Kf+ag +LPYOBNAPXfF07vi+cA/kgwz7ffuOhUVGEgLaIB1lFBG6Ssm0tHnKfNpwkfd2wHem +pZT0Vk4fJFL8sQqqyeO6ZmS7cwY7elCfrHi3gbje4pZsoGOsoub7+TTXDSfVPayV +SaXnb/6PzXfKL2w870EvQAlDBZoJfryHJpI4UwMSkDL+8v/3IEiznjXRbDgENEoP +bx5Shi6C487LSgxKTmNBioZouLx/liLZnSg2aCbsglpPwCAcppvSy7UYeT1Zjp+8 +SgqdiBOZ8RFLbC8lg7Ll +=7dYx -----END PGP SIGNATURE----- diff --git a/ext_libs/ffmpeg_options.txt b/ext_libs/ffmpeg_options.txt index 35282e72..4d55b046 100644 --- a/ext_libs/ffmpeg_options.txt +++ b/ext_libs/ffmpeg_options.txt @@ -11,7 +11,6 @@ --disable-avdevice --disable-ffmpeg --disable-postproc ---disable-swresample --disable-avfilter --disable-swscale --disable-network @@ -20,9 +19,10 @@ --disable-dxva2 --disable-everything --enable-hwaccels ---enable-parser=ac3,mpegaudio,xma,vorbis +--enable-swresample +--enable-parser=ac3,mpegaudio,xma,vorbis,opus --enable-demuxer=ac3,asf,xwma,mov,oma,ogg,tak,dsf,wav,aac,dts,dtshd,mp3,bink,flac,msf,xmv,caf,ape,smacker ---enable-decoder=ac3,wmapro,wmav1,wmav2,wmavoice,wmalossless,xma1,xma2,dca,tak,dsd_lsbf,dsd_lsbf_planar,dsd_mbf,dsd_msbf_planar,aac,atrac3,atrac3p,mp3float,bink,binkaudio_dct,binkaudio_rdft,flac,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar,vorbis,ape,adpcm_ima_qt,smackaud +--enable-decoder=ac3,wmapro,wmav1,wmav2,wmavoice,wmalossless,xma1,xma2,dca,tak,dsd_lsbf,dsd_lsbf_planar,dsd_mbf,dsd_msbf_planar,aac,atrac3,atrac3p,mp3float,bink,binkaudio_dct,binkaudio_rdft,flac,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar,vorbis,ape,adpcm_ima_qt,smackaud,opus --disable-parser=mpeg4video,h263 --disable-decoder=mpeg2video,h263,h264,mpeg1video,mpeg2video,mpeg4,hevc,vp9 --disable-cuvid diff --git a/ext_libs/swresample-vgmstream-2.def b/ext_libs/swresample-vgmstream-2.def new file mode 100644 index 00000000..b2fa5a33 --- /dev/null +++ b/ext_libs/swresample-vgmstream-2.def @@ -0,0 +1,24 @@ +EXPORTS + swr_alloc + swr_alloc_set_opts + swr_build_matrix + swr_close + swr_config_frame + swr_convert + swr_convert_frame + swr_drop_output + swr_ffversion DATA + swr_free + swr_get_class + swr_get_delay + swr_get_out_samples + swr_init + swr_inject_silence + swr_is_initialized + swr_next_pts + swr_set_channel_mapping + swr_set_compensation + swr_set_matrix + swresample_configuration + swresample_license + swresample_version diff --git a/ext_libs/swresample-vgmstream-2.dll b/ext_libs/swresample-vgmstream-2.dll new file mode 100644 index 00000000..9023323f Binary files /dev/null and b/ext_libs/swresample-vgmstream-2.dll differ diff --git a/ext_libs/swresample-vgmstream-2.dll.asc b/ext_libs/swresample-vgmstream-2.dll.asc new file mode 100644 index 00000000..ff055357 --- /dev/null +++ b/ext_libs/swresample-vgmstream-2.dll.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2 + +iQIcBAABCAAGBQJZyDeWAAoJEI1smEefSt5xl5EP/0PQxGCcJt05qtMQJz7l3+nK +8d79FJI3WCSsXc2prIssfsCYqnvJ+h0FoCS3QKLdy1pUm4zGu2vvmRgpxcIEAFES +OKFZD1h7qBhXgDV+YcWNWB8/k3P8TU9v/yIP7Ppa0AGGFk5hCuVINfUnYmG0N3lV +ut3XXcdJ+OMwI6V3K+7fVBNCewvi2MSR+IsWyHf7GrJhB6HkDA7SgBPnzb9vnpWR +rV++XmvEnPuVX958UI/+L9OkHc1D0ZfWdprcq9b6qYhVw8bvZ8WBJasJOArZAObj +oxuonBUIV0xUR5DmX14iXOEG1O7rESiF534cDtdIi5G5VSUeEQkB3/WScB2AKt8p +SvD0xxutLkG3B4eRqveELZMOtAm792ZpKdIdlwHHkhmfYkqohF8IoLBy3pPu6nW6 +bHJqBmtZFSDuOvXWibODMz7lIuhJNfzLwDUr1exbFizR04WOrNHsupbpv8Vf+Cjj +UCZ64r5Fph62hqmHemgZq5qCKnZkQL6LRytcweqHVTYpBsFEdrVlA+ASwFj8Ycl5 +4GYfuD78XgRWDhgYMJV87CvIthktjZN1uJEI6uHftzxI79GhEboW+MKEmVPcAnK2 +fbhrHr6dOjO1hOpSCAySjxFUN9OETLr+2OP9u+okGgNt7+5oaReAPbmxpp24lyJP +CgPP7ykgxQN9Gu1FlfLm +=br+F +-----END PGP SIGNATURE-----