[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