diff options
Diffstat (limited to 'src/codec/ffmpeg')
| -rw-r--r-- | src/codec/ffmpeg/decoder.c | 2 | ||||
| -rw-r--r-- | src/codec/ffmpeg/demuxer.c | 3 | ||||
| -rw-r--r-- | src/codec/ffmpeg/meson.build | 16 | ||||
| -rw-r--r-- | src/codec/ffmpeg/packet_ext.c | 3 |
4 files changed, 17 insertions, 7 deletions
diff --git a/src/codec/ffmpeg/decoder.c b/src/codec/ffmpeg/decoder.c index a6431b1..17be6cc 100644 --- a/src/codec/ffmpeg/decoder.c +++ b/src/codec/ffmpeg/decoder.c @@ -3,7 +3,7 @@ #include <al/lib.h> #include <libavutil/cpu.h> -#ifndef CAMU_SINK_NO_VIDEO +#if !defined CAMU_SINK_NO_VIDEO && defined CAMU_FF_DECODER_HWACCEL #include "../../render/renderer.h" #endif diff --git a/src/codec/ffmpeg/demuxer.c b/src/codec/ffmpeg/demuxer.c index 058a423..b612b2d 100644 --- a/src/codec/ffmpeg/demuxer.c +++ b/src/codec/ffmpeg/demuxer.c @@ -14,7 +14,7 @@ static void close_internal(struct camu_ff_demuxer *av) if (av->format_context) { avformat_flush(av->format_context); avformat_close_input(&av->format_context); - avformat_free_context(av->format_context); + // avformat_close_input() should call avformat_free_context(). } } @@ -105,6 +105,7 @@ static bool ff_demuxer_init(struct camu_demuxer *demux, struct cch_handle *handl .mode = CAMU_FFMPEG_COMPAT, .type = type, .duration = duration, + .index = stream->index, .av.stream = stream })); } diff --git a/src/codec/ffmpeg/meson.build b/src/codec/ffmpeg/meson.build index dfbf624..eb68fad 100644 --- a/src/codec/ffmpeg/meson.build +++ b/src/codec/ffmpeg/meson.build @@ -12,9 +12,6 @@ ffmpeg_server_src = [ ] ffmpeg_server_deps = [] -# This is layed out based on how things work currently. -# Obviously the decoder, resampler, scaler, and encoder should -# be a part of a server-side transcoding function. ffmpeg_client_src = [ ffmpeg_src, 'decoder.c', @@ -24,6 +21,16 @@ ffmpeg_client_src = [ ] ffmpeg_client_deps = [] +server_transcode = not get_option('sink-only') +if server_transcode + ffmpeg_server_src += [ + 'decoder.c', + 'resampler.c', + 'scaler.c', + 'encoder.c' + ] +endif + libavutil = dependency('libavutil', required: false) libavformat = dependency('libavformat', required: false) libavcodec = dependency('libavcodec', required: false) @@ -60,6 +67,9 @@ if libavutil.found() and libavformat.found() and libavcodec.found() and libswres # This is probably meaningless compared to libav* versions, it's just something I wanted. ffmpeg_args += ['-DFFMPEG_VERSION="' + ffmpeg_version_string + '"'] ffmpeg_server_deps += [libavutil, libavformat, libavcodec] + if server_transcode + ffmpeg_server_deps += [libswresample, libswscale] + endif ffmpeg_client_deps += [libavutil, libavformat, libavcodec, libswresample, libswscale] soxr = compiler.find_library('soxr', required: false) if soxr.found() diff --git a/src/codec/ffmpeg/packet_ext.c b/src/codec/ffmpeg/packet_ext.c index e7b1da8..acf5bbd 100644 --- a/src/codec/ffmpeg/packet_ext.c +++ b/src/codec/ffmpeg/packet_ext.c @@ -165,8 +165,7 @@ void nn_packet_read_av_dictionary(struct nn_packet *packet, AVDictionary **dict) u32 len; NNWT_PACKET_READ_TYPE(packet, u32, len); NNWT_PACKET_READ_DATA(packet, len, key); - // Key and value MUST be allocated with av_malloc functions, - // just like all FFmpeg structures. + // Key and value MUST be allocated with av_malloc functions. key = av_strndup(key, len); NNWT_PACKET_READ_TYPE(packet, u32, len); NNWT_PACKET_READ_DATA(packet, len, value); |