From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 8FD4A48033 for ; Sat, 9 Dec 2023 12:09:58 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3C32E68D090; Sat, 9 Dec 2023 14:09:56 +0200 (EET) Received: from out203-205-221-173.mail.qq.com (out203-205-221-173.mail.qq.com [203.205.221.173]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E436968D066 for ; Sat, 9 Dec 2023 14:09:47 +0200 (EET) Received: from localhost.localdomain ([14.145.2.45]) by newxmesmtplogicsvrszc5-0.qq.com (NewEsmtp) with SMTP id 26802489; Sat, 09 Dec 2023 20:09:40 +0800 X-QQ-mid: xmsmtpt1702123780t7o3k4a71 Message-ID: X-QQ-XMAILINFO: MyIXMys/8kCt6AcIFMNMH/PbFy4XUioccihA5BXCLofN6WrOVL6G39YrMPUgKa 4fZ72Me+CoMsqjSsaPPMy2xWvIuxjEoa+RhqHDkijdWHpbFrNJ/RZGJqGbQ33IUIk3MIOsxlPDtx aTozz5X4Vf+c6e56eVJr1dTLhMUz/nHhrBVNKlgX2W1wP6FlG8pVwzuXrqmO+P7bszfl+w90Vzvn 7FMu2eabmsAQj0y256vss6AOCUObYMd7yAQgj92ruAdyFSbfXwxCD8ys9SisU5WjI1vK/vibEeO1 wbLLsl6p6+spDxJeUx1q82HSHdvIkATTyhvwOZ0RYw1vEvFm8Jl7Vx/CJ2zn4biJnSDs1IoOXVWA vYbP1nOggJVF+xHsQd7pBYLkeBQGL1jnrY3WW51lbwyG8w2L1c8MlhsYZ71Ce/yYQcbXWShPu6D9 l39hmtJIY3YhSP8rlY71wUf0a2re3VmAgbUEyhua27/+/lS1RzCKSlCiz8pNjKsx88o85d1aA+15 PuZcmxukt+umM/HxTyzfWkw+LpDJobV577hZlhr4s6fwWYTeweHQaVPTSeXkJnYd9vl0rwX+dnSh fXRnOwF9fSQ4cDb2EzWIGERyNARI8b+I//kZNB8tsPjVsnhOacMjN4TAX6rlFL3ZkPO7Vua+c9tz qA1Y6BRgEFPmN+08R3AMLZ3cEmdUOJphb8t3+jM3EDFcCQ6BmcDIs+sdJ457znNZpodehL7HQFXJ mC1XDqOkuGPnRIBDYjrqmSxi8+XMelJLAi9jgdQDH8YkzTWADGbboDQ9l6P1YbJY00T0j5xBMLPJ oV1x2lBGhW28kWUwN8lRnHfp9ZucsNwgkXqboOsgSYq8sIrSPdi5Hx/j6FeWhbtAjv0hye/CsY5l /BSwfKPpMkxMfJ6mqngHqLd8xHhU8Bc7kr1twmt9vZXBDD6Mq8suOQMABe/IglfT3XoI21G7+D1o Jsa4xetwYwVo9iSgXFD1RKSY0HIWcF8zA0kGDhOrTcmCKgH4a94g== X-QQ-XMRINFO: NI4Ajvh11aEj8Xl/2s1/T8w= To: ffmpeg-devel@ffmpeg.org Date: Sat, 9 Dec 2023 20:09:38 +0800 X-OQ-MSGID: <20231209120938.32648-1-839789740@qq.com> X-Mailer: git-send-email 2.32.0 (Apple Git-132) MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avdevice/avfoundation: replace deprecated AVCaptureDevice X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: xufuji456 via ffmpeg-devel Reply-To: FFmpeg development discussions and patches Cc: xufuji456 <839789740@qq.com> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Building with iOS platform, the compiler has a warning: "'devicesWithMediaType:' is deprecated: first deprecated in iOS 10.0 - Use AVCaptureDeviceDiscoverySession instead" Signed-off-by: xufuji456 <839789740@qq.com> --- libavdevice/avfoundation.m | 65 +++++++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 5 deletions(-) diff --git a/libavdevice/avfoundation.m b/libavdevice/avfoundation.m index 36ad834753..aa892fae60 100644 --- a/libavdevice/avfoundation.m +++ b/libavdevice/avfoundation.m @@ -761,6 +761,61 @@ static int get_audio_config(AVFormatContext *s) return 0; } +static NSArray* getDevicesWithMediaType(AVMediaType mediaType) { +#if ((TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000) || (TARGET_OS_OSX && __MAC_OS_X_VERSION_MAX_ALLOWED >= 101500)) + NSMutableArray *deviceTypes = nil; + if (mediaType == AVMediaTypeVideo) { + deviceTypes = [NSMutableArray arrayWithArray:@[AVCaptureDeviceTypeBuiltInWideAngleCamera]]; + #if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000) + [deviceTypes addObject: AVCaptureDeviceTypeBuiltInDualCamera]; + [deviceTypes addObject: AVCaptureDeviceTypeBuiltInTelephotoCamera]; + #endif + #if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MAX_ALLOWED >= 110100) + [deviceTypes addObject: AVCaptureDeviceTypeBuiltInTrueDepthCamera]; + #endif + #if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000) + [deviceTypes addObject: AVCaptureDeviceTypeBuiltInTripleCamera]; + [deviceTypes addObject: AVCaptureDeviceTypeBuiltInDualWideCamera]; + [deviceTypes addObject: AVCaptureDeviceTypeBuiltInUltraWideCamera]; + #endif + #if (TARGET_OS_OSX && __MAC_OS_X_VERSION_MAX_ALLOWED >= 130000) + [deviceTypes addObject: AVCaptureDeviceTypeDeskViewCamera]; + #endif + #if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MAX_ALLOWED >= 150400) + [deviceTypes addObject: AVCaptureDeviceTypeBuiltInLiDARDepthCamera]; + #endif + #if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MAX_ALLOWED >= 170000 || (TARGET_OS_OSX && __MAC_OS_X_VERSION_MAX_ALLOWED >= 140000)) + [deviceTypes addObject: AVCaptureDeviceTypeContinuityCamera]; + #endif + } else if (mediaType == AVMediaTypeAudio) { + #if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MAX_ALLOWED >= 170000 || (TARGET_OS_OSX && __MAC_OS_X_VERSION_MAX_ALLOWED >= 140000)) + deviceTypes = [NSMutableArray arrayWithArray:@[AVCaptureDeviceTypeMicrophone]]; + #else + deviceTypes = [NSMutableArray arrayWithArray:@[AVCaptureDeviceTypeBuiltInMicrophone]]; + #endif + } else if (mediaType == AVMediaTypeMuxed) { + #if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MAX_ALLOWED >= 170000 || (TARGET_OS_OSX && __MAC_OS_X_VERSION_MAX_ALLOWED >= 140000)) + deviceTypes = [NSMutableArray arrayWithArray:@[AVCaptureDeviceTypeExternal]]; + #elseif (TARGET_OS_OSX && __MAC_OS_X_VERSION_MAX_ALLOWED < 140000) + deviceTypes = [NSMutableArray arrayWithArray:@[AVCaptureDeviceTypeExternalUnknown]]; + #else + return nil; + #endif + } else { + return nil; + } + + AVCaptureDeviceDiscoverySession *captureDeviceDiscoverySession = + [AVCaptureDeviceDiscoverySession + discoverySessionWithDeviceTypes:deviceTypes + mediaType:mediaType + position:AVCaptureDevicePositionUnspecified]; + return [captureDeviceDiscoverySession devices]; +#else + return [AVCaptureDevice devicesWithMediaType:mediaType]; +#endif +} + static int avf_read_header(AVFormatContext *s) { int ret = 0; @@ -770,8 +825,8 @@ static int avf_read_header(AVFormatContext *s) AVCaptureDevice *video_device = nil; AVCaptureDevice *audio_device = nil; // Find capture device - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; - NSArray *devices_muxed = [AVCaptureDevice devicesWithMediaType:AVMediaTypeMuxed]; + NSArray *devices = getDevicesWithMediaType(AVMediaTypeVideo); + NSArray *devices_muxed = getDevicesWithMediaType(AVMediaTypeMuxed); ctx->num_video_devices = [devices count] + [devices_muxed count]; @@ -806,7 +861,7 @@ static int avf_read_header(AVFormatContext *s) #endif av_log(ctx, AV_LOG_INFO, "AVFoundation audio devices:\n"); - devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio]; + devices = getDevicesWithMediaType(AVMediaTypeAudio); for (AVCaptureDevice *device in devices) { const char *name = [[device localizedName] UTF8String]; int index = [devices indexOfObject:device]; @@ -930,7 +985,7 @@ static int avf_read_header(AVFormatContext *s) // get audio device if (ctx->audio_device_index >= 0) { - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio]; + NSArray *devices = getDevicesWithMediaType(AVMediaTypeAudio); if (ctx->audio_device_index >= [devices count]) { av_log(ctx, AV_LOG_ERROR, "Invalid audio device index\n"); @@ -943,7 +998,7 @@ static int avf_read_header(AVFormatContext *s) if (!strncmp(ctx->audio_filename, "default", 7)) { audio_device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]; } else { - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio]; + NSArray *devices = getDevicesWithMediaType(AVMediaTypeAudio); for (AVCaptureDevice *device in devices) { if (!strncmp(ctx->audio_filename, [[device localizedName] UTF8String], strlen(ctx->audio_filename))) { -- 2.32.0 (Apple Git-132) _______________________________________________ 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".