From patchwork Sat Apr 4 11:57:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thilo Borgmann X-Patchwork-Id: 18640 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 5BC78449293 for ; Sat, 4 Apr 2020 14:57:39 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 30FBA68B310; Sat, 4 Apr 2020 14:57:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from shout01.mail.de (shout01.mail.de [62.201.172.24]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 818B768B0C7 for ; Sat, 4 Apr 2020 14:57:33 +0300 (EEST) Received: from postfix01.mail.de (postfix01.bt.mail.de [10.0.121.125]) by shout01.mail.de (Postfix) with ESMTP id 3606F10031F for ; Sat, 4 Apr 2020 13:57:33 +0200 (CEST) Received: from smtp02.mail.de (smtp02.bt.mail.de [10.0.121.212]) by postfix01.mail.de (Postfix) with ESMTP id 1E68F8022A for ; Sat, 4 Apr 2020 13:57:33 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mail.de; s=mailde201610; t=1586001453; bh=p1K+Pt+5YpoWT9/X1WtKVQG1of3sSgfnsHcn5IWeKNw=; h=Subject:From:To:Reply-To:References:Date:In-Reply-To:From; b=EIqEKsBuXiOyw6WbiAPyBkmUB5wVGbSXmTlFBK2g/Rm3AzBAP0I3Zvtv7Xk5xg/80 Oc0gcWKOKB6NsshyA6PcJ4YBK/DBmhL4Iowazk7rmpiy50kxiwLwVmdd6nxnn+1miq ZpdL3S/oI/6QORcQOKYif7ZRKp7c/+igdkW5FqV4= Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtp02.mail.de (Postfix) with ESMTPSA id E33C8A0707 for ; Sat, 4 Apr 2020 13:57:32 +0200 (CEST) From: Thilo Borgmann To: FFmpeg development discussions and patches References: <89f7d192-71c0-4a0a-f559-e730601f3eb4@mail.de> Autocrypt: addr=thilo.borgmann@mail.de; prefer-encrypt=mutual; keydata= xsBNBF1NyqgBCAC/eJ7l/Ic+5bhj3N4eTyLRMCQVyxPF6sIDu0RqZCsLYx6GjH6BBrPcewbG wLfWNqWPWpcHLbOwDE2FWSBgDbc7Zwrmtkxt4+RNj2/JYRyCiV1uIRm1rlcf80pqDEYM+1O8 23b/JrONn7pQpX8alrYfhP3tLR2PKO/wHmG4AlSEG5T8angmGMvfKVSzxq7E07MIdUqiHHj/ t/F+6WFkpaec++CWcU+9s9IWRV+HskgihqZBqvzRYptvFi81con+VqpYjtpqoYAj4XwqM6j4 /8kTobgPo0n/QRCFcpZYRA7SCT4LbwOvy+qZ1e5372rzOcIF6PGdVzH4CCRT1Ypg1D6TABEB AAHNJ1RoaWxvIEJvcmdtYW5uIDx0aGlsby5ib3JnbWFubkBtYWlsLmRlPsLAqwQTAQoAPhYh BM4dt/RNIPw63Z/+WiV8W48dILkvBQJdTcqoAhsDBQkDwmcABQsJCAcDBRUKCQgLBRYCAwEA Ah4BAheAACEJECV8W48dILkvFiEEzh239E0g/Drdn/5aJXxbjx0guS/UtAf+JkEY+fQ29Gcv 509tfZW+uvTEmXzvIWmMP7TGYHGnHc/swhB8IY25J7/Z88qUxD0tTjnTHlNEEk4ZYAwHrgfv G/epK/AccKmPTj/FsmoUp4cRLwq17rQv2nc8L7i/Yg6syYTHaRF0SCQ8TPvcSoC4hP3IBWZj t23R0TyDeSnvK/+IeIsNejgz37Q+bWBtWsvUl6EBB0y51T6dp1RjsBS3Ot4FkFOqzMqCc3y1 808khhLgBnU24LnA62RMcUfvgMIRx0w8ioj1xJyp3U6c/JFhHxlLW5uVnOZ/odhuf+Hnel2u wyRCQxI2dLhBDZ9LVbospxZQok2GgRJIK6cnX23afc7ATQRdTcqoAQgAxQIqcXiQTaIFAWXc 9YEGuhrQF+TmKF7Jt1IGFmvfdmofnoFZ/8teZB03XP1VSVI/IXM7CTsEfQlBMgGcc9Tj3c9Z v+De/FfjBLJYOYKJIleIfhIZBLr6Hxru2qGma+piKXjbJCBJabSIu4YDM6iH3D2GJwanSspc ee3yvTSR7we1hcoavemw3pseurg6Y4dWsKEJLNP2xZ0C7fyidQsIh7RtNuzKsSVqqx1YbBwO 4cek4gQfJ9UC0nvt9X/pX1COhDeNAsTI8h2iC13Gi14a+EWF8ppvK0V3i5VDaxWrreUDY1Nt L6qGiQte/X4tvzRLEIe1gpT5wRK/QVXARlF8lQARAQABwsCTBBgBCgAmFiEEzh239E0g/Drd n/5aJXxbjx0guS8FAl1NyqgCGwwFCQPCZwAAIQkQJXxbjx0guS8WIQTOHbf0TSD8Ot2f/lol fFuPHSC5L+GLCACkU8DKD+HOEPvxTftn3pQ6YE+yfwSeS1uBjH6D2SsXdTrAZEE9KNjqYExr PuMy1GxAH3CeD+Kqc0sra5I9s3AdNAM1YeHQbY4zWaHfcaeU/cF/c2MxyhnRbr/UF382PUY5 yoWAmIBomSZdaifXXuU/CosZkpk01LDfl5fx5SfF13TrZ1FtPbXmP5S0n2HzxLM64hF0RzVz zR8xEofnP7jWJGcO7KcUCqSy64KGgNlYzyCWso+Tf0AJOtWYkfRvI/MyruItQ31jRs7VRh67 /lX38m5iqqjjwQ2GNZq29qGCNmjmsBjgzMmoy+5jUuoy233waGIGRFt1g9pLiMmchdWR Message-ID: Date: Sat, 4 Apr 2020 13:57:32 +0200 MIME-Version: 1.0 In-Reply-To: <89f7d192-71c0-4a0a-f559-e730601f3eb4@mail.de> Content-Language: en-US X-purgate: clean X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate-type: clean X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate: clean X-purgate-size: 4075 X-purgate-ID: 154282::1586001452-0000058E-4976B5C9/0/0 Subject: [FFmpeg-devel] [PATCH 1/2] lavd/avfoundation.m: Remove transport controls for iOS. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" $Subject -Thilo From 20f16ed1ef9f99b847798a28fff46812246a8039 Mon Sep 17 00:00:00 2001 From: Thilo Borgmann Date: Sat, 4 Apr 2020 13:49:46 +0200 Subject: [PATCH 1/2] lavd/avfoundation.m: Remove transport controls for iOS. --- libavdevice/avfoundation.m | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/libavdevice/avfoundation.m b/libavdevice/avfoundation.m index 43b2edb44d..9f8186b4d7 100644 --- a/libavdevice/avfoundation.m +++ b/libavdevice/avfoundation.m @@ -168,6 +168,7 @@ - (id)initWithContext:(AVFContext*)context _context = context; // start observing if a device is set for it +#if !TARGET_OS_IPHONE && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070 if (_context->observed_device) { NSString *keyPath = NSStringFromSelector(@selector(transportControlsPlaybackMode)); NSKeyValueObservingOptions options = NSKeyValueObservingOptionNew; @@ -177,14 +178,19 @@ - (id)initWithContext:(AVFContext*)context options: options context: _context]; } +#endif } return self; } - (void)dealloc { // stop observing if a device is set for it - NSString *keyPath = NSStringFromSelector(@selector(transportControlsPlaybackMode)); - [_context->observed_device removeObserver: self forKeyPath: keyPath]; +#if !TARGET_OS_IPHONE && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070 + if (_context->observed_device) { + NSString *keyPath = NSStringFromSelector(@selector(transportControlsPlaybackMode)); + [_context->observed_device removeObserver: self forKeyPath: keyPath]; + } +#endif [super dealloc]; } @@ -537,6 +543,7 @@ static int add_video_device(AVFormatContext *s, AVCaptureDevice *video_device) } [ctx->video_output setAlwaysDiscardsLateVideoFrames:ctx->drop_late_frames]; +#if !TARGET_OS_IPHONE && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070 // check for transport control support and set observer device if supported int trans_ctrl = [video_device transportControlsSupported]; AVCaptureDeviceTransportControlsPlaybackMode trans_mode = [video_device transportControlsPlaybackMode]; @@ -545,6 +552,7 @@ static int add_video_device(AVFormatContext *s, AVCaptureDevice *video_device) ctx->observed_mode = trans_mode; ctx->observed_device = video_device; } +#endif ctx->avf_delegate = [[AVFFrameReceiver alloc] initWithContext:ctx]; From patchwork Sat Apr 4 11:57:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thilo Borgmann X-Patchwork-Id: 18641 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 54397449293 for ; Sat, 4 Apr 2020 14:57:41 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3DB5B68B287; Sat, 4 Apr 2020 14:57:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from shout02.mail.de (shout02.mail.de [62.201.172.25]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B978068B329 for ; Sat, 4 Apr 2020 14:57:34 +0300 (EEST) Received: from postfix01.mail.de (postfix02.bt.mail.de [10.0.121.126]) by shout02.mail.de (Postfix) with ESMTP id 6A072C00B7 for ; Sat, 4 Apr 2020 13:57:34 +0200 (CEST) Received: from smtp02.mail.de (smtp02.bt.mail.de [10.0.121.212]) by postfix01.mail.de (Postfix) with ESMTP id 5213AA007C for ; Sat, 4 Apr 2020 13:57:34 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mail.de; s=mailde201610; t=1586001454; bh=eC8xEDj32hefXDS4KqbC8rU8bHqwO7n/hvzBV4UM4uQ=; h=Subject:From:To:Reply-To:References:Date:In-Reply-To:From; b=HnFbXAoNAPBaRZk6Tm5oI/LUk04Y6Id/c3Nal0PXhOAkTM3Uoy+ptmVW1Uz5nj6tm XxIc8he9vJiTLjDEvO3u5Sfx0gTjTiRBJWcLX8M5qiGLhlqt+Px1dGBsGxRF5lP+Gg BlTthAosa/EP6EgZOZCvT9OltRDa4cDOH05+AvH0= Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtp02.mail.de (Postfix) with ESMTPSA id F2581A0707 for ; Sat, 4 Apr 2020 13:57:33 +0200 (CEST) From: Thilo Borgmann To: FFmpeg development discussions and patches References: <89f7d192-71c0-4a0a-f559-e730601f3eb4@mail.de> Autocrypt: addr=thilo.borgmann@mail.de; prefer-encrypt=mutual; keydata= xsBNBF1NyqgBCAC/eJ7l/Ic+5bhj3N4eTyLRMCQVyxPF6sIDu0RqZCsLYx6GjH6BBrPcewbG wLfWNqWPWpcHLbOwDE2FWSBgDbc7Zwrmtkxt4+RNj2/JYRyCiV1uIRm1rlcf80pqDEYM+1O8 23b/JrONn7pQpX8alrYfhP3tLR2PKO/wHmG4AlSEG5T8angmGMvfKVSzxq7E07MIdUqiHHj/ t/F+6WFkpaec++CWcU+9s9IWRV+HskgihqZBqvzRYptvFi81con+VqpYjtpqoYAj4XwqM6j4 /8kTobgPo0n/QRCFcpZYRA7SCT4LbwOvy+qZ1e5372rzOcIF6PGdVzH4CCRT1Ypg1D6TABEB AAHNJ1RoaWxvIEJvcmdtYW5uIDx0aGlsby5ib3JnbWFubkBtYWlsLmRlPsLAqwQTAQoAPhYh BM4dt/RNIPw63Z/+WiV8W48dILkvBQJdTcqoAhsDBQkDwmcABQsJCAcDBRUKCQgLBRYCAwEA Ah4BAheAACEJECV8W48dILkvFiEEzh239E0g/Drdn/5aJXxbjx0guS/UtAf+JkEY+fQ29Gcv 509tfZW+uvTEmXzvIWmMP7TGYHGnHc/swhB8IY25J7/Z88qUxD0tTjnTHlNEEk4ZYAwHrgfv G/epK/AccKmPTj/FsmoUp4cRLwq17rQv2nc8L7i/Yg6syYTHaRF0SCQ8TPvcSoC4hP3IBWZj t23R0TyDeSnvK/+IeIsNejgz37Q+bWBtWsvUl6EBB0y51T6dp1RjsBS3Ot4FkFOqzMqCc3y1 808khhLgBnU24LnA62RMcUfvgMIRx0w8ioj1xJyp3U6c/JFhHxlLW5uVnOZ/odhuf+Hnel2u wyRCQxI2dLhBDZ9LVbospxZQok2GgRJIK6cnX23afc7ATQRdTcqoAQgAxQIqcXiQTaIFAWXc 9YEGuhrQF+TmKF7Jt1IGFmvfdmofnoFZ/8teZB03XP1VSVI/IXM7CTsEfQlBMgGcc9Tj3c9Z v+De/FfjBLJYOYKJIleIfhIZBLr6Hxru2qGma+piKXjbJCBJabSIu4YDM6iH3D2GJwanSspc ee3yvTSR7we1hcoavemw3pseurg6Y4dWsKEJLNP2xZ0C7fyidQsIh7RtNuzKsSVqqx1YbBwO 4cek4gQfJ9UC0nvt9X/pX1COhDeNAsTI8h2iC13Gi14a+EWF8ppvK0V3i5VDaxWrreUDY1Nt L6qGiQte/X4tvzRLEIe1gpT5wRK/QVXARlF8lQARAQABwsCTBBgBCgAmFiEEzh239E0g/Drd n/5aJXxbjx0guS8FAl1NyqgCGwwFCQPCZwAAIQkQJXxbjx0guS8WIQTOHbf0TSD8Ot2f/lol fFuPHSC5L+GLCACkU8DKD+HOEPvxTftn3pQ6YE+yfwSeS1uBjH6D2SsXdTrAZEE9KNjqYExr PuMy1GxAH3CeD+Kqc0sra5I9s3AdNAM1YeHQbY4zWaHfcaeU/cF/c2MxyhnRbr/UF382PUY5 yoWAmIBomSZdaifXXuU/CosZkpk01LDfl5fx5SfF13TrZ1FtPbXmP5S0n2HzxLM64hF0RzVz zR8xEofnP7jWJGcO7KcUCqSy64KGgNlYzyCWso+Tf0AJOtWYkfRvI/MyruItQ31jRs7VRh67 /lX38m5iqqjjwQ2GNZq29qGCNmjmsBjgzMmoy+5jUuoy233waGIGRFt1g9pLiMmchdWR Message-ID: <59f02f58-fbac-6b53-0bfc-19473db29ada@mail.de> Date: Sat, 4 Apr 2020 13:57:33 +0200 MIME-Version: 1.0 In-Reply-To: <89f7d192-71c0-4a0a-f559-e730601f3eb4@mail.de> Content-Language: en-US X-purgate: clean X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate-type: clean X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate: clean X-purgate-size: 5103 X-purgate-ID: 154282::1586001454-0000058E-44E130EA/0/0 Subject: [FFmpeg-devel] [PATCH 2/2] lavd/avfoundation.m: Do not use transport controls for screen capture devices. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" $Subject -Thilo From a754bd117b6eff1e7c9468a76e236d3f062eb580 Mon Sep 17 00:00:00 2001 From: Thilo Borgmann Date: Sat, 4 Apr 2020 13:51:17 +0200 Subject: [PATCH 2/2] lavd/avfoundation.m: Do not use transport controls for screen capture devices. --- libavdevice/avfoundation.m | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/libavdevice/avfoundation.m b/libavdevice/avfoundation.m index 9f8186b4d7..0b1888693f 100644 --- a/libavdevice/avfoundation.m +++ b/libavdevice/avfoundation.m @@ -99,6 +99,7 @@ int capture_raw_data; int drop_late_frames; int video_is_muxed; + int video_is_screen; int list_devices; int video_device_index; @@ -545,12 +546,14 @@ static int add_video_device(AVFormatContext *s, AVCaptureDevice *video_device) #if !TARGET_OS_IPHONE && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070 // check for transport control support and set observer device if supported - int trans_ctrl = [video_device transportControlsSupported]; - AVCaptureDeviceTransportControlsPlaybackMode trans_mode = [video_device transportControlsPlaybackMode]; + if (!ctx->video_is_screen) { + int trans_ctrl = [video_device transportControlsSupported]; + AVCaptureDeviceTransportControlsPlaybackMode trans_mode = [video_device transportControlsPlaybackMode]; - if (trans_ctrl) { - ctx->observed_mode = trans_mode; - ctx->observed_device = video_device; + if (trans_ctrl) { + ctx->observed_mode = trans_mode; + ctx->observed_device = video_device; + } } #endif @@ -750,7 +753,6 @@ static int get_audio_config(AVFormatContext *s) static int avf_read_header(AVFormatContext *s) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - int capture_screen = 0; uint32_t num_screens = 0; AVFContext *ctx = (AVFContext*)s->priv_data; AVCaptureDevice *video_device = nil; @@ -847,7 +849,7 @@ static int avf_read_header(AVFormatContext *s) } video_device = (AVCaptureDevice*) capture_screen_input; - capture_screen = 1; + ctx->video_is_screen = 1; #endif } else { av_log(ctx, AV_LOG_ERROR, "Invalid device index\n"); @@ -884,7 +886,7 @@ static int avf_read_header(AVFormatContext *s) AVCaptureScreenInput* capture_screen_input = [[[AVCaptureScreenInput alloc] initWithDisplayID:screens[idx]] autorelease]; video_device = (AVCaptureDevice*) capture_screen_input; ctx->video_device_index = ctx->num_video_devices + idx; - capture_screen = 1; + ctx->video_is_screen = 1; if (ctx->framerate.num > 0) { capture_screen_input.minFrameDuration = CMTimeMake(ctx->framerate.den, ctx->framerate.num); @@ -975,7 +977,7 @@ static int avf_read_header(AVFormatContext *s) /* Unlock device configuration only after the session is started so it * does not reset the capture formats */ - if (!capture_screen) { + if (!ctx->video_is_screen) { [video_device unlockForConfiguration]; }