Ronald S. Bultje
9ed6cbc3ee
ogg: fix double free when finding length of small chained oggs.
...
ogg_save() copies streams[], but doesn't keep track of free()'ed
struct members. Thus, if in between a call to ogg_save() and
ogg_restore(), streams[].private was free()'ed, this would result
in a double free -> crash, which happened when e.g. playing small
chained ogg fragments.
2011-06-29 09:45:52 -07:00
Ronald S. Bultje
ef1ee362b3
swscale: implement >8bit scaling support.
...
This means that precision is retained when scaling between sample
formats with >8 bits per component (48bit RGB, 16bit grayscale,
9/10/16bit YUV).
2011-06-29 09:45:52 -07:00
Ronald S. Bultje and Diego Biurrun
4578435f35
swscale: Add Doxygen for hyscale_fast/hScale.
2011-06-29 01:20:34 +02:00
Ronald S. Bultje and Diego Biurrun
d6cc6ac6b8
swscale: Add Doxygen for yuv2planar*/yuv2packed* functions.
2011-06-28 20:18:58 +02:00
Ronald S. Bultje and Ronald Bultje
618230c7f4
swscale: update big endian reference values after dff5a835.
2011-06-28 08:58:21 -07:00
Ronald S. Bultje
13a099799e
swscale: change prototypes of scaled YUV output functions.
...
Remove unused variables "flags" and "dstFormat" in yuv2packed1,
merge source rows per plane for yuv2packed[12], and make every
source argument int16_t (some where invalidly set to uint16_t).
This prevents stack pollution and is part of the Great Evil Plan
to simplify swscale.
2011-06-27 21:24:44 -07:00
Ronald S. Bultje and Ronald Bultje
dff5a83532
swscale: re-add support for non-native endianness.
...
This works through some non-obvious hacks in utils.c.
2011-06-27 18:10:41 -07:00
Ronald S. Bultje and Ronald Bultje
3d3c814937
swscale: disentangle yuv2rgbX_c_full() into small functions.
...
This is part of the Great Evil Plan to simplify swscale.
2011-06-27 18:10:24 -07:00
Ronald S. Bultje and Ronald Bultje
dc179ec819
swscale: split yuv2packedX_altivec in smaller functions.
...
This will likely lead to a considerable performance boost,
since it removes a branch from the inner loop. Part of the
Great Evil Plan to simplify swscale.
2011-06-27 18:05:16 -07:00
Ronald S. Bultje and Ronald Bultje
0d994b2f45
swscale: don't use planar output functions to write to NV12/21.
...
This prevents a crash when converting to NV12/21 without the bitexact
flags enabled.
2011-06-27 17:15:41 -07:00
Ronald S. Bultje
97535ffb97
swscale: remove unused xInc/srcW arguments from hScale().
2011-06-26 14:41:44 -07:00
Ronald Bultje and Reinhard Tartler
20153fb8f6
error_resilience: skip last-MV predictor step if MVs are not available.
...
Fixes crashes when playing broken MPEG2-TS streams.
2011-06-20 22:18:27 +02:00
Ronald Bultje and Reinhard Tartler
d42aaa802e
error_resilience: actually add counter when adding a MV predictor.
...
Without, the predictor isn't actually used.
2011-06-20 22:18:23 +02:00
Ronald S. Bultje
ea6331f8bb
h264-mt: fix deadlock in packets with multiple slices (e.g. MP4).
2011-06-20 10:24:33 -04:00
Ronald S. Bultje
dbafb0e06f
lavf: prevent crash in av_open_input_file() if ap == NULL.
...
Needed for proper behaviour in our old API compatibility code.
2011-06-18 17:51:10 -04:00
Ronald S. Bultje
ed63f527f2
Fix build if yasm is not available.
2011-06-18 08:34:14 -04:00
Ronald S. Bultje
4e05830205
swscale: remove misplaced comment.
...
The comment should have been placed only in
yuv2rgb48_X_c_template, not yuv2rgb48_1_c_template.
2011-06-14 16:55:24 -04:00
Ronald S. Bultje
0be3736796
ffmpeg: fix streaming to ffserver.
2011-06-14 15:59:15 -04:00
Ronald S. Bultje
9f63211175
swscale: split out RGB48 output functions from yuv2packed[12X]_c().
...
This is part of the Great Evil Plan to simplify swscale. Note that
you'll see some code duplication between the output functions for
different RGB variants, and even between packed-YUV and RGB
variants. This is intentional because it improves readability.
2011-06-14 15:59:14 -04:00
Ronald S. Bultje
103278f7b0
libavutil/swscale: YUV444P10/YUV444P9 support.
...
Also add missing glue code for recently added YUV422P10 formats
to swscale.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-06-10 15:12:24 -04:00
Ronald S. Bultje
af2faf2076
swscale: split YUYV output out of yuv2packed[12X]_c().
...
This is part of the Great Evil Plan to simplify swscale.
2011-06-09 20:52:38 -04:00
Ronald S. Bultje
6b105e3ee6
swscale: extract monowhite/black output from yuv2packed[12X]_c().
...
This is part of the Great Evil Plan to simplify swscale.
2011-06-09 16:47:45 -04:00
Ronald S. Bultje
6d4d483eee
swscale: de-macro'ify RGB15/16/32 input functions.
...
Inline functions are easier to read, maintain, modify and test,
which justifies the slightly increased source size. This patch
also adds support for non-native endianness RGB15/16 and fixes
isSupportedOutput() to no longer claim that we support writing
non-native RGB565/555/444.
2011-06-09 16:47:45 -04:00
Ronald S. Bultje
e2babb9b47
swscale: rearrange code.
...
This way the code in the file is less cluttered all-over-the-
place.
2011-06-09 16:47:45 -04:00
Ronald S. Bultje
dbd3183935
swscale: change 48bit RGB input macros to inline functions.
...
Inline functions are slightly larger in source code, but
are easier to handle in source code editors. The binary code
generated is the same.
2011-06-09 09:29:20 -04:00
Ronald S. Bultje
f30ee65700
swscale: change 9/10bit YUV input macros to inline functions.
...
Inline functions are slightly larger in source code, but
are easier to handle in source code editors. The binary code
generated is the same.
2011-06-09 09:29:03 -04:00
Ronald S. Bultje
aa39f5f6d6
swscale: extract gray16 output functions from yuv2packed[12X]().
...
This is part of the Great Evil Plan to simplify swscale.
2011-06-09 09:29:02 -04:00
Ronald S. Bultje
f1e0b90c64
swscale: use standard clipping functions.
...
This generates better code on some non-x86 architectures.
2011-06-09 09:27:51 -04:00
Ronald S. Bultje
e458b53605
swscale: merge macros that are used only once.
...
This reduces source code size without affecting the binary.
2011-06-09 09:26:00 -04:00
Ronald S. Bultje
6e5a8d3c9a
swscale: fix function declarations in swscale.c.
...
Remove inline keyword from functions that are never inlined.
Use av_always_inline for functions that should be force-inlined
for performance reasons. Use av_cold for init functions.
2011-06-09 09:25:59 -04:00
Ronald S. Bultje
a27db4c349
swscale: fix function declaration keywords in x86/swscale_template.c.
...
Remove inline keyword for functions that are only called through
their function pointers (and thus cannot be inlined); add av_cold
keyword to init function, and use av_always_inline instead of
inline for functions that must be inlined for performance reasons.
2011-06-09 09:25:59 -04:00
Ronald S. Bultje
9bcbb250e2
swscale: fix types of assembly arguments.
...
This prevents the following compiler warnings: "warning:
initialization from incompatible pointer type". Since the
variables are only ever used in inline assembly, their type
is actually irrelevant (so the part where it was wrong did
not invoke any buggy behaviour).
2011-06-08 11:39:26 -04:00
Ronald S. Bultje
496d95c34c
swscale: move two macros that are only used once into caller.
...
This way, they look like regular code, which is easier to
understand.
2011-06-08 11:33:46 -04:00
Ronald S. Bultje
9d84dfce93
swscale: remove unused function.
...
Use of this wrapper was removed in a previous patch, but I
forgot to actually remove the function itself.
2011-06-08 11:08:20 -04:00
Ronald S. Bultje
edeb56fa31
swscale: remove duplicate conversion routine in swScale().
2011-06-07 10:05:55 -04:00
Ronald S. Bultje
b73fe70025
swscale: add yuv2planar/packed function typedefs.
2011-06-07 10:05:55 -04:00
Ronald S. Bultje
df91d09174
swscale: integrate yuv2nv12X_C into yuv2yuvX() function pointers.
2011-06-07 10:05:54 -04:00
Ronald S. Bultje
0fb5193156
swscale: reindent x86 init code.
2011-06-07 10:05:50 -04:00
Ronald S. Bultje
ca364a5b43
swscale: extract SWS_FULL_CHR_H_INT conditional into init code.
2011-06-07 10:03:47 -04:00
Ronald S. Bultje
b3b28b080f
swscale: cosmetics.
2011-06-07 10:03:46 -04:00
Ronald S. Bultje
ea28175312
swscale: remove alp/chr/lumSrcOffset.
...
They are hacks added to reuse the same scaling function for
different formats and they may cause problems when SIMD
implementation of the same functions are used along with pure
C functions.
2011-06-07 10:03:18 -04:00
Ronald S. Bultje
bda9b20fa4
swscale: un-special-case yuv2yuvX16_c().
...
Make yuv2yuvX16_c a function pointer for yuv2yuvX(), so that the
function pointer becomes bitdepth-independent.
2011-06-07 10:03:12 -04:00
Ronald S. Bultje
ceff045dbe
utils.c: fix crash with threading enabled.
2011-06-06 10:31:01 -04:00
Ronald S. Bultje
6af2801088
swscale: split swscale.c in unscaled and generic conversion routines.
...
This duplicates the function fillPlane().
2011-06-03 09:52:09 -07:00
Ronald S. Bultje
2762ee3034
swscale: cosmetics.
...
Remove duplicate "inC" and "_c" functions that do the same thing;
give each function that handles data and acts as a function pointer
a "_c" suffix; remove "_c" suffix from functions that are inherently
not optimizable. Remove inline keyword from functions that are only
used through function pointers.
2011-06-03 09:52:09 -07:00
Ronald S. Bultje
1674bd2abe
swscale: integrate (literally) swscale_template.c in swscale.c.
2011-06-03 09:52:09 -07:00
Ronald S. Bultje
983260b0a4
swscale: split out x86/swscale_template.c from swscale.c.
2011-06-03 09:52:09 -07:00
Ronald S. Bultje
075d0ae72c
swscale: enable hScale_altivec_real.
2011-06-03 09:52:09 -07:00
Ronald S. Bultje
67d80a5421
swscale: split out ppc _template.c files from main swscale.c.
2011-06-03 09:52:09 -07:00
Ronald S. Bultje
a3e9bb5dee
swscale: remove indirections in ppc/swscale_template.c.
2011-06-03 09:52:09 -07:00
Ronald S. Bultje
0e5d31b16b
swscale: split out unscaled altivec YUV converters in their own file.
2011-06-03 09:52:09 -07:00
Ronald S. Bultje
83a8b3002f
mpegvideoenc: fix multislice fate tests with threading disabled.
...
The MPEG encoding code assumes that n_threads == n_slices, and thus it
should use n_slices even if threading itself is disabled.
2011-06-03 09:52:09 -07:00
Ronald S. Bultje
0d793db1b0
swscale: remove unused COMPILE_TEMPLATE_ALTIVEC.
2011-06-02 21:29:59 -07:00
Ronald S. Bultje
808d8ff6bb
swscale: allocate larger buffer to handle altivec overreads.
...
Altivec sws code intentionally overreads buffers for better performance,
so we need to allocate larger buffers to handle that.
2011-06-02 11:25:56 -07:00
Ronald S. Bultje
e6635a9a19
h264: remove CONFIG_GPL from x86 intra prediction code.
...
The authors permitted relicensing to LGPL a long time ago (Holger,
Loren and Jason).
2011-06-02 07:02:46 -07:00
Ronald S. Bultje
9ebcf7699b
vp8: fix segmentation race during frame-threading.
...
Fixes occasional failure of make fate-vp8-test-vector-010 with
frame-multithreading enabled.
2011-05-31 07:13:34 -07:00
Ronald S. Bultje
04de5bf56c
APIchanges: fill in git hash for av_get_pix_fmt_name (0420bd7).
2011-05-28 09:46:42 -04:00
Ronald S. Bultje
009f829dde
swscale: fix crash in bilinear scaling.
2011-05-28 08:59:56 -04:00
Ronald S. Bultje
faf8d3ddfa
cmdutils: use sws_freeContext() instead of av_freep().
...
av_freep(swsContext) will leak all memory potentially
allocated within the swsContext.
2011-05-27 13:22:28 -04:00
Ronald S. Bultje
389e2000eb
swscale: delay allocation of formatConvBuffer().
...
That means it won't be allocated when not needed. Alongside
this, it fixes valgrind/fate-detected memory leaks.
2011-05-27 13:22:27 -04:00
Ronald S. Bultje
f327bfa6dc
swscale: fix build with --disable-swscale-alpha.
2011-05-27 13:22:27 -04:00
Ronald S. Bultje
9f5d45025e
swscale: fix non-bitexact yuv2yuv[X2]() MMX/MMX2 functions.
2011-05-27 09:41:48 -04:00
Ronald S. Bultje
93681fbd50
swscale: fix compile on ppc.
2011-05-26 11:32:32 -04:00
Ronald S. Bultje
e758573a88
swscale: fix compile on x86-32.
2011-05-26 10:41:27 -04:00
Ronald S. Bultje
48520772d9
swscale: use av_clip_uint8() in yuv2yuv1_c().
2011-05-26 09:31:27 -04:00
Ronald S. Bultje
0f4eb8b043
swscale: remove VOF/VOFW.
2011-05-26 09:31:27 -04:00
Ronald S. Bultje
b4a224c5e4
swscale: split chroma buffers into separate U/V planes.
...
Preparatory step to implement support for sizes > VOFW.
2011-05-26 09:31:27 -04:00
Ronald S. Bultje
69645c021a
swscale: replace formatConvBuffer[VOF] by allocated array.
...
This allows to convert between formats of arbitrary width,
regardless of the value of VOF/VOFW.
2011-05-26 09:31:02 -04:00
Ronald S. Bultje
522d65ba25
rgb2rgb: remove duplicate mmx/mmx2/3dnow/sse2 functions.
...
Many functions have such a prefix, but do not actually use any
instructions or features from that set, thus giving the false
impression that swscale is highly optimized for a particular
system, whereas in reality it is not.
2011-05-26 09:31:02 -04:00
Ronald S. Bultje
836b82e3c9
swscale: reindent h[cy]scale_fast() and updateDitherTables().
2011-05-26 09:31:02 -04:00
Ronald S. Bultje
e2bad983b5
swscale: reformat x86/swscale_template.c.
...
Interleave macros and code so that it's easier to find the
actual code that belongs to a function. Also reindent where
appropriate and remove dead code.
2011-05-26 09:30:15 -04:00
Ronald S. Bultje
71d9c33c86
swscale: remove duplicate mmx/mmx2 functions if they are identical.
2011-05-26 09:30:15 -04:00
Ronald S. Bultje
acb96bc268
swscale: remove if (c->dstFormat) branch from yuv2packed[12X]().
...
This allows cutting up the function in much smaller and easier-
to-maintain chunks.
2011-05-26 09:30:14 -04:00
Ronald S. Bultje
b6cac9b3bf
swscale: remove if(full_chr_int) from yuv2packed1().
...
If that flag is set, swScale() already proxies the call to
yuv2rgbXinC_full(). Therefore, this flag is never set when
yuv2packed1() is called.
2011-05-26 09:30:14 -04:00
Ronald S. Bultje
2159a24573
swscale: remove if(accurate_rnd) branch from functions.
2011-05-26 09:30:14 -04:00
Ronald S. Bultje
a724ee6265
swscale: unbreak the build on non-x86 systems.
2011-05-24 15:32:03 -04:00
Ronald S. Bultje
1bb0f0c925
swscale: remove if(bitexact) branch from functions.
...
Instead, only set the function pointers if bitexact flag is
not set during initialization. Since a change in flags triggers
a re-init anyway, this doesn't situations where flag values
change during runtime.
2011-05-24 14:50:20 -04:00
Ronald S. Bultje
566b5fbbb3
swscale: remove if(canMMX2BeUsed) conditional.
...
Instead, set function pointers conditionally during init. This
patch also reveals a whole branch of dead assembly code that is
therefore also removed.
2011-05-24 14:50:19 -04:00
Ronald S. Bultje
aaca69c130
swscale: remove swScale_{c,MMX,MMX2} duplication.
2011-05-24 14:50:15 -04:00
Ronald S. Bultje
c4fd283a46
swscale: use emms_c().
2011-05-24 14:48:49 -04:00
Ronald S. Bultje
e973557211
Move emms_c() from libavcodec to libavutil.
2011-05-24 14:48:49 -04:00
Ronald S. Bultje
b9eb2136af
swscale: remove dead macro WRITEBGR24OLD.
2011-05-24 10:46:40 -04:00
Ronald S. Bultje
1dd4f4be5a
swscale: remove AMD3DNOW "optimizations".
...
The functions are identical to their MMX counterparts. Thus,
pretending that swscale is highly optimized for AMD3DNOW
extensions is a poorly executed practical joke at best.
2011-05-24 10:19:41 -04:00
Ronald S. Bultje
fe43d5d71e
swscale: remove duplicate code in ppc/ subdirectory.
2011-05-24 10:16:32 -04:00
Ronald S. Bultje
11ffefefdb
swscale: remove duplicated x86/ functions.
2011-05-24 10:11:26 -04:00
Ronald S. Bultje
e66149e714
swscale: force --enable-runtime-cpudetect and remove SWS_CPU_CAPS_*.
2011-05-24 10:03:26 -04:00
Ronald S. Bultje
b51021da7b
fate: fix fate-h264-conformance-frext-pph10i4-panasonic-a crcs.
...
The sample on rsync was corrupt, this one is now bitexact w.r.t. JM.
2011-05-23 08:44:31 -04:00
Ronald S. Bultje
845807494b
fate: update 9/10bit refs.
2011-05-23 08:21:50 -04:00
Ronald S. Bultje
cdca7c378e
svq3: Do initialization after parsing the extradata
...
If done before, some parameters aren't known yet.
With svq3/rtp, initializing before some parameters are known
can lead to calling av_malloc(0), which on OS X currently returns
broken pointers.
2011-05-21 07:40:56 -04:00
Ronald S. Bultje
03c804e1ed
mp3lame: add #include required for AV_RB32 macro.
...
Fixes compilation with mp3lame enabled.
2011-05-20 15:28:29 -04:00
Ronald S. Bultje and Diego Biurrun
42da8ea8e8
LATM/AAC: Free previously initialized context on reinit.
...
Fixes memory leaks which are the result of overwriting already-initialized
MDCT contexts during context reinitialization, e.g. in valgrind
fate-aac-latm_000000001180bc60.
Signed-off-by: Diego Biurrun <diego@biurrun.de >
2011-05-20 18:24:53 +02:00
Ronald S. Bultje
4e987f8282
h264: correct border check.
...
When backing up the top-left border, check that the top-left
(rather than left) MB indeed does belong to our slice. If it
doesn't, backing up has no positive effect but may accidentally
interfere with other threads writing in the same space.
Fixes occasional one-off effects when enabling slice-MT.
2011-05-19 20:32:18 -04:00
Ronald S. Bultje
0ffc841505
h264: fix loopfilter with threading at slice boundaries.
2011-05-19 20:32:17 -04:00
Ronald S. Bultje
508a24f8dc
mpeg12: add slice-threading checks to slice-threading initializers.
...
Fixes "make THREADS=2 THREAD_TYPE=1 fate-mpeg2-field-enc".
2011-05-18 06:54:15 -04:00
Ronald S. Bultje
8d44cd2cd8
h264: copy pixel_shift between slice threading contexts.
...
Fixes "make THREADS=2 THREAD_TYPE=2
fate-h264-conformance-frext-pph10i3_panasonic_a".
2011-05-18 06:54:15 -04:00
Ronald S. Bultje
32ac63ee10
mdec.c: fix overread.
2011-05-18 06:54:15 -04:00
Ronald S. Bultje
76f8a96e00
[PATCH] Update pixdesc_be fate refs after adding 9/10bit YUV420P formats.
...
Also remove code that overwrites the C versions of functions in
sws_init_swScale_altivec(), so that it uses the C functions of files
if no altivec-optimized version exists.
2011-05-14 06:37:39 -04:00
Ronald S. Bultje
9f54e461fe
swscale: properly inline bits/endianness in yuv2yuvX16inC().
2011-05-13 16:46:24 -04:00
Ronald S. Bultje
c3d68ec9c5
swscale: fix clipping of 9/10bit YUV420P.
2011-05-13 16:45:28 -04:00
Ronald S. Bultje
c8f487deae
swscale: fix YUV420P 9/10bit support.
...
Fix handling of input if not in native endianness, and add support for
9/10-bit output. This allows us to force endianness of YUV420P 9/10bit
in the H264/10bit fate tests, which should fix them on big-endian
systems.
2011-05-11 19:15:14 -04:00