On 18.06.2021 22:45, Philip Langdale wrote:
On Sat, 12 Jun 2021 18:47:50 +0200 Timo Rothenpieler <t...@rothenpieler.org> wrote:--- .gitignore | 1 + compat/cuda/ptx2c.sh | 34 ------------ configure | 17 ++++++ ffbuild/.gitignore | 1 + ffbuild/bin2c.c | 76 ++++++++++++++++++++++++++ ffbuild/common.mak | 28 ++++++++-- libavfilter/Makefile | 14 +++-- libavfilter/cuda/load_helper.c | 96 +++++++++++++++++++++++++++++++++ libavfilter/cuda/load_helper.h | 28 ++++++++++ libavfilter/vf_format_cuda.c | 7 ++- libavfilter/vf_overlay_cuda.c | 8 +-- libavfilter/vf_scale_cuda.c | 24 ++++++--- libavfilter/vf_thumbnail_cuda.c | 7 ++- libavfilter/vf_yadif_cuda.c | 7 ++- 14 files changed, 287 insertions(+), 61 deletions(-) delete mode 100755 compat/cuda/ptx2c.sh create mode 100644 ffbuild/bin2c.c create mode 100644 libavfilter/cuda/load_helper.c create mode 100644 libavfilter/cuda/load_helper.hI just had comments about one file:diff --git a/libavfilter/cuda/load_helper.c b/libavfilter/cuda/load_helper.c new file mode 100644 index 0000000000..62d644c29a --- /dev/null +++ b/libavfilter/cuda/load_helper.c @@ -0,0 +1,96 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg 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. + * + * FFmpeg 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 FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" + +#include "libavutil/hwcontext.h" +#include "libavutil/hwcontext_cuda_internal.h" +#include "libavutil/cuda_check.h" + +#if CONFIG_PTX_COMPRESSION +#include <zlib.h> +#define CHUNK_SIZE 1024 * 64 +#endif + +#include "load_helper.h" + +#define CHECK_CU(x) FF_CUDA_CHECK_DL(avctx, cu, x) + +int ff_cuda_load_module(void *avctx, AVCUDADeviceContext *hwctx, CUmodule *cu_module, + const unsigned char *data, const unsigned int length) +{ + CudaFunctions *cu = hwctx->internal->cuda_dl; + +#if CONFIG_PTX_COMPRESSION + z_stream stream = { 0 }; + uint8_t *buf, *tmp; + uint64_t buf_size; + int ret; + + if (inflateInit2(&stream, 32 + 15) != Z_OK) {Can you add a comment explaining the magic numbers?
I have no idea what those numbers do, I copied them from http.c and they work.
+ av_log(avctx, AV_LOG_ERROR, "Error during zlib initialisation: %s\n", stream.msg); + return AVERROR(ENOSYS); + } + + buf_size = CHUNK_SIZE * 4; + buf = av_realloc(NULL, buf_size); + if (!buf) { + inflateEnd(&stream); + return AVERROR(ENOMEM); + } + + stream.next_in = data; + stream.avail_in = length; + + do { + stream.avail_out = buf_size - stream.total_out; + stream.next_out = buf + stream.total_out; + + ret = inflate(&stream, Z_FINISH); + if (ret != Z_OK && ret != Z_STREAM_END) { + av_log(avctx, AV_LOG_ERROR, "zlib inflate error: %s\n", stream.msg); + inflateEnd(&stream); + av_free(buf); + return AVERROR(EINVAL); + } + + if (stream.avail_out == 0) { + buf_size += CHUNK_SIZE; + tmp = av_realloc(buf, buf_size); + if (!tmp) { + inflateEnd(&stream); + av_free(buf); + return AVERROR(ENOMEM); + } + buf = tmp; + } + } while (ret != Z_STREAM_END); + + // NULL-terminate string + // there is guaranteed to be space for this, due to condition in loopThis is because it will still grow the buffer if avail_out is zero at the time you hit Z_STREAM_END?
If avail_out was 0, the condition right above it would have grown it, so it has at least one byte free.
smime.p7s
Description: S/MIME Cryptographic Signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".