[FFmpeg-devel] [FFmpeg-cvslog] fftools/ffmpeg: convert to a threaded architecture

Thilo Borgmann thilo.borgmann at mail.de
Thu Dec 14 10:18:30 EET 2023


Am 14.12.23 um 00:16 schrieb Michael Niedermayer:
> On Tue, Dec 12, 2023 at 07:41:18AM +0000, Anton Khirnov wrote:
>> ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Tue Jul 18 16:37:52 2023 +0200| [d119ae2fd82a494d9430ff4d4fc262961a68c598] | committer: Anton Khirnov
>>
>> fftools/ffmpeg: convert to a threaded architecture
>>
>> Change the main loop and every component (demuxers, decoders, filters,
>> encoders, muxers) to use the previously added transcode scheduler. Every
>> instance of every such component was already running in a separate
>> thread, but now they can actually run in parallel.
>>
>> Changes the results of ffmpeg-fix_sub_duration_heartbeat - tested by
>> JEEB to be more correct and deterministic.
>>
>>> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d119ae2fd82a494d9430ff4d4fc262961a68c598
>> ---

Using --assert-level=2 breaks "everything" pretty early.
I'm on 5256b2f:

thilo at MAC-2 FFmpeg % lldb -- ./ffmpeg_g -lavfi testsrc2 -f null -
(lldb) target create "./ffmpeg_g"
Current executable set to '/Users/thilo/FFmpeg/ffmpeg_g' (arm64).
(lldb) settings set -- target.run-args  "-lavfi" "testsrc2" "-f" "null" "-"
(lldb) r
Process 24543 launched: '/Users/thilo/FFmpeg/ffmpeg_g' (arm64)
ffmpeg version N-112972-g5256b2fbe6 Copyright (c) 2000-2023 the FFmpeg developers
   built with Apple clang version 12.0.5 (clang-1205.0.22.9)
   configuration: --assert-level=2
   libavutil      58. 33.100 / 58. 33.100
   libavcodec     60. 35.100 / 60. 35.100
   libavformat    60. 18.100 / 60. 18.100
   libavdevice    60.  4.100 / 60.  4.100
   libavfilter     9. 14.100 /  9. 14.100
   libswscale      7.  6.100 /  7.  6.100
   libswresample   4. 13.100 /  4. 13.100
Stream mapping:
   testsrc2:default -> Stream #0:0 (wrapped_avframe)
pthread_mutex_lock failed with error: Invalid argument
Process 24543 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
     frame #0: 0x000000018cb3ed78 libsystem_kernel.dylib`__pthread_kill + 8
libsystem_kernel.dylib`__pthread_kill:
->  0x18cb3ed78 <+8>:  b.lo   0x18cb3ed98               ; <+40>
     0x18cb3ed7c <+12>: pacibsp
     0x18cb3ed80 <+16>: stp    x29, x30, [sp, #-0x10]!
     0x18cb3ed84 <+20>: mov    x29, sp
Target 0: (ffmpeg_g) stopped.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
   * frame #0: 0x000000018cb3ed78 libsystem_kernel.dylib`__pthread_kill + 8
     frame #1: 0x000000018cb73ee0 libsystem_pthread.dylib`pthread_kill + 288
     frame #2: 0x000000018caae340 libsystem_c.dylib`abort + 168
     frame #3: 0x0000000100c5d028 ffmpeg_g`sch_start.cold.2 at ffmpeg_sched.c:91:5 [opt]
     frame #4: 0x00000001000204ac ffmpeg_g`sch_start at thread.h:91:5 [opt]
     frame #5: 0x00000001000204a0 ffmpeg_g`sch_start(sch=<unavailable>) at ffmpeg_sched.c:1415 [opt]
     frame #6: 0x000000010002b2b4 ffmpeg_g`main [inlined] transcode(sch=<unavailable>) at ffmpeg.c:922:11 [opt]
     frame #7: 0x000000010002aeb8 ffmpeg_g`main(argc=<unavailable>, argv=<unavailable>) at ffmpeg.c:1050 [opt]
     frame #8: 0x0000000102c1908c dyld`start + 520

-Thilo


More information about the ffmpeg-devel mailing list