diff mbox series

[FFmpeg-devel,v4,3/5] avutil: add obj-c helpers into header-only include

Message ID 20211217200418.68942-3-ffmpeg@tmm1.net
State Accepted
Commit edca1fa17c4f4a87c9f563829dec526fced154a6
Headers show
Series [FFmpeg-devel,v4,1/5] avfilter/vf_yadif_cuda: simplify filter definition | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_ppc success Make finished
andriy/make_fate_ppc success Make fate finished

Commit Message

Aman Karmani Dec. 17, 2021, 8:04 p.m. UTC
From: Aman Karmani <aman@tmm1.net>

Reviewed-by: Ridley Combs <rcombs@rcombs.me>
Signed-off-by: Aman Karmani <aman@tmm1.net>
---
 libavutil/objc.h | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)
 create mode 100644 libavutil/objc.h

Comments

James Almer Dec. 19, 2021, 5:09 p.m. UTC | #1
On 12/17/2021 5:04 PM, Aman Karmani wrote:
> From: Aman Karmani <aman@tmm1.net>
> 
> Reviewed-by: Ridley Combs <rcombs@rcombs.me>
> Signed-off-by: Aman Karmani <aman@tmm1.net>
> ---
>   libavutil/objc.h | 32 ++++++++++++++++++++++++++++++++
>   1 file changed, 32 insertions(+)
>   create mode 100644 libavutil/objc.h
> 
> diff --git a/libavutil/objc.h b/libavutil/objc.h
> new file mode 100644
> index 0000000000..0db993f716
> --- /dev/null
> +++ b/libavutil/objc.h
> @@ -0,0 +1,32 @@
> +/*
> + * This file is part of FFmpeg.
> + *
> + * FFmpeg is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * FFmpeg is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with FFmpeg; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> + */
> +
> +#ifndef AVUTIL_OBJC_H
> +#define AVUTIL_OBJC_H
> +
> +#include <Foundation/Foundation.h>
> +
> +static inline void ff_objc_release(NSObject **obj)
> +{
> +    if (*obj) {
> +        [*obj release];
> +        *obj = nil;
> +    }
> +}
> +
> +#endif /* AVUTIL_OBJC_H */

This breaks checkheaders. It should be added to SKIPHEADERS with the 
corresponding check.

Also, why is this in lavu if it's ultimately only used in lavfi? And 
does it need to be a separate header at all? It's apparently not even C.
Aman Karmani Dec. 19, 2021, 5:35 p.m. UTC | #2
On Sun, Dec 19, 2021 at 9:09 AM James Almer <jamrial@gmail.com> wrote:

> On 12/17/2021 5:04 PM, Aman Karmani wrote:
> > From: Aman Karmani <aman@tmm1.net>
> >
> > Reviewed-by: Ridley Combs <rcombs@rcombs.me>
> > Signed-off-by: Aman Karmani <aman@tmm1.net>
> > ---
> >   libavutil/objc.h | 32 ++++++++++++++++++++++++++++++++
> >   1 file changed, 32 insertions(+)
> >   create mode 100644 libavutil/objc.h
> >
> > diff --git a/libavutil/objc.h b/libavutil/objc.h
> > new file mode 100644
> > index 0000000000..0db993f716
> > --- /dev/null
> > +++ b/libavutil/objc.h
> > @@ -0,0 +1,32 @@
> > +/*
> > + * This file is part of FFmpeg.
> > + *
> > + * FFmpeg is free software; you can redistribute it and/or
> > + * modify it under the terms of the GNU Lesser General Public
> > + * License as published by the Free Software Foundation; either
> > + * version 2.1 of the License, or (at your option) any later version.
> > + *
> > + * FFmpeg is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> > + * Lesser General Public License for more details.
> > + *
> > + * You should have received a copy of the GNU Lesser General Public
> > + * License along with FFmpeg; if not, write to the Free Software
> > + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> 02110-1301 USA
> > + */
> > +
> > +#ifndef AVUTIL_OBJC_H
> > +#define AVUTIL_OBJC_H
> > +
> > +#include <Foundation/Foundation.h>
> > +
> > +static inline void ff_objc_release(NSObject **obj)
> > +{
> > +    if (*obj) {
> > +        [*obj release];
> > +        *obj = nil;
> > +    }
> > +}
> > +
> > +#endif /* AVUTIL_OBJC_H */
>
> This breaks checkheaders. It should be added to SKIPHEADERS with the
> corresponding check.
>

Sorry, will fix.


>
> Also, why is this in lavu if it's ultimately only used in lavfi? And
> does it need to be a separate header at all? It's apparently not even C.
>

It is a generic helper requested by rcombs. I think the plan is to reuse it
in other filters/decoders/encoders written in obj-c.

One of the reasons is becausing calling `[nil release]` can crash.

You're right that it is not C, its obj-c and that's why it was simpler to
have it be an include only header. I'm not sure if using a different
extension would have been preferred.

Aman


> _______________________________________________
> 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".
>
Marvin Scholz Dec. 19, 2021, 6:03 p.m. UTC | #3
On 19 Dec 2021, at 18:35, Aman Karmani wrote:

> On Sun, Dec 19, 2021 at 9:09 AM James Almer <jamrial@gmail.com> wrote:
>
>> On 12/17/2021 5:04 PM, Aman Karmani wrote:
>>> From: Aman Karmani <aman@tmm1.net>
>>>
>>> Reviewed-by: Ridley Combs <rcombs@rcombs.me>
>>> Signed-off-by: Aman Karmani <aman@tmm1.net>
>>> ---
>>>   libavutil/objc.h | 32 ++++++++++++++++++++++++++++++++
>>>   1 file changed, 32 insertions(+)
>>>   create mode 100644 libavutil/objc.h
>>>
>>> diff --git a/libavutil/objc.h b/libavutil/objc.h
>>> new file mode 100644
>>> index 0000000000..0db993f716
>>> --- /dev/null
>>> +++ b/libavutil/objc.h
>>> @@ -0,0 +1,32 @@
>>> +/*
>>> + * This file is part of FFmpeg.
>>> + *
>>> + * FFmpeg is free software; you can redistribute it and/or
>>> + * modify it under the terms of the GNU Lesser General Public
>>> + * License as published by the Free Software Foundation; either
>>> + * version 2.1 of the License, or (at your option) any later version.
>>> + *
>>> + * FFmpeg is distributed in the hope that it will be useful,
>>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>>> + * Lesser General Public License for more details.
>>> + *
>>> + * You should have received a copy of the GNU Lesser General Public
>>> + * License along with FFmpeg; if not, write to the Free Software
>>> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
>> 02110-1301 USA
>>> + */
>>> +
>>> +#ifndef AVUTIL_OBJC_H
>>> +#define AVUTIL_OBJC_H
>>> +
>>> +#include <Foundation/Foundation.h>
>>> +
>>> +static inline void ff_objc_release(NSObject **obj)
>>> +{
>>> +    if (*obj) {
>>> +        [*obj release];
>>> +        *obj = nil;
>>> +    }
>>> +}
>>> +
>>> +#endif /* AVUTIL_OBJC_H */
>>
>> This breaks checkheaders. It should be added to SKIPHEADERS with the
>> corresponding check.
>>
>
> Sorry, will fix.
>
>
>>
>> Also, why is this in lavu if it's ultimately only used in lavfi? And
>> does it need to be a separate header at all? It's apparently not even C.
>>
>
> It is a generic helper requested by rcombs. I think the plan is to reuse it
> in other filters/decoders/encoders written in obj-c.
>
> One of the reasons is becausing calling `[nil release]` can crash.

That's not true, dispatching a message to nil in Objective-C has no effect.
I don't really see the benefit of this helper, personally.

>
> You're right that it is not C, its obj-c and that's why it was simpler to
> have it be an include only header. I'm not sure if using a different
> extension would have been preferred.
>
> Aman
>
>
>> _______________________________________________
>> 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".
diff mbox series

Patch

diff --git a/libavutil/objc.h b/libavutil/objc.h
new file mode 100644
index 0000000000..0db993f716
--- /dev/null
+++ b/libavutil/objc.h
@@ -0,0 +1,32 @@ 
+/*
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef AVUTIL_OBJC_H
+#define AVUTIL_OBJC_H
+
+#include <Foundation/Foundation.h>
+
+static inline void ff_objc_release(NSObject **obj)
+{
+    if (*obj) {
+        [*obj release];
+        *obj = nil;
+    }
+}
+
+#endif /* AVUTIL_OBJC_H */