[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