From: Peter Ross <pross@xvid.org> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Subject: Re: [FFmpeg-devel] [PATCH 1/2] avcodec/jpegtables: remove duplicate luma and chroma quantization tables Date: Sat, 15 Oct 2022 10:44:44 +1100 Message-ID: <Y0n0bHKahL9m49ty@b3f2f4f02429fd693cede1faeaf102ce> (raw) In-Reply-To: <AS8P250MB074446601FBE7BEB0B1971438F249@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> [-- Attachment #1.1: Type: text/plain, Size: 2665 bytes --] On Fri, Oct 14, 2022 at 05:19:44PM +0200, Andreas Rheinhardt wrote: > Peter Ross: > > Duplicates of the standard JPEG quantization tables were found in the > > AGM, MSS34(dsp), NUV and VP31 codecs. This patch elimates those duplicates, > > placing a single copy in jpegtables. > > --- > 1. mss34dsp now uses jpegtables, yet it does not have a dependency on > it. Instead you seem to rely on all the users of mss34dsp to have a > dependency on jpegtables, yet this is not true for all of them. You will > get linking failures with --disable-everything --enable-decoder=msa1. there is a OBJS-$(CONFIG_JPEGTABLES) += line in avcodec/Makefile that takes care of this. i tested this patch under few different configurations and observed no build errors. > 2. The fact that you need to add jpegtables to configure for almost all > components that use the jpeg quant tables means that it is not really > appropriate to put the jpeg quant tables into the same files as the jpeg > huff tables. > 3. The jpeg huff tables are duplicated into libavformat for shared > builds (because the overhead of exporting them exceeds the size gains > from not duplicating them); yet when one uses --enable-shared and > --enable-static at the same time, it might be that libavformat.a is > linked to libavcodec.so and therefore has no access to libavcodec's > internal symbols like the jpegtables, so we have to duplicate the > jpegtables into libavformat.a in this case. But if one links using > libavformat.a and libavcodec.a with both containing the jpeg huffman > tables, then one will get a linker error with this patch: The jpeg > huffman tables in libavformat will be pulled in by the libavformat > component needing them. With this patch libavcodec/jpegtables.o will > also be pulled in. But it also contains the jpeg tables already provided > by lavf/jpegtables.o, so you will get a multiple definition error. > In contrast to this, before this patch, lavc/jpegtables.o would not be > pulled in, because all dependencies to the mjpeg huffman tables will be > satisfied by lavf/jpegtabes.o. > So to summarize: If one duplicates stuff in multiple libraries, the > object files must really provide the exact same symbols; not more, not less. wasn't aware jpegtabs.h was duplicated into libavformat. > The last two points imply that these tables should be moved to a file of > their own. Btw: I don't think that a configure subsystem is appropriate > for this (a single file with some tables is not really a subsystem); > actually I don't think that the current jpegtables subsystem is > appropriate at all. will do -- Peter (A907 E02F A6E5 0CD2 34CD 20D2 6760 79C5 AC40 DD6B) [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ 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".
next prev parent reply other threads:[~2022-10-14 23:45 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-10-14 6:27 Peter Ross 2022-10-14 6:29 ` [FFmpeg-devel] [PATCH 2/2] avcodec/vp3data: rectify comment Peter Ross 2022-10-14 15:19 ` [FFmpeg-devel] [PATCH 1/2] avcodec/jpegtables: remove duplicate luma and chroma quantization tables Andreas Rheinhardt 2022-10-14 23:44 ` Peter Ross [this message] 2022-10-15 0:24 ` Andreas Rheinhardt
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=Y0n0bHKahL9m49ty@b3f2f4f02429fd693cede1faeaf102ce \ --to=pross@xvid.org \ --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