From: Anton Khirnov <anton@khirnov.net> To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [RFC] Switching ffmpeg.c to a threaded architecture Date: Mon, 4 Apr 2022 13:29:48 +0200 Message-ID: <20220404113037.13070-1-anton@khirnov.net> (raw) Hi, this WIP patchset is the first major part of my ongoing work to change ffmpeg.c architecture such that every - demuxer - decoder - filtergraph - encoder - muxer lives in its own thread. The advantages of doing this, beyond increased throughput, would be enforced separation between these components, making the code more local and easier to reason about. This set implements threading for muxers. My tentative plan is to continue with encoders and then filters. The patches still need some polishing, especially the last one. Two FATE tests do not yet pass, this will be fixed in later iterations. Meanwhile, comments on the overall approach are especially welcome. -- Anton Khirnov _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next reply other threads:[~2022-04-04 11:32 UTC|newest] Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-04-04 11:29 Anton Khirnov [this message] 2022-04-04 11:29 ` [FFmpeg-devel] [PATCH 01/49] fftools/ffmpeg: drop an obsolete hack Anton Khirnov 2022-04-04 11:29 ` [FFmpeg-devel] [PATCH 02/49] fftools/ffmpeg: move a comment to a more appropriate place Anton Khirnov 2022-04-06 11:20 ` James Almer 2022-04-04 11:29 ` [FFmpeg-devel] [PATCH 03/49] fftools/ffmpeg: stop using OutputStream.frame_number for streamcopy Anton Khirnov 2022-04-06 11:20 ` James Almer 2022-04-04 11:29 ` [FFmpeg-devel] [PATCH 04/49] fftools/ffmpeg: pass the muxer context explicitly to some functions Anton Khirnov 2022-04-04 11:29 ` [FFmpeg-devel] [PATCH 05/49] fftools/ffmpeg: store the output file index in OutputFile Anton Khirnov 2022-04-04 11:29 ` [FFmpeg-devel] [PATCH 06/49] fftools/ffmpeg: move some muxing-related code into a separate file Anton Khirnov 2022-04-04 11:29 ` [FFmpeg-devel] [PATCH 07/49] fftools/ffmpeg: move writing the trailer to ffmpeg_mux.c Anton Khirnov 2022-04-04 11:29 ` [FFmpeg-devel] [PATCH 08/49] fftools/ffmpeg: move freeing the output file " Anton Khirnov 2022-04-04 11:29 ` [FFmpeg-devel] [PATCH 09/49] fftools/ffmpeg: store output format separately from the muxer context Anton Khirnov 2022-04-06 12:00 ` James Almer 2022-04-13 10:18 ` Anton Khirnov 2022-04-04 11:29 ` [FFmpeg-devel] [PATCH 10/49] fftools/ffmpeg_mux: add private " Anton Khirnov 2022-04-04 11:29 ` [FFmpeg-devel] [PATCH 11/49] fftools/ffmpeg: add a helper function to access output file size Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 12/49] fftools/ffmpeg: fix the type of limit_filesize Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 13/49] fftools/ffmpeg: refactor limiting output file size with -fs Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 14/49] fftools/ffmpeg: set want_sdp when initializing the muxer Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 15/49] fftools/ffmpeg: write the header for stream-less outputs " Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 16/49] fftools/ffmpeg: move closing the file into of_write_trailer() Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 17/49] fftools/ffmpeg: refactor the code checking for bitexact output Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 18/49] fftools/ffmpeg: access output file chapters through a wrapper Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 19/49] fftools/ffmpeg: do not log to the muxer context Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 20/49] fftools/ffmpeg: move the mux queue into muxer private data Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 21/49] fftools/ffmpeg_mux: split queuing packets into a separate function Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 22/49] fftools/ffmpeg_mux: split of_write_packet() Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 23/49] fftools/ffmpeg: move output file opts into private context Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 24/49] fftools/ffmpeg: move processing video stats to ffmpeg_mux Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 25/49] fftools/ffmpeg_mux: drop a useless check and reduce indentation Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 26/49] fftools/ffmpeg_mux: stop using AVStream.nb_frames in do_video_stats() Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 27/49] fftools/ffmpeg_mux: stop using av_stream_get_end_pts() " Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 28/49] fftools/ffmpeg_mux: merge variable declaration and initialization Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 29/49] fftools/ffmpeg_mux: move processing AV_PKT_DATA_QUALITY_STATS to do_video_stats() Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 30/49] fftools/ffmpeg: share the code encoding a single frame between video and audio Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 31/49] fftools/ffmpeg: reuse the encoding code for flushing encoders Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 32/49] fftools/ffmpeg: reindent after previous commit Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 33/49] fftools/ffmpeg: use refcounted packets for encoded subtitles Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 34/49] fftools/ffmpeg: rework -shortest implementation Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 35/49] fftools/ffmpeg: use the sync queues to handle -frames Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 36/49] fftools/ffmpeg: stop using OutputStream.frame_number in print_report() Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 37/49] fftools/ffmpeg: only set OutputStream.frame_number for video encoding Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 38/49] fftools/ffmpeg: make the muxer AVFormatContext private to ffmpeg_mux.c Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 39/49] fftools/ffmpeg_mux: return errors from of_submit_packet() Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 40/49] fftools/ffmpeg_mux: return errors from submit_packet() Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 41/49] fftools/ffmpeg_mux: return errors from write_packet() Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 42/49] fftools/ffmpeg_mux: simplify submit_packet() Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 43/49] fftools/ffmpeg_mux: return errors from update_video_stats() Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 44/49] fftools/ffmpeg_mux: do not call exit_program() in print_sdp() Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 45/49] fftools/ffmpeg: stop using av_stream_get_end_pts() Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 46/49] fftools/ffmpeg: do not write the output file header from init_output_stream() Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 47/49] fftools/ffmpeg: depend on threads Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 48/49] fftools: add a multistream thread-safe queue Anton Khirnov 2022-04-04 11:30 ` [FFmpeg-devel] [PATCH 49/49] fftools/ffmpeg: move each muxer to a separate thread Anton Khirnov 2022-04-05 9:00 ` [FFmpeg-devel] [RFC] Switching ffmpeg.c to a threaded architecture Anton Khirnov 2022-04-05 19:15 ` Michael Niedermayer 2022-04-05 19:46 ` Anton Khirnov 2022-04-05 21:05 ` Soft Works 2022-04-05 21:18 ` Paul B Mahol 2022-04-05 21:19 ` Soft Works 2022-04-06 11:17 ` Paul B Mahol 2022-04-06 15:46 ` Soft Works 2022-04-06 15:54 ` Matt Zagrabelny 2022-04-06 8:41 ` Anton Khirnov 2022-04-06 16:29 ` Soft Works 2022-04-06 17:38 ` Paul B Mahol 2022-04-06 17:56 ` Kieran Kunhya 2022-04-06 18:53 ` Soft Works 2022-04-07 8:32 ` Anton Khirnov 2022-04-08 15:27 ` Soft Works 2022-04-11 8:28 ` Anton Khirnov 2022-04-11 20:09 ` Soft Works 2022-04-11 20:52 ` Paul B Mahol 2022-04-11 20:58 ` Soft Works 2022-04-12 9:29 ` Paul B Mahol 2022-04-12 22:43 ` Soft Works 2022-04-13 9:42 ` Nicolas George 2022-04-13 22:14 ` Soft Works 2022-04-14 10:02 ` Paul B Mahol 2022-04-14 21:37 ` Soft Works 2022-04-06 10:02 ` Anton Khirnov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220404113037.13070-1-anton@khirnov.net \ --to=anton@khirnov.net \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git