On 24 Jan 2022, at 16:42, Romain Beauxis wrote:
Hi Marvin,
Le mer. 19 janv. 2022 à 10:59, Marvin Scholz <epira...@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 <to...@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 <to...@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-requ...@ffmpeg.org with subject "unsubscribe".