diff --git a/NEWS b/NEWS index 8abcffd47..95c330ab1 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,8 @@ ver 0.23.16 (not yet released) * database - fix integer overflows with 64-bit inode numbers +* filter + - ffmpeg: fix for filters producing no output * support libfmt 11 * support ICU 76 diff --git a/src/filter/plugins/FfmpegFilter.cxx b/src/filter/plugins/FfmpegFilter.cxx index 324b88ec2..cc835ea7d 100644 --- a/src/filter/plugins/FfmpegFilter.cxx +++ b/src/filter/plugins/FfmpegFilter.cxx @@ -66,6 +66,9 @@ FfmpegFilter::FilterPCM(ConstBuffer src) #endif frame->nb_samples = src.size / in_audio_frame_size; + frame->pts = pts; + pts += frame->nb_samples; + frame.GetBuffer(); memcpy(frame.GetData(0), src.data, src.size); diff --git a/src/filter/plugins/FfmpegFilter.hxx b/src/filter/plugins/FfmpegFilter.hxx index 6f7c3773c..edd8fef73 100644 --- a/src/filter/plugins/FfmpegFilter.hxx +++ b/src/filter/plugins/FfmpegFilter.hxx @@ -17,14 +17,15 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef MPD_FFMPEG_FILTER__HXX -#define MPD_FFMPEG_FILTER__HXX +#pragma once #include "filter/Filter.hxx" #include "lib/ffmpeg/Buffer.hxx" #include "lib/ffmpeg/Filter.hxx" #include "lib/ffmpeg/Frame.hxx" +#include + /** * A #Filter implementation using FFmpeg's libavfilter. */ @@ -46,6 +47,11 @@ class FfmpegFilter final : public Filter { const size_t in_audio_frame_size; const size_t out_audio_frame_size; + /** + * Presentation timestamp. A counter for `AVFrame::pts`. + */ + int_least64_t pts = 0; + public: /** * @param _graph a checked and configured AVFilterGraph @@ -63,5 +69,3 @@ public: /* virtual methods from class Filter */ ConstBuffer FilterPCM(ConstBuffer src) override; }; - -#endif