Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
To: ffmpeg-devel@ffmpeg.org
Subject: Re: [FFmpeg-devel] [PATCH 08/11] avutil/half2float: move non-inline init code out of header
Date: Mon, 15 Aug 2022 06:20:45 +0200
Message-ID: <DB6PR0101MB2214FCCC2C56E8AAB33D976D8F689@DB6PR0101MB2214.eurprd01.prod.exchangelabs.com> (raw)
In-Reply-To: <20220814193223.GP2088045@pb2>

Michael Niedermayer:
> On Thu, Aug 11, 2022 at 11:31:32PM +0200, Andreas Rheinhardt wrote:
>> Michael Niedermayer:
>>> On Thu, Aug 11, 2022 at 10:50:10PM +0200, Andreas Rheinhardt wrote:
>>>> Michael Niedermayer:
>>>>> On Wed, Aug 10, 2022 at 10:47:09PM +0200, Timo Rothenpieler wrote:
>>>>>> ---
>>>>>>  libavcodec/Makefile     |  8 +++---
>>>>>>  libavcodec/exr.c        |  2 +-
>>>>>>  libavcodec/exrenc.c     |  2 +-
>>>>>>  libavcodec/float2half.c | 19 +++++++++++++
>>>>>>  libavcodec/half2float.c | 19 +++++++++++++
>>>>>>  libavcodec/pnmdec.c     |  2 +-
>>>>>>  libavcodec/pnmenc.c     |  2 +-
>>>>>>  libavutil/float2half.c  | 53 ++++++++++++++++++++++++++++++++++
>>>>>>  libavutil/float2half.h  | 36 ++---------------------
>>>>>>  libavutil/half2float.c  | 63 +++++++++++++++++++++++++++++++++++++++++
>>>>>>  libavutil/half2float.h  | 46 ++----------------------------
>>>>>>  11 files changed, 166 insertions(+), 86 deletions(-)
>>>>>>  create mode 100644 libavcodec/float2half.c
>>>>>>  create mode 100644 libavcodec/half2float.c
>>>>>>  create mode 100644 libavutil/float2half.c
>>>>>>  create mode 100644 libavutil/half2float.c
>>>>>>
>>>>>> diff --git a/libavcodec/Makefile b/libavcodec/Makefile
>>>>>> index 029f1bad3d..cb80f73d99 100644
>>>>>> --- a/libavcodec/Makefile
>>>>>> +++ b/libavcodec/Makefile
>>>>>> @@ -337,8 +337,8 @@ OBJS-$(CONFIG_EIGHTSVX_FIB_DECODER)    += 8svx.o
>>>>>>  OBJS-$(CONFIG_ESCAPE124_DECODER)       += escape124.o
>>>>>>  OBJS-$(CONFIG_ESCAPE130_DECODER)       += escape130.o
>>>>>>  OBJS-$(CONFIG_EVRC_DECODER)            += evrcdec.o acelp_vectors.o lsp.o
>>>>>> -OBJS-$(CONFIG_EXR_DECODER)             += exr.o exrdsp.o
>>>>>> -OBJS-$(CONFIG_EXR_ENCODER)             += exrenc.o
>>>>>> +OBJS-$(CONFIG_EXR_DECODER)             += exr.o exrdsp.o half2float.o
>>>>>> +OBJS-$(CONFIG_EXR_ENCODER)             += exrenc.o float2half.o
>>>>>>  OBJS-$(CONFIG_FASTAUDIO_DECODER)       += fastaudio.o
>>>>>>  OBJS-$(CONFIG_FFV1_DECODER)            += ffv1dec.o ffv1.o
>>>>>>  OBJS-$(CONFIG_FFV1_ENCODER)            += ffv1enc.o ffv1.o
>>>>>> @@ -570,8 +570,8 @@ OBJS-$(CONFIG_PGMYUV_DECODER)          += pnmdec.o pnm.o
>>>>>>  OBJS-$(CONFIG_PGMYUV_ENCODER)          += pnmenc.o
>>>>>>  OBJS-$(CONFIG_PGSSUB_DECODER)          += pgssubdec.o
>>>>>>  OBJS-$(CONFIG_PGX_DECODER)             += pgxdec.o
>>>>>> -OBJS-$(CONFIG_PHM_DECODER)             += pnmdec.o pnm.o
>>>>>> -OBJS-$(CONFIG_PHM_ENCODER)             += pnmenc.o
>>>>>> +OBJS-$(CONFIG_PHM_DECODER)             += pnmdec.o pnm.o half2float.o
>>>>>> +OBJS-$(CONFIG_PHM_ENCODER)             += pnmenc.o float2half.o
>>>>>>  OBJS-$(CONFIG_PHOTOCD_DECODER)         += photocd.o
>>>>>>  OBJS-$(CONFIG_PICTOR_DECODER)          += pictordec.o cga_data.o
>>>>>>  OBJS-$(CONFIG_PIXLET_DECODER)          += pixlet.o
>>>>>> diff --git a/libavcodec/exr.c b/libavcodec/exr.c
>>>>>> index 825354873d..a3582bfdd6 100644
>>>>>> --- a/libavcodec/exr.c
>>>>>> +++ b/libavcodec/exr.c
>>>>>> @@ -2208,7 +2208,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
>>>>>>      float one_gamma = 1.0f / s->gamma;
>>>>>>      avpriv_trc_function trc_func = NULL;
>>>>>>  
>>>>>> -    init_half2float_tables(&s->h2f_tables);
>>>>>> +    ff_init_half2float_tables(&s->h2f_tables);
>>>>> [...]
>>>>>> diff --git a/libavutil/float2half.c b/libavutil/float2half.c
>>>>>> new file mode 100644
>>>>>> index 0000000000..dba14cef5d
>>>>>> --- /dev/null
>>>>>> +++ b/libavutil/float2half.c
>>>>> [...]
>>>>>> +void ff_init_float2half_tables(float2half_tables *t)
>>>>>
>>>>> this will need avpriv or break linking with shared libs
>>>>>
>>>>
>>>> No, because this code is duplicated into all libraries that need it.
>>>> (In case of static linking, only one of the variants will be used
>>>> (namely the first one encountered in the link.)
>>>
>>> libswscale/libswscale.so: undefined reference to `ff_init_half2float_tables'
>>> libswscale/libswscale.so: undefined reference to `ff_init_half2float_tables'
>>> clang: error: linker command failed with exit code 1 (use -v to see invocation)
>>> Makefile:131: recipe for target 'ffplay_g' failed
>>> make: *** [ffplay_g] Error 1
>>> make: *** Waiting for unfinished jobs....
>>> clang: error: linker command failed with exit code 1 (use -v to see invocation)
>>> libswscale/libswscale.so: undefined reference to `ff_init_half2float_tables'
>>> Makefile:131: recipe for target 'ffprobe_g' failed
>>> make: *** [ffprobe_g] Error 1
>>> clang: error: linker command failed with exit code 1 (use -v to see invocation)
>>> Makefile:131: recipe for target 'ffmpeg_g' failed
>>> make: *** [ffmpeg_g] Error 1
>>>
>>
>> That is with the whole patchset applied, isn't it!? Duplicating the init
>> stuff into swscale has been forgotten.
> 
> Ive tried the new latest patchset and this still happens
> 

As explained here:
https://ffmpeg.org/pipermail/ffmpeg-devel/2022-August/300045.html, the
reason is that the patch that makes use of this in libswscale adds the
half2float.o dependency to libavutil.

> make distclean ; ../configure --enable-shared --cc='ccache clang-6.0'  --enable-pthreads --samples=fate/fate-suite/ --enable-version3  --extra-cflags='-O1 -fno-omit-frame-pointer'  && make -j32
> 
> LD	ffmpeg_g
> LD	ffplay_g
> LD	ffprobe_g
> libswscale/libswscale.so: undefined reference to `ff_init_half2float_tables'
> clang: error: linker command failed with exit code 1 (use -v to see invocation)
> Makefile:131: recipe for target 'ffprobe_g' failed
> make: *** [ffprobe_g] Error 1
> make: *** Waiting for unfinished jobs....
> libswscale/libswscale.so: undefined reference to `ff_init_half2float_tables'
> clang: error: linker command failed with exit code 1 (use -v to see invocation)
> Makefile:131: recipe for target 'ffplay_g' failed
> make: *** [ffplay_g] Error 1
> libswscale/libswscale.so: undefined reference to `ff_init_half2float_tables'
> clang: error: linker command failed with exit code 1 (use -v to see invocation)
> Makefile:131: recipe for target 'ffmpeg_g' failed
> make: *** [ffmpeg_g] Error 1
> 
> git grep ff_init_half2float_tables
> libavcodec/exr.c:    ff_init_half2float_tables(&s->h2f_tables);
> libavcodec/pnmdec.c:    ff_init_half2float_tables(&s->h2f_tables);
> libavutil/half2float.c:void ff_init_half2float_tables(Half2FloatTables *t)
> libavutil/half2float.h:void ff_init_half2float_tables(Half2FloatTables *t);
> libswscale/slice.c:        ff_init_half2float_tables(c->h2f_tables);
> 
> libavcodec/half2float.c:#include "libavutil/half2float.c"
> libswscale/half2float.c:#include "libavutil/half2float.c"
> 
> git grep half2float.o
> libavcodec/Makefile:OBJS-$(CONFIG_EXR_DECODER)             += exr.o exrdsp.o half2float.o
> libavcodec/Makefile:OBJS-$(CONFIG_PHM_DECODER)             += pnmdec.o pnm.o half2float.o
> libavutil/Makefile:       half2float.o                                                     \
> 
> also i tried this:
> -#include "libavutil/half2float.c"
> +#inklude "libavutil/half2float.c"
> 
> and still it fails at linking stage not compile, really impressive the compiler
> speaks german C too
> 

No, the libswscale/half2float.c file is just not compiled at all, see above.

> 
> Heres the patches applied:
> 
> 46e36b5371 swscale/input: add rgbaf16 input support
> 34446f3971 swscale: add opaque parameter to input functions
> 88cf148514 avutil/half2float: use native _Float16 if available
> af6c41450c avutil/half2float: move non-inline init code out of header
> 2f2ac4c8c9 avutil/half2float: move tables to header-internal structs
> 19ac9a570e avutil/half2float: adjust conversion of NaN
> 45180741cd avutil: move half-precision float helper to avutil
> 
> (some more unrelated patches)
> 
> thx
_______________________________________________
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".

  reply	other threads:[~2022-08-15  4:20 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-10 20:47 [FFmpeg-devel] [PATCH 01/11] lavu/pixfmt: add packed RGBA float16 format Timo Rothenpieler
2022-08-10 20:47 ` [FFmpeg-devel] [PATCH 02/11] avutil/hwcontext_d3d11va: add support for rgbaf16 pixel format Timo Rothenpieler
2022-08-10 20:47 ` [FFmpeg-devel] [PATCH 03/11] avfilter/vsrc_ddagrab: add rgbaf16 output support Timo Rothenpieler
2022-08-10 20:47 ` [FFmpeg-devel] [PATCH 04/11] avfilter/vsrc_ddagrab: add options for more control over output format fallback Timo Rothenpieler
2022-08-10 20:47 ` [FFmpeg-devel] [PATCH 05/11] avutil: move half-precision float helper to avutil Timo Rothenpieler
2022-08-10 20:47 ` [FFmpeg-devel] [PATCH 06/11] avutil/half2float: adjust conversion of NaN Timo Rothenpieler
2022-08-10 21:24   ` Andreas Rheinhardt
2022-08-10 21:36     ` Timo Rothenpieler
2022-08-10 21:43       ` Andreas Rheinhardt
2022-08-10 21:53         ` Timo Rothenpieler
2022-08-10 22:14           ` Mark Reid
2022-08-10 22:18             ` James Almer
2022-08-10 22:28               ` Timo Rothenpieler
2022-08-10 22:37                 ` Mark Reid
2022-08-10 22:55                   ` Timo Rothenpieler
2022-08-11  2:18                     ` Mark Reid
2022-08-10 20:47 ` [FFmpeg-devel] [PATCH 07/11] avutil/half2float: move tables to header-internal structs Timo Rothenpieler
2022-08-10 20:47 ` [FFmpeg-devel] [PATCH 08/11] avutil/half2float: move non-inline init code out of header Timo Rothenpieler
2022-08-11 20:46   ` Michael Niedermayer
2022-08-11 20:50     ` Andreas Rheinhardt
2022-08-11 21:16       ` Michael Niedermayer
2022-08-11 21:31         ` Andreas Rheinhardt
2022-08-14 19:32           ` Michael Niedermayer
2022-08-15  4:20             ` Andreas Rheinhardt [this message]
2022-08-15 18:09               ` Michael Niedermayer
2022-08-14 21:54           ` Timo Rothenpieler
2022-08-10 20:47 ` [FFmpeg-devel] [PATCH 09/11] avutil/half2float: use native _Float16 if available Timo Rothenpieler
2022-08-10 21:03   ` Andreas Rheinhardt
2022-08-10 21:58     ` Timo Rothenpieler
2022-08-10 22:02       ` James Almer
2022-08-10 22:51   ` [FFmpeg-devel] [PATCH v2 " Timo Rothenpieler
2022-08-11  0:14     ` James Almer
2022-08-11 11:50       ` Timo Rothenpieler
2022-08-10 20:47 ` [FFmpeg-devel] [PATCH 10/11] swscale: add SwsContext parameter to input functions Timo Rothenpieler
2022-08-10 20:52   ` Timo Rothenpieler
2022-08-10 21:55   ` Andreas Rheinhardt
2022-08-10 22:02     ` Timo Rothenpieler
2022-08-10 20:47 ` [FFmpeg-devel] [PATCH 11/11] swscale/input: add rgbaf16 input support Timo Rothenpieler
2022-08-10 21:37   ` Timo Rothenpieler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DB6PR0101MB2214FCCC2C56E8AAB33D976D8F689@DB6PR0101MB2214.eurprd01.prod.exchangelabs.com \
    --to=andreas.rheinhardt@outlook.com \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git