From: "Marvin Scholz" <epirat07@gmail.com> To: "Romain Beauxis" <toots@rastageeks.org> Cc: Thilo Borgmann <thilo.borgmann@mail.de>, FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Subject: Re: [FFmpeg-devel] [PATCH 5/5] Add AudioToolbox audio input device. Date: Mon, 24 Jan 2022 17:19:12 +0100 Message-ID: <84901729-914E-40BB-9646-36C67FBC14EE@gmail.com> (raw) In-Reply-To: <CABWZ6OTySeqciVp2r9DBy3K52GoBHBMYbimVF86YwyjwPq+xkQ@mail.gmail.com> On 24 Jan 2022, at 16:42, Romain Beauxis wrote: > Hi Marvin, > > Le mer. 19 janv. 2022 à 10:59, Marvin Scholz <epirat07@gmail.com> a > écrit : >> On 19 Jan 2022, at 15:42, Romain Beauxis wrote: >> >> Hi, thanks for the patch. I've not done a full code review yet, just >> a >> few >> initial remarks below: >> >>> This patch adds support for a new, audio-specific input device using >>> the documented and battle-tested AUHAL input. This provides a >>> pendant >>> to the AudioToolbox audio-only output. >>> >>> A couple of advantages for this: >>> * It avoids a lot of the complexity of supporting audio and video in >>> a >>> single input >>> * The AUHAL API seems tested, documented and robust >>> * This implementation hopefully gives good control over audio >>> latency >>> and also minimizes data copy > > Thanks! > > Do you need more time for this review? We discovered another issue > with the dynamic array of video devices and I'd like to send a revised > series soon. Well if you want to address the things I mentioned last time it will anyway change a bunch of things probably, so it might be easier if I just wait for the new patch. Additionally it might be useful to send it independent of the whole patchset as IIUC it does not really depend on any of the previous patches. > Also, I think I'll reorder the patches so that the most > trivial one (unique device name, probing API call updates) can be > applied right away. > > Let me know! > Romain > >>> From: Romain Beauxis <toots@rastageeks.org> >>> To: ffmpeg-devel@ffmpeg.org >>> Subject: [PATCH] Add AudioToolbox audio input device. >>> Date: 18. January 2022 at 23:29 >>> Signed-off-by: Romain Beauxis <toots@rastageeks.org> >>> --- >>> configure | 5 + >>> doc/indevs.texi | 44 ++++ >>> libavdevice/Makefile | 1 + >>> libavdevice/alldevices.c | 1 + >>> libavdevice/audiotoolbox_dec.m | 466 >>> +++++++++++++++++++++++++++++++++ >>> 5 files changed, 517 insertions(+) >>> create mode 100644 libavdevice/audiotoolbox_dec.m >>> >>> diff --git a/configure b/configure >>> index 1413122d87..80e39aae44 100755 >>> --- a/configure >>> +++ b/configure >>> @@ -204,6 +204,7 @@ External library support: >>> --disable-avfoundation disable Apple AVFoundation framework >>> [autodetect] >>> --enable-avisynth enable reading of AviSynth script files >>> [no] >>> --disable-bzlib disable bzlib [autodetect] >>> + --disable-coremedia disable Apple CoreMedia framework >>> [autodetect] >>> --disable-coreimage disable Apple CoreImage framework >>> [autodetect] >>> --enable-chromaprint enable audio fingerprinting with >>> chromaprint [no] >>> --enable-frei0r enable frei0r video filtering [no] >>> @@ -1750,6 +1751,7 @@ EXTERNAL_AUTODETECT_LIBRARY_LIST=" >>> appkit >>> avfoundation >>> bzlib >>> + coremedia >>> coreimage >>> iconv >>> libxcb >>> @@ -3493,6 +3495,8 @@ alsa_outdev_deps="alsa" >>> avfoundation_indev_deps="avfoundation corevideo coremedia pthreads" >>> avfoundation_indev_suggest="coregraphics applicationservices" >>> avfoundation_indev_extralibs="-framework Foundation" >>> +audiotoolbox_indev_deps="coremedia audiotoolbox" >>> +audiotoolbox_indev_extralibs="-framework CoreMedia -framework >>> AudioToolbox" >>> audiotoolbox_outdev_deps="audiotoolbox pthreads" >>> audiotoolbox_outdev_extralibs="-framework AudioToolbox -framework >>> CoreAudio" >>> bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h >>> dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h" >>> @@ -6340,6 +6344,7 @@ check_lib camera2ndk "stdbool.h stdint.h >>> camera/NdkCameraManager.h" ACameraManag >>> enabled appkit && check_apple_framework AppKit >>> enabled audiotoolbox && check_apple_framework AudioToolbox >>> enabled avfoundation && check_apple_framework AVFoundation >>> +enabled coremedia && check_apple_framework CoreMedia >>> enabled coreimage && check_apple_framework CoreImage >>> enabled metal && check_apple_framework Metal >>> enabled videotoolbox && check_apple_framework VideoToolbox >>> diff --git a/doc/indevs.texi b/doc/indevs.texi >>> index 858c0fa4e4..30a91d304f 100644 >>> --- a/doc/indevs.texi >>> +++ b/doc/indevs.texi >>> @@ -103,6 +103,50 @@ Set the maximum number of frames to buffer. >>> Default is 5. >>> >>> @end table >>> >>> +@section AudioToolbox >>> + >>> +AudioToolbox input device. >>> + >>> +Allows native input from CoreAudio devices on OSX. >> Nit: Nowadays it's macOS instead of OSX >> >>> + >>> +All available devices can be enumerated by using >>> @option{-list_devices true}, listing >>> +all device names, and corresponding unique ID. >> >> Instead of adding another device that uses a custom list-devices >> option, >> could you >> instead implement the .get_device_list callback? (See alsa or pulse >> modules for an >> example) Then listing would work properly with the `ffmpeg -sources` >> command and >> devices could be iterated over using the avdevice APIs as well. >> >> (Ideally we would have that for AVFoundation too but its really hard >> now >> to do that >> in a backwards compatible manner) >> >>> + >>> +@subsection Options >>> + >>> +AudioToolbox supports the following options: >>> + >>> +@table @option >>> + >>> +@item channels >>> +Set the number of channels. Default is device's default. >>> + >>> +@item frames_queue_length >>> +Maximum of buffers in the input queue >>> + >>> +@item buffer_frame_size >>> +Buffer frame size, gouverning internal latency >>> + >>> +@item big_endian >>> +Return big endian samples >>> + >>> +@item sample_format >>> +Sample format >>> + >>> +@end table >>> + >>> +@subsection Examples >>> + >>> +@itemize >>> + >>> +@item >>> +Print the list of supported devices >>> +@example >>> +$ ffmpeg -f audiotoolbox -list_devices true -i "" >>> +@end example >>> + >>> +@end itemize >>> + >>> @section avfoundation >> […] _______________________________________________ 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 prev parent reply other threads:[~2022-01-24 16:19 UTC|newest] Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-01-19 14:17 [FFmpeg-devel] [PATCH 0/5] macos avdevice fixes and improvements Romain Beauxis 2022-01-19 14:23 ` [FFmpeg-devel] [PATCH 1/5] libavdevice/avfoundation.m: use setAudioSettings, extend supported formats Romain Beauxis 2022-01-19 14:27 ` Marvin Scholz 2022-01-19 14:28 ` Andreas Rheinhardt 2022-01-19 16:48 ` Thilo Borgmann 2022-01-19 14:31 ` Gyan Doshi 2022-01-19 15:14 ` Romain Beauxis 2022-01-19 15:19 ` Gyan Doshi 2022-01-19 15:21 ` Romain Beauxis 2022-01-19 15:45 ` Gyan Doshi 2022-01-19 15:52 ` Romain Beauxis 2022-01-19 14:35 ` [FFmpeg-devel] [PATCH 2/5] libavdevice/avfoundation.m: Replace mutex-based concurrency by a thread-safe fifo queue with maximum length Romain Beauxis 2022-01-19 14:38 ` [FFmpeg-devel] [PATCH 3/5] libavdevice/avfoundation.m: Allow to select devices by unique ID Romain Beauxis 2022-01-19 14:39 ` [FFmpeg-devel] [PATCH 4/5] Use appropriate method for device discovery Romain Beauxis 2022-01-19 14:42 ` [FFmpeg-devel] [PATCH 5/5] Add AudioToolbox audio input device Romain Beauxis 2022-01-19 16:59 ` Marvin Scholz 2022-01-24 15:42 ` Romain Beauxis 2022-01-24 16:19 ` Marvin Scholz [this message] 2022-01-24 16:20 ` Romain Beauxis 2022-01-29 20:35 ` Romain Beauxis 2022-01-29 20:41 ` Andreas Rheinhardt 2022-01-29 20:43 ` Romain Beauxis
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=84901729-914E-40BB-9646-36C67FBC14EE@gmail.com \ --to=epirat07@gmail.com \ --cc=ffmpeg-devel@ffmpeg.org \ --cc=thilo.borgmann@mail.de \ --cc=toots@rastageeks.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