Bug 213720 - Crash when switching from phonon-xine to phonon-gstreamer
Summary: Crash when switching from phonon-xine to phonon-gstreamer
Status: RESOLVED NOT A BUG
Alias: None
Product: amarok
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Unlisted Binaries Linux
: NOR crash
Target Milestone: ---
Assignee: Amarok Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-11-08 18:44 UTC by Simon80
Modified: 2009-11-12 07:28 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Simon80 2009-11-08 18:44:18 UTC
Application that crashed: amarok
Version of the application: 2.2.0
KDE Version: 4.3.2 (KDE 4.3.2)
Qt Version: 4.5.3
Operating System: Linux 2.6.30-2-amd64 x86_64
Distribution: Debian GNU/Linux testing (squeeze)

What I was doing when the application crashed:
I was configuring Phonon to use the gstreamer backend instead of Xine through the Phonon dialog opened by Amarok, and Amarok crashed when I hit apply after selecting the gstreamer backend. When I started it up again, it was correctly set to use the gstreamer backend.

 -- Backtrace:
Application: Amarok (amarok), signal: Segmentation fault
pthread_cond_wait@@GLIBC_2.3.2 ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
	in ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
The current source language is "auto; currently asm".
[Current thread is 1 (Thread 0x7f8cac84f770 (LWP 2235))]

Thread 15 (Thread 0x7f8c92934950 (LWP 2240)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:217
#1  0x00007f8c9871bc91 in metronom_sync_loop (this=0x1a115f0) at metronom.c:870
#2  0x00007f8ca4906f9a in start_thread (arg=<value optimized out>) at pthread_create.c:300
#3  0x00007f8ca9e8056d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#4  0x0000000000000000 in ?? ()

Thread 14 (Thread 0x7f8c90dde950 (LWP 2241)):
#0  0xffffffffff600132 in ?? ()
#1  0x00007fff76d966fb in ?? ()
#2  0x00007f8ca37beeef in *__GI_clock_gettime (clock_id=-1864507984, tp=0x7f8c90ddddb0) at ../sysdeps/unix/clock_gettime.c:100
#3  0x00007f8cab19e0fd in QTimerInfoList::getTime (this=<value optimized out>, t=...) at kernel/qeventdispatcher_unix.cpp:339
#4  0x00007f8cab19e2e1 in QTimerInfoList::updateCurrentTime (this=0x7f8c90ddddb0) at kernel/qeventdispatcher_unix.cpp:297
#5  0x00007f8cab19e485 in QTimerInfoList::timerWait (this=0x7f8c90ddddb0, tm=...) at kernel/qeventdispatcher_unix.cpp:420
#6  0x00007f8cab19c56c in timerSourcePrepareHelper (src=<value optimized out>, timeout=0x7f8c90ddde94) at kernel/qeventdispatcher_glib.cpp:136
#7  0x00007f8ca35342e9 in IA__g_main_context_prepare (context=0x1a16550, priority=0x7f8c90dddf14) at /tmp/buildd/glib2.0-2.22.2/glib/gmain.c:2280
#8  0x00007f8ca3534679 in g_main_context_iterate (context=0x1a16550, block=1, dispatch=1, self=<value optimized out>) at /tmp/buildd/glib2.0-2.22.2/glib/gmain.c:2571
#9  0x00007f8ca3534b3c in IA__g_main_context_iteration (context=0x1a16550, may_block=1) at /tmp/buildd/glib2.0-2.22.2/glib/gmain.c:2654
#10 0x00007f8cab19c3b6 in QEventDispatcherGlib::processEvents (this=0x18212d0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:409
#11 0x00007f8cab172562 in QEventLoop::processEvents (this=<value optimized out>, flags=...) at kernel/qeventloop.cpp:149
#12 0x00007f8cab172934 in QEventLoop::exec (this=0x7f8c90dde020, flags=...) at kernel/qeventloop.cpp:201
#13 0x00007f8cab08b5a8 in QThread::exec (this=<value optimized out>) at thread/qthread.cpp:487
#14 0x00007f8c98976aec in Phonon::Xine::XineThread::run (this=0x1821290) at ../../xine/xinethread.cpp:143
#15 0x00007f8cab08e4a5 in QThreadPrivate::start (arg=0x1821290) at thread/qthread_unix.cpp:188
#16 0x00007f8ca4906f9a in start_thread (arg=<value optimized out>) at pthread_create.c:300
#17 0x00007f8ca9e8056d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#18 0x0000000000000000 in ?? ()

Thread 13 (Thread 0x7f8c903d4950 (LWP 2244)):
#0  0x00007f8ca9e77d36 in *__GI___poll (fds=0x7f8c903d3fb0, nfds=1, timeout=333) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007f8c903d9899 in my_snd_mixer_wait (data=<value optimized out>) at audio_alsa_out.c:150
#2  ao_alsa_handle_event_thread (data=<value optimized out>) at audio_alsa_out.c:166
#3  0x00007f8ca4906f9a in start_thread (arg=<value optimized out>) at pthread_create.c:300
#4  0x00007f8ca9e8056d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#5  0x0000000000000000 in ?? ()

Thread 12 (Thread 0x7f8c8fbd3950 (LWP 2245)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f8c9872caf3 in fifo_peek_int (this_gen=<value optimized out>) at audio_out.c:348
#2  fifo_peek (this_gen=<value optimized out>) at audio_out.c:388
#3  ao_loop (this_gen=<value optimized out>) at audio_out.c:1015
#4  0x00007f8ca4906f9a in start_thread (arg=<value optimized out>) at pthread_create.c:300
#5  0x00007f8ca9e8056d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#6  0x0000000000000000 in ?? ()
The current source language is "auto; currently c".

Thread 11 (Thread 0x7f8c8efc9950 (LWP 2246)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f8c9872caf3 in fifo_peek_int (this_gen=<value optimized out>) at audio_out.c:348
#2  fifo_peek (this_gen=<value optimized out>) at audio_out.c:388
#3  ao_loop (this_gen=<value optimized out>) at audio_out.c:1015
#4  0x00007f8ca4906f9a in start_thread (arg=<value optimized out>) at pthread_create.c:300
#5  0x00007f8ca9e8056d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#6  0x0000000000000000 in ?? ()
The current source language is "auto; currently asm".

Thread 10 (Thread 0x7f8c8e7c8950 (LWP 2247)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f8c9872caf3 in fifo_peek_int (this_gen=<value optimized out>) at audio_out.c:348
#2  fifo_peek (this_gen=<value optimized out>) at audio_out.c:388
#3  ao_loop (this_gen=<value optimized out>) at audio_out.c:1015
#4  0x00007f8ca4906f9a in start_thread (arg=<value optimized out>) at pthread_create.c:300
#5  0x00007f8ca9e8056d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#6  0x0000000000000000 in ?? ()

Thread 9 (Thread 0x7f8c8cd97950 (LWP 2427)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f8cab08f499 in QWaitConditionPrivate::wait (this=0x2980e38, mutex=0x29647a0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (this=0x2980e38, mutex=0x29647a0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f8ca7337e04 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x2980e10, th=0x2964d70) at ../../../threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f8ca733a54b in ThreadWeaver::WorkingHardState::applyForWork (this=0x29648c0, th=0x2964d70) at ../../../threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f8ca7338b1f in ThreadWeaver::ThreadRunHelper::run (this=0x7f8c8cd97070, parent=0x2980e10, th=0x2964d70) at ../../../threadweaver/Weaver/Thread.cpp:87
#6  0x00007f8ca7338f59 in ThreadWeaver::Thread::run (this=0x2964d70) at ../../../threadweaver/Weaver/Thread.cpp:142
#7  0x00007f8cab08e4a5 in QThreadPrivate::start (arg=0x2964d70) at thread/qthread_unix.cpp:188
#8  0x00007f8ca4906f9a in start_thread (arg=<value optimized out>) at pthread_create.c:300
#9  0x00007f8ca9e8056d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()

Thread 8 (Thread 0x7f8c8721e950 (LWP 2447)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f8cab08f499 in QWaitConditionPrivate::wait (this=0x2980e38, mutex=0x29647a0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (this=0x2980e38, mutex=0x29647a0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f8ca7337e04 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x2980e10, th=0x2ad8570) at ../../../threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f8ca733a54b in ThreadWeaver::WorkingHardState::applyForWork (this=0x29648c0, th=0x2ad8570) at ../../../threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f8ca733a564 in ThreadWeaver::WorkingHardState::applyForWork (this=0x29648c0, th=0x2ad8570) at ../../../threadweaver/Weaver/WorkingHardState.cpp:74
#6  0x00007f8ca7338b1f in ThreadWeaver::ThreadRunHelper::run (this=0x7f8c8721e070, parent=0x2980e10, th=0x2ad8570) at ../../../threadweaver/Weaver/Thread.cpp:87
#7  0x00007f8ca7338f59 in ThreadWeaver::Thread::run (this=0x2ad8570) at ../../../threadweaver/Weaver/Thread.cpp:142
#8  0x00007f8cab08e4a5 in QThreadPrivate::start (arg=0x2ad8570) at thread/qthread_unix.cpp:188
#9  0x00007f8ca4906f9a in start_thread (arg=<value optimized out>) at pthread_create.c:300
#10 0x00007f8ca9e8056d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 7 (Thread 0x7f8c86a1d950 (LWP 2448)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f8cab08f499 in QWaitConditionPrivate::wait (this=0x2980e38, mutex=0x29647a0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (this=0x2980e38, mutex=0x29647a0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f8ca7337e04 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x2980e10, th=0x29610d0) at ../../../threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f8ca733a54b in ThreadWeaver::WorkingHardState::applyForWork (this=0x29648c0, th=0x29610d0) at ../../../threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f8ca7338b1f in ThreadWeaver::ThreadRunHelper::run (this=0x7f8c86a1d070, parent=0x2980e10, th=0x29610d0) at ../../../threadweaver/Weaver/Thread.cpp:87
#6  0x00007f8ca7338f59 in ThreadWeaver::Thread::run (this=0x29610d0) at ../../../threadweaver/Weaver/Thread.cpp:142
#7  0x00007f8cab08e4a5 in QThreadPrivate::start (arg=0x29610d0) at thread/qthread_unix.cpp:188
#8  0x00007f8ca4906f9a in start_thread (arg=<value optimized out>) at pthread_create.c:300
#9  0x00007f8ca9e8056d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()

Thread 6 (Thread 0x7f8c85b53950 (LWP 2482)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f8cab08f499 in QWaitConditionPrivate::wait (this=0x2980e38, mutex=0x29647a0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (this=0x2980e38, mutex=0x29647a0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f8ca7337e04 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x2980e10, th=0x223f080) at ../../../threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f8ca733a54b in ThreadWeaver::WorkingHardState::applyForWork (this=0x29648c0, th=0x223f080) at ../../../threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f8ca7338b1f in ThreadWeaver::ThreadRunHelper::run (this=0x7f8c85b53070, parent=0x2980e10, th=0x223f080) at ../../../threadweaver/Weaver/Thread.cpp:87
#6  0x00007f8ca7338f59 in ThreadWeaver::Thread::run (this=0x223f080) at ../../../threadweaver/Weaver/Thread.cpp:142
#7  0x00007f8cab08e4a5 in QThreadPrivate::start (arg=0x223f080) at thread/qthread_unix.cpp:188
#8  0x00007f8ca4906f9a in start_thread (arg=<value optimized out>) at pthread_create.c:300
#9  0x00007f8ca9e8056d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()

Thread 5 (Thread 0x7f8c7e9a9950 (LWP 2809)):
#0  0x00007f8ca9e79f02 in select () from /lib/libc.so.6
#1  0x00007f8c98744274 in xine_usec_sleep (usec=<value optimized out>) at utils.c:481
#2  0x00007f8c9872965b in video_out_loop (this_gen=<value optimized out>) at video_out.c:1246
#3  0x00007f8ca4906f9a in start_thread (arg=<value optimized out>) at pthread_create.c:300
#4  0x00007f8ca9e8056d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#5  0x0000000000000000 in ?? ()

Thread 4 (Thread 0x7f8c7e1a8950 (LWP 2810)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:217
#1  0x00007f8c98725902 in video_decoder_loop (stream_gen=<value optimized out>) at video_decoder.c:246
#2  0x00007f8ca4906f9a in start_thread (arg=<value optimized out>) at pthread_create.c:300
#3  0x00007f8ca9e8056d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#4  0x0000000000000000 in ?? ()
The current source language is "auto; currently c".

Thread 3 (Thread 0x7f8c7d776950 (LWP 2811)):
[KCrash Handler]
#5  0x00007f8c960ab582 in ?? () from /usr/lib/libavcodec.so.52
#6  0x00007f8c960ac33f in ?? () from /usr/lib/libavcodec.so.52
#7  0x00007f8c95f7ed7d in avcodec_decode_audio3 () from /usr/lib/libavcodec.so.52
#8  0x00007f8c95f7ff47 in avcodec_decode_audio2 () from /usr/lib/libavcodec.so.52
#9  0x00007f8c96a0bf9b in ff_audio_decode_data (this_gen=0x7f8c800249a0, buf=0x57b17d0) at ff_audio_decoder.c:314
#10 0x00007f8c98726ac4 in audio_decoder_loop (stream_gen=<value optimized out>) at audio_decoder.c:362
#11 0x00007f8ca4906f9a in start_thread (arg=<value optimized out>) at pthread_create.c:300
#12 0x00007f8ca9e8056d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#13 0x0000000000000000 in ?? ()
The current source language is "auto; currently asm".

Thread 2 (Thread 0x7f8c7cf75950 (LWP 2812)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f8c9872f70b in xine_event_wait (queue_gen=<value optimized out>) at events.c:56
#2  listener_loop (queue_gen=<value optimized out>) at events.c:214
#3  0x00007f8ca4906f9a in start_thread (arg=<value optimized out>) at pthread_create.c:300
#4  0x00007f8ca9e8056d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#5  0x0000000000000000 in ?? ()
The current source language is "auto; currently c".

Thread 1 (Thread 0x7f8cac84f770 (LWP 2235)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f8cab08f499 in QWaitConditionPrivate::wait (this=0x1a17f38, mutex=0x1a17f18, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (this=0x1a17f38, mutex=0x1a17f18, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f8c9897b91b in Phonon::Xine::XineStream::closeBlocking (this=0x1a17ea0) at ../../xine/xinestream.cpp:1542
#4  0x00007f8c9898f226 in ~MediaObject (this=0x1821610, __in_chrg=<value optimized out>) at ../../xine/mediaobject.cpp:109
#5  0x00007f8ca6e95264 in Phonon::MediaNodePrivate::deleteBackendObject (this=0x181f060) at ../3rdparty/phonon/phonon/medianode.cpp:81
#6  0x00007f8ca6ea3e15 in ~FactoryPrivate (this=0x181eec0, __in_chrg=<value optimized out>) at ../3rdparty/phonon/phonon/factory.cpp:193
#7  0x00007f8ca9dea43d in *__GI_exit (status=1) at exit.c:75
#8  0x00007f8caa6496a8 in qt_xio_errhandler () at kernel/qapplication_x11.cpp:711
#9  0x00007f8cac377b08 in KApplication::xioErrhandler (this=0x7fff76c20320, dpy=0x18472f0) at ../../kdeui/kernel/kapplication.cpp:408
#10 0x00007f8ca94450ce in _XIOError (dpy=0x18472f0) at ../../src/XlibInt.c:2959
#11 0x00007f8ca944c028 in process_responses (dpy=0x18472f0, wait_for_first_event=0, current_error=0x0, current_request=0) at ../../src/xcb_io.c:240
#12 0x00007f8ca944c937 in _XEventsQueued (dpy=0x18472f0, mode=<value optimized out>) at ../../src/xcb_io.c:256
#13 0x00007f8ca9435cdb in XEventsQueued (dpy=0x18472f0, mode=2) at ../../src/Pending.c:44
#14 0x00007f8caa6840dc in x11EventSourceCheck (s=0x1814120) at kernel/qguieventdispatcher_glib.cpp:87
#15 0x00007f8ca3533fec in IA__g_main_context_check (context=0x1829120, max_priority=2147483647, fds=<value optimized out>, n_fds=-1) at /tmp/buildd/glib2.0-2.22.2/glib/gmain.c:2469
#16 0x00007f8ca35348a1 in g_main_context_iterate (context=0x1829120, block=1, dispatch=1, self=<value optimized out>) at /tmp/buildd/glib2.0-2.22.2/glib/gmain.c:2588
#17 0x00007f8ca3534b3c in IA__g_main_context_iteration (context=0x1829120, may_block=1) at /tmp/buildd/glib2.0-2.22.2/glib/gmain.c:2654
#18 0x00007f8cab19c39c in QEventDispatcherGlib::processEvents (this=0x1703bb0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:407
#19 0x00007f8caa683f1f in QGuiEventDispatcherGlib::processEvents (this=0x1a183cc, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:202
#20 0x00007f8cab172562 in QEventLoop::processEvents (this=<value optimized out>, flags=...) at kernel/qeventloop.cpp:149
#21 0x00007f8cab172934 in QEventLoop::exec (this=0x7fff76c202b0, flags=...) at kernel/qeventloop.cpp:201
#22 0x00007f8cab174ba4 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888
#23 0x00000000004097e2 in main (argc=1, argv=0x7fff76c220b8) at ../../src/main.cpp:225
The current source language is "auto; currently asm".

This bug may be a duplicate of or related to bug 206346

Reported using DrKonqi
Comment 1 Dario Andres 2009-11-11 02:15:53 UTC
- Does Amarok crash again if you repeat the situation ?
According to the bactrace this could be related to ffmpeg/xine, which would be unrelated to KDE code and should be reported upstream
Thanks
Comment 2 Simon80 2009-11-11 03:49:45 UTC
It is likely that this backtrace is the result of me trying to seek while using the xine backend. After the crash that resulted in the above trace, I switched to the gstreamer backend to see if it would work better, and then had a second crash. I then mixed up the two traces a couple of days later, apparently, when writing the bug reports.

It turns out that backend switching bug was also reported as 213704, only a couple  hours before this one, so I'm marking this as a duplicate.

*** This bug has been marked as a duplicate of bug 213704 ***
Comment 3 Myriam Schweingruber 2009-11-11 10:43:23 UTC
In fact a duplicate of this one: bug 213718

*** This bug has been marked as a duplicate of bug 213718 ***
Comment 4 Simon80 2009-11-12 04:42:38 UTC
This is madness. 213720 and 213718 are different bugs whose stack traces are swapped. If bugzilla allowed the description to be edited, this would be easier. Marking as invalid to avoid confusion.
Comment 5 Mark Kretschmann 2009-11-12 07:28:29 UTC
This one here seems to crash in avcodec_decode_audio3(), whatever that is. Maybe ffmpeg.