[arch-commits] Commit in libextractor/trunk (PKGBUILD ffmpeg5.patch)
Antonio Rojas
arojas at gemini.archlinux.org
Wed Jan 26 22:07:38 UTC 2022
Date: Wednesday, January 26, 2022 @ 22:07:38
Author: arojas
Revision: 1116200
ffmpeg 5 rebuild
Added:
libextractor/trunk/ffmpeg5.patch
Modified:
libextractor/trunk/PKGBUILD
---------------+
PKGBUILD | 9 +++--
ffmpeg5.patch | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 99 insertions(+), 3 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2022-01-26 21:29:24 UTC (rev 1116199)
+++ PKGBUILD 2022-01-26 22:07:38 UTC (rev 1116200)
@@ -3,7 +3,7 @@
pkgname=libextractor
pkgver=1.11
-pkgrel=1
+pkgrel=2
pkgdesc="A library used to extract meta-data from files of arbitrary type"
arch=("x86_64")
license=('GPL')
@@ -24,9 +24,11 @@
'libsmf: midi support')
validpgpkeys=('19647543F7861D3BF4E64FF7BF60708B48426C7E'
'D8423BCB326C7907033929C7939E6BE1E29FC3CC')
-source=("https://ftp.gnu.org/gnu/libextractor/${pkgname}-${pkgver}.tar.gz"{,.sig})
+source=("https://ftp.gnu.org/gnu/libextractor/${pkgname}-${pkgver}.tar.gz"{,.sig}
+ ffmpeg5.patch)
sha512sums=('7023d8cb377fda854523242ac9fd14a97eed86d2cd829b126bb4d5a26d5f3650642f3871cf74ae3b0788447cc0a2dce942684ef0d45f17c9ba9248b5aed623d3'
- 'SKIP')
+ 'SKIP'
+ 'c81ef943428729f1edaad9a928cfff982e635c2990232cc407b8982f4d2b1925bf5aed28077151c96a3868733d7022fa0d0097927bf6f9cff91c6c47e3eae67a')
prepare() {
cd $pkgname-$pkgver
@@ -33,6 +35,7 @@
sed -e 's/ CODEC_FLAG_QSCALE/ AV_CODEC_FLAG_QSCALE/' \
-e 's/FF_INPUT_BUFFER_PADDING_SIZE/AV_INPUT_BUFFER_PADDING_SIZE/' \
-i src/plugins/thumbnailffmpeg_extractor.c
+ patch -p1 -i ../ffmpeg5.patch # Fix build with FFmpeg 5
}
build() {
Added: ffmpeg5.patch
===================================================================
--- ffmpeg5.patch (rev 0)
+++ ffmpeg5.patch 2022-01-26 22:07:38 UTC (rev 1116200)
@@ -0,0 +1,93 @@
+diff --git a/src/plugins/thumbnailffmpeg_extractor.c b/src/plugins/thumbnailffmpeg_extractor.c
+index ef7a05f..f2c5c94 100644
+--- a/src/plugins/thumbnailffmpeg_extractor.c
++++ b/src/plugins/thumbnailffmpeg_extractor.c
+@@ -181,7 +181,7 @@ create_thumbnail (AVCodecContext *pCodecCtx, int src_width, int src_height,
+ {
+ AVCodecContext *encoder_codec_ctx;
+ AVDictionary *opts;
+- AVCodec *encoder_codec;
++ const AVCodec *encoder_codec;
+ struct SwsContext *scaler_ctx;
+ AVFrame *dst_frame;
+ uint8_t *dst_buffer;
+@@ -332,12 +332,12 @@ create_thumbnail (AVCodecContext *pCodecCtx, int src_width, int src_height,
+ dst_frame->quality = encoder_codec_ctx->global_quality;
+ #endif
+
+- err = avcodec_encode_video2 (encoder_codec_ctx,
+- &pkt,
+- dst_frame, &gotPacket);
+-
++ err = avcodec_send_frame(encoder_codec_ctx, dst_frame);
+ if (err < 0)
+ goto cleanup;
++ err = avcodec_receive_packet(encoder_codec_ctx, &pkt);
++ if (err < 0 && err != AVERROR(EAGAIN))
++ goto cleanup;
+ err = pkt.size;
+ memcpy (encoder_output_buffer,pkt.data, pkt.size);
+
+@@ -417,7 +417,7 @@ extract_image (ENUM_CODEC_ID image_codec_id,
+ {
+ AVDictionary *opts;
+ AVCodecContext *codec_ctx;
+- AVCodec *codec;
++ const AVCodec *codec;
+ AVPacket avpkt;
+ AVFrame *frame;
+ uint8_t *encoded_thumbnail;
+@@ -480,7 +480,14 @@ extract_image (ENUM_CODEC_ID image_codec_id,
+ av_init_packet (&avpkt);
+ avpkt.data = padded_data;
+ avpkt.size = iret;
+- avcodec_decode_video2 (codec_ctx, frame, &frame_finished, &avpkt);
++ int ret = avcodec_send_packet(codec_ctx, &avpkt);
++ if (ret < 0)
++ break;
++ ret = avcodec_receive_frame(codec_ctx, frame);
++ if (ret < 0 && ret != AVERROR(EAGAIN) && ret != AVERROR_EOF)
++ break;
++ if (ret >= 0)
++ frame_finished = 1;
+ }
+ if (! frame_finished)
+ {
+@@ -553,7 +560,7 @@ extract_video (struct EXTRACTOR_ExtractContext *ec)
+ struct AVFormatContext *format_ctx;
+ AVCodecContext *codec_ctx;
+ AVCodecParameters *codecpar;
+- AVCodec *codec;
++ const AVCodec *codec;
+ AVDictionary *options;
+ AVFrame *frame;
+ uint8_t *encoded_thumbnail;
+@@ -607,7 +614,8 @@ extract_video (struct EXTRACTOR_ExtractContext *ec)
+ for (i = 0; i<format_ctx->nb_streams; i++)
+ {
+ codecpar = format_ctx->streams[i]->codecpar;
+- codec_ctx = format_ctx->streams[i]->codec;
++ codec_ctx = avcodec_alloc_context3(avcodec_find_decoder(codecpar->codec_id));
++ avcodec_parameters_to_context(codec_ctx, codecpar);
+ if (AVMEDIA_TYPE_VIDEO != codec_ctx->codec_type)
+ continue;
+ if (NULL == (codec = avcodec_find_decoder (codecpar->codec_id)))
+@@ -682,10 +690,14 @@ extract_video (struct EXTRACTOR_ExtractContext *ec)
+ break;
+ if (packet.stream_index == video_stream_index)
+ {
+- avcodec_decode_video2 (codec_ctx,
+- frame,
+- &frame_finished,
+- &packet);
++ int ret = avcodec_send_packet(codec_ctx, &packet);
++ if (ret < 0)
++ break;
++ ret = avcodec_receive_frame(codec_ctx, frame);
++ if (ret < 0 && ret != AVERROR(EAGAIN) && ret != AVERROR_EOF)
++ break;
++ if (ret >= 0)
++ frame_finished = 1;
+ if (frame_finished && frame->key_frame)
+ {
+ av_packet_unref (&packet);
More information about the arch-commits
mailing list