1
0
Fork 0
Commit Graph

47 Commits

Author SHA1 Message Date
Andreas Rheinhardt 790f793844 avutil/common: Don't auto-include mem.h
There are lots of files that don't need it: The number of object
files that actually need it went down from 2011 to 884 here.

Keep it for external users in order to not cause breakages.

Also improve the other headers a bit while just at it.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2024-03-31 00:08:43 +01:00
Andreas Rheinhardt c00cd007e8 configure: Remove av_restrict
All versions of MSVC that support C11 (namely >= v19.27)
also support the restrict keyword, therefore av_restrict
is no longer necessary since 75697836b1.

Reviewed-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2024-03-15 12:51:15 +01:00
Paul B Mahol ddc176d0ee avcodec/elbg: fix integer overflows
Fixes #9977
2023-05-21 10:50:59 +02:00
Andreas Rheinhardt bb98212930 avcodec/elbg: Mark ELBGContext as being unaliased by using av_restrict
This improves performance: For msvideo1, the performance improved by
4.8% when encoding the sample from the fate-vsynth1-msvideo1 test;
when encoding the sample from fate-vsynth1-cinepak, performance
improved by 2%. The compiler user was GCC 10 and the calls to encode2
have been timed.

Reviewed-by: Tomas Härdin <tjoppen@acc.umu.se>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-09-24 00:01:49 +02:00
Andreas Rheinhardt 6b2c1d1018 avcodec/elbg: Add flags to avpriv_elbg_do()
This is currently unused and it is only added to enable changes
while maintaining ABI compatibility. The type is uintptr_t in order
to potentially accept a pointer argument.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-09-24 00:01:27 +02:00
Andreas Rheinhardt 477a398c3e avcodec/elbg: Also allocate buffers for recursion only once
This is possible because the number of elements needed in each
recursion step decreases geometrically, so the geometric series
provides an upper bound for the sum of number of elements of
the needed buffers.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-09-23 23:53:38 +02:00
Andreas Rheinhardt 60ada0f5fa avcodec/elbg: Keep buffers to avoid allocations and frees
Up until now, each call to avpriv_elbg_do() would result
in at least six allocations. And this function is called a lot:
A typical FATE run results in 52213653 calls to av_malloc; of these,
34974671 originate from av_malloc_array and from these 34783679
originate from avpriv_elbg_do; the msvideo1 encoder tests are behind
most of these.

This commit changes this by keeping the buffers and only reallocating
them when needed. E.g. for the encoding part of fate-vsynth1-msvideo1
total heap usage went down from 11,407,939 allocs and frees with
468,106,207 bytes allocated to 3,149 allocs and frees with 13,181,847
bytes allocated. The time for one encode2-call went down by 69%.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Reviewed-by: Tomas Härdin <tjoppen@acc.umu.se>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-09-20 05:40:51 +02:00
Andreas Rheinhardt 5e01527330 avcodec/elbg: Move arguments to the context early if possible
This affects all the arguments that don't change during a call
to avpriv_elbg_do(); doing so makes it easily recognizable which
arguments change upon recursive calls.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-09-20 05:09:59 +02:00
Andreas Rheinhardt 896c11687e avcodec/elbg: Add persistent ELBGContext
It will be used in future commits to avoid having to allocate and free
all the buffers used.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-09-20 04:38:45 +02:00
Andreas Rheinhardt 9e11debb5d avcodec/elbg: Rename elbg_data to ELBGContext
It is in line with our naming conventions for types.
Also change numCB to num_cb for the same reason.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-09-20 04:38:25 +02:00
Andreas Rheinhardt 05ccfcb7b0 avcodec/elbg: Merge avpriv_init_elbg() into avpriv_do_elbg()
These functions are always called directly after another with
the exact same arguments. This avoids exporting a symbol;
it also avoids having to perform two calls for every caller.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-09-20 04:09:22 +02:00
Andreas Rheinhardt d046e76515 avcodec/elbg: Move avpriv_init_elbg() down
It will avoid a forward declaration later.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-09-20 04:08:54 +02:00
Andreas Rheinhardt a6760bb92b avcodec/elbg: Remove avoidable buffer
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Reviewed-by: Tomas Härdin <tjoppen@acc.umu.se>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-09-17 15:13:04 +02:00
Michael Niedermayer c1a49a1264 avcodec/elbg: Increase some fields to 64bit
Fixes: Ticket8312
Fixes: Ticket8321

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2021-09-15 19:55:17 +02:00
Andreas Rheinhardt 25c8507818 Remove/replace some unnecessary avcodec.h inclusions
Also remove other unnecessary headers and include headers directly while
at it.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-07-22 15:29:46 +02:00
Clément Bœsch 8ef57a0d61 Merge commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb'
* commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb':
  cosmetics: Fix spelling mistakes

Merged-by: Clément Bœsch <u@pkh.me>
2016-06-21 21:55:34 +02:00
Vittorio Giovara 41ed7ab45f cosmetics: Fix spelling mistakes
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2016-05-04 18:16:21 +02:00
Michael Niedermayer a94eba6f0c Merge commit '7f9f771eac0d37a632e0ed9bd89961d57fcfb7e0'
* commit '7f9f771eac0d37a632e0ed9bd89961d57fcfb7e0':
  avcodec: Don't anonymously typedef structs

Conflicts:
	libavcodec/alac.c
	libavcodec/cinepak.c
	libavcodec/cscd.c
	libavcodec/dcadec.c
	libavcodec/g723_1.c
	libavcodec/gif.c
	libavcodec/iff.c
	libavcodec/kgv1dec.c
	libavcodec/libopenjpegenc.c
	libavcodec/libspeexenc.c
	libavcodec/ra288.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-14 21:18:17 +01:00
Diego Biurrun 7f9f771eac avcodec: Don't anonymously typedef structs 2015-02-14 10:13:49 -08:00
Michael Niedermayer 16f0618200 Merge commit 'ae2d41ec875965ce4ab9fdd88a5e8ba57cada67a'
* commit 'ae2d41ec875965ce4ab9fdd88a5e8ba57cada67a':
  elbg: check memory allocations and propagate errors

Conflicts:
	libavcodec/elbg.c
	libavcodec/elbg.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-19 04:10:17 +01:00
Vittorio Giovara ae2d41ec87 elbg: check memory allocations and propagate errors 2014-12-18 23:22:59 +01:00
Michael Niedermayer fb4ac46d7f avcodec/elbg: Use av_malloc(z)_array()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-04-12 05:40:37 +02:00
Michael Niedermayer 87ecefdab0 elbg: change utility_inc to 64bit
Fixes integer overflow
Fixes Ticket3462

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-03-22 03:12:18 +01:00
Stefano Sabatini fe55c31976 lavc/elbg: rename ff_ symbols to avpriv_, so they can be used in shared libs
In particular, allows the use of elbg in other FFmpeg libraries, required
by the pending elbg filter.
2013-11-13 11:21:46 +01:00
Michael Niedermayer a21f65b55e elbg: switch to av_assert
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-18 21:54:52 +02:00
Michael Niedermayer 9018f8c328 elbg: fix assert
It seems the condition was flipped from what was intended

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-18 21:53:32 +02:00
Michael Niedermayer c581cb4e4f Merge remote-tracking branch 'qatar/master'
* qatar/master:
  Fix even more missing includes after the common.h removal
  build: Factor out rangecoder dependencies to CONFIG_RANGECODER
  build: Factor out error resilience dependencies to CONFIG_ERROR_RESILIENCE
  x86: avcodec: Consistently name all init files
  Add more missing includes after removing the implicit common.h
  Add some more missing includes after removing the implicit common.h
  Don't include common.h from avutil.h
  rtmp: Automatically compute the hash for SWFVerification

Conflicts:
	configure
	doc/APIchanges
	doc/examples/decoding_encoding.c
	libavcodec/Makefile
	libavcodec/assdec.c
	libavcodec/audio_frame_queue.c
	libavcodec/avpacket.c
	libavcodec/dv_profile.c
	libavcodec/dwt.c
	libavcodec/libtheoraenc.c
	libavcodec/rawdec.c
	libavcodec/rv40dsp.c
	libavcodec/tiff.c
	libavcodec/tiffenc.c
	libavcodec/v210dec.h
	libavcodec/vc1dsp.c
	libavcodec/x86/Makefile
	libavfilter/asrc_anullsrc.c
	libavfilter/avfilter.c
	libavfilter/buffer.c
	libavfilter/formats.c
	libavfilter/vf_ass.c
	libavfilter/vf_drawtext.c
	libavfilter/vf_fade.c
	libavfilter/vf_select.c
	libavfilter/video.c
	libavfilter/vsrc_testsrc.c
	libavformat/version.h
	libavutil/audioconvert.c
	libavutil/error.h
	libavutil/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-16 16:20:30 +02:00
Martin Storsjö 1d9c2dc89a Don't include common.h from avutil.h
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-08-15 22:32:06 +03:00
Lou Logan 6851130fd6 cosmetics: minor libavcodec spelling errors
Also update some common misspelled words in patcheck

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-06-29 14:54:15 +02:00
Mans Rullgard 2912e87a6c Replace FFmpeg with Libav in licence headers
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-03-19 13:33:20 +00:00
Diego Biurrun 9a58234fea Fix misspelled parameter names in Doxygen documentation.
This fixes one Doxygen warning each.

Originally committed as revision 23970 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-02 10:49:29 +00:00
Måns Rullgård 36672bac52 elbg: remove VLAs
Originally committed as revision 23787 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-06-25 18:51:25 +00:00
Diego Biurrun ba87f0801d Remove explicit filename from Doxygen @file commands.
Passing an explicit filename to this command is only necessary if the
documentation in the @file block refers to a file different from the
one the block resides in.

Originally committed as revision 22921 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-04-20 14:45:34 +00:00
Vitor Sessak 4e2c08c551 Small ELBG optimization: use last pixel as a initial guess for the codebook
entry.

Originally committed as revision 21001 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-02 12:15:09 +00:00
Vitor Sessak e40ee25c49 Fix bug when elbg->utility_inc[elbg->numCB-1] == 1
Originally committed as revision 17926 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-10 17:38:16 +00:00
Vitor Sessak 9aa2ab4276 Use FLG pseudo-random number generator in RoQ and ELBG
Originally committed as revision 17881 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-08 17:43:12 +00:00
Diego Biurrun bad5537e2c Use full internal pathname in doxygen @file directives.
Otherwise doxygen complains about ambiguous filenames when files exist
under the same name in different subdirectories.

Originally committed as revision 16912 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-01 02:00:19 +00:00
Diego Biurrun 99ed41a808 Fix filenames in Doxygen comments.
Originally committed as revision 16811 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-26 22:51:16 +00:00
Vitor Sessak 144b46f21b My commit at r14340 was not the right solution. For a monochromatic
frame, there will be only one centroid and it will be impossible to
find three distinct ones. It is better to just avoid shifting if
there are not three different centroids.

Originally committed as revision 14343 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-23 05:54:34 +00:00
Vitor Sessak 6de727244c Do declaration and initialization separately in elbg.c
to workaround an ICC bug.

Originally committed as revision 14342 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-23 03:56:13 +00:00
Vitor Sessak 6bf8b04764 When picking a "high utility centroid" do not pick one
that has no corresponding points. Not only it is the
worst possible pick, but also the code was written
without this case in mind.

Originally committed as revision 14341 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-23 03:55:37 +00:00
Vitor Sessak 5916af1954 The codebook generator algorithm involves picking three
different codebook centroids ("high utility", "low
utility" and "closest to the low utility one"). This
change avoid the corner case of choosing two times the
same centroid.

Originally committed as revision 14340 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-23 03:54:31 +00:00
Diego Biurrun 245976da2a Use full path for #includes from another directory.
Originally committed as revision 13098 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-05-09 11:56:36 +00:00
Vitor Sessak 3a66812fc8 Add my last name to copyright headers
Originally committed as revision 9488 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-07-05 19:53:34 +00:00
Eric Lasota 7c68b47b78 Cygwin compatibility workaround
patch by Eric Lasota: [ riot icculus org ]
original thread: [FFmpeg-devel] [PATCH] elbg.c Cygwin compatibility workaround
date: 06/09/2007 09:26 AM

Originally committed as revision 9279 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-06-11 07:57:15 +00:00
Vitor Sessak ddcf4b5d6d Codebook generator using the ELBG algorithm
patch by Vitor: printf(vitor%d gmail com, 1001)
original thread: Re: [FFmpeg-devel] [PATCH] Add a codebook generator
                 (was: [PATCH] RoQ video encoder, take 2)
date: 05/28/2007 01:21 PM

Originally committed as revision 9196 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-06-04 07:28:34 +00:00
Michael Niedermayer 2c340596ca elbg: Fix an assert
It seems the condition was flipped from what was intended.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-09-04 18:37:54 +03:00