From efd4d0e348db15a62518b913e781bc9da06580b8 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Thu, 17 Feb 2022 19:30:10 +0000 Subject: [PATCH] community/guvcview to 2.0.7-4 --- community/guvcview/PKGBUILD | 11 ++- community/guvcview/ffmpeg5.patch | 113 +++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+), 3 deletions(-) create mode 100644 community/guvcview/ffmpeg5.patch diff --git a/community/guvcview/PKGBUILD b/community/guvcview/PKGBUILD index c2d5386d0..3fcc07096 100644 --- a/community/guvcview/PKGBUILD +++ b/community/guvcview/PKGBUILD @@ -8,7 +8,7 @@ pkgbase=guvcview pkgname=(guvcview guvcview-common guvcview-qt) pkgver=2.0.7 -pkgrel=3 +pkgrel=4 pkgdesc='Simple interface for capturing and viewing video from v4l2 devices' arch=('x86_64') url='http://guvcview.sourceforge.net/' @@ -17,9 +17,11 @@ depends=('ffmpeg' 'gsl' 'gtk3' 'qt5-base' 'portaudio') makedepends=('intltool') options=('!emptydirs' '!distcc') source=("https://downloads.sourceforge.net/$pkgbase/$pkgbase-src-$pkgver-2.tar.bz2" - '0001-Update-AppStream-metadata-to-a-newer-version.patch') + '0001-Update-AppStream-metadata-to-a-newer-version.patch' + 'ffmpeg5.patch') sha256sums=('f0d1d7814597d42fddf1655f3654f74efd9f27e35bbe39ee4f0d42683de85c98' - 'd9c65a9bf53eb28c48f9a9126035f5ebe520923124eae507d1cb2994e2a0d08f') + 'd9c65a9bf53eb28c48f9a9126035f5ebe520923124eae507d1cb2994e2a0d08f' + 'dbd24333d2a2ff02759e5bc21c0088382d093065a485376e8ee037809e066001') noextract=($pkgbase-src-$pkgver-2.tar.bz2) # missing root dir prepare() { @@ -30,6 +32,9 @@ prepare() { # Update AppStream metadata to a newer version patch -Np1 -i ../0001-Update-AppStream-metadata-to-a-newer-version.patch + # Fix build with FFmpeg 5 + patch -p1 -i ../ffmpeg5.patch + autoreconf -fi cd .. diff --git a/community/guvcview/ffmpeg5.patch b/community/guvcview/ffmpeg5.patch new file mode 100644 index 000000000..9afde5cf5 --- /dev/null +++ b/community/guvcview/ffmpeg5.patch @@ -0,0 +1,113 @@ +diff --git a/gview_encoder/audio_codecs.c b/gview_encoder/audio_codecs.c +index 9050ac9..12f5850 100644 +--- a/gview_encoder/audio_codecs.c ++++ b/gview_encoder/audio_codecs.c +@@ -409,7 +409,7 @@ int encoder_set_valid_audio_codec_list () + int num_codecs = 0; + for ( ind = 0; ind < encoder_get_audio_codec_list_size(); ++ind) + { +- AVCodec *codec = avcodec_find_encoder(listSupCodecs[ind].codec_id); ++ const AVCodec *codec = avcodec_find_encoder(listSupCodecs[ind].codec_id); + if (!codec) + { + printf("ENCODER: no audio codec detected for %s\n", listSupCodecs[ind].description); +diff --git a/gview_encoder/encoder.c b/gview_encoder/encoder.c +index 8179bf0..fa10a89 100644 +--- a/gview_encoder/encoder.c ++++ b/gview_encoder/encoder.c +@@ -223,7 +223,7 @@ void __attribute__ ((destructor)) gviewencoder_fini() + * + * returns: 1 - sample format is supported; 0 - is not supported + */ +-static int encoder_check_audio_sample_fmt(AVCodec *codec, enum AVSampleFormat sample_fmt) ++static int encoder_check_audio_sample_fmt(const AVCodec *codec, enum AVSampleFormat sample_fmt) + { + const enum AVSampleFormat *p = codec->sample_fmts; + +@@ -446,10 +446,6 @@ static encoder_video_context_t *encoder_video_init(encoder_context_t *encoder_ct + + video_codec_data->codec_context = avcodec_alloc_context3(video_codec_data->codec); + +- avcodec_get_context_defaults3 ( +- video_codec_data->codec_context, +- video_codec_data->codec); +- + if(video_codec_data->codec_context == NULL) + { + fprintf(stderr, "ENCODER: FATAL memory allocation failure (encoder_video_init): %s\n", strerror(errno)); +@@ -712,7 +708,6 @@ static encoder_audio_context_t *encoder_audio_init(encoder_context_t *encoder_ct + } + + audio_codec_data->codec_context = avcodec_alloc_context3(audio_codec_data->codec); +- avcodec_get_context_defaults3 (audio_codec_data->codec_context, audio_codec_data->codec); + + if(audio_codec_data->codec_context == NULL) + { +diff --git a/gview_encoder/encoder.h b/gview_encoder/encoder.h +index 11c9522..a5697c1 100644 +--- a/gview_encoder/encoder.h ++++ b/gview_encoder/encoder.h +@@ -130,7 +130,7 @@ + */ + typedef struct _encoder_codec_data_t + { +- AVCodec *codec; ++ const AVCodec *codec; + AVDictionary *private_options; + AVCodecContext *codec_context; + AVFrame *frame; +diff --git a/gview_encoder/video_codecs.c b/gview_encoder/video_codecs.c +index ae86c3f..30e757b 100644 +--- a/gview_encoder/video_codecs.c ++++ b/gview_encoder/video_codecs.c +@@ -974,7 +974,7 @@ int encoder_set_valid_video_codec_list () + int num_codecs = 1; /*raw codec (no encoding) is always valid*/ + for ( ind = 1; ind < encoder_get_video_codec_list_size(); ++ind) + { +- AVCodec *codec = avcodec_find_encoder(listSupCodecs[ind].codec_id); ++ const AVCodec *codec = avcodec_find_encoder(listSupCodecs[ind].codec_id); + if (!codec) + { + printf("ENCODER: no video codec detected for %s\n", listSupCodecs[ind].description); +diff --git a/gview_v4l2core/jpeg_decoder.c b/gview_v4l2core/jpeg_decoder.c +index 8e9cf6b..82ff633 100644 +--- a/gview_v4l2core/jpeg_decoder.c ++++ b/gview_v4l2core/jpeg_decoder.c +@@ -1350,7 +1350,7 @@ void jpeg_close_decoder() + + typedef struct _codec_data_t + { +- AVCodec *codec; ++ const AVCodec *codec; + AVCodecContext *context; + AVFrame *picture; + } codec_data_t; +@@ -1409,7 +1409,6 @@ int jpeg_init_decoder(int width, int height) + + #if LIBAVCODEC_VER_AT_LEAST(53,6) + codec_data->context = avcodec_alloc_context3(codec_data->codec); +- avcodec_get_context_defaults3 (codec_data->context, codec_data->codec); + #else + codec_data->context = avcodec_alloc_context(); + avcodec_get_context_defaults(codec_data->context); +diff --git a/gview_v4l2core/uvc_h264.c b/gview_v4l2core/uvc_h264.c +index f526b1e..e3ff5f1 100644 +--- a/gview_v4l2core/uvc_h264.c ++++ b/gview_v4l2core/uvc_h264.c +@@ -47,7 +47,7 @@ extern int verbosity; + + typedef struct _h264_decoder_context_t + { +- AVCodec *codec; ++ const AVCodec *codec; + AVCodecContext *context; + AVFrame *picture; + +@@ -1004,7 +1004,6 @@ int h264_init_decoder(int width, int height) + + #if LIBAVCODEC_VER_AT_LEAST(53,6) + h264_ctx->context = avcodec_alloc_context3(h264_ctx->codec); +- avcodec_get_context_defaults3 (h264_ctx->context, h264_ctx->codec); + #else + h264_ctx->context = avcodec_alloc_context(); + avcodec_get_context_defaults(h264_ctx->context);