[arch-commits] Commit in libextractor/repos (3 files)
Antonio Rojas
arojas at gemini.archlinux.org
Wed Jan 26 22:07:48 UTC 2022
Date: Wednesday, January 26, 2022 @ 22:07:48
Author: arojas
Revision: 1116201
archrelease: copy trunk to community-staging-x86_64
Added:
libextractor/repos/community-staging-x86_64/
libextractor/repos/community-staging-x86_64/PKGBUILD
(from rev 1116200, libextractor/trunk/PKGBUILD)
libextractor/repos/community-staging-x86_64/ffmpeg5.patch
(from rev 1116200, libextractor/trunk/ffmpeg5.patch)
---------------+
PKGBUILD | 51 ++++++++++++++++++++++++++++++
ffmpeg5.patch | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 144 insertions(+)
Copied: libextractor/repos/community-staging-x86_64/PKGBUILD (from rev 1116200, libextractor/trunk/PKGBUILD)
===================================================================
--- community-staging-x86_64/PKGBUILD (rev 0)
+++ community-staging-x86_64/PKGBUILD 2022-01-26 22:07:48 UTC (rev 1116201)
@@ -0,0 +1,51 @@
+# Maintainer: Sergej Pupykin <pupykin.s at gmail.com>
+# Contributor: damir <damir at archlinux.org>
+
+pkgname=libextractor
+pkgver=1.11
+pkgrel=2
+pkgdesc="A library used to extract meta-data from files of arbitrary type"
+arch=("x86_64")
+license=('GPL')
+url="https://www.gnu.org/software/libextractor/"
+depends=('libltdl')
+makedepends=('exiv2' 'ffmpeg' 'file' 'flac' 'gst-plugins-base-libs' 'libgsf' 'libmpeg2' 'libvorbis'
+ 'poppler' 'libsmf')
+optdepends=('exiv2: metadata support'
+ 'ffmpeg: previewopus/thumbnailffmpeg support'
+ 'file: mime support'
+ 'flac: flac support'
+ 'gst-plugins-base-libs: gstreamer support'
+ 'libarchive: archive support'
+ 'libgsf: (optional) for ODF support'
+ 'libmpeg2: mpeg support'
+ 'libvorbis: ogg/vorbis support'
+ 'poppler: pdf support'
+ 'libsmf: midi support')
+validpgpkeys=('19647543F7861D3BF4E64FF7BF60708B48426C7E'
+ 'D8423BCB326C7907033929C7939E6BE1E29FC3CC')
+source=("https://ftp.gnu.org/gnu/libextractor/${pkgname}-${pkgver}.tar.gz"{,.sig}
+ ffmpeg5.patch)
+sha512sums=('7023d8cb377fda854523242ac9fd14a97eed86d2cd829b126bb4d5a26d5f3650642f3871cf74ae3b0788447cc0a2dce942684ef0d45f17c9ba9248b5aed623d3'
+ 'SKIP'
+ 'c81ef943428729f1edaad9a928cfff982e635c2990232cc407b8982f4d2b1925bf5aed28077151c96a3868733d7022fa0d0097927bf6f9cff91c6c47e3eae67a')
+
+prepare() {
+ cd $pkgname-$pkgver
+ 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() {
+ cd $pkgname-$pkgver
+ ./configure --prefix=/usr --enable-shared --disable-static
+ make
+}
+
+package() {
+ cd $pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
+ rm "$pkgdir"/usr/share/info/dir
+}
Copied: libextractor/repos/community-staging-x86_64/ffmpeg5.patch (from rev 1116200, libextractor/trunk/ffmpeg5.patch)
===================================================================
--- community-staging-x86_64/ffmpeg5.patch (rev 0)
+++ community-staging-x86_64/ffmpeg5.patch 2022-01-26 22:07:48 UTC (rev 1116201)
@@ -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