Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
aports
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Monitor
Service Desk
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
alpine
aports
Commits
2e2abf6c
Commit
2e2abf6c
authored
4 months ago
by
J0WI
Committed by
Kevin Daudt
3 months ago
Browse files
Options
Downloads
Patches
Plain Diff
community/ffmpegthumbnailer: upgrade to 2.2.3
parent
a50b2784
No related branches found
No related tags found
2 merge requests
!79570
community/firefox-esr: upgrade to 128.7.0
,
!75769
community/ffmpegthumbnailer: upgrade to 2.2.3
Pipeline
#281180
skipped
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
community/ffmpegthumbnailer/APKBUILD
+4
-7
4 additions, 7 deletions
community/ffmpegthumbnailer/APKBUILD
community/ffmpegthumbnailer/ffmpeg5.patch
+0
-345
0 additions, 345 deletions
community/ffmpegthumbnailer/ffmpeg5.patch
with
4 additions
and
352 deletions
community/ffmpegthumbnailer/APKBUILD
+
4
−
7
View file @
2e2abf6c
# Contributor: Stuart Cardall <developer@it-offshore.co.uk>
# Maintainer: Stuart Cardall <developer@it-offshore.co.uk>
pkgname
=
ffmpegthumbnailer
pkgver
=
2.2.
2
pkgrel
=
7
pkgver
=
2.2.
3
pkgrel
=
0
pkgdesc
=
"Lightweight video thumbnailer that can be used by file managers"
url
=
"https://github.com/dirkvdb/ffmpegthumbnailer"
arch
=
"all"
license
=
"GPL-2.0-or-later"
makedepends
=
"ffmpeg-dev libpng-dev libjpeg-turbo-dev cmake samurai"
subpackages
=
"
$pkgname
-dev
$pkgname
-doc"
source
=
"
$pkgname
-
$pkgver
.tar.bz2::https://github.com/dirkvdb/ffmpegthumbnailer/releases/download/
$pkgver
/ffmpegthumbnailer-
$pkgver
.tar.bz2
ffmpeg5.patch
"
source
=
"
$pkgname
-
$pkgver
.tar.gz::https://github.com/dirkvdb/ffmpegthumbnailer/archive/refs/tags/
$pkgver
.tar.gz"
build
()
{
cmake
-B
build
-G
Ninja
\
...
...
@@ -33,6 +31,5 @@ package() {
}
sha512sums
=
"
52760dcf59430e5e85024c9f19dc1fac1d5f0edb4f937b33feac2b3ca8f12bbf549b5f658fc16fc07bf773717b9e10048aa3eb24bf52811c5c88c995ef492612 ffmpegthumbnailer-2.2.2.tar.bz2
f4a28c49ab4b6c3d740d9c0df47e670cfbeff77889f149762d8509dcf10b3fe67107f00615aadef1d7ee1029f99aaed415b1bbf7dc9b14ac332c17b85e79608c ffmpeg5.patch
b1299c5ea8ae11ab5dd34bfe74d0b117fcd842f9a41e542120cfcb2faaf7a84f5253eb86951095df9afd7912a0faa921fe0274322cf500b9aed38de366751523 ffmpegthumbnailer-2.2.3.tar.gz
"
This diff is collapsed.
Click to expand it.
community/ffmpegthumbnailer/ffmpeg5.patch
deleted
100644 → 0
+
0
−
345
View file @
a50b2784
Patch-Source: https://github.com/dirkvdb/ffmpegthumbnailer/commit/efb5b618f1c1471c1a7900aed3a59d851ea9a210
Patch-Source: https://github.com/dirkvdb/ffmpegthumbnailer/pull/198
From 67be4abd22b726e277c4b67bfb3abf5a65cfd9b5 Mon Sep 17 00:00:00 2001
From: Zane van Iperen <zane@zanevaniperen.com>
Date: Mon, 15 Mar 2021 17:23:23 +1000
Subject: [PATCH 1/9] lib/moviedecoder: remove unused variable
---
libffmpegthumbnailer/moviedecoder.cpp | 2 --
1 file changed, 2 deletions(-)
diff --git a/libffmpegthumbnailer/moviedecoder.cpp b/libffmpegthumbnailer/moviedecoder.cpp
index 290e212..aa44adf 100644
--- a/libffmpegthumbnailer/moviedecoder.cpp
+++ b/libffmpegthumbnailer/moviedecoder.cpp
@@ -570,8 +570,6 @@
bool MovieDecoder::getVideoPacket()
bool framesAvailable = true;
bool frameDecoded = false;
- int attempts = 0;
-
if (m_pPacket)
{
av_packet_unref(m_pPacket);
From 66f64668e7a063e790813c7733ca438ab112af89 Mon Sep 17 00:00:00 2001
From: Zane van Iperen <zane@zanevaniperen.com>
Date: Mon, 15 Mar 2021 17:42:07 +1000
Subject: [PATCH 2/9] lib/moviedecoder: clang-tidy fixes
---
libffmpegthumbnailer/moviedecoder.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libffmpegthumbnailer/moviedecoder.cpp b/libffmpegthumbnailer/moviedecoder.cpp
index aa44adf..79c950b 100644
--- a/libffmpegthumbnailer/moviedecoder.cpp
+++ b/libffmpegthumbnailer/moviedecoder.cpp
@@ -503,12 +503,12 @@
void MovieDecoder::seek(int timeInSeconds)
avcodec_flush_buffers(m_pFormatContext->streams[m_VideoStream]->codec);
int keyFrameAttempts = 0;
- bool gotFrame = 0;
+ bool gotFrame;
do
{
int count = 0;
- gotFrame = 0;
+ gotFrame = false;
while (!gotFrame && count < 20)
{
From 96c22aa66719846854895afcb72962862d5a4ffd Mon Sep 17 00:00:00 2001
From: Zane van Iperen <zane@zanevaniperen.com>
Date: Mon, 15 Mar 2021 20:39:32 +1000
Subject: [PATCH 3/9] lib/moviedecoder: remove SilenceLogLevel
Was unused.
---
libffmpegthumbnailer/moviedecoder.cpp | 5 -----
1 file changed, 5 deletions(-)
diff --git a/libffmpegthumbnailer/moviedecoder.cpp b/libffmpegthumbnailer/moviedecoder.cpp
index 79c950b..21df096 100644
--- a/libffmpegthumbnailer/moviedecoder.cpp
+++ b/libffmpegthumbnailer/moviedecoder.cpp
@@ -41,11 +41,6 @@
using namespace std;
namespace ffmpegthumbnailer
{
-struct SilenceLogLevel
-{
- SilenceLogLevel() { av_log_set_level(AV_LOG_QUIET); }
-};
-
MovieDecoder::MovieDecoder(AVFormatContext* pavContext)
: m_VideoStream(-1)
, m_pFormatContext(pavContext)
From 664680f4bfeb89923f485eba270f9e49a8d02bfc Mon Sep 17 00:00:00 2001
From: Zane van Iperen <zane@zanevaniperen.com>
Date: Mon, 15 Mar 2021 17:25:40 +1000
Subject: [PATCH 4/9] lib/moviedecoder: remove registration calls
They're not needed anymore.
---
libffmpegthumbnailer/moviedecoder.cpp | 4 ----
1 file changed, 4 deletions(-)
diff --git a/libffmpegthumbnailer/moviedecoder.cpp b/libffmpegthumbnailer/moviedecoder.cpp
index 21df096..ac3e5b9 100644
--- a/libffmpegthumbnailer/moviedecoder.cpp
+++ b/libffmpegthumbnailer/moviedecoder.cpp
@@ -65,8 +65,6 @@
MovieDecoder::~MovieDecoder()
void MovieDecoder::initialize(const string& filename, bool preferEmbeddedMetadata)
{
- av_register_all();
- avcodec_register_all();
avformat_network_init();
string inputFile = filename == "-" ? "pipe:" : filename;
@@ -386,8 +384,6 @@
void MovieDecoder::initializeFilterGraph(const AVRational& timeBase, const std::
auto del = [] (AVBufferSinkParams* p) { av_freep(p); };
std::unique_ptr<AVBufferSinkParams, decltype(del)> buffersinkParams(av_buffersink_params_alloc(), del);
- avfilter_register_all();
-
m_pFilterGraph = avfilter_graph_alloc();
assert(m_pFilterGraph);
From 1ae42e664e1f3c915d186ae00aa2c8018b998708 Mon Sep 17 00:00:00 2001
From: Zane van Iperen <zane@zanevaniperen.com>
Date: Mon, 15 Mar 2021 17:30:21 +1000
Subject: [PATCH 5/9] lib/moviedecoder: remove use of AVBufferSinkParams
---
libffmpegthumbnailer/moviedecoder.cpp | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/libffmpegthumbnailer/moviedecoder.cpp b/libffmpegthumbnailer/moviedecoder.cpp
index ac3e5b9..dece668 100644
--- a/libffmpegthumbnailer/moviedecoder.cpp
+++ b/libffmpegthumbnailer/moviedecoder.cpp
@@ -379,11 +379,6 @@
std::string MovieDecoder::createScaleString(const std::string& sizeString, bool
void MovieDecoder::initializeFilterGraph(const AVRational& timeBase, const std::string& size, bool maintainAspectRatio)
{
- static const AVPixelFormat pixelFormats[] = { AV_PIX_FMT_RGB24, AV_PIX_FMT_NONE };
-
- auto del = [] (AVBufferSinkParams* p) { av_freep(p); };
- std::unique_ptr<AVBufferSinkParams, decltype(del)> buffersinkParams(av_buffersink_params_alloc(), del);
-
m_pFilterGraph = avfilter_graph_alloc();
assert(m_pFilterGraph);
@@ -395,10 +390,8 @@
void MovieDecoder::initializeFilterGraph(const AVRational& timeBase, const std::
checkRc(avfilter_graph_create_filter(&m_pFilterSource, avfilter_get_by_name("buffer"), "thumb_buffer", ss.str().c_str(), nullptr, m_pFilterGraph),
"Failed to create filter source");
- buffersinkParams->pixel_fmts = pixelFormats;
- checkRc(avfilter_graph_create_filter(&m_pFilterSink, avfilter_get_by_name("buffersink"), "thumb_buffersink", nullptr, buffersinkParams.get(), m_pFilterGraph),
+ checkRc(avfilter_graph_create_filter(&m_pFilterSink, avfilter_get_by_name("buffersink"), "thumb_buffersink", nullptr, nullptr, m_pFilterGraph),
"Failed to create filter sink");
- buffersinkParams.release();
AVFilterContext* yadifFilter = nullptr;
if (m_pFrame->interlaced_frame != 0)
From 19675349662a4ea4455d7d13b01cca28ab585762 Mon Sep 17 00:00:00 2001
From: Zane van Iperen <zane@zanevaniperen.com>
Date: Mon, 15 Mar 2021 17:39:58 +1000
Subject: [PATCH 6/9] lib/moviedecoder: use m_pVideoCodecContext instead of
AVStream::codec
---
libffmpegthumbnailer/moviedecoder.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libffmpegthumbnailer/moviedecoder.cpp b/libffmpegthumbnailer/moviedecoder.cpp
index dece668..0b7a280 100644
--- a/libffmpegthumbnailer/moviedecoder.cpp
+++ b/libffmpegthumbnailer/moviedecoder.cpp
@@ -484,7 +484,7 @@
void MovieDecoder::seek(int timeInSeconds)
}
checkRc(av_seek_frame(m_pFormatContext, -1, timestamp, 0), "Seeking in video failed");
- avcodec_flush_buffers(m_pFormatContext->streams[m_VideoStream]->codec);
+ avcodec_flush_buffers(m_pVideoCodecContext);
int keyFrameAttempts = 0;
bool gotFrame;
From 4f74f83a009fa2b3f3d546adb24d4f1406910007 Mon Sep 17 00:00:00 2001
From: Zane van Iperen <zane@zanevaniperen.com>
Date: Mon, 15 Mar 2021 17:49:03 +1000
Subject: [PATCH 7/9] lib/moviedecoder: codec -> codecpar
---
libffmpegthumbnailer/moviedecoder.cpp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/libffmpegthumbnailer/moviedecoder.cpp b/libffmpegthumbnailer/moviedecoder.cpp
index 0b7a280..e58904e 100644
--- a/libffmpegthumbnailer/moviedecoder.cpp
+++ b/libffmpegthumbnailer/moviedecoder.cpp
@@ -145,10 +145,10 @@
int32_t MovieDecoder::findPreferedVideoStream(bool preferEmbeddedMetadata)
for (unsigned int i = 0; i < m_pFormatContext->nb_streams; ++i)
{
AVStream *stream = m_pFormatContext->streams[i];
- auto ctx = m_pFormatContext->streams[i]->codec;
- if (ctx->codec_type == AVMEDIA_TYPE_VIDEO)
+ auto par = m_pFormatContext->streams[i]->codecpar;
+ if (par->codec_type == AVMEDIA_TYPE_VIDEO)
{
- if (!preferEmbeddedMetadata || !isStillImageCodec(ctx->codec_id))
+ if (!preferEmbeddedMetadata || !isStillImageCodec(par->codec_id))
{
videoStreams.push_back(i);
continue;
From 3ffdd65cbda6ef21d36c96013db1b0f4dc9fc57b Mon Sep 17 00:00:00 2001
From: Zane van Iperen <zane@zanevaniperen.com>
Date: Mon, 15 Mar 2021 17:52:01 +1000
Subject: [PATCH 8/9] lib/movedecoder: don't rely on avformat to allocate a
context
---
libffmpegthumbnailer/moviedecoder.cpp | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/libffmpegthumbnailer/moviedecoder.cpp b/libffmpegthumbnailer/moviedecoder.cpp
index e58904e..da5f32a 100644
--- a/libffmpegthumbnailer/moviedecoder.cpp
+++ b/libffmpegthumbnailer/moviedecoder.cpp
@@ -90,8 +90,7 @@
void MovieDecoder::destroy()
{
if (m_pVideoCodecContext)
{
- avcodec_close(m_pVideoCodecContext);
- m_pVideoCodecContext = nullptr;
+ avcodec_free_context(&m_pVideoCodecContext);
}
if ((!m_FormatContextWasGiven) && m_pFormatContext)
@@ -196,8 +195,7 @@
void MovieDecoder::initializeVideo(bool preferEmbeddedMetadata)
}
m_pVideoStream = m_pFormatContext->streams[m_VideoStream];
- m_pVideoCodecContext = m_pVideoStream->codec;
- m_pVideoCodec = avcodec_find_decoder(m_pVideoCodecContext->codec_id);
+ m_pVideoCodec = avcodec_find_decoder(m_pVideoStream->codecpar->codec_id);
if (m_pVideoCodec == nullptr)
{
@@ -207,6 +205,20 @@
void MovieDecoder::initializeVideo(bool preferEmbeddedMetadata)
throw logic_error("Video Codec not found");
}
+ m_pVideoCodecContext = avcodec_alloc_context3(m_pVideoCodec);
+
+ if (m_pVideoCodecContext == nullptr)
+ {
+ destroy();
+ throw logic_error("Could not allocate video codec context");
+ }
+
+ if (avcodec_parameters_to_context(m_pVideoCodecContext, m_pVideoStream->codecpar) < 0)
+ {
+ destroy();
+ throw logic_error("Could not configure video codec context");
+ }
+
m_pVideoCodecContext->workaround_bugs = 1;
if (avcodec_open2(m_pVideoCodecContext, m_pVideoCodec, nullptr) < 0)
From f9273852c8e3d7af77d6c8929b1ac6c8a26eca50 Mon Sep 17 00:00:00 2001
From: Zane van Iperen <zane@zanevaniperen.com>
Date: Mon, 15 Mar 2021 20:57:45 +1000
Subject: [PATCH 9/9] lib/moviedecoder: replace avcodec_decode_video2() usage
---
libffmpegthumbnailer/moviedecoder.cpp | 31 +++++++++++++++++++++------
1 file changed, 24 insertions(+), 7 deletions(-)
diff --git a/libffmpegthumbnailer/moviedecoder.cpp b/libffmpegthumbnailer/moviedecoder.cpp
index da5f32a..f32577a 100644
--- a/libffmpegthumbnailer/moviedecoder.cpp
+++ b/libffmpegthumbnailer/moviedecoder.cpp
@@ -548,17 +548,33 @@
bool MovieDecoder::decodeVideoPacket()
return false;
}
- av_frame_unref(m_pFrame);
-
- int frameFinished;
+ int rc = avcodec_send_packet(m_pVideoCodecContext, m_pPacket);
+ if(rc == AVERROR(EAGAIN))
+ {
+ rc = 0;
+ }
- int bytesDecoded = avcodec_decode_video2(m_pVideoCodecContext, m_pFrame, &frameFinished, m_pPacket);
- if (bytesDecoded < 0)
+ if(rc == AVERROR_EOF)
+ {
+ return false;
+ }
+ else if(rc < 0)
{
- throw logic_error("Failed to decode video frame: bytesDecoded < 0");
+ throw logic_error("Failed to decode video frame: avcodec_send_packet() < 0");
}
- return frameFinished > 0;
+ rc = avcodec_receive_frame(m_pVideoCodecContext, m_pFrame);
+ switch(rc)
+ {
+ case 0:
+ return true;
+
+ case AVERROR(EAGAIN):
+ return false;
+
+ default:
+ throw logic_error("Failed to decode video frame: avcodec_receive_frame() < 0");
+ }
}
bool MovieDecoder::getVideoPacket()
@@ -574,6 +590,7 @@
bool MovieDecoder::getVideoPacket()
m_pPacket = new AVPacket();
+
while (framesAvailable && !frameDecoded)
{
framesAvailable = av_read_frame(m_pFormatContext, m_pPacket) >= 0;
From efb5b618f1c1471c1a7900aed3a59d851ea9a210 Mon Sep 17 00:00:00 2001
From: Paul Jonkins <paul.ionkin@gmail.com>
Date: Wed, 23 Jun 2021 17:53:55 +0200
Subject: [PATCH] Constify AVCodec
---
libffmpegthumbnailer/moviedecoder.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libffmpegthumbnailer/moviedecoder.h b/libffmpegthumbnailer/moviedecoder.h
index 3ef5f12..fb6add2 100644
--- a/libffmpegthumbnailer/moviedecoder.h
+++ b/libffmpegthumbnailer/moviedecoder.h
@@ -78,7 +78,7 @@
class MovieDecoder
int m_VideoStream;
AVFormatContext* m_pFormatContext;
AVCodecContext* m_pVideoCodecContext;
- AVCodec* m_pVideoCodec;
+ const AVCodec* m_pVideoCodec;
AVFilterGraph* m_pFilterGraph;
AVFilterContext* m_pFilterSource;
AVFilterContext* m_pFilterSink;
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment