From 63bad22ac4a887daa4385ffee9f40e5be426b636 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Thu, 25 Sep 2025 20:04:27 +0000 Subject: [PATCH] Remove some ffmpeg version conditionals The previous commit uses a FFmpeg 6.1+ API making all those conditionals broken --- .../ffmpeg/ffmpeg_frame_generator.cpp | 4 - .../SourceFiles/ffmpeg/ffmpeg_utility.cpp | 45 +------ Telegram/SourceFiles/ffmpeg/ffmpeg_utility.h | 14 -- .../media/audio/media_audio_capture.cpp | 24 ---- .../media/audio/media_audio_ffmpeg_loader.cpp | 123 ++---------------- .../media/audio/media_audio_ffmpeg_loader.h | 15 --- .../media/audio/media_audio_local_cache.cpp | 28 ---- .../media/clip/media_clip_ffmpeg.cpp | 4 - .../ui/controls/round_video_recorder.cpp | 22 ---- 9 files changed, 16 insertions(+), 263 deletions(-) diff --git a/Telegram/SourceFiles/ffmpeg/ffmpeg_frame_generator.cpp b/Telegram/SourceFiles/ffmpeg/ffmpeg_frame_generator.cpp index de478b784b..365ce64529 100644 --- a/Telegram/SourceFiles/ffmpeg/ffmpeg_frame_generator.cpp +++ b/Telegram/SourceFiles/ffmpeg/ffmpeg_frame_generator.cpp @@ -291,11 +291,7 @@ void FrameGenerator::Impl::jumpToStart() { void FrameGenerator::Impl::resolveNextFrameTiming() { const auto base = _format->streams[_streamId]->time_base; -#if DA_FFMPEG_HAVE_DURATION const auto duration = _next.frame->duration; -#else - const auto duration = _next.frame->pkt_duration; -#endif const auto framePts = _next.frame->pts; auto framePosition = (framePts * 1000LL * base.num) / base.den; _currentFrameDelay = _nextFrameDelay; diff --git a/Telegram/SourceFiles/ffmpeg/ffmpeg_utility.cpp b/Telegram/SourceFiles/ffmpeg/ffmpeg_utility.cpp index f261b7d6dc..f429b7f003 100644 --- a/Telegram/SourceFiles/ffmpeg/ffmpeg_utility.cpp +++ b/Telegram/SourceFiles/ffmpeg/ffmpeg_utility.cpp @@ -512,18 +512,10 @@ void SwresampleDeleter::operator()(SwrContext *value) { } SwresamplePointer MakeSwresamplePointer( -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT AVChannelLayout *srcLayout, -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - uint64_t srcLayout, -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT AVSampleFormat srcFormat, int srcRate, -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT AVChannelLayout *dstLayout, -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - uint64_t dstLayout, -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT AVSampleFormat dstFormat, int dstRate, SwresamplePointer *existing) { @@ -534,16 +526,8 @@ SwresamplePointer MakeSwresamplePointer( // to the resulting context, so the caching doesn't work. if (existing && (*existing) != nullptr) { const auto &deleter = existing->get_deleter(); - if (true -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT - && srcLayout->nb_channels == deleter.srcChannels + if (srcLayout->nb_channels == deleter.srcChannels && dstLayout->nb_channels == deleter.dstChannels -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - && (av_get_channel_layout_nb_channels(srcLayout) - == deleter.srcChannels) - && (av_get_channel_layout_nb_channels(dstLayout) - == deleter.dstChannels) -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT && srcFormat == deleter.srcFormat && dstFormat == deleter.dstFormat && srcRate == deleter.srcRate @@ -553,10 +537,8 @@ SwresamplePointer MakeSwresamplePointer( } // Initialize audio resampler - AvErrorWrap error; -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT auto result = (SwrContext*)nullptr; - error = AvErrorWrap(swr_alloc_set_opts2( + auto error = AvErrorWrap(swr_alloc_set_opts2( &result, dstLayout, dstFormat, @@ -570,21 +552,6 @@ SwresamplePointer MakeSwresamplePointer( LogError(u"swr_alloc_set_opts2"_q, error); return SwresamplePointer(); } -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - auto result = swr_alloc_set_opts( - existing ? existing->get() : nullptr, - dstLayout, - dstFormat, - dstRate, - srcLayout, - srcFormat, - srcRate, - 0, - nullptr); - if (!result) { - LogError(u"swr_alloc_set_opts"_q); - } -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT error = AvErrorWrap(swr_init(result)); if (error) { @@ -598,18 +565,10 @@ SwresamplePointer MakeSwresamplePointer( { srcFormat, srcRate, -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT srcLayout->nb_channels, -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - av_get_channel_layout_nb_channels(srcLayout), -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT dstFormat, dstRate, -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT dstLayout->nb_channels, -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - av_get_channel_layout_nb_channels(dstLayout), -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT }); } diff --git a/Telegram/SourceFiles/ffmpeg/ffmpeg_utility.h b/Telegram/SourceFiles/ffmpeg/ffmpeg_utility.h index 6397cbb926..99becdd061 100644 --- a/Telegram/SourceFiles/ffmpeg/ffmpeg_utility.h +++ b/Telegram/SourceFiles/ffmpeg/ffmpeg_utility.h @@ -24,15 +24,9 @@ extern "C" { #include } // extern "C" -#define DA_FFMPEG_NEW_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_INT >= \ - AV_VERSION_INT(57, 28, 100)) - #define DA_FFMPEG_CONST_WRITE_CALLBACK (LIBAVFORMAT_VERSION_INT >= \ AV_VERSION_INT(61, 01, 100)) -#define DA_FFMPEG_HAVE_DURATION (LIBAVUTIL_VERSION_INT >= \ - AV_VERSION_INT(58, 02, 100)) - class QImage; namespace FFmpeg { @@ -203,18 +197,10 @@ struct SwresampleDeleter { }; using SwresamplePointer = std::unique_ptr; [[nodiscard]] SwresamplePointer MakeSwresamplePointer( -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT AVChannelLayout *srcLayout, -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - uint64_t srcLayout, -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT AVSampleFormat srcFormat, int srcRate, -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT AVChannelLayout *dstLayout, -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - uint64_t dstLayout, -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT AVSampleFormat dstFormat, int dstRate, SwresamplePointer *existing = nullptr); diff --git a/Telegram/SourceFiles/media/audio/media_audio_capture.cpp b/Telegram/SourceFiles/media/audio/media_audio_capture.cpp index d46f8789c5..d79b456753 100644 --- a/Telegram/SourceFiles/media/audio/media_audio_capture.cpp +++ b/Telegram/SourceFiles/media/audio/media_audio_capture.cpp @@ -398,13 +398,8 @@ bool Instance::Inner::initializeFFmpeg() { d->codecContext->sample_fmt = AV_SAMPLE_FMT_FLTP; d->codecContext->bit_rate = 32000; -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT d->codecContext->ch_layout = AV_CHANNEL_LAYOUT_MONO; d->channels = d->codecContext->ch_layout.nb_channels; -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - d->codecContext->channel_layout = AV_CH_LAYOUT_MONO; - d->channels = d->codecContext->channels = 1; -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT d->codecContext->sample_rate = kCaptureFrequency; if (d->fmtContext->oformat->flags & AVFMT_GLOBALHEADER) { @@ -429,7 +424,6 @@ bool Instance::Inner::initializeFFmpeg() { // Using _captured directly // Prepare resampling -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT res = swr_alloc_set_opts2( &d->swrContext, &d->codecContext->ch_layout, @@ -440,19 +434,6 @@ bool Instance::Inner::initializeFFmpeg() { d->codecContext->sample_rate, 0, nullptr); -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - d->swrContext = swr_alloc_set_opts( - d->swrContext, - d->codecContext->channel_layout, - d->codecContext->sample_fmt, - d->codecContext->sample_rate, - d->codecContext->channel_layout, - AV_SAMPLE_FMT_S16, - d->codecContext->sample_rate, - 0, - nullptr); - res = 0; -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT if (res < 0 || !d->swrContext) { LOG(("Audio Error: Unable to swr_alloc_set_opts2 for capture, error %1, %2").arg(res).arg(av_make_error_string(err, sizeof(err), res))); return false; @@ -786,12 +767,7 @@ bool Instance::Inner::processFrame(int32 offset, int32 framesize) { AVFrame *frame = av_frame_alloc(); frame->format = d->codecContext->sample_fmt; -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT av_channel_layout_copy(&frame->ch_layout, &d->codecContext->ch_layout); -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - frame->channels = d->codecContext->channels; - frame->channel_layout = d->codecContext->channel_layout; -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT frame->sample_rate = d->codecContext->sample_rate; frame->nb_samples = d->dstSamples; frame->pts = av_rescale_q(d->fullSamples, AVRational { 1, d->codecContext->sample_rate }, d->codecContext->time_base); diff --git a/Telegram/SourceFiles/media/audio/media_audio_ffmpeg_loader.cpp b/Telegram/SourceFiles/media/audio/media_audio_ffmpeg_loader.cpp index bdfe863bd6..3dc9e15e9b 100644 --- a/Telegram/SourceFiles/media/audio/media_audio_ffmpeg_loader.cpp +++ b/Telegram/SourceFiles/media/audio/media_audio_ffmpeg_loader.cpp @@ -25,19 +25,6 @@ using FFmpeg::LogError; } // namespace -#if !DA_FFMPEG_NEW_CHANNEL_LAYOUT -uint64_t AbstractFFMpegLoader::ComputeChannelLayout( - uint64_t channel_layout, - int channels) { - if (channel_layout) { - if (av_get_channel_layout_nb_channels(channel_layout) == channels) { - return channel_layout; - } - } - return av_get_default_channel_layout(channels); -} -#endif // !DA_FFMPEG_NEW_CHANNEL_LAYOUT - int64 AbstractFFMpegLoader::Mul(int64 value, AVRational rational) { return value * rational.num / rational.den; } @@ -244,41 +231,14 @@ bool AbstractAudioFFMpegLoader::initUsingContext( not_null context, float64 speed) { _swrSrcSampleFormat = context->sample_fmt; -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT const AVChannelLayout mono = AV_CHANNEL_LAYOUT_MONO; const AVChannelLayout stereo = AV_CHANNEL_LAYOUT_STEREO; - const auto useMono = !av_channel_layout_compare( - &context->ch_layout, - &mono); - const auto useStereo = !av_channel_layout_compare( - &context->ch_layout, - &stereo); - const auto copyDstChannelLayout = [&] { - av_channel_layout_copy(&_swrDstChannelLayout, &context->ch_layout); - }; -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - const auto layout = ComputeChannelLayout( - context->channel_layout, - context->channels); - if (!layout) { - LOG(("Audio Error: Unknown channel layout %1 for %2 channels." - ).arg(context->channel_layout - ).arg(context->channels - )); - return false; - } - const auto useMono = (layout == AV_CH_LAYOUT_MONO); - const auto useStereo = (layout == AV_CH_LAYOUT_STEREO); - const auto copyDstChannelLayout = [&] { - _swrDstChannelLayout = layout; - }; -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT - if (useMono) { + if (!av_channel_layout_compare(&context->ch_layout, &mono)) { switch (_swrSrcSampleFormat) { case AV_SAMPLE_FMT_U8: case AV_SAMPLE_FMT_U8P: _swrDstSampleFormat = _swrSrcSampleFormat; - copyDstChannelLayout(); + av_channel_layout_copy(&_swrDstChannelLayout, &context->ch_layout); _outputChannels = 1; _outputSampleSize = 1; _outputFormat = AL_FORMAT_MONO8; @@ -286,24 +246,24 @@ bool AbstractAudioFFMpegLoader::initUsingContext( case AV_SAMPLE_FMT_S16: case AV_SAMPLE_FMT_S16P: _swrDstSampleFormat = _swrSrcSampleFormat; - copyDstChannelLayout(); + av_channel_layout_copy(&_swrDstChannelLayout, &context->ch_layout); _outputChannels = 1; _outputSampleSize = sizeof(uint16); _outputFormat = AL_FORMAT_MONO16; break; } - } else if (useStereo) { + } else if (!av_channel_layout_compare(&context->ch_layout, &stereo)) { switch (_swrSrcSampleFormat) { case AV_SAMPLE_FMT_U8: _swrDstSampleFormat = _swrSrcSampleFormat; - copyDstChannelLayout(); + av_channel_layout_copy(&_swrDstChannelLayout, &context->ch_layout); _outputChannels = 2; _outputSampleSize = 2; _outputFormat = AL_FORMAT_STEREO8; break; case AV_SAMPLE_FMT_S16: _swrDstSampleFormat = _swrSrcSampleFormat; - copyDstChannelLayout(); + av_channel_layout_copy(&_swrDstChannelLayout, &context->ch_layout); _outputChannels = 2; _outputSampleSize = 2 * sizeof(uint16); _outputFormat = AL_FORMAT_STEREO16; @@ -400,34 +360,16 @@ auto AbstractAudioFFMpegLoader::fillFrameFromQueued() bool AbstractAudioFFMpegLoader::frameHasDesiredFormat( not_null frame) const { - const auto sameChannelLayout = [&] { -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT - return !av_channel_layout_compare( - &frame->ch_layout, - &_swrDstChannelLayout); -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - const auto frameChannelLayout = ComputeChannelLayout( - frame->channel_layout, - frame->channels); - return (frameChannelLayout == _swrDstChannelLayout); -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT - }; return true && (frame->format == _swrDstSampleFormat) && (frame->sample_rate == _swrDstRate) - && sameChannelLayout(); + && !av_channel_layout_compare( + &frame->ch_layout, + &_swrDstChannelLayout); } bool AbstractAudioFFMpegLoader::initResampleForFrame() { -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT - const auto bad = !_frame->ch_layout.nb_channels; -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - const auto frameChannelLayout = ComputeChannelLayout( - _frame->channel_layout, - _frame->channels); - const auto bad = !frameChannelLayout; -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT - if (bad) { + if (!_frame->ch_layout.nb_channels) { LOG(("Audio Error: " "Unknown channel layout for frame in file '%1', " "data size '%2'" @@ -443,38 +385,25 @@ bool AbstractAudioFFMpegLoader::initResampleForFrame() { )); return false; } else if (_swrContext) { - const auto sameChannelLayout = [&] { -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT - return !av_channel_layout_compare( - &_frame->ch_layout, - &_swrSrcChannelLayout); -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - return (frameChannelLayout == _swrSrcChannelLayout); -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT - }; if (true && (_frame->format == _swrSrcSampleFormat) && (_frame->sample_rate == _swrSrcRate) - && sameChannelLayout()) { + && !av_channel_layout_compare( + &_frame->ch_layout, + &_swrSrcChannelLayout)) { return true; } swr_close(_swrContext); } _swrSrcSampleFormat = static_cast(_frame->format); -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT av_channel_layout_copy(&_swrSrcChannelLayout, &_frame->ch_layout); -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - _swrSrcChannelLayout = frameChannelLayout; -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT _swrSrcRate = _frame->sample_rate; return initResampleUsingFormat(); } bool AbstractAudioFFMpegLoader::initResampleUsingFormat() { - AvErrorWrap error = 0; -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT - error = swr_alloc_set_opts2( + auto error = swr_alloc_set_opts2( &_swrContext, &_swrDstChannelLayout, _swrDstSampleFormat, @@ -484,18 +413,6 @@ bool AbstractAudioFFMpegLoader::initResampleUsingFormat() { _swrSrcRate, 0, nullptr); -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - _swrContext = swr_alloc_set_opts( - _swrContext, - _swrDstChannelLayout, - _swrDstSampleFormat, - _swrDstRate, - _swrSrcChannelLayout, - _swrSrcSampleFormat, - _swrSrcRate, - 0, - nullptr); -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT if (error || !_swrContext) { LogError(u"swr_alloc_set_opts2"_q, error); return false; @@ -524,13 +441,9 @@ bool AbstractAudioFFMpegLoader::ensureResampleSpaceAvailable(int samples) { AV_ROUND_UP))); _resampledFrame->sample_rate = _swrDstRate; _resampledFrame->format = _swrDstSampleFormat; -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT av_channel_layout_copy( &_resampledFrame->ch_layout, &_swrDstChannelLayout); -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - _resampledFrame->channel_layout = _swrDstChannelLayout; -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT _resampledFrame->nb_samples = allocate; if (AvErrorWrap error = av_frame_get_buffer(_resampledFrame.get(), 0)) { LogError(u"av_frame_get_buffer"_q, error); @@ -589,18 +502,10 @@ void AbstractAudioFFMpegLoader::createSpeedFilter(float64 speed) { } char layout[64] = { 0 }; -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT av_channel_layout_describe( &_swrDstChannelLayout, layout, sizeof(layout)); -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - av_get_channel_layout_string( - layout, - sizeof(layout), - 0, - _swrDstChannelLayout); -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT av_opt_set( _filterSrc, diff --git a/Telegram/SourceFiles/media/audio/media_audio_ffmpeg_loader.h b/Telegram/SourceFiles/media/audio/media_audio_ffmpeg_loader.h index 5c7d3df8df..d5ccc90947 100644 --- a/Telegram/SourceFiles/media/audio/media_audio_ffmpeg_loader.h +++ b/Telegram/SourceFiles/media/audio/media_audio_ffmpeg_loader.h @@ -50,12 +50,6 @@ public: return _samplesFrequency; } -#if !DA_FFMPEG_NEW_CHANNEL_LAYOUT - static uint64_t ComputeChannelLayout( - uint64_t channel_layout, - int channels); -#endif // !DA_FFMPEG_NEW_CHANNEL_LAYOUT - [[nodiscard]] int64 startedAtSample() const { return _startedAtSample; } @@ -72,11 +66,7 @@ protected: uchar *ioBuffer = nullptr; AVIOContext *ioContext = nullptr; AVFormatContext *fmtContext = nullptr; -#if LIBAVFORMAT_VERSION_MAJOR >= 59 const AVCodec *codec = nullptr; -#else - AVCodec *codec = nullptr; -#endif int32 streamId = 0; bool _opened = false; @@ -170,13 +160,8 @@ private: const int _swrDstRate = Media::Player::kDefaultFrequency; AVSampleFormat _swrDstSampleFormat = AV_SAMPLE_FMT_S16; -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT AVChannelLayout _swrSrcChannelLayout = AV_CHANNEL_LAYOUT_STEREO; AVChannelLayout _swrDstChannelLayout = AV_CHANNEL_LAYOUT_STEREO; -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - uint64_t _swrSrcChannelLayout = 0; - uint64_t _swrDstChannelLayout = AV_CH_LAYOUT_STEREO; -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT AVFilterGraph *_filterGraph = nullptr; float64 _filterSpeed = 1.; diff --git a/Telegram/SourceFiles/media/audio/media_audio_local_cache.cpp b/Telegram/SourceFiles/media/audio/media_audio_local_cache.cpp index 7d9f994001..73c7d7d693 100644 --- a/Telegram/SourceFiles/media/audio/media_audio_local_cache.cpp +++ b/Telegram/SourceFiles/media/audio/media_audio_local_cache.cpp @@ -45,12 +45,7 @@ constexpr auto kFrameSize = 4096; } -#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(58, 79, 100) auto inCodec = (const AVCodec*)nullptr; -#else - auto inCodec = (AVCodec*)nullptr; -#endif - const auto streamId = av_find_best_stream( input.get(), AVMEDIA_TYPE_AUDIO, @@ -106,7 +101,6 @@ constexpr auto kFrameSize = 4096; return {}; } -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT auto mono = AVChannelLayout(AV_CHANNEL_LAYOUT_MONO); auto stereo = AVChannelLayout(AV_CHANNEL_LAYOUT_STEREO); const auto in = &inCodecContext->ch_layout; @@ -116,16 +110,6 @@ constexpr auto kFrameSize = 4096; } else { outCodecContext->ch_layout = AV_CHANNEL_LAYOUT_STEREO; } -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - const auto in = inCodecContext->channels; - if (in == 1 || in == 2) { - outCodecContext->channels = in; - outCodecContext->channel_layout = inCodecContext->channel_layout; - } else { - outCodecContext->channels = 2; - outCodecContext->channel_layout = AV_CH_LAYOUT_STEREO; - } -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT const auto rate = 44'100; outCodecContext->sample_fmt = AV_SAMPLE_FMT_S16; outCodecContext->time_base = AVRational{ 1, rate }; @@ -152,17 +136,10 @@ constexpr auto kFrameSize = 4096; } auto swrContext = MakeSwresamplePointer( -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT &inCodecContext->ch_layout, inCodecContext->sample_fmt, inCodecContext->sample_rate, &outCodecContext->ch_layout, -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - inCodecContext->channel_layout, - inCodecContext->sample_fmt, - inCodecContext->sample_rate, - outCodecContext->channel_layout, -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT outCodecContext->sample_fmt, outCodecContext->sample_rate); if (!swrContext) { @@ -186,14 +163,9 @@ constexpr auto kFrameSize = 4096; outFrame->nb_samples = kFrameSize; outFrame->format = outCodecContext->sample_fmt; -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT av_channel_layout_copy( &outFrame->ch_layout, &outCodecContext->ch_layout); -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - outFrame->channel_layout = outCodecContext->channel_layout; - outFrame->channels = outCodecContext->channels; -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT outFrame->sample_rate = outCodecContext->sample_rate; error = av_frame_get_buffer(outFrame.get(), 0); diff --git a/Telegram/SourceFiles/media/clip/media_clip_ffmpeg.cpp b/Telegram/SourceFiles/media/clip/media_clip_ffmpeg.cpp index 1188f02324..22bbfd6d5f 100644 --- a/Telegram/SourceFiles/media/clip/media_clip_ffmpeg.cpp +++ b/Telegram/SourceFiles/media/clip/media_clip_ffmpeg.cpp @@ -144,11 +144,7 @@ ReaderImplementation::ReadResult FFMpegReaderImplementation::readNextFrame() { } void FFMpegReaderImplementation::processReadFrame() { -#if DA_FFMPEG_HAVE_DURATION int64 duration = _frame->duration; -#else - int64 duration = _frame->pkt_duration; -#endif int64 framePts = _frame->pts; crl::time frameMs = (framePts * 1000LL * _fmtContext->streams[_streamId]->time_base.num) / _fmtContext->streams[_streamId]->time_base.den; _currentFrameDelay = _nextFrameDelay; diff --git a/Telegram/SourceFiles/ui/controls/round_video_recorder.cpp b/Telegram/SourceFiles/ui/controls/round_video_recorder.cpp index 36a03c66ee..e91a52cb9a 100644 --- a/Telegram/SourceFiles/ui/controls/round_video_recorder.cpp +++ b/Telegram/SourceFiles/ui/controls/round_video_recorder.cpp @@ -428,12 +428,6 @@ bool RoundVideoRecorder::Private::initAudio() { _audioCodec->sample_fmt = AV_SAMPLE_FMT_FLTP; _audioCodec->bit_rate = kAudioBitRate; _audioCodec->sample_rate = kAudioFrequency; -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT - _audioCodec->ch_layout = AV_CHANNEL_LAYOUT_MONO; -#else - _audioCodec->channel_layout = AV_CH_LAYOUT_MONO; - _audioCodec->channels = _audioChannels; -#endif auto error = AvErrorWrap(avcodec_open2( _audioCodec.get(), @@ -452,7 +446,6 @@ bool RoundVideoRecorder::Private::initAudio() { return false; } -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT _swrContext = MakeSwresamplePointer( &_audioCodec->ch_layout, AV_SAMPLE_FMT_S16, @@ -461,16 +454,6 @@ bool RoundVideoRecorder::Private::initAudio() { _audioCodec->sample_fmt, _audioCodec->sample_rate, &_swrContext); -#else // DA_FFMPEG_NEW_CHANNEL_LAYOUT - _swrContext = MakeSwresamplePointer( - _audioCodec->channel_layout, - AV_SAMPLE_FMT_S16, - _audioCodec->sample_rate, - _audioCodec->channel_layout, - _audioCodec->sample_fmt, - _audioCodec->sample_rate, - &_swrContext); -#endif // DA_FFMPEG_NEW_CHANNEL_LAYOUT if (!_swrContext) { return false; } @@ -483,12 +466,7 @@ bool RoundVideoRecorder::Private::initAudio() { _audioFrame->nb_samples = _audioCodec->frame_size; _audioFrame->format = _audioCodec->sample_fmt; _audioFrame->sample_rate = _audioCodec->sample_rate; -#if DA_FFMPEG_NEW_CHANNEL_LAYOUT av_channel_layout_copy(&_audioFrame->ch_layout, &_audioCodec->ch_layout); -#else - _audioFrame->channel_layout = _audioCodec->channel_layout; - _audioFrame->channels = _audioCodec->channels; -#endif error = AvErrorWrap(av_frame_get_buffer(_audioFrame.get(), 0)); if (error) {