diff mbox series

[FFmpeg-devel] libavdevice/avfoundation.m Add missing type AVMediaType for macOS < 10.13.

Message ID CAB9xhmPouRGNJocUqidZXhPHFL681zBB4KXynhw87T+VgfudFg@mail.gmail.com
State New
Headers show
Series [FFmpeg-devel] libavdevice/avfoundation.m Add missing type AVMediaType for macOS < 10.13. | expand

Checks

Context Check Description
yinshiyou/configure_loongarch64 warning Failed to apply patch
andriy/configure_x86 warning Failed to apply patch

Commit Message

David Bohman Jan. 1, 2024, 2:38 p.m. UTC
This is a build failure in the master branch as a result of commit
e37b15e26fbc7bc31a86a4a2c7c798e20d4f4c2c:

There is no type AVMediaType prior to macOS 10.13.
---
 libavdevice/avfoundation.m | 4 ++++
 1 file changed, 4 insertions(+)

     NSMutableArray *deviceTypes = nil;

Comments

Michael Niedermayer Jan. 1, 2024, 5:08 p.m. UTC | #1
On Mon, Jan 01, 2024 at 06:38:00AM -0800, David Bohman wrote:
> This is a build failure in the master branch as a result of commit
> e37b15e26fbc7bc31a86a4a2c7c798e20d4f4c2c:
> 
> There is no type AVMediaType prior to macOS 10.13.
> ---
>  libavdevice/avfoundation.m | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/libavdevice/avfoundation.m b/libavdevice/avfoundation.m
> index 6a57163eb7..5fc5cb61c5 100644
> --- a/libavdevice/avfoundation.m
> +++ b/libavdevice/avfoundation.m
> @@ -761,6 +761,10 @@ static int get_audio_config(AVFormatContext *s)
>      return 0;
>  }
> 
> +#if TARGET_OS_OSX && __MAC_OS_X_VERSION_MIN_REQUIRED < 101300
> +typedef NSString *AVMediaType;
> +#endif
> +
>  static NSArray* getDevicesWithMediaType(AVMediaType mediaType) {
>  #if ((TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED >= 100000)
> || (TARGET_OS_OSX && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500))
>      NSMutableArray *deviceTypes = nil;

error: corrupt patch at line 19

[...]

[...]
Marvin Scholz Jan. 1, 2024, 5:26 p.m. UTC | #2
On 1 Jan 2024, at 15:38, David Bohman wrote:

> This is a build failure in the master branch as a result of commit
> e37b15e26fbc7bc31a86a4a2c7c798e20d4f4c2c:
>
> There is no type AVMediaType prior to macOS 10.13.
> ---
>  libavdevice/avfoundation.m | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/libavdevice/avfoundation.m b/libavdevice/avfoundation.m
> index 6a57163eb7..5fc5cb61c5 100644
> --- a/libavdevice/avfoundation.m
> +++ b/libavdevice/avfoundation.m
> @@ -761,6 +761,10 @@ static int get_audio_config(AVFormatContext *s)
>      return 0;
>  }
>
> +#if TARGET_OS_OSX && __MAC_OS_X_VERSION_MIN_REQUIRED < 101300
> +typedef NSString *AVMediaType;
> +#endif

AFAICT this is lacking the similar check for iOS

> +
>  static NSArray* getDevicesWithMediaType(AVMediaType mediaType) {
>  #if ((TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED >= 100000)
> || (TARGET_OS_OSX && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500))
>      NSMutableArray *deviceTypes = nil;
> -- 
> 2.43.0
> _______________________________________________
> 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".
Martin Storsjö Jan. 1, 2024, 9:47 p.m. UTC | #3
On Mon, 1 Jan 2024, David Bohman wrote:

> This is a build failure in the master branch as a result of commit
> e37b15e26fbc7bc31a86a4a2c7c798e20d4f4c2c:
>
> There is no type AVMediaType prior to macOS 10.13.
> ---
> libavdevice/avfoundation.m | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/libavdevice/avfoundation.m b/libavdevice/avfoundation.m
> index 6a57163eb7..5fc5cb61c5 100644
> --- a/libavdevice/avfoundation.m
> +++ b/libavdevice/avfoundation.m
> @@ -761,6 +761,10 @@ static int get_audio_config(AVFormatContext *s)
>     return 0;
> }
>
> +#if TARGET_OS_OSX && __MAC_OS_X_VERSION_MIN_REQUIRED < 101300
> +typedef NSString *AVMediaType;
> +#endif
> +

Checking the min required version of the SDK is the wrong check here.

If you use a recent macOS SDK but target an older version of macOS, this 
typedef is still available; check the AVMediaFormat.h header - there's no 
ifdef around the AVMediaType typedef.

Therefore, the availability of this type is connected to the SDK version, 
not the runtime target version. Therefore, use 
MAC_OS_X_VERSION_MAX_ALLOWED or something similar to check the actual SDK 
version, not the target version (as set by e.g. -mmacosx-version-min).

// Martin
David Bohman Jan. 1, 2024, 10:23 p.m. UTC | #4
On Mon, Jan 1, 2024 at 9:08 AM Michael Niedermayer
<michael@niedermayer.cc> wrote:
>
> error: corrupt patch at line 19
>

Sorry, I have also attached the patch file to this message.
---
 libavdevice/avfoundation.m | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libavdevice/avfoundation.m b/libavdevice/avfoundation.m
index 6a57163eb7..5fc5cb61c5 100644
--- a/libavdevice/avfoundation.m
+++ b/libavdevice/avfoundation.m
@@ -761,6 +761,10 @@ static int get_audio_config(AVFormatContext *s)
     return 0;
 }

+#if TARGET_OS_OSX && __MAC_OS_X_VERSION_MIN_REQUIRED < 101300
+typedef NSString *AVMediaType;
+#endif
+
 static NSArray* getDevicesWithMediaType(AVMediaType mediaType) {
 #if ((TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED >= 100000)
|| (TARGET_OS_OSX && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500))
     NSMutableArray *deviceTypes = nil;
--
2.43.0
David Bohman Jan. 1, 2024, 10:33 p.m. UTC | #5
On Mon, Jan 1, 2024 at 9:26 AM <epirat07@gmail.com> wrote:
>
>
>
> On 1 Jan 2024, at 15:38, David Bohman wrote:
>
> > This is a build failure in the master branch as a result of commit
> > e37b15e26fbc7bc31a86a4a2c7c798e20d4f4c2c:
> >
> > There is no type AVMediaType prior to macOS 10.13.
> > ---
> >  libavdevice/avfoundation.m | 4 ++++
> >  1 file changed, 4 insertions(+)
> >
> > diff --git a/libavdevice/avfoundation.m b/libavdevice/avfoundation.m
> > index 6a57163eb7..5fc5cb61c5 100644
> > --- a/libavdevice/avfoundation.m
> > +++ b/libavdevice/avfoundation.m
> > @@ -761,6 +761,10 @@ static int get_audio_config(AVFormatContext *s)
> >      return 0;
> >  }
> >
> > +#if TARGET_OS_OSX && __MAC_OS_X_VERSION_MIN_REQUIRED < 101300
> > +typedef NSString *AVMediaType;
> > +#endif
>
> AFAICT this is lacking the similar check for iOS
>

Correct. I have built and tested it for / on my system, which is
running macOS 10.12.X.
diff mbox series

Patch

diff --git a/libavdevice/avfoundation.m b/libavdevice/avfoundation.m
index 6a57163eb7..5fc5cb61c5 100644
--- a/libavdevice/avfoundation.m
+++ b/libavdevice/avfoundation.m
@@ -761,6 +761,10 @@  static int get_audio_config(AVFormatContext *s)
     return 0;
 }

+#if TARGET_OS_OSX && __MAC_OS_X_VERSION_MIN_REQUIRED < 101300
+typedef NSString *AVMediaType;
+#endif
+
 static NSArray* getDevicesWithMediaType(AVMediaType mediaType) {
 #if ((TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED >= 100000)
|| (TARGET_OS_OSX && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500))