bugGNU Octave - Bugs: bug #61978, [octave forge] (video) Failure to...

 
 

bug #61978: [octave forge] (video) Failure to build against FFmpeg 5.0

Submitter:  Rafael Laboissière <rlaboiss>
Submitted:  Wed 02 Feb 2022 08:26:21 AM UTC
   
 
Category:  Octave Package Severity:  3 - Normal
Priority:  5 - Normal Item Group:  None
Status:  None Assigned to:  None
Originator Name:  Open/Closed:  * Open
Release:  * other Operating System:  * GNU/Linux
Fixed Release:  None Planned Release:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

Jump to the original submission

Sat 08 Jul 2023 11:31:56 AM UTC, comment #16: 
John Donoghue <lostbard>
Group Member
Fri 07 Jul 2023 08:44:05 PM UTC, comment #15: 

Looks like configure.ac wasnt updated to release version number

AC_INIT([Octave-Forge video package], [2.0.2])


John Donoghue <lostbard>
Group Member
Fri 07 Jul 2023 02:19:34 PM UTC, comment #14: 

Compiling hg sources I noticed that package strings still use "2.0.2" (-DPACKAGE_VERSION=\"2.0.2\" and
-DPACKAGE_STRING=\"Octave-Forge\ video\ package\ 2.0.2\")
even though the package itself is 2.1.0.

Dmitri.
--

Dmitri A. Sergatskov <dasergatskov>
Wed 05 Jul 2023 11:48:21 AM UTC, comment #13: 

Yeah, I answered there (and changed to ready for test), the reason for the segfault is, that av_guess_format returns NULL if the container format can't be guessed. Nice catch!

-- Andy

Andreas Weber <andy1978>
Group Member
Wed 05 Jul 2023 11:33:00 AM UTC, comment #12: 

Since it crashes both 2.0.2 (with ffmpeg 4) and 2.1.0 I made a new 
report:

https://savannah.gnu.org/bugs/index.php?64383

Dmitri.
--

Dmitri A. Sergatskov <dasergatskov>
Wed 05 Jul 2023 11:04:46 AM UTC, comment #11: 

May be the crash should be a separate bug report....
Not 100% sure if this is octave issue or video package issue.

In any case here is a backtrace:

Thread 6 "QThread" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f2111eed640 (LWP 366951)]
F__writer_open__ (args=..., nargout=<optimized out>) at cap_ffmpeg_wrapper.cc:442
442        cap_ffmpeg_wrapper.cc: Directory not empty.
Missing separate debuginfos, use: dnf debuginfo-install cuda-opencl-12-2-12.2.53-1.x86_64 ffmpeg-libs-5.1.3-1.el9.x86_64 highway-1.0.4-1.el9.x86_64 ilbc-3.0.4-1.el9.x86_64 intel-mediasdk-21.3.5-1.el9.x86_64 libaom-3.6.1-1.el9.x86_64 libbluray-1.3.4-1.el9.x86_64 libchromaprint-1.5.1-1.el9.x86_64 libdav1d-1.2.1-1.el9.x86_64 libjxl-0.7.0-1.el9.x86_64 libopenmpt-0.6.10-1.el9.x86_64 libsodium-1.0.18-8.el9.x86_64 libudfread-1.1.2-2.el9.x86_64 libunwind-1.6.2-1.el9.x86_64 libvmaf-2.3.0-2.el9.x86_64 nvidia-driver-libs-535.54.03-1.el9.x86_64 openpgm-5.2.122-28.el9.x86_64 soxr-0.1.3-11.el9.x86_64 srt-libs-1.4.4-1.el9.x86_64 svt-av1-libs-0.9.0-1.el9.x86_64 vapoursynth-libs-57-1.el9.x86_64 vo-amrwbenc-0.1.3-18.el9.x86_64 x264-libs-0.163-6.20210613git5db6aa6.el9.x86_64 x265-libs-3.5-5.el9.x86_64 xvidcore-1.3.7-9.el9.x86_64 zeromq-4.3.4-2.el9.x86_64
(gdb) thread apply all bt

Thread 7 (Thread 0x7f2111092640 (LWP 366952) "QThread"):
#0  0x00007f222d455b0a in __GI___sigtimedwait (set=set@entry=0x7f22300a30e0 <async_signals>, info=info@entry=0x7f21110911d0, timeout=timeout@entry=0x0) at ../sysdeps/unix/sysv/linux/sigtimedwait.c:61
#1  0x00007f222d45514c in __GI___sigwait (set=0x7f22300a30e0 <async_signals>, sig=0x7f211109128c) at ../sysdeps/unix/sysv/linux/sigwait.c:28
#2  0x00007f222fe31663 in signal_watcher(void*) (arg=0x7f2232dbcaf7 <octave::generic_sig_handler(int)>) at ../liboctave/wrappers/cxx-signal-helpers.cc:179
#3  0x00007f222d49f832 in start_thread (arg=<optimized out>) at pthread_create.c:443
#4  0x00007f222d43f450 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 6 (Thread 0x7f2111eed640 (LWP 366951) "QThread"):
#0  F__writer_open__(octave_value_list const&, int) (args=..., nargout=<optimized out>) at cap_ffmpeg_wrapper.cc:442
#1  0x00007f22327e388f in octave::tree_evaluator::execute_builtin_function(octave_builtin&, int, octave_value_list const&) (this=0x7f210406d168, builtin_function=..., nargout=1, args=...) at ../libinterp/parse-tree/pt-eval.cc:3439
#2  0x00007f22326248aa in octave_builtin::execute(octave::tree_evaluator&, int, octave_value_list const&) (this=<optimized out>, tw=<optimized out>, nargout=<optimized out>, args=<optimized out>) at ../libinterp/octave-value/ov-builtin.cc:49
#3  0x00007f223268af73 in octave_function::call(octave::tree_evaluator&, int, octave_value_list const&) (this=0x7f210486b7a0, tw=..., nargout=1, args=...) at ../libinterp/octave-value/ov-fcn.cc:57
#4  0x00007f2232803ab4 in octave::tree_index_expression::evaluate_n(octave::tree_evaluator&, int) (this=0x7f210451e290, tw=..., nargout=1) at ../libinterp/parse-tree/pt-idx.cc:427
#5  0x00007f22328067cb in octave::tree_index_expression::evaluate(octave::tree_evaluator&, int) (this=<optimized out>, tw=<optimized out>, nargout=<optimized out>) at ../libinterp/parse-tree/pt-idx.h:108
#6  0x00007f22327d51f2 in octave::tree_simple_assignment::evaluate(octave::tree_evaluator&, int) (this=0x7f210451e7b0, tw=...) at ../libinterp/parse-tree/pt-assign.cc:101
#7  0x00007f22327f7084 in octave::tree_evaluator::visit_statement(octave::tree_statement&) (this=0x7f210406d168, stmt=<optimized out>) at ../libinterp/parse-tree/pt-eval.cc:3941
#8  0x00007f223280cb04 in octave::tree_statement::accept(octave::tree_walker&) (this=<optimized out>, tw=<optimized out>) at ../libinterp/parse-tree/pt-stmt.h:124
#9  0x00007f22327e14a2 in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (this=0x7f210406d168, lst=<optimized out>) at ../libinterp/parse-tree/pt-eval.cc:4026
#10 0x00007f22327f62e6 in octave::tree_statement_list::accept(octave::tree_walker&) (tw=..., this=<optimized out>) at ../libinterp/parse-tree/pt-stmt.h:201
#11 octave::tree_evaluator::visit_if_command_list(octave::tree_if_command_list&) (this=0x7f210406d168, lst=...) at ../libinterp/parse-tree/pt-eval.cc:3789
#12 0x00007f22327ea2db in octave::tree_if_command_list::accept(octave::tree_walker&) (tw=..., this=<optimized out>) at ../libinterp/parse-tree/pt-select.h:119
#13 octave::tree_evaluator::visit_if_command(octave::tree_if_command&) (this=0x7f210406d168, cmd=...) at ../libinterp/parse-tree/pt-eval.cc:3767
#14 0x00007f223280b378 in octave::tree_if_command::accept(octave::tree_walker&) (this=<optimized out>, tw=<optimized out>) at ../libinterp/parse-tree/pt-select.h:153
#15 0x00007f22327f6ff5 in octave::tree_evaluator::visit_statement(octave::tree_statement&) (this=0x7f210406d168, stmt=<optimized out>) at ../libinterp/parse-tree/pt-eval.cc:3916
--Type <RET> for more, q to quit, c to continue without paging--c
#16 0x00007f223280cb04 in octave::tree_statement::accept(octave::tree_walker&) (this=<optimized out>, tw=<optimized out>) at ../libinterp/parse-tree/pt-stmt.h:124
#17 0x00007f22327e14a2 in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (this=0x7f210406d168, lst=<optimized out>) at ../libinterp/parse-tree/pt-eval.cc:4026
#18 0x00007f22327eba69 in octave::tree_statement_list::accept(octave::tree_walker&) (tw=..., this=0x7f2104515910) at ../libinterp/parse-tree/pt-stmt.h:201
#19 octave::tree_evaluator::execute_user_function(octave_user_function&, int, octave_value_list const&) (this=0x7f210406d168, user_function=..., nargout=0, xargs=<optimized out>) at ../libinterp/parse-tree/pt-eval.cc:3665
#20 0x00007f2232709772 in octave_user_function::execute(octave::tree_evaluator&, int, octave_value_list const&) (this=<optimized out>, tw=<optimized out>, nargout=<optimized out>, args=<optimized out>) at ../libinterp/octave-value/ov-usr-fcn.cc:495
#21 0x00007f223270a0a0 in octave_user_function::call(octave::tree_evaluator&, int, octave_value_list const&) (this=0x7f21045231b0, tw=..., nargout=0, args=...) at ../libinterp/octave-value/ov-usr-fcn.cc:488
#22 0x00007f2232c0e36f in octave::interpreter::feval(octave_function*, octave_value_list const&, int) (this=this@entry=0x7f210406cf70, fcn=<optimized out>, args=..., nargout=nargout@entry=0) at ../libinterp/corefcn/interpreter.cc:1572
#23 0x00007f2232c1053a in octave::interpreter::feval(octave_value const&, octave_value_list const&, int) (this=0x7f210406cf70, val=..., args=..., nargout=nargout@entry=0) at ../libinterp/corefcn/interpreter.cc:1592
#24 0x00007f22327b1960 in octave::feval(octave_value const&, octave_value_list const&, int) (val=..., args=..., nargout=nargout@entry=0) at ../libinterp/parse-tree/oct-parse.yy:6313
#25 0x00007f22325f49d7 in octave::cdef_method::cdef_method_rep::execute(octave_value_list const&, int, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (this=this@entry=0x7f2104530d70, args=..., nargout=0, do_check_access=do_check_access@entry=true, who="") at ../libinterp/octave-value/cdef-method.cc:137
#26 0x00007f22325f4c4c in octave::cdef_method::cdef_method_rep::meta_subsref(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (this=0x7f2104530d70, type="(", idx=Python Exception <class 'AttributeError'> 'NoneType' object has no attribute 'pointer':
std::__cxx11::list, nargout=0) at ../libinterp/octave-value/cdef-method.cc:220
#27 0x00007f2232653ec9 in octave::cdef_meta_object::meta_subsref(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (nargout=0, idx=Python Exception <class 'AttributeError'> 'NoneType' object has no attribute 'pointer':
std::__cxx11::list, type="(", this=<optimized out>) at ../libinterp/octave-value/cdef-object.h:692
#28 octave_classdef_meta::subsref(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::list<octave_value_list, std::allocator<octave_value_list> > const&, int) (this=<optimized out>, type="(", idx=Python Exception <class 'AttributeError'> 'NoneType' object has no attribute 'pointer':
std::__cxx11::list, nargout=0) at ../libinterp/octave-value/ov-classdef.h:202
#29 0x00007f2232654786 in octave_classdef_meta::execute(octave::tree_evaluator&, int, octave_value_list const&) (this=0x7f21046adbf0, nargout=0, args=...) at ../libinterp/octave-value/ov-classdef.h:222
#30 0x00007f2232653c3d in octave_classdef_meta::call(octave::tree_evaluator&, int, octave_value_list const&) (this=<optimized out>, tw=<optimized out>, nargout=<optimized out>, args=<optimized out>) at ../libinterp/octave-value/ov-classdef.h:211
#31 0x00007f2232803ab4 in octave::tree_index_expression::evaluate_n(octave::tree_evaluator&, int) (this=0x7f21042507c0, tw=..., nargout=0) at ../libinterp/parse-tree/pt-idx.cc:427
#32 0x00007f22328067cb in octave::tree_index_expression::evaluate(octave::tree_evaluator&, int) (this=<optimized out>, tw=<optimized out>, nargout=<optimized out>) at ../libinterp/parse-tree/pt-idx.h:108
#33 0x00007f22327f7084 in octave::tree_evaluator::visit_statement(octave::tree_statement&) (this=0x7f210406d168, stmt=<optimized out>) at ../libinterp/parse-tree/pt-eval.cc:3941
#34 0x00007f223280cb04 in octave::tree_statement::accept(octave::tree_walker&) (this=<optimized out>, tw=<optimized out>) at ../libinterp/parse-tree/pt-stmt.h:124
#35 0x00007f22327e14a2 in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (this=0x7f210406d168, lst=<optimized out>) at ../libinterp/parse-tree/pt-eval.cc:4026
#36 0x00007f22327f97cf in octave::tree_statement_list::accept(octave::tree_walker&) (tw=..., this=0x7f2104459bc0) at ../libinterp/parse-tree/pt-stmt.h:201
#37 octave::tree_evaluator::execute_range_loop<double>(octave::range<double, void> const&, int, octave::octave_lvalue&, octave::tree_statement_list*) (this=this@entry=0x7f210406d168, rng=..., line=line@entry=9, ult=..., loop_body=loop_body@entry=0x7f2104459bc0) at ../libinterp/parse-tree/pt-eval.cc:3049
#38 0x00007f22327f5a0c in octave::tree_evaluator::visit_simple_for_command(octave::tree_simple_for_command&) (this=0x7f210406d168, cmd=...) at ../libinterp/parse-tree/pt-eval.cc:3096
#39 0x00007f2232807806 in octave::tree_simple_for_command::accept(octave::tree_walker&) (this=<optimized out>, tw=<optimized out>) at ../libinterp/parse-tree/pt-loop.h:191
#40 0x00007f22327f6ff5 in octave::tree_evaluator::visit_statement(octave::tree_statement&) (this=0x7f210406d168, stmt=<optimized out>) at ../libinterp/parse-tree/pt-eval.cc:3916
#41 0x00007f223280cb04 in octave::tree_statement::accept(octave::tree_walker&) (this=<optimized out>, tw=<optimized out>) at ../libinterp/parse-tree/pt-stmt.h:124
#42 0x00007f22327e14a2 in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (this=0x7f210406d168, lst=<optimized out>) at ../libinterp/parse-tree/pt-eval.cc:4026
#43 0x00007f22327eb045 in octave::tree_statement_list::accept(octave::tree_walker&) (tw=..., this=0x7f210441b6f0) at ../libinterp/parse-tree/pt-stmt.h:201
#44 octave::tree_evaluator::execute_user_script(octave_user_script&, int, octave_value_list const&) (this=0x7f210406d168, user_script=..., nargout=0, args=<optimized out>) at ../libinterp/parse-tree/pt-eval.cc:3518
#45 0x00007f2232709726 in octave_user_script::execute(octave::tree_evaluator&, int, octave_value_list const&) (this=<optimized out>, tw=<optimized out>, nargout=<optimized out>, args=<optimized out>) at ../libinterp/octave-value/ov-usr-fcn.cc:196
#46 0x00007f22327098cf in octave_user_script::call(octave::tree_evaluator&, int, octave_value_list const&) (this=0x7f2104246e20, tw=..., nargout=0, args=...) at ../libinterp/octave-value/ov-usr-fcn.cc:189
#47 0x00007f22327ff22a in octave::tree_identifier::evaluate_n(octave::tree_evaluator&, int) (this=<optimized out>, tw=..., nargout=0) at ../libinterp/parse-tree/pt-id.cc:130
#48 0x00007f2232800731 in octave::tree_identifier::evaluate(octave::tree_evaluator&, int) (this=<optimized out>, tw=<optimized out>, nargout=<optimized out>) at ../libinterp/parse-tree/pt-id.h:98
#49 0x00007f22327f7084 in octave::tree_evaluator::visit_statement(octave::tree_statement&) (this=0x7f210406d168, stmt=<optimized out>) at ../libinterp/parse-tree/pt-eval.cc:3941
#50 0x00007f223280cb04 in octave::tree_statement::accept(octave::tree_walker&) (this=<optimized out>, tw=<optimized out>) at ../libinterp/parse-tree/pt-stmt.h:124
#51 0x00007f22327e14a2 in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (this=0x7f210406d168, lst=<optimized out>) at ../libinterp/parse-tree/pt-eval.cc:4026
#52 0x00007f22327e1b3d in octave::tree_statement_list::accept(octave::tree_walker&) (tw=..., this=<optimized out>) at ../libinterp/parse-tree/pt-stmt.h:201
#53 octave::tree_evaluator::eval(std::shared_ptr<octave::tree_statement_list>&, bool) (this=this@entry=0x7f210406d168, stmt_list=std::shared_ptr<class octave::tree_statement_list> (use count 2, weak count 0) = {...}, interactive=<optimized out>) at ../libinterp/parse-tree/pt-eval.cc:985
#54 0x00007f22327f0fbe in octave::tree_evaluator::repl() (this=this@entry=0x7f210406d168) at ../libinterp/corefcn/interpreter.h:173
#55 0x00007f2232c0dc1e in octave::interpreter::main_loop() (this=this@entry=0x7f210406cf70) at ../libinterp/corefcn/interpreter.cc:1350
#56 0x00007f2232c1901e in octave::interpreter::execute() (this=this@entry=0x7f210406cf70) at ../libinterp/corefcn/interpreter.cc:916
#57 0x00007f22333fae4d in octave::interpreter_qobject::execute() (this=0xda7bd0) at ../libgui/src/interpreter-qobject.cc:89
#58 0x00007f223352ee56 in octave::interpreter_qobject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at libgui/src/moc-interpreter-qobject.cc:88
#59 0x00007f22304d2cd9 in QObject::event(QEvent*) (this=0xda7bd0, e=0xb46a20) at kernel/qobject.cpp:1347
#60 0x00007f22311af533 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0xdda360, receiver=0xda7bd0, e=0xb46a20) at kernel/qapplication.cpp:3640
#61 0x00007f22311b69a8 in QApplication::notify(QObject*, QEvent*) (this=this@entry=0xb42f70, receiver=<optimized out>, e=<optimized out>) at kernel/qapplication.cpp:3386
#62 0x00007f223347a323 in octave::octave_qapplication::notify(QObject*, QEvent*) (this=0xb42f70, receiver=<optimized out>, ev=<optimized out>) at ../libgui/src/octave-qobject.cc:147
#63 0x00007f22304a7938 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0xda7bd0, event=0xb46a20) at kernel/qcoreapplication.cpp:1064
#64 0x00007f22304aae86 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0xdfaf50) at kernel/qcoreapplication.cpp:1821
#65 0x00007f22304f9d17 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x7f2104006060) at kernel/qeventdispatcher_glib.cpp:277
#66 0x00007f222c72ee2f in g_main_dispatch (context=0x7f2104017270) at ../glib/gmain.c:3337
#67 g_main_context_dispatch (context=0x7f2104017270) at ../glib/gmain.c:4055
#68 0x00007f222c7840a8 in g_main_context_iterate.constprop.0 (context=context@entry=0x7f2104017270, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4131
#69 0x00007f222c72c5f3 in g_main_context_iteration (context=0x7f2104017270, may_block=1) at ../glib/gmain.c:4196
#70 0x00007f22304f97b8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7f2104070930, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#71 0x00007f22304a6342 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7f2111eec210, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#72 0x00007f22302e89aa in QThread::exec() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#73 0x00007f22302e9c8d in operator() (__closure=<optimized out>, __closure=<optimized out>) at thread/qthread_unix.cpp:350
#74 (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> > (t=<optimized out>, t=<optimized out>) at thread/qthread_unix.cpp:287
#75 QThreadPrivate::start(void*) (arg=0xd48610) at thread/qthread_unix.cpp:310
#76 0x00007f222d49f832 in start_thread (arg=<optimized out>) at pthread_create.c:443
#77 0x00007f222d43f450 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 5 (Thread 0x7f21127c3640 (LWP 366949) "gdbus"):
#0  0x00007f222d54296f in __GI___poll (fds=0xd20470, nfds=2, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f222c78403c in g_main_context_poll (priority=<optimized out>, n_fds=2, fds=0xd20470, timeout=<optimized out>, context=0xd1e510) at ../glib/gmain.c:4434
#2  g_main_context_iterate.constprop.0 (context=0xd1e510, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4126
#3  0x00007f222c72e483 in g_main_loop_run (loop=0xd1e600) at ../glib/gmain.c:4329
#4  0x00007f21181b4e1a in gdbus_shared_thread_func (user_data=0xd1e4e0) at ../gio/gdbusprivate.c:280
#5  0x00007f222c75d582 in g_thread_proxy (data=0xd18920) at ../glib/gthread.c:826
#6  0x00007f222d49f832 in start_thread (arg=<optimized out>) at pthread_create.c:443
#7  0x00007f222d43f450 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 4 (Thread 0x7f2112fc4640 (LWP 366948) "gmain"):
#0  0x00007f222d54296f in __GI___poll (fds=0xd0db80, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f222c78403c in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0xd0db80, timeout=<optimized out>, context=0xd0f040) at ../glib/gmain.c:4434
#2  g_main_context_iterate.constprop.0 (context=context@entry=0xd0f040, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4126
#3  0x00007f222c72c5f3 in g_main_context_iteration (context=0xd0f040, may_block=may_block@entry=1) at ../glib/gmain.c:4196
#4  0x00007f222c72c641 in glib_worker_main (data=<optimized out>) at ../glib/gmain.c:6089
#5  0x00007f222c75d582 in g_thread_proxy (data=0xd10de0) at ../glib/gthread.c:826
#6  0x00007f222d49f832 in start_thread (arg=<optimized out>) at pthread_create.c:443
#7  0x00007f222d43f450 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 3 (Thread 0x7f2118ca4640 (LWP 366946) "QXcbEventQueue"):
#0  0x00007f222d54296f in __GI___poll (fds=fds@entry=0x7f2118ca3108, nfds=nfds@entry=1, timeout=timeout@entry=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f222d24af42 in poll (__timeout=-1, __nfds=1, __fds=0x7f2118ca3108) at /usr/include/bits/poll2.h:48
#2  _xcb_conn_wait (c=0xb57360, vector=0x0, count=0x0, cond=<optimized out>) at /usr/src/debug/libxcb-1.13.1-9.el9.x86_64/src/xcb_conn.c:479
#3  0x00007f222d24c90c in _xcb_conn_wait (count=0x0, vector=0x0, cond=0xb573a0, c=0xb57360) at /usr/src/debug/libxcb-1.13.1-9.el9.x86_64/src/xcb_conn.c:445
#4  xcb_wait_for_event (c=0xb57360) at /usr/src/debug/libxcb-1.13.1-9.el9.x86_64/src/xcb_in.c:697
#5  0x00007f2119515407 in QXcbEventQueue::run() (this=0xb545f0) at qxcbeventqueue.cpp:228
#6  0x00007f22302e9c8d in operator() (__closure=<optimized out>, __closure=<optimized out>) at thread/qthread_unix.cpp:350
#7  (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> > (t=<optimized out>, t=<optimized out>) at thread/qthread_unix.cpp:287
#8  QThreadPrivate::start(void*) (arg=0xb545f0) at thread/qthread_unix.cpp:310
#9  0x00007f222d49f832 in start_thread (arg=<optimized out>) at pthread_create.c:443
#10 0x00007f222d43f450 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 2 (Thread 0x7f21194a5640 (LWP 366945) "QDBusConnection"):
#0  0x00007f222d54296f in __GI___poll (fds=0x7f211401f060, nfds=4, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f222c78403c in g_main_context_poll (priority=<optimized out>, n_fds=4, fds=0x7f211401f060, timeout=<optimized out>, context=0x7f2114001ce0) at ../glib/gmain.c:4434
#2  g_main_context_iterate.constprop.0 (context=context@entry=0x7f2114001ce0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4126
#3  0x00007f222c72c5f3 in g_main_context_iteration (context=0x7f2114001ce0, may_block=1) at ../glib/gmain.c:4196
#4  0x00007f22304f97b8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7f2114000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#5  0x00007f22304a6342 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7f21194a41e0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#6  0x00007f22302e89aa in QThread::exec() (this=this@entry=0x7f222a233060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#7  0x00007f222a1b9b8b in QDBusConnectionManager::run() (this=0x7f222a233060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:179
#8  0x00007f22302e9c8d in operator() (__closure=<optimized out>, __closure=<optimized out>) at thread/qthread_unix.cpp:350
#9  (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> > (t=<optimized out>, t=<optimized out>) at thread/qthread_unix.cpp:287
#10 QThreadPrivate::start(void*) (arg=0x7f222a233060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:310
#11 0x00007f222d49f832 in start_thread (arg=<optimized out>) at pthread_create.c:443
#12 0x00007f222d43f450 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 1 (Thread 0x7f222c130300 (LWP 366944) "octave-gui"):
#0  0x00007f222d54296f in __GI___poll (fds=0xe4dec0, nfds=5, timeout=30120) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f222c78403c in g_main_context_poll (priority=<optimized out>, n_fds=5, fds=0xe4dec0, timeout=<optimized out>, context=0x7f2114005000) at ../glib/gmain.c:4434
#2  g_main_context_iterate.constprop.0 (context=context@entry=0x7f2114005000, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4126
#3  0x00007f222c72c5f3 in g_main_context_iteration (context=0x7f2114005000, may_block=1) at ../glib/gmain.c:4196
#4  0x00007f22304f97b8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0xc885a0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#5  0x00007f22304a6342 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffc7b0814a0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#6  0x00007f22304ae874 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#7  0x00007f223095fae0 in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1870
#8  0x00007f22311af4a9 in QApplication::exec() () at kernel/qapplication.cpp:2832
#9  0x00007f2233476256 in octave::base_qobject::exec() (this=this@entry=0x7ffc7b081520) at ../libgui/src/octave-qobject.cc:425
#10 0x00007f223348b489 in octave::qt_application::execute() (this=this@entry=0x7ffc7b081740) at ../libgui/src/qt-application.cc:73
#11 0x000000000040253b in main(int, char**) (argc=1, argv=0x7ffc7b081a98) at ../src/main-gui.cc:148


Dmitri.
--

Dmitri A. Sergatskov <dasergatskov>
Wed 05 Jul 2023 10:52:35 AM UTC, comment #10: 

If I copy the demo code, but "misspell" file name as "sombrero,mp4" it will crash octave.

Dmitri.
--

Dmitri A. Sergatskov <dasergatskov>
Wed 05 Jul 2023 10:29:25 AM UTC, comment #9: 

With new (2.1.0) package I get some excessive chatter:

octave:3> demo VideoWriter
VideoWriter example 1:
 fn = fullfile (tempdir (), "sombrero.mp4");
 w = VideoWriter (fn);
 w.FrameRate = 50;
 open (w);
 z = sombrero ();
 hs = surf (z);
 axis manual
 nframes = 200;
 for ii = 1:nframes
   set (hs, "zdata", z * sin (2*pi*ii/nframes + pi/5));
   drawnow
   writeVideo (w, getframe (gcf));
 endfor
 close (w)
 printf ("Now run 'open %s' to read the video with your default video player or try 'demo VideoReader'!\n", fn);

[libx264 @ 0x7fbce4a64e00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7fbce4a64e00] profile High, level 3.1, 4:2:0, 8-bit
[libx264 @ 0x7fbce4a64e00] 264 - core 163 r3060 5db6aa6 - H.264/MPEG-4 AVC codec - Copyleft 2003-2021 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=13 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
[libx264 @ 0x7fbce4a64e00] frame I:1     Avg QP:20.42  size: 19623
[libx264 @ 0x7fbce4a64e00] frame P:55    Avg QP:20.55  size:  2507
[libx264 @ 0x7fbce4a64e00] frame B:144   Avg QP:25.18  size:   487
[libx264 @ 0x7fbce4a64e00] consecutive B-frames:  3.5%  1.0%  1.5% 94.0%
[libx264 @ 0x7fbce4a64e00] mb I  I16..4: 19.3% 38.3% 42.4%
[libx264 @ 0x7fbce4a64e00] mb P  I16..4:  0.0%  0.3%  0.1%  P16..4:  2.5%  5.1%  4.6%  0.0%  0.0%    skip:87.3%
[libx264 @ 0x7fbce4a64e00] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  4.7%  2.1%  0.9%  direct: 0.9%  skip:91.2%  L0:36.3% L1:44.7% BI:19.0%
[libx264 @ 0x7fbce4a64e00] 8x8 transform intra:43.6% inter:29.9%
[libx264 @ 0x7fbce4a64e00] coded y,uvDC,uvAC intra: 41.2% 26.2% 19.6% inter: 2.9% 1.2% 0.3%
[libx264 @ 0x7fbce4a64e00] i16 v,h,dc,p: 53%  9% 38%  0%
[libx264 @ 0x7fbce4a64e00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 41% 12% 25%  1%  3%  1% 10%  1%  5%
[libx264 @ 0x7fbce4a64e00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 35% 21% 19%  2%  3%  3%  9%  2%  6%
[libx264 @ 0x7fbce4a64e00] i8c dc,h,v,p: 77% 14%  3%  6%
[libx264 @ 0x7fbce4a64e00] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7fbce4a64e00] ref P L0: 70.7% 11.1% 12.1%  6.0%
[libx264 @ 0x7fbce4a64e00] ref B L0: 84.1% 11.6%  4.3%
[libx264 @ 0x7fbce4a64e00] ref B L1: 94.4%  5.6%
[libx264 @ 0x7fbce4a64e00] kb/s:455.12
Now run 'open /tmp/sombrero.mp4' to read the video with your default video player or try 'demo VideoReader'!


Dmitri.
--


Dmitri A. Sergatskov <dasergatskov>
Wed 05 Jul 2023 10:24:24 AM UTC, comment #8: 


comment #7:

> You are building the mercurial repo from https://sourceforge.net/p/octave/video/ci/default/tree/ right?
>


Sorry -- I clicked "Download Snapshot" (which I assumed does the
hg snapshot). If I do "hg pull" I get it working


octave:1> ver
----------------------------------------------------------------------
GNU Octave Version: 8.2.1 (hg id: 134152cf1a3f)
GNU Octave License: GNU General Public License
Operating System: Linux 5.14.0-333.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 28 09:47:27 UTC 2023 x86_64
----------------------------------------------------------------------
Package Name  | Version | Installation directory
--------------+---------+-----------------------
     control  |   3.6.0 | /home/dima/.local/share/octave/api-v58/packages/control-3.6.0
          io  |   2.6.4 | /home/dima/.local/share/octave/api-v58/packages/io-2.6.4
       video  |   2.1.0 | /home/dima/.local/share/octave/api-v58/packages/video-2.1.0


I do not know anything about docker. Centos Stream is not the same as Centos, it is a kind of "upstream" release of Redhat
Linux (https://www.centos.org/centos-stream/).

Dmitri.
--

Dmitri A. Sergatskov <dasergatskov>
Wed 05 Jul 2023 07:12:41 AM UTC, comment #7: 

Thank you for testing.
You are building the mercurial repo from https://sourceforge.net/p/octave/video/ci/default/tree/ right?

Btw, I was currently removing all CentOS tests because I thought it's dead after Red Hats last escapades.

Can you point me to an docker image, which you think might be good to be tested against?

https://hub.docker.com/_/centos is marked as DEPRECATED

Andreas Weber <andy1978>
Group Member
Wed 05 Jul 2023 04:16:32 AM UTC, comment #6: 

With clang (16.0.1):

$ CXX=clang++ make dist V=1
cd src && ./bootstrap && ./configure && make all
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether clang++ accepts -g... yes
checking for mkoctfile... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for FFMPEG... yes
configure: creating ./config.status
config.status: creating Makefile
configure:

Octave-Forge video package is now configured with

   FFMPEG LIBS:       -lswscale -lavformat -lavcodec -lavutil
   FFMPEG CFLAGS:     -I/usr/include/ffmpeg
   DEFS:              -DPACKAGE_NAME=\"Octave-Forge\ video\ package\" -DPACKAGE_TARNAME=\"octave-forge-video-package\" -DPACKAGE_VERSION=\"2.0.2\" -DPACKAGE_STRING=\"Octave-Forge\ video\ package\ 2.0.2\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\"

make[1]: Entering directory '/home/dima/src/octave-video-e2f639402fef48a951bea656456fe3f2954bdc92/src'
mkoctfile -Wall -v -I/usr/include/ffmpeg  -DPACKAGE_NAME=\"Octave-Forge\ video\ package\" -DPACKAGE_TARNAME=\"octave-forge-video-package\" -DPACKAGE_VERSION=\"2.0.2\" -DPACKAGE_STRING=\"Octave-Forge\ video\ package\ 2.0.2\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" cap_ffmpeg_wrapper.cc  -lswscale -lavformat -lavcodec -lavutil   -g -O2
clang++ -c  -fPIC -I/usr/local/include/octave-8.2.1/octave/.. -I/usr/local/include/octave-8.2.1/octave -I/usr/local/include  -pthread -fopenmp -ggdb3 -O2 -march=x86-64-v2 -mtune=native -flto=thin -g  -Wall -O2  -I/usr/include/ffmpeg  -DPACKAGE_NAME="Octave-Forge video package" -DPACKAGE_TARNAME="octave-forge-video-package" -DPACKAGE_VERSION="2.0.2" -DPACKAGE_STRING="Octave-Forge video package 2.0.2" -DPACKAGE_BUGREPORT="" -DPACKAGE_URL="" cap_ffmpeg_wrapper.cc -o /tmp/oct-mgOipE.o
In file included from cap_ffmpeg_wrapper.cc:18:
./cap_ffmpeg_impl_ov.hpp:560:51: error: no member named 'codec' in 'AVStream'
        return _opencv_avcodec_get_name(video_st->codec->codec_id);
                                        ~~~~~~~~  ^
./cap_ffmpeg_impl_ov.hpp:1471:9: error: use of undeclared identifier 'avcodec_decode_video2'; did you mean 'avcodec_decode_subtitle2'?
        avcodec_decode_video2(context, picture, &got_picture, &packet);
        ^~~~~~~~~~~~~~~~~~~~~
        avcodec_decode_subtitle2
/usr/include/ffmpeg/libavcodec/avcodec.h:2545:5: note: 'avcodec_decode_subtitle2' declared here
int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub,
    ^
In file included from cap_ffmpeg_wrapper.cc:18:
./cap_ffmpeg_impl_ov.hpp:1471:40: error: cannot initialize a parameter of type 'AVSubtitle *' with an lvalue of type 'AVFrame *'
        avcodec_decode_video2(context, picture, &got_picture, &packet);
                                       ^~~~~~~
/usr/include/ffmpeg/libavcodec/avcodec.h:2545:65: note: passing argument to parameter 'sub' here
int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub,
                                                                ^
In file included from cap_ffmpeg_wrapper.cc:18:
./cap_ffmpeg_impl_ov.hpp:1967:51: error: no member named 'codec' in 'AVStream'
        return _opencv_avcodec_get_name(video_st->codec->codec_id);
                                        ~~~~~~~~  ^
./cap_ffmpeg_impl_ov.hpp:2291:15: error: use of undeclared identifier 'avcodec_encode_video2'
        ret = avcodec_encode_video2(c, &pkt, picture, &got_output);
              ^
cap_ffmpeg_wrapper.cc:61:3: error: use of undeclared identifier 'av_register_all'
  av_register_all();
  ^
cap_ffmpeg_wrapper.cc:66:30: error: use of undeclared identifier 'av_oformat_next'
  AVOutputFormat * oformat = av_oformat_next(NULL);
                             ^
cap_ffmpeg_wrapper.cc:70:17: error: use of undeclared identifier 'av_oformat_next'
      oformat = av_oformat_next (oformat);
                ^
cap_ffmpeg_wrapper.cc:80:13: error: use of undeclared identifier 'av_oformat_next'
  oformat = av_oformat_next(NULL);
            ^
cap_ffmpeg_wrapper.cc:144:17: error: use of undeclared identifier 'av_oformat_next'
      oformat = av_oformat_next(oformat);
                ^
cap_ffmpeg_wrapper.cc:417:7: error: use of undeclared identifier 'av_register_all'
      av_register_all();
      ^
cap_ffmpeg_wrapper.cc:436:23: error: cannot initialize a variable of type 'AVOutputFormat *' with an rvalue of type 'const AVOutputFormat *'
      AVOutputFormat* foo = av_guess_format     (NULL, filename.c_str (), NULL);
                      ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
12 errors generated.
make[1]: *** [Makefile:12: cap_ffmpeg_wrapper.oct] Error 1


Perhaps this is relevant:
https://stackoverflow.com/questions/71565636/replacing-deprecated-avstream-codec-parameter-in-libav

Dmitri.
--

Dmitri A. Sergatskov <dasergatskov>
Wed 05 Jul 2023 03:15:05 AM UTC, comment #5: 

On Centos Stream 9:

$ make dist V=1
cd src && ./bootstrap && ./configure && make all
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for mkoctfile... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for FFMPEG... yes
configure: creating ./config.status
config.status: creating Makefile
configure:

Octave-Forge video package is now configured with

   FFMPEG LIBS:       -lswscale -lavformat -lavcodec -lavutil
   FFMPEG CFLAGS:     -I/usr/include/ffmpeg
   DEFS:              -DPACKAGE_NAME=\"Octave-Forge\ video\ package\" -DPACKAGE_TARNAME=\"octave-forge-video-package\" -DPACKAGE_VERSION=\"2.0.2\" -DPACKAGE_STRING=\"Octave-Forge\ video\ package\ 2.0.2\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\"

make[1]: Entering directory '/home/dima/src/octave-video-e2f639402fef48a951bea656456fe3f2954bdc92/src'
patch -i cap_ffmpeg_impl_ov.patch -o cap_ffmpeg_impl_ov.hpp
patching file cap_ffmpeg_impl_ov.hpp (read from cap_ffmpeg_impl.hpp)
mkoctfile -Wall -v -I/usr/include/ffmpeg  -DPACKAGE_NAME=\"Octave-Forge\ video\ package\" -DPACKAGE_TARNAME=\"octave-forge-video-package\" -DPACKAGE_VERSION=\"2.0.2\" -DPACKAGE_STRING=\"Octave-Forge\ video\ package\ 2.0.2\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" cap_ffmpeg_wrapper.cc  -lswscale -lavformat -lavcodec -lavutil   -g -O2
g++ -c  -fPIC -I/usr/local/include/octave-8.2.1/octave/.. -I/usr/local/include/octave-8.2.1/octave -I/usr/local/include  -pthread -fopenmp -ggdb3 -O2 -march=x86-64-v2 -mtune=native -flto=auto -g  -Wall -O2  -I/usr/include/ffmpeg  -DPACKAGE_NAME="Octave-Forge video package" -DPACKAGE_TARNAME="octave-forge-video-package" -DPACKAGE_VERSION="2.0.2" -DPACKAGE_STRING="Octave-Forge video package 2.0.2" -DPACKAGE_BUGREPORT="" -DPACKAGE_URL="" cap_ffmpeg_wrapper.cc -o /tmp/oct-cFRgFU.o
In file included from cap_ffmpeg_wrapper.cc:18:
cap_ffmpeg_impl_ov.hpp: In member function ‘const char* CvCapture_FFMPEG::get_video_codec_name() const’:
cap_ffmpeg_impl_ov.hpp:560:51: error: ‘AVStream’ {aka ‘struct AVStream’} has no member named ‘codec’
  560 |         return _opencv_avcodec_get_name(video_st->codec->codec_id);
      |                                                   ^~~~~
In file included from cap_ffmpeg_wrapper.cc:18:
cap_ffmpeg_impl_ov.hpp: In member function ‘bool CvCapture_FFMPEG::grabFrame()’:
cap_ffmpeg_impl_ov.hpp:1471:9: error: ‘avcodec_decode_video2’ was not declared in this scope; did you mean ‘avcodec_decode_subtitle2’?
 1471 |         avcodec_decode_video2(context, picture, &got_picture, &packet);
      |         ^~~~~~~~~~~~~~~~~~~~~
      |         avcodec_decode_subtitle2
cap_ffmpeg_impl_ov.hpp: In member function ‘const char* CvVideoWriter_FFMPEG::get_video_codec_name() const’:
cap_ffmpeg_impl_ov.hpp:1967:51: error: ‘AVStream’ {aka ‘struct AVStream’} has no member named ‘codec’
 1967 |         return _opencv_avcodec_get_name(video_st->codec->codec_id);
      |                                                   ^~~~~
cap_ffmpeg_impl_ov.hpp: In function ‘int icv_av_write_frame_FFMPEG(AVFormatContext*, AVStream*, AVCodecContext*, uint8_t*, uint32_t, AVFrame*, int)’:
cap_ffmpeg_impl_ov.hpp:2291:15: error: ‘avcodec_encode_video2’ was not declared in this scope; did you mean ‘avcodec_encode_subtitle’?
 2291 |         ret = avcodec_encode_video2(c, &pkt, picture, &got_output);
      |               ^~~~~~~~~~~~~~~~~~~~~
      |               avcodec_encode_subtitle
cap_ffmpeg_wrapper.cc: In function ‘octave_value_list F__ffmpeg_output_formats__(const octave_value_list&, int)’:
cap_ffmpeg_wrapper.cc:61:3: error: ‘av_register_all’ was not declared in this scope
   61 |   av_register_all();
      |   ^~~~~~~~~~~~~~~
cap_ffmpeg_wrapper.cc:66:30: error: ‘av_oformat_next’ was not declared in this scope; did you mean ‘av_opt_next’?
   66 |   AVOutputFormat * oformat = av_oformat_next(NULL);
      |                              ^~~~~~~~~~~~~~~
      |                              av_opt_next
cap_ffmpeg_wrapper.cc: In function ‘octave_value_list F__writer_open__(const octave_value_list&, int)’:
cap_ffmpeg_wrapper.cc:417:7: error: ‘av_register_all’ was not declared in this scope
  417 |       av_register_all();
      |       ^~~~~~~~~~~~~~~
cap_ffmpeg_wrapper.cc:436:49: error: invalid conversion from ‘const AVOutputFormat*’ to ‘AVOutputFormat*’ [-fpermissive]
  436 |       AVOutputFormat* foo = av_guess_format     (NULL, filename.c_str (), NULL);
      |                             ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                 |
      |                                                 const AVOutputFormat*
In file included from cap_ffmpeg_wrapper.cc:18:
cap_ffmpeg_impl_ov.hpp: At global scope:
cap_ffmpeg_impl_ov.hpp:2001:21: warning: ‘const char* icvFFMPEGErrStr(int)’ defined but not used [-Wunused-function]
 2001 | static const char * icvFFMPEGErrStr(int err)
      |                     ^~~~~~~~~~~~~~~
In file included from cap_ffmpeg_wrapper.cc:18:
cap_ffmpeg_impl_ov.hpp:953:13: warning: ‘void ffmpeg_log_callback(void*, int, const char*, __va_list_tag*)’ defined but not used [-Wunused-function]
  953 | static void ffmpeg_log_callback(void *ptr, int level, const char *fmt, va_list vargs)
      |             ^~~~~~~~~~~~~~~~~~~
make[1]: *** [Makefile:12: cap_ffmpeg_wrapper.oct] Error 1
make[1]: Leaving directory '/home/dima/src/octave-video-e2f639402fef48a951bea656456fe3f2954bdc92/src'
make: *** [Makefile:92: all] Error 2


gcc 11.4.1; ffmpeg-5.1.3

Dmitri.
--

Dmitri A. Sergatskov <dasergatskov>
Tue 04 Jul 2023 11:25:42 AM UTC, comment #4: 

I'm started on backporting the latest cap_ffmpeg_impl.hpp from OpenCVs 4.x branch, see

http://hg.code.sf.net/p/octave/video

currently it compiles and runs on Debian Bullseye (11) with ffmpeg 4.x and Bookworm (12) ffmpeg 5.x.

I'm happy if someone joins for testing/patching.

Andreas Weber <andy1978>
Group Member
Fri 30 Dec 2022 09:38:41 PM UTC, comment #3: 

I encountered this issue when updating ffmpeg in Octave Online. For the time being, there is a "compat-ffmpeg4-devel" RPM package that continues to work with the video package:

https://pkgs.org/search/?q=compat-ffmpeg4-devel

However, I don't know how many more releases compat-ffmpeg4-devel will be available, so migrating to ffmpeg5 is the only long-term solution. There are some other projects using ffmpeg that have migrated; here is one that was having similar compile errors to the video package:

https://github.com/opencv/opencv/pull/21754

Shane <sffc>
Fri 04 Feb 2022 10:36:03 AM UTC, comment #2: 

I had a quick look after Avinoam Kalma added me but it looks like the API had some big changes from ffmpeg 4.4 to 5.0 and libav should also be supported (or are we willing to drop support for libav?).

Tl;DR: No, I'm currently not working on this and it looks like a big change which I can't do the next 3 months.

Andreas Weber <andy1978>
Group Member
Wed 02 Feb 2022 09:51:24 PM UTC, comment #1: 

Adding package maintainer

Avinoam Kalma <avinoam>
Group Member
Wed 02 Feb 2022 08:26:21 AM UTC, original submission:  

The video package fails to build against FFmpeg 5.0 (see Bug#1004770, filed against the Debian package octave-video).

Is someone working to fix this?

Rafael Laboissière <rlaboiss>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by lostbard (Posted a comment)
  • -email is unavailable- added by dasergatskov (Posted a comment)
  • -email is unavailable- added by sffc (Posted a comment)
  • -email is unavailable- added by andy1978 (Posted a comment)
  • -email is unavailable- added by avinoam (Posted a comment)
  • -email is unavailable- added by avinoam
  • -email is unavailable- added by rlaboiss (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only group members can vote.

     

    Follows 1 latest change.

    Date Changed by Updated Field Previous Value => Replaced by
    2022-02-02 avinoam Carbon-Copy- Added andy1978

    Back to the top

    Powered by Savane 3.13-d3ae.
    Corresponding source code