Mail archive
alpine-aports

[alpine-aports] [PATCH 05/15] community/guvcview: add ffmpeg 4 patch

From: Drew DeVault <sir_at_cmpwn.com>
Date: Mon, 29 Oct 2018 20:11:27 -0400

---
 community/guvcview/APKBUILD      |   8 +-
 community/guvcview/ffmpeg4.patch | 220 +++++++++++++++++++++++++++++++
 2 files changed, 226 insertions(+), 2 deletions(-)
 create mode 100644 community/guvcview/ffmpeg4.patch
diff --git a/community/guvcview/APKBUILD b/community/guvcview/APKBUILD
index 09f65f2bd8..090345ccd7 100644
--- a/community/guvcview/APKBUILD
+++ b/community/guvcview/APKBUILD
_at_@ -2,7 +2,7 @@
 # Maintainer: Natanael Copa <ncopa_at_alpinelinux.org>
 pkgname=guvcview
 pkgver=2.0.5
-pkgrel=1
+pkgrel=2
 pkgdesc="Webcam viewer"
 url="http://guvcview.sourceforge.net/"
 arch="all"
_at_@ -13,9 +13,12 @@ makedepends="gtk+3.0-dev eudev-dev sdl-dev portaudio-dev ffmpeg-dev gsl-dev
 	v4l-utils-dev libusb-dev linux-headers"
 install=
 subpackages="$pkgname-doc $pkgname-lang"
+# ffmpeg4.patch courtesy of gentoo
 source="https://downloads.sourceforge.net/project/guvcview/source/guvcview-src-$pkgver.tar.gz
 	0001-fix-building-with-musl-libc.patch
+	ffmpeg4.patch
 	"
+options="!check"
 
 builddir="$srcdir"/guvcview-src-$pkgver
 
_at_@ -37,4 +40,5 @@ package() {
 }
 
 sha512sums="b4a1216ab2effbd0022d5ba0ce266ac06a781e453d3dbedfe29b654864d3a26fe1e8b68245d76eff854281d42f1871a8a82b06f783b5115e94ec1c111aac05eb  guvcview-src-2.0.5.tar.gz
-9ab9575bc41acc79581da8d43ef52fc9cf2bf46ef7df97951202e47f5516c38b42ebb715a4e8d6010ac9875c2c9c8cb1912d39282d4a632123424ab516632c98  0001-fix-building-with-musl-libc.patch"
+9ab9575bc41acc79581da8d43ef52fc9cf2bf46ef7df97951202e47f5516c38b42ebb715a4e8d6010ac9875c2c9c8cb1912d39282d4a632123424ab516632c98  0001-fix-building-with-musl-libc.patch
+aefec351851d31968a68b8cb6e3c95ae06ef025bb4a0988555146423daa4d3c84174d03d99897fe0588177efe0222aa57e42b87e38f4230425f3f714ef33526a  ffmpeg4.patch"
diff --git a/community/guvcview/ffmpeg4.patch b/community/guvcview/ffmpeg4.patch
new file mode 100644
index 0000000000..4a925eb204
--- /dev/null
+++ b/community/guvcview/ffmpeg4.patch
_at_@ -0,0 +1,220 @@
+Index: guvcview-src-2.0.5/guvcview/gui_gtk3_callbacks.c
+===================================================================
+--- guvcview-src-2.0.5.orig/guvcview/gui_gtk3_callbacks.c
++++ guvcview-src-2.0.5/guvcview/gui_gtk3_callbacks.c
+_at_@ -2158,9 +2158,9 @@
+ 	gtk_grid_attach (GTK_GRID(table), lbl_me_method, 0, line, 1 ,1);
+ 	gtk_widget_show (lbl_me_method);
+ 
+-	GtkWidget *me_method = gtk_spin_button_new_with_range(1,10,1);
++	GtkWidget *me_method = gtk_entry_new();
+ 	gtk_editable_set_editable(GTK_EDITABLE(me_method),TRUE);
+-	gtk_spin_button_set_value (GTK_SPIN_BUTTON(me_method), defaults->me_method);
++	gtk_entry_set_text(me_method, defaults->me_method);
+ 
+ 	gtk_grid_attach (GTK_GRID(table), me_method, 1, line, 1 ,1);
+ 	gtk_widget_show (me_method);
+_at_@ -2246,7 +2246,7 @@
+ 			defaults->qblur = (float) gtk_spin_button_get_value (GTK_SPIN_BUTTON(qblur));
+ 			defaults->subq = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(subq));
+ 			defaults->framerefs = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(framerefs));
+-			defaults->me_method = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(me_method));
++			defaults->me_method = gtk_entry_get_text (me_method);
+ 			defaults->mb_decision = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(mb_decision));
+ 			defaults->max_b_frames = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(max_b_frames));
+ 			defaults->num_threads = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(num_threads));Index: guvcview-src-2.0.5/guvcview/gui_qt5_callbacks.cpp
+===================================================================
+--- guvcview-src-2.0.5.orig/guvcview/gui_qt5_callbacks.cpp
++++ guvcview-src-2.0.5/guvcview/gui_qt5_callbacks.cpp
+_at_@ -1590,10 +1590,8 @@ void MainWindow::video_codec_properties(
+ 	framerefs->setValue(defaults->framerefs);
+ 	form.addRow(_("framerefs:   "), framerefs);
+ 	/*me method*/
+-	QSpinBox *me_method = new QSpinBox(&dialog);
+-	me_method->setRange(1, 10);
+-	me_method->setSingleStep(1);						
+-	me_method->setValue(defaults->me_method);
++	QLabel *me_method = new QLabel(&dialog);
++	me_method->setText(defaults->me_method);
+ 	form.addRow(_("me method:   "), me_method);
+ 	/*mb decision*/
+ 	QSpinBox *mb_decision = new QSpinBox(&dialog);
+_at_@ -1645,7 +1643,7 @@ void MainWindow::video_codec_properties(
+ 		defaults->qblur = qblur->value();
+ 		defaults->subq = subq->value();
+ 		defaults->framerefs = framerefs->value();
+-		defaults->me_method = me_method->value();
++		defaults->me_method = me_method->text().toLatin1().data();
+ 		defaults->mb_decision = mb_decision->value();
+ 		defaults->max_b_frames = max_b_frames->value();
+ 		defaults->num_threads = num_threads->value();
+Index: guvcview-src-2.0.5/gview_encoder/encoder.c
+===================================================================
+--- guvcview-src-2.0.5.orig/gview_encoder/encoder.c
++++ guvcview-src-2.0.5/gview_encoder/encoder.c
+_at_@ -445,10 +445,8 @@ static encoder_video_context_t *encoder_
+ #if !LIBAVCODEC_VER_AT_LEAST(56,60)
+ 	video_codec_data->codec_context->me_method = video_defaults->me_method;
+ #else
+-	if( video_defaults->codec_id == AV_CODEC_ID_H264 && video_defaults->me_method > 4)
+-		video_defaults->me_method = X264_ME_HEX;
+-
+-	av_dict_set_int(&video_codec_data->private_options, "motion-est", video_defaults->me_method, 0);
++	if(video_defaults->me_method)
++		av_dict_set(&video_codec_data->private_options, "motion-est", video_defaults->me_method, 0);
+ #endif
+ 
+ #if !LIBAVCODEC_VER_AT_LEAST(57,00)
+Index: guvcview-src-2.0.5/gview_encoder/gviewencoder.h
+===================================================================
+--- guvcview-src-2.0.5.orig/gview_encoder/gviewencoder.h
++++ guvcview-src-2.0.5/gview_encoder/gviewencoder.h
+_at_@ -104,7 +104,7 @@ typedef struct _video_codec_t
+ 	char codec_name[20];      //lavc codec_name
+ 	int mb_decision;          //lavc mb_decision
+ 	int trellis;              //lavc trellis quantization
+-	int me_method;            //lavc motion estimation method
++	const char* me_method;            //lavc motion estimation method
+ 	int mpeg_quant;           //lavc mpeg quantization
+ 	int max_b_frames;         //lavc max b frames
+ 	int num_threads;          //lavc num threads
+Index: guvcview-src-2.0.5/gview_encoder/video_codecs.c
+===================================================================
+--- guvcview-src-2.0.5.orig/gview_encoder/video_codecs.c
++++ guvcview-src-2.0.5/gview_encoder/video_codecs.c
+_at_@ -97,7 +97,7 @@ static video_codec_t listSupCodecs[] =
+ 		.codec_name   = "none",
+ 		.mb_decision  = 0,
+ 		.trellis      = 0,
+-		.me_method    = 0,
++		.me_method    = NULL,
+ 		.mpeg_quant   = 0,
+ 		.max_b_frames = 0,
+ 		.num_threads  = 0,
+_at_@ -133,7 +133,7 @@ static video_codec_t listSupCodecs[] =
+ 		.codec_name   = "mjpeg",
+ 		.mb_decision  = 0,
+ 		.trellis      = 0,
+-		.me_method    = ME_EPZS,
++		.me_method    = "epsz",
+ 		.mpeg_quant   = 0,
+ 		.max_b_frames = 0,
+ 		.num_threads  = 0,
+_at_@ -169,7 +169,7 @@ static video_codec_t listSupCodecs[] =
+ 		.codec_name   = "mpeg1video",
+ 		.mb_decision  = FF_MB_DECISION_RD,
+ 		.trellis      = 1,
+-		.me_method    = ME_EPZS,
++		.me_method    = "epsz",
+ 		.mpeg_quant   = 0,
+ 		.max_b_frames = 0,
+ 		.num_threads  = 1,
+_at_@ -205,11 +205,11 @@ static video_codec_t listSupCodecs[] =
+ 		.codec_name   = "flv",
+ 		.mb_decision  = FF_MB_DECISION_RD,
+ 		.trellis      = 1,
+-		.me_method    = ME_EPZS,
++		.me_method    = "epsz",
+ 		.mpeg_quant   = 0,
+ 		.max_b_frames = 0,
+ 		.num_threads  = 1,
+-		.flags        = CODEC_FLAG_4MV
++		.flags        = AV_CODEC_FLAG_4MV
+ 	},
+ 	{
+ 		.valid        = 1,
+_at_@ -241,7 +241,7 @@ static video_codec_t listSupCodecs[] =
+ 		.codec_name   = "wmv1",
+ 		.mb_decision  = FF_MB_DECISION_RD,
+ 		.trellis      = 1,
+-		.me_method    = ME_EPZS,
++		.me_method    = "epsz",
+ 		.mpeg_quant   = 0,
+ 		.max_b_frames = 0,
+ 		.num_threads  = 1,
+_at_@ -277,7 +277,7 @@ static video_codec_t listSupCodecs[] =
+ 		.codec_name   = "mpeg2video",
+ 		.mb_decision  = FF_MB_DECISION_RD,
+ 		.trellis      = 1,
+-		.me_method    = ME_EPZS,
++		.me_method    = "epsz",
+ 		.mpeg_quant   = 0,
+ 		.max_b_frames = 0,
+ 		.num_threads  = 1,
+_at_@ -313,7 +313,7 @@ static video_codec_t listSupCodecs[] =
+ 		.codec_name   = "msmpeg4v3",
+ 		.mb_decision  = FF_MB_DECISION_RD,
+ 		.trellis      = 1,
+-		.me_method    = ME_EPZS,
++		.me_method    = "epsz",
+ 		.mpeg_quant   = 0,
+ 		.max_b_frames = 0,
+ 		.num_threads  = 1,
+_at_@ -349,7 +349,7 @@ static video_codec_t listSupCodecs[] =
+ 		.codec_name   = "mpeg4",
+ 		.mb_decision  = FF_MB_DECISION_RD,
+ 		.trellis      = 1,
+-		.me_method    = ME_EPZS,
++		.me_method    = "epsz",
+ 		.mpeg_quant   = 1,
+ 		.max_b_frames = 0,
+ 		.num_threads  = 1,
+_at_@ -385,7 +385,7 @@ static video_codec_t listSupCodecs[] =
+ 		.codec_name   = "libx264",
+ 		.mb_decision  = FF_MB_DECISION_RD,
+ 		.trellis      = 0,
+-		.me_method    = X264_ME_HEX,
++		.me_method    = "hex",
+ 		.mpeg_quant   = 1,
+ 		.max_b_frames = 16,
+ 		.num_threads  = 4,
+_at_@ -426,7 +426,7 @@ static video_codec_t listSupCodecs[] =
+ 		.codec_name   = "libx265",
+ 		.mb_decision  = FF_MB_DECISION_RD,
+ 		.trellis      = 0,
+-		.me_method    = ME_HEX,
++		.me_method    = "hex",
+ 		.mpeg_quant   = 1,
+ 		.max_b_frames = 16,
+ 		.num_threads  = 4,
+_at_@ -463,7 +463,7 @@ static video_codec_t listSupCodecs[] =
+ 		.codec_name   = "libvpx_vp8",
+ 		.mb_decision  = FF_MB_DECISION_RD,
+ 		.trellis      = 0,
+-		.me_method    = ME_HEX,
++		.me_method    = "hex",
+ 		.mpeg_quant   = 1,
+ 		.max_b_frames = 0,
+ 		.num_threads  = 4,
+_at_@ -500,7 +500,7 @@ static video_codec_t listSupCodecs[] =
+ 		.codec_name   = "libvpx_vp9",
+ 		.mb_decision  = FF_MB_DECISION_RD,
+ 		.trellis      = 0,
+-		.me_method    = ME_HEX,
++		.me_method    = "hex",
+ 		.mpeg_quant   = 1,
+ 		.max_b_frames = 16,
+ 		.num_threads  = 4,
+_at_@ -537,7 +537,7 @@ static video_codec_t listSupCodecs[] =
+ 		.codec_name   = "libtheora",
+ 		.mb_decision  = FF_MB_DECISION_RD,
+ 		.trellis      = 0,
+-		.me_method    = ME_HEX,
++		.me_method    = "hex",
+ 		.mpeg_quant   = 1,
+ 		.max_b_frames = 0,
+ 		.num_threads  = 4,
+Index: guvcview-src-2.0.5/gview_v4l2core/uvc_h264.c
+===================================================================
+--- guvcview-src-2.0.5.orig/gview_v4l2core/uvc_h264.c
++++ guvcview-src-2.0.5/gview_v4l2core/uvc_h264.c
+_at_@ -1039,7 +1039,7 @@ int h264_init_decoder(int width, int hei
+ 		exit(-1);
+ 	}
+ 	
+-	h264_ctx->context->flags2 |= CODEC_FLAG2_FAST;
++	h264_ctx->context->flags2 |= AV_CODEC_FLAG2_FAST;
+ 	h264_ctx->context->pix_fmt = AV_PIX_FMT_YUV420P;
+ 	h264_ctx->context->width = width;
+ 	h264_ctx->context->height = height;
+
-- 
2.18.0
---
Unsubscribe:  alpine-aports+unsubscribe_at_lists.alpinelinux.org
Help:         alpine-aports+help_at_lists.alpinelinux.org
---
Received on Mon Oct 29 2018 - 20:11:27 UTC