Commit Graph
100 Commits
Author SHA1 Message Date
Ronald S. Bultje b8077d7a3b vp9: add profile 2/3 fate tests. 2015-05-07 07:19:49 -04:00
Ronald S. Bultje 23ba4538f9 vp9: add inter-frame profile 2/3 suport. 2015-05-06 15:10:41 -04:00
Ronald S. Bultje b224b165cb vp9: add keyframe profile 2/3 support. 2015-05-06 15:10:41 -04:00
Ronald S. Bultje 346ce5da19 vp9: parse profile 2/3 bitdepth in frame header. 2015-05-06 15:10:40 -04:00
Ronald S. Bultje 01e59d48ed vp9: add profile 2/3 to exported profiles. 2015-05-06 15:10:40 -04:00
Ronald S. Bultje 5c600d74aa fate: add/update reference files for 440 addition. 2015-05-06 15:10:26 -04:00
Ronald S. Bultje 711d8812ad swscale: add yuv440p10/12 pixfmts. 2015-05-06 12:04:31 -04:00
Ronald S. Bultje 57f970a704 lavc: add yuv440p10/12 formats to aligned pixfmt list. 2015-05-06 12:04:31 -04:00
Ronald S. Bultje 98f7f0f7e8 lavu: add yuv440p10/12 pixfmts. 2015-05-06 12:04:31 -04:00
Ronald S. BultjeandMichael Niedermayer ed68fccf76 vp9: error out if chroma subsampling changes between frames.
This can happen after an intra-only frame. For reference, see:
https://groups.google.com/a/webmproject.org/forum/#!msg/webm-discuss/zaoTxREZjq8/v5Enht87AhcJ

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-05-05 20:09:44 +02:00
Ronald S. Bultje b005d09764 vp9: add fate test for 422.
Sample available at:
http://downloads.webmproject.org/test_data/libvpx/vp91-2-04-yuv422.webm
2015-05-01 08:45:55 +02:00
Ronald S. Bultje 6f63bdbae6 vp9: copy bug in libvpx for 4:2:2 chroma bs=8x4/4x4 prediction. 2015-05-01 08:45:55 +02:00
Ronald S. Bultje 7126c80f0d vp9: add yuv440 fate test.
Sample available at:
http://downloads.webmproject.org/test_data/libvpx/vp91-2-04-yuv440.webm
2015-05-01 08:45:55 +02:00
Ronald S. Bultje 2a7d7bef62 vp9: fix mask_edges and filter_plane_rows/cols() for 440. 2015-05-01 08:45:54 +02:00
Ronald S. Bultje cf62f2d2d6 vp9: more specifically specify mask destination to mask_edges(). 2015-05-01 08:45:54 +02:00
Ronald S. Bultje f052ea6ba5 vp9: add fate test for profile 1 444.
Sample available at:
http://downloads.webmproject.org/test_data/libvpx/vp91-2-04-yuv444.webm
2015-05-01 08:45:54 +02:00
Ronald S. Bultje e4f77e6239 vp9: don't create special u/v filter masks for 444.
This fixes vp91-2-04-yuv444.webm.
2015-05-01 08:45:54 +02:00
Ronald S. Bultje afa9d00b43 vp9: merge uv loopfilter code into generic filter_plane_rows/cols(). 2015-05-01 08:45:53 +02:00
Ronald S. Bultje ba59a5ec42 vp9: split out loopfilter luma rows/cols functions from loopfilter_sb(). 2015-05-01 08:45:53 +02:00
Ronald S. Bultje 844799b033 vp9: invert order of two conditions.
This makes it equal to row-based loopfilter code, and also makes the
chroma/luma code identical.
2015-05-01 08:45:53 +02:00
Ronald S. Bultje d382cc0fad vp9: use correct chroma subsampling for profile 1 inter block recon. 2015-05-01 08:45:52 +02:00
Ronald S. Bultje d2aa6f65db vp9: use correct chroma subsampling for profile 1 intra block recon. 2015-05-01 08:45:52 +02:00
Ronald S. Bultje ed3e0cc715 vp9: take chroma subsampling into account when walking the block tree. 2015-05-01 08:45:52 +02:00
Ronald S. Bultje 6019002f0f vp9: support non-420 chroma subsampling for profile 1 token decoding. 2015-05-01 08:45:52 +02:00
Ronald S. Bultje 2d0bea4719 vp9: increase buffer sizes for non-420 chroma subsamplings. 2015-05-01 08:45:51 +02:00
Ronald S. Bultje a03b057ede vp9: profile 1 header decoding. 2015-05-01 08:45:51 +02:00
Ronald S. BultjeandMichael Niedermayer 5935513c0e vp9: fix show-existing-frames for multi-threading.
This also fixes intra-only MT failures (it was the same bug), see trac
4526 and 4527.

Tested-by: James Almer <jamrial@gmail.com>
Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-30 23:32:09 +02:00
Ronald S. BultjeandMichael Niedermayer 5d914a4a43 vp9: add fate test for intraonly frames.
Sample available at:
http://downloads.webmproject.org/test_data/libvpx/vp90-2-16-intra-only.webm
2015-04-24 16:54:31 +02:00
Ronald S. BultjeandMichael Niedermayer 640d878bc1 vp9: fix intraonly frame decoding. 2015-04-24 16:54:31 +02:00
Ronald S. BultjeandMichael Niedermayer 0eccf7d43a vp9: add fate test for segmentation image-edge issue.
Sample available at:
http://downloads.webmproject.org/test_data/libvpx/vp90-2-15-segkey_adpq.webm
2015-04-24 16:54:31 +02:00
Ronald S. BultjeandMichael Niedermayer ed45edb2f6 vp9: use aligned size to write segmentation map into cache.
The unaligned size is not handled in setctx_2d(), causing edges of images
to have improper segmentation prediction, which causes visual artifacts
at image edges a few frames later.
2015-04-24 16:54:31 +02:00
Ronald S. BultjeandMichael Niedermayer 3de13d5212 vp9: remove another optimization branch in iadst16 which causes overflows.
See sample vp90-2-14-resize-fp-tiles-16-8.webm from the vp9 test vector
set to reproduce the issue.
2015-04-24 16:54:31 +02:00
Ronald S. BultjeandMichael Niedermayer 4b02032fb4 vp9: add fate tests for show-existing-frame feature.
Samples available at:
http://downloads.webmproject.org/test_data/libvpx/vp90-2-10-show-existing-frame.webm
http://downloads.webmproject.org/test_data/libvpx/vp90-2-10-show-existing-frame2.webm

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-24 16:37:05 +02:00
Ronald S. BultjeandMichael Niedermayer 345e3be7ba vp9: add lf_deltas fate test.
Sample available at:
http://downloads.webmproject.org/test_data/libvpx/vp90-2-09-lf_deltas.webm

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-24 16:36:36 +02:00
Ronald S. BultjeandMichael Niedermayer d9555adf06 vp9: set timestamps for show_existing_frame return images.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-23 20:34:51 +02:00
Ronald S. BultjeandMichael Niedermayer c82e870c12 vp9: maintain lf_delta values if feature is turned off.
This is required if it's subsequently re-enabled with no value updates
(which means, use values that were previously set).

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-23 15:55:15 +02:00
Ronald S. BultjeandMichael Niedermayer d02619fde3 vp9: add fate test for bilinear MC filter.
Sample at:
http://downloads.webmproject.org/test_data/libvpx/vp90-2-06-bilinear.webm

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-23 15:55:10 +02:00
Ronald S. BultjeandMichael Niedermayer df287f3e43 vp9: add fate size for resolution changes.
See sample:
http://downloads.webmproject.org/test_data/libvpx/vp90-2-05-resize.ivf

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-23 05:10:02 +02:00
Ronald S. BultjeandMichael Niedermayer e8b4f6d6be vp9: add support for resolution changes in inter frames.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-23 05:09:51 +02:00
Ronald S. BultjeandMichael Niedermayer d02d04a18f vp9: remove one optimization branch in iadst16 which causes overflows.
See sample vp90-2-14-resize-fp-tiles-16-8-4-2-1.webm from the vp9 test
vector set which reproduces the issue. This probably costs a few cycles,
but I don't think there's an easy way to workaround that.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-22 21:37:10 +02:00
Ronald S. BultjeandMichael Niedermayer b926f02e81 avutil/x86/Makefile: Make building and linking of emms.c conditional
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-08 17:25:35 +02:00
Ronald S. BultjeandMichael Niedermayer 589a6042ea avutil: make AVFrameSideData buffers ref-counted.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-25 12:04:00 +01:00
Ronald S. BultjeandMichael Niedermayer b8e36690e8 lavu/frame: move av_frame_copy_props() up in the file.
Preparation for following patch.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-25 12:03:53 +01:00
Ronald S. BultjeandJames Almer 1fd1f58bd6 vp9: make above buffer pointer 32-byte aligned.
Fixes ticket #4383

Signed-off-by: James Almer <jamrial@gmail.com>
2015-03-21 17:13:46 -03:00
Ronald S. BultjeandMichael Niedermayer 0b69c53a61 vp9: included uses_2pass member in vp9_ref_frame().
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-08 14:50:11 +01:00
Ronald S. BultjeandMichael Niedermayer 4ba8f3273e vp9: split segmentation map / mvpair references.
This prevents a memcpy if segmentation.update_map == false.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-08 13:58:14 +01:00
Ronald S. BultjeandMichael Niedermayer efff3854f0 vp9: fix segmentation map retention with threading enabled.
Fixes ticket 4359.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-07 03:30:37 +01:00
Ronald S. Bultje 3aefca68ca vp9/x86: add myself to copyright holders for loopfilter assembly. 2014-12-27 16:55:16 -05:00
Ronald S. Bultje afd8c464b7 vp9/x86: make filter_16_h work on 32-bit. 2014-12-27 16:55:16 -05:00
Ronald S. Bultje b26bc3520f vp9/x86: make filter_48/84/88_h work on 32-bit. 2014-12-27 16:55:15 -05:00
Ronald S. Bultje 8a1cff1c35 vp9/x86: make filter_44_h work on 32-bit. 2014-12-27 16:55:15 -05:00
Ronald S. Bultje 047088b8c6 vp9/x86: make filter_16_v work on 32-bit. 2014-12-27 16:55:14 -05:00
Ronald S. Bultje 0cc9c23ea1 vp9/x86: make filter_48/84_v work on 32-bit. 2014-12-27 16:55:14 -05:00
Ronald S. Bultje 6433a9133f vp9/x86: make filter_88_v work on 32-bit. 2014-12-27 16:55:14 -05:00
Ronald S. Bultje 75f8e52089 vp9/x86: make filter_44_v work on 32-bit. 2014-12-27 16:55:13 -05:00
Ronald S. Bultje 7f80c3344c vp8/x86: save one register in SIGN_ADD/SUB. 2014-12-27 16:55:13 -05:00
Ronald S. Bultje 8ea2194ebb vp9/x86: store unpacked intermediates for filter6/14 on stack.
filter16 goes from 508 to 482 (h) or 346 to 314 (v) cycles; filter88
goes from 240 to 238 (h) or 174 to 165 (v) cycles, measured on TOS.
2014-12-27 16:55:13 -05:00
Ronald S. Bultje e42409479f vp8/x86: move variable assigned inside macro branch.
The value is not used outside the branch.
2014-12-27 16:55:12 -05:00
Ronald S. Bultje 418c202c63 vp9/x86: simplify ABSSUM_CMP by inverting the comparison meaning. 2014-12-27 16:55:12 -05:00
Ronald S. Bultje d1c55654e1 vp8/x86: remove unused register from ABSSUB_CMP macro. 2014-12-27 16:55:12 -05:00
Ronald S. Bultje e59bd08986 vp9/x86: slightly simplify 44/48/84/88 h stores. 2014-12-27 16:55:11 -05:00
Ronald S. Bultje 8132629bd5 vp9/x86: make cglobal statement more conservative in register allocation. 2014-12-27 16:55:11 -05:00
Ronald S. Bultje c013ca58c5 vp9/x86: save one register in loopfilter surface coverage. 2014-12-27 16:55:11 -05:00
Ronald S. BultjeandMichael Niedermayer bdc1e3e3b2 vp9/x86: intra prediction sse2/32bit support.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-19 14:07:19 +01:00
Ronald S. BultjeandMichael Niedermayer b6e1711223 vp9/x86: invert hu_ipred left array ordering.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-19 14:07:18 +01:00
Ronald S. BultjeandMichael Niedermayer 0a7964dca5 vp9/x86: save one register on 32bit idct32x32.
Fixes build on win32.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-16 02:51:26 +01:00
Ronald S. BultjeandMichael Niedermayer cae893f692 vp9/x86: sse2 MC assembly.
Also a slight change to the ssse3 code, which prevents a theoretical
overflow in the sharp filter.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-15 02:34:05 +01:00
Ronald S. BultjeandMichael Niedermayer fd77fbb390 vp9/x86: 32bit and sse2 support for vp9 inverse transform assembly
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-15 00:38:05 +01:00
Ronald S. BultjeandMichael Niedermayer 14e3025518 vp9: ignore reference segmentation map if error_resilience flag is set.
Fixes ffvp9_fails_where_libvpx.succeeds.webm from ticket 3849.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-13 20:46:00 +02:00
Ronald S. BultjeandMichael Niedermayer 45bed0ab30 vp9/x86: fix bug in intra_pred_hd_32x32.
Fixes mismatch in first keyframe in sample
ffvp9_fails_where_libvpx.succeeds.webm from ticket 3849. There's still
a second mismatch a few frames into the sample.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-12 13:11:21 +02:00
Ronald S. BultjeandMichael Niedermayer bfffce4d08 hevc: add missing comma in log message.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-11 02:27:27 +02:00
Ronald S. BultjeandVittorio Giovara c39059bea3 h264: Fix direct temporal mvs for bottom-field-first poc order
Such files can be created using the --bff x264 option.

Sample-Id: h264_direct_temporal_mvs_bff.mkv
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2014-07-20 23:32:13 +01:00
Ronald S. BultjeandMichael Niedermayer ebd1c505d2 h264: fix direct temporal mvs for bottom-field-first poc order.
Fixes http://forum.doom9.org/showthread.php?t=170867.
Fixes: corrupt-1677.mkv

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-07-13 13:26:19 +02:00
Ronald S. BultjeandMichael Niedermayer 847bb638c0 swr: convert resample_common/linear_int16_mmx2/sse2 to yasm.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-30 20:11:50 +02:00
Ronald S. BultjeandMichael Niedermayer faa1471ffc swr: rewrite resample_common/linear_float_sse/avx in yasm.
Linear interpolation goes from 63 (llvm) or 58 (gcc) to 48 (yasm)
cycles/sample on 64bit, or from 66 (llvm/gcc) to 52 (yasm) cycles/
sample on 32bit. Bon-linear goes from 43 (llvm) or 38 (gcc) to
32 (yasm) cycles/sample on 64bit, or from 46 (llvm) or 44 (gcc) to
38 (yasm) cycles/sample on 32bit (all testing on OSX 10.9.2, llvm
5.1 and gcc 4.8/9).

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-28 17:06:47 +02:00
Ronald S. BultjeandMichael Niedermayer ddb7b4435a swr: move dst_size == 0 handling outside DSP function.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-28 15:30:01 +02:00
Ronald S. BultjeandMichael Niedermayer 0dae193d3e swr: remove another forgotten division in DSP function.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-22 05:20:22 +02:00
Ronald S. BultjeandMichael Niedermayer cbf21628a5 swr: remove div/mod from DSP functions.
Also fix a bug with resample_compensation resetting dst_incr.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-18 14:15:52 +02:00
Ronald S. BultjeandMichael Niedermayer edf930472b swr: reindent.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-16 01:33:32 +02:00
Ronald S. BultjeandMichael Niedermayer 083cd3d1f7 swr: compile mmx2 s16p functions only on x86-32.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-15 13:34:53 +02:00
Ronald S. BultjeandMichael Niedermayer ada8f9c046 swr: remove obsolete function prototypes.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-15 00:07:25 +02:00
Ronald S. BultjeandMichael Niedermayer 7128a35f8c swr: split out DSP functions.
DSP bits of swri_resample go into their own mini-DSP functions; DSP
init goes from a per-call branch in multiple_resample to a proper
DSP init routine; x86 bits go into x86/; swri_resample() moves out of
resample_template.c into resample.c because it's independent of DSP
code or sample type; multiple_resample() is simplified.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-14 20:21:39 +02:00
Ronald S. BultjeandMichael Niedermayer b785c62681 swr: handle initial negative sample index outside DSP function.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-14 14:36:18 +02:00
Ronald S. BultjeandMichael Niedermayer 6b9685de3a swr: remove unnecessary assignment.
I don't see dst_incr/dst_incr_frac ever being changed from their
initial value (which is the inverse of this operation), so it seems
to me that this is a no-op.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-14 04:30:53 +02:00
Ronald S. BultjeandMichael Niedermayer 385a3420d1 vp9/x86: fix overwrite in ipred_vl_4x4_ssse3.
Fixes track ticket 3717.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-12 04:11:20 +02:00
Ronald S. BultjeandMichael Niedermayer f341340552 swr: handle 64bit overflow check in multiple_resample().
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-09 15:24:51 +02:00
Ronald S. BultjeandMichael Niedermayer cdfd9717ed swr: move compensation_distance handling to swri_resample caller.
I think there's an off-by-one in terms of the switchpoint where we
switch from dst_incr to ideal_dst_incr, I don't think that's a massive
issue, but just be aware of that. It's probably trivial to prevent but
I don't care.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>

I could not reproduce any off by 1 error, results are bit exact (michael)
2014-06-02 15:06:24 +02:00
Ronald S. BultjeandMichael Niedermayer 9b53853756 Rewrite main resampling loop (common and linear).
This removes a branch at a performance-sensitive point (in the middle
of the loop). In fate-swr-resample-s32p-8000-2626, this makes the code
about 10% faster. It also simplifies the loops, allowing us to rewrite
it in yasm at some later point.

The compensation_distance != 0 code and index < 0 code are still kind
of hairy. For compensation_distance != 0, this should likely be handled
in the caller, so that it calls swri_resample twice (once until the
dst_incr switch-point, and once with the remainder of the samples). For
index < 0, the code should probably be rewritten to break out of the
loop once sample_index >= 0, and then resume (e.g. as a tail-call) to
the common or linear resampling loops.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-02 00:47:54 +02:00
Ronald S. Bultje 6d69f9f376 vp9: write uveob as 16-bit value for 16x16/32x32 transforms.
This fixes make fate-vp9-00-quantizer-01 THREADS=2.
2014-04-25 07:51:39 -04:00
Ronald S. BultjeandMichael Niedermayer b9936e59e8 tiny_ssim: add per-frame metrics and final ssim db number.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-02-19 02:39:05 +01:00
Ronald S. BultjeandClément Bœsch 21a0451167 vp9: split decode_coeff_b loop inside txsz branch.
The advantage of this is that the is32x32 division branch in
decode_coeffs_b is removed from the inner loop to outside the block
coef decoding loop in decode_coeffs. Also, it allows us to merge the
txsz branches from the block coef decoding loop, the context merge
and the context split.
2014-02-17 13:39:00 +01:00
Ronald S. BultjeandClément Bœsch fdb093c4e4 vp9/x86: intra prediction SIMD.
Partially based on h264_intrapred. (I hope to eventually merge these
two intrapred implementations back together.)
2014-02-17 13:39:00 +01:00
Ronald S. BultjeandAnton Khirnov dff1c19140 vp9: add a new segmentation sample.
The old one didn't use segmentation. One uses segmentation in all frame
types (--aq-mode=1), and the other uses all segmentation features, but
only in inter frames (mbgraph).

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-02-12 15:18:21 +01:00
Ronald S. BultjeandAnton Khirnov 91be8df20b vp9: add fate sample for parallelmode.
This disables backward probability updates, which makes the codec more
friendly for frame-level multi-threading.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2014-02-12 15:17:40 +01:00
Ronald S. BultjeandJanne Grunau 2f6eec65ac vp8: fix PPC assembly to work if src_stride != dst_stride
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2014-02-09 18:50:53 +01:00
Ronald S. BultjeandClément Bœsch 0d4d223353 vp9: invert order in l[] intra prediction array.
The directional intra predictors either don't care about order (dc, h,
dc_left, tm), or they prefer inverted order (vr, dr, hd). This allows
more efficient SIMD implementations.
2014-02-09 18:07:15 +01:00
Ronald S. BultjeandClément Bœsch 37c6eac296 vp9: remove memset in loopfilter level setting loop.
Use same function for segmentation map writing also.
2014-02-09 18:07:14 +01:00
Ronald S. BultjeandClément Bœsch 45245e202e vp9: coef decoding context-splat speedup. 2014-02-09 18:07:14 +01:00
Ronald S. BultjeandClément Bœsch fccd7d81b6 vp9: decode_mode context optimizations. 2014-02-09 18:07:14 +01:00
Ronald S. BultjeandClément Bœsch 1dc8559e25 vp9: more aligned zeroes. 2014-02-09 18:07:14 +01:00