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 A2B8042E6C for ; Mon, 4 Dec 2023 14:25:33 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6521568C3FD; Mon, 4 Dec 2023 16:25:30 +0200 (EET) Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 19A7768C99F for ; Mon, 4 Dec 2023 16:25:24 +0200 (EET) Received: by mail-ej1-f43.google.com with SMTP id a640c23a62f3a-a19ce1404e1so420580566b.3 for ; Mon, 04 Dec 2023 06:25:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701699923; x=1702304723; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=BSAJuxn/6yjv6GpLdakII72dV0NPolPKq/IvEEqUqho=; b=kG8Qm41zVDIqJ8CjFtVR2hVTr57frw31/UgWIzT5/2iLCyGpeibx/XGKa5ndS+IyqC 3MYHu9EwfgLRL+n/vtT04ZctPZIcAEv0DQRMs4hlpIYo7awauVJe4pDDHIxtfQJHZJJt utsk3OVlFgzIjOEr6e6Vlo2gR/i5vKcKymP7UGMtKC+IBL2hS568GFHKuayjFlVIzpcM 2y9pB5o3PMFE7/q/oUS7uLSLTTejeYY4YQQR11ru+pGGPm/KyXoJa7KaWjfXzsyLl4YX nKtHwqsRQw2z2htwdNdCX97Kpno4CdnsEw58Tt/24RjxwlDPSZdM67NmzvysqJ+4hgYc P+FA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701699923; x=1702304723; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BSAJuxn/6yjv6GpLdakII72dV0NPolPKq/IvEEqUqho=; b=mpt2rTlV3eqv3PNFUsZeRXnD6tGqCdn/IvfVtXeNkXm7qTJVAIalagyQN9HwMPf3LL m3kx842oDVQPpLbLHOUsPPOLYzGs0fyH2uzwoikJFNYruTU7IO02XzIEP3s7lMX7qijm 7Qp0V/jeGe10kXDLqxTrvdl4t1HWplO7ct/w+E29gQe4b1niocL2kyf47FxglBvOfEFJ I46O1aAOwUshzNoU96kpsjG6OuszwO+KyCXn3meyY4Oxrsu8QqLsb6eeLfD0QZJBn17i W0VXeqUQAS16bFLX2Zogainqz7mlyB6jXAp2qmGJthXb339hl0ETLjzVub42i67OfSJt 8zTQ== X-Gm-Message-State: AOJu0YxUkKWeT4718nQpB3gcV3EJG6W4ciEjeQ17rlMSwebbgD6QRGKf V5dIeCFU5OqRkn2lCcQ83qDVWYQkodpCFg== X-Google-Smtp-Source: AGHT+IGJ0xw6dxSfhmG95DFeXqn2xJiC95LiS6d6WZ04hdkL6PB1hcUqGPxE2Gzscn0RrvbRxW/Rgg== X-Received: by 2002:a17:906:1b0b:b0:a19:a1ba:da58 with SMTP id o11-20020a1709061b0b00b00a19a1bada58mr3394421ejg.127.1701699923240; Mon, 04 Dec 2023 06:25:23 -0800 (PST) Received: from [192.168.1.104] (84-112-104-25.cable.dynamic.surfer.at. [84.112.104.25]) by smtp.gmail.com with ESMTPSA id r23-20020a170906365700b00a177e311e09sm5296171ejb.70.2023.12.04.06.25.22 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2023 06:25:22 -0800 (PST) From: epirat07@gmail.com To: FFmpeg development discussions and patches Date: Mon, 04 Dec 2023 15:25:21 +0100 X-Mailer: MailMate (1.14r5937) Message-ID: <6F9585AF-4821-4B84-A238-0A4371679374@gmail.com> In-Reply-To: References: MIME-Version: 1.0 Subject: Re: [FFmpeg-devel] [PATCH] avdevice/avfoundation: replace AVCaptureDevice with new api 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: , Reply-To: FFmpeg development discussions and patches 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: On 4 Dec 2023, at 13:47, xufuji456 via ffmpeg-devel wrote: > 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> Thanks for the patch, some remarks inline below: > --- > libavdevice/avfoundation.m | 81 +++++++++++++++++++++++++++++++++++--- > 1 file changed, 76 insertions(+), 5 deletions(-) > > diff --git a/libavdevice/avfoundation.m b/libavdevice/avfoundation.m > index 36ad834753..668c726eb7 100644 > --- a/libavdevice/avfoundation.m > +++ b/libavdevice/avfoundation.m > @@ -770,8 +770,38 @@ 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 = nil; > + NSArray *devices_muxed = nil; > + > + if (TARGET_OS_IPHONE) { This should use a SDK guard, like: #if ((TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000) || (TARGET_OS_OSX && __MAC_OS_X_VERSION_MAX_ALLOWED >= 101500)) (You can check https://epir.at/2019/10/30/api-availability-and-target-conditionals/ where I provided a more details about these) > + if (@available(iOS 10.0, *)) { This should be extended for other OSes too, the API is not just deprecated on iOS. > + AVCaptureDeviceDiscoverySession *captureDeviceDiscoverySession = > + [AVCaptureDeviceDiscoverySession > + discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInWideAngleCamera] > + mediaType:AVMediaTypeVideo > + position:AVCaptureDevicePositionUnspecified]; > + devices = [captureDeviceDiscoverySession devices]; > + } else { > + devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; > + } > + } else { > + devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; > + } > + > + if (TARGET_OS_IPHONE) { > + if (@available(iOS 10.0, *)) { > + AVCaptureDeviceDiscoverySession *captureDeviceDiscoverySession = > + [AVCaptureDeviceDiscoverySession > + discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInWideAngleCamera] > + mediaType:AVMediaTypeMuxed > + position:AVCaptureDevicePositionUnspecified]; > + devices_muxed = [captureDeviceDiscoverySession devices]; > + } else { > + devices_muxed = [AVCaptureDevice devicesWithMediaType:AVMediaTypeMuxed]; > + } > + } else { > + devices_muxed = [AVCaptureDevice devicesWithMediaType:AVMediaTypeMuxed]; > + } > > ctx->num_video_devices = [devices count] + [devices_muxed count]; > > @@ -806,7 +836,20 @@ static int avf_read_header(AVFormatContext *s) > #endif > > av_log(ctx, AV_LOG_INFO, "AVFoundation audio devices:\n"); > - devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio]; > + if (TARGET_OS_IPHONE) { > + if (@available(iOS 10.0, *)) { > + AVCaptureDeviceDiscoverySession *captureDeviceDiscoverySession = > + [AVCaptureDeviceDiscoverySession > + discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInWideAngleCamera] > + mediaType:AVMediaTypeAudio > + position:AVCaptureDevicePositionUnspecified]; > + devices = [captureDeviceDiscoverySession devices]; > + } else { > + devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio]; > + } > + } else { > + devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio]; > + } > for (AVCaptureDevice *device in devices) { > const char *name = [[device localizedName] UTF8String]; > int index = [devices indexOfObject:device]; > @@ -930,7 +973,21 @@ static int avf_read_header(AVFormatContext *s) > > // get audio device > if (ctx->audio_device_index >= 0) { > - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio]; > + NSArray *devices = nil; > + if (TARGET_OS_IPHONE) { > + if (@available(iOS 10.0, *)) { > + AVCaptureDeviceDiscoverySession *captureDeviceDiscoverySession = > + [AVCaptureDeviceDiscoverySession > + discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInWideAngleCamera] > + mediaType:AVMediaTypeAudio > + position:AVCaptureDevicePositionUnspecified]; > + devices = [captureDeviceDiscoverySession devices]; > + } else { > + devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio]; > + } > + } else { > + devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio]; > + } > > if (ctx->audio_device_index >= [devices count]) { > av_log(ctx, AV_LOG_ERROR, "Invalid audio device index\n"); > @@ -943,7 +1000,21 @@ 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 = nil; > + if (TARGET_OS_IPHONE) { > + if (@available(iOS 10.0, *)) { > + AVCaptureDeviceDiscoverySession *captureDeviceDiscoverySession = > + [AVCaptureDeviceDiscoverySession > + discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInWideAngleCamera] > + mediaType:AVMediaTypeAudio > + position:AVCaptureDevicePositionUnspecified]; > + devices = [captureDeviceDiscoverySession devices]; > + } else { > + devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio]; > + } > + } else { > + devices = [AVCaptureDevice devicesWithMediaType: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". _______________________________________________ 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".