diff --git a/abi_used_libs b/abi_used_libs --- a/abi_used_libs +++ b/abi_used_libs @@ -1,6 +1,6 @@ libSDL2-2.0.so.0 -libavcodec.so.57 -libavutil.so.55 +libavcodec.so.58 +libavutil.so.56 libc.so.6 libgdk-3.so.0 libglib-2.0.so.0 diff --git a/files/ffmpeg4.patch b/files/ffmpeg4.patch new file mode 100644 --- /dev/null +++ b/files/ffmpeg4.patch @@ -0,0 +1,219 @@ +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 +@@ -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); +@@ -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 +@@ -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); +@@ -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 +@@ -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 +@@ -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 +@@ -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, +@@ -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, +@@ -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, +@@ -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, +@@ -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, +@@ -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, +@@ -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, +@@ -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, +@@ -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, +@@ -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, +@@ -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, +@@ -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, +@@ -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 +@@ -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; diff --git a/package.yml b/package.yml --- a/package.yml +++ b/package.yml @@ -1,10 +1,10 @@ name : guvcview version : 2.0.5 -release : 13 +release : 14 source : - https://jaist.dl.sourceforge.net/project/guvcview/source/guvcview-src-2.0.5.tar.gz : a86beb5993a8449ed3cbcc6ec2a238ef0b90138b6cbe2afab4456d37f44c41a0 homepage : http://guvcview.sourceforge.net/ -license : GPL-2.0 +license : GPL-2.0-or-later component : multimedia.video summary : Simple GTK interface for capturing and viewing video from devices description: | @@ -22,6 +22,8 @@ - pkgconfig(portaudio-2.0) - pkgconfig(sdl2) setup : | + %patch -p1 < $pkgfiles/ffmpeg4.patch + %configure --disable-static build : | %make diff --git a/pspec_x86_64.xml b/pspec_x86_64.xml --- a/pspec_x86_64.xml +++ b/pspec_x86_64.xml @@ -6,7 +6,7 @@ Pierre-Yves pyu@riseup.net - GPL-2.0 + GPL-2.0-or-later multimedia.video Simple GTK interface for capturing and viewing video from devices Simple GTK interface for capturing and viewing video from devices @@ -20,13 +20,75 @@ multimedia.video - /usr/bin - /usr/lib64/lib*.so.* + /usr/bin/guvcview + /usr/lib64/libgviewaudio-2.0.so.2 + /usr/lib64/libgviewaudio-2.0.so.2.0.0 + /usr/lib64/libgviewencoder-2.0.so.2 + /usr/lib64/libgviewencoder-2.0.so.2.0.0 + /usr/lib64/libgviewrender-2.0.so.2 + /usr/lib64/libgviewrender-2.0.so.2.0.0 + /usr/lib64/libgviewv4l2core-2.0.so.2 + /usr/lib64/libgviewv4l2core-2.0.so.2.0.0 /usr/share/appdata/guvcview.appdata.xml /usr/share/applications/guvcview.desktop - /usr/share/doc - /usr/share/locale - /usr/share/man + /usr/share/doc/guvcview/AUTHORS + /usr/share/doc/guvcview/COPYING + /usr/share/doc/guvcview/ChangeLog + /usr/share/doc/guvcview/INSTALL + /usr/share/doc/guvcview/README.md + /usr/share/locale/bg/LC_MESSAGES/guvcview.mo + /usr/share/locale/bg/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/bs/LC_MESSAGES/guvcview.mo + /usr/share/locale/bs/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/cs/LC_MESSAGES/guvcview.mo + /usr/share/locale/cs/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/da/LC_MESSAGES/guvcview.mo + /usr/share/locale/da/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/de/LC_MESSAGES/guvcview.mo + /usr/share/locale/de/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/en_AU/LC_MESSAGES/guvcview.mo + /usr/share/locale/en_AU/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/es/LC_MESSAGES/guvcview.mo + /usr/share/locale/es/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/eu/LC_MESSAGES/guvcview.mo + /usr/share/locale/eu/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/fo/LC_MESSAGES/guvcview.mo + /usr/share/locale/fo/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/fr/LC_MESSAGES/guvcview.mo + /usr/share/locale/fr/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/gl/LC_MESSAGES/guvcview.mo + /usr/share/locale/gl/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/he/LC_MESSAGES/guvcview.mo + /usr/share/locale/he/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/hr/LC_MESSAGES/guvcview.mo + /usr/share/locale/hr/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/it/LC_MESSAGES/guvcview.mo + /usr/share/locale/it/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/ja/LC_MESSAGES/guvcview.mo + /usr/share/locale/ja/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/lv/LC_MESSAGES/guvcview.mo + /usr/share/locale/lv/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/nl/LC_MESSAGES/guvcview.mo + /usr/share/locale/nl/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/pl/LC_MESSAGES/guvcview.mo + /usr/share/locale/pl/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/pt/LC_MESSAGES/guvcview.mo + /usr/share/locale/pt/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/pt_BR/LC_MESSAGES/guvcview.mo + /usr/share/locale/pt_BR/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/ru/LC_MESSAGES/guvcview.mo + /usr/share/locale/ru/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/si/LC_MESSAGES/guvcview.mo + /usr/share/locale/si/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/sr/LC_MESSAGES/guvcview.mo + /usr/share/locale/sr/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/tr/LC_MESSAGES/guvcview.mo + /usr/share/locale/tr/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/uk/LC_MESSAGES/guvcview.mo + /usr/share/locale/uk/LC_MESSAGES/gview_v4l2core.mo + /usr/share/locale/zh_TW/LC_MESSAGES/guvcview.mo + /usr/share/locale/zh_TW/LC_MESSAGES/gview_v4l2core.mo + /usr/share/man/man1/guvcview.1 /usr/share/menu/guvcview /usr/share/pixmaps/guvcview/audio_controls.png /usr/share/pixmaps/guvcview/camera.png @@ -44,17 +106,27 @@ programming.devel - guvcview + guvcview - /usr/include/ - /usr/lib64/lib*.so - /usr/lib64/pkgconfig/*.pc + /usr/include/guvcview-2/libgviewaudio/gviewaudio.h + /usr/include/guvcview-2/libgviewencoder/gviewencoder.h + /usr/include/guvcview-2/libgviewrender/gviewrender.h + /usr/include/guvcview-2/libgviewv4l2core/gview.h + /usr/include/guvcview-2/libgviewv4l2core/gviewv4l2core.h + /usr/lib64/libgviewaudio.so + /usr/lib64/libgviewencoder.so + /usr/lib64/libgviewrender.so + /usr/lib64/libgviewv4l2core.so + /usr/lib64/pkgconfig/libgviewaudio.pc + /usr/lib64/pkgconfig/libgviewencoder.pc + /usr/lib64/pkgconfig/libgviewrender.pc + /usr/lib64/pkgconfig/libgviewv4l2core.pc - - 2018-04-30 + + 2018-08-10 2.0.5 Packaging update Pierre-Yves