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: Wed, 19 Jan 2022 17:59:54 +0100
Message-ID: <9CD91E4E-DD94-47D7-B2CC-B8DBD3758FB5@gmail.com> (raw)
In-Reply-To: <721A53D6-1103-4A9B-A1CA-FEC80C93483E@rastageeks.org>
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
> 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-19 17:00 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 [this message]
2022-01-24 15:42 ` Romain Beauxis
2022-01-24 16:19 ` Marvin Scholz
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=9CD91E4E-DD94-47D7-B2CC-B8DBD3758FB5@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