Log of /branches/dev-api-4/xvidcore/src/motion
Directory Listing
Revision
1286 -
Directory Listing
Modified
Sat Dec 20 15:30:03 2003 UTC (20 years, 5 months ago) by
edgomez
Cleanup patch while doing branch merging with tla
Revision
1281 -
Directory Listing
Modified
Thu Dec 18 21:40:11 2003 UTC (20 years, 5 months ago) by
Isibaar
improved reliability of new speed-up flags
Revision
1280 -
Directory Listing
Modified
Thu Dec 18 21:31:32 2003 UTC (20 years, 5 months ago) by
Isibaar
improved reliability of new speed-up flags
Revision
1279 -
Directory Listing
Modified
Thu Dec 18 17:49:28 2003 UTC (20 years, 5 months ago) by
Isibaar
qpel speed-up
Revision
1276 -
Directory Listing
Modified
Thu Dec 18 14:47:44 2003 UTC (20 years, 5 months ago) by
edgomez
Small glitches during last michael's commits:
* cosmetic tab vs spaces in xvid.h, or missing ending newline...
* probable bug in early stop for bvops
Revision
1275 -
Directory Listing
Modified
Thu Dec 18 13:26:48 2003 UTC (20 years, 5 months ago) by
Isibaar
- XVID_ME_BFRAME_EARLYSTOP
sorry for all the new ME flags ;-)
Revision
1274 -
Directory Listing
Modified
Thu Dec 18 02:53:30 2003 UTC (20 years, 5 months ago) by
Isibaar
- XVID_ME_FAST_MODEINTERPOLATE
Revision
1273 -
Directory Listing
Modified
Thu Dec 18 02:02:08 2003 UTC (20 years, 5 months ago) by
Isibaar
- XVID_ME_FASTREFINE16 also for b-frame bf_search
- XVID_ME_SKIP_DELTASEARCH to skip direct mode delta search
Revision
1240 -
Directory Listing
Modified
Fri Dec 5 12:27:48 2003 UTC (20 years, 5 months ago) by
syskin
just one more tweak
Revision
1239 -
Directory Listing
Modified
Thu Dec 4 12:08:03 2003 UTC (20 years, 5 months ago) by
syskin
final frame decision tweaks
Revision
1238 -
Directory Listing
Modified
Wed Dec 3 19:46:50 2003 UTC (20 years, 5 months ago) by
edgomez
sane default for profile if its value is 0x00 (reserved and usually the
result of a create structure memset(..., 0, ...))
Revision
1237 -
Directory Listing
Modified
Wed Dec 3 11:51:28 2003 UTC (20 years, 5 months ago) by
syskin
final ME twaking - one very small bug found in the process
Revision
1230 -
Directory Listing
Modified
Sun Nov 30 16:13:16 2003 UTC (20 years, 5 months ago) by
edgomez
* Thread safe MPEG4 quantization functions.
Cleaned up version of patch provided by Michael
- fixed compiling problems on gcc
- added const qualifiers every where it was possible to help C compiler
optimization.
- added the mpeg_quant_matrices param to all ASM function prototype
in comments (even if it's not used, that shows we do it deliberatly)
- forces m[intra][0][0] = 8, otherwise XviD could write invalid streams.
* Added real CRC computing in xvid_bench.c
Revision
1215 -
Directory Listing
Modified
Wed Nov 19 12:24:25 2003 UTC (20 years, 6 months ago) by
syskin
SearchData revised - not longer constant across checkcandidates, but keeps search results in self - no pointers and redirections. All checkcandidates are faster now.
Revision
1214 -
Directory Listing
Modified
Tue Nov 18 21:41:21 2003 UTC (20 years, 6 months ago) by
edgomez
Michael introduced a fast subpel refine that uses a (iMinSAD2, currentQMV2)
couple of data. The problem is that he plugged this in CheckCandidate16_qpel
that is used outside this context, thus a if statement was traversed with
garbage data in the standard subpel case. For perfection sake, using a
iMinSAD=256*4096 value collects correct data even if it will not be used in
the normal subpel case.
Revision
1212 -
Directory Listing
Modified
Sun Nov 16 15:32:38 2003 UTC (20 years, 6 months ago) by
edgomez
Valgrind reported lot of unitialized reads. These unitialized reads
helped sysKin finding three bugs:
- ZeroMacroblock did not reset the cbp field. So for some skipped
blocks, a test was done on the cbp value...
- MEanalysis was using wrong mvs from the current bvop (unitialized
or just wrong in current context). That's because in devapi3,
bframes used to share the same mvs array wheras now, it's one array
a bvop.
- Collocated skipped MBs for a bvop didn't reset mvs[0] and b_mvs[0].
Revision
1211 -
Directory Listing
Modified
Sat Nov 15 14:48:41 2003 UTC (20 years, 6 months ago) by
syskin
no longer crashes with very very *very* small pictures; new intra thresholds (more keyframes)
Revision
1205 -
Directory Listing
Modified
Thu Nov 13 23:11:24 2003 UTC (20 years, 6 months ago) by
edgomez
MMXed the calculation of SSE for 8x8 16bit blocks. This helps quite
a lot VHQ=4 mode.
My tests show with trellis:chroma_me:
- ~20% speed improvement for vhq=4.
- at least 5% when using vhq=1.
Of course this speedup vanishes if more CPU intensive features are
used. CruNcher who used gmc/qpel, noticed "only" a ~5% speed
improvement.
NB: i'm of course talking about overall speed improvement. Such a
small patch for such a big improvement :-)
Revision
1201 -
Directory Listing
Modified
Sun Nov 9 20:47:14 2003 UTC (20 years, 6 months ago) by
edgomez
* transfer_8to16_sub2_(c|mmx|xmm|3dne) write back the compensated
result to current frame pointer.
* transfer_8to16_sub2_mmx uses proper rounding (a+b+1)/2. The +1
operation was missing.
* Blocks skipped in bframes must be compensated for psnr computing.
Revision
1199 -
Directory Listing
Modified
Mon Nov 3 19:58:16 2003 UTC (20 years, 6 months ago) by
edgomez
* Small error fixed by Skal in his dev16 code (missing pshufd).
* Blocks used by DCT tests are now aligned with DECLARE_ALIGNED_MATRIX
this avoids the well know segfaults when using SSE2 instructions that
suppose data alignment.
Revision
1198 -
Directory Listing
Modified
Mon Nov 3 15:51:50 2003 UTC (20 years, 6 months ago) by
edgomez
correct .rodata alignment
Revision
1195 -
Directory Listing
Modified
Wed Oct 29 12:41:41 2003 UTC (20 years, 6 months ago) by
edgomez
* Added sse2 f/iDCT code from skal
* Added hooking in xvid.c
Revision
1194 -
Directory Listing
Modified
Tue Oct 28 23:47:29 2003 UTC (20 years, 6 months ago) by
Isibaar
Bugfix: stationary motion threshold determination
Revision
1192 -
Directory Listing
Modified
Tue Oct 28 22:23:03 2003 UTC (20 years, 6 months ago) by
edgomez
* Applied same style to all asm files
* Replaced current sad sse2 operators with skal's ones
* Removed old and unused colorspace asm files
Revision
1187 -
Directory Listing
Modified
Sat Oct 25 16:51:38 2003 UTC (20 years, 6 months ago) by
syskin
faster d_mv_bits()
Revision
1186 -
Directory Listing
Modified
Fri Oct 24 13:28:23 2003 UTC (20 years, 6 months ago) by
syskin
this bug was really stupid
Revision
1185 -
Directory Listing
Modified
Wed Oct 22 16:30:07 2003 UTC (20 years, 6 months ago) by
syskin
another bugfix
Revision
1177 -
Directory Listing
Modified
Sat Oct 11 16:36:10 2003 UTC (20 years, 7 months ago) by
syskin
real ac/dc prediction for INTRA's bitcount
Revision
1174 -
Directory Listing
Modified
Tue Oct 7 13:02:35 2003 UTC (20 years, 7 months ago) by
edgomez
Quantization namespace and API changes
Revision
1169 -
Directory Listing
Modified
Fri Oct 3 16:57:55 2003 UTC (20 years, 7 months ago) by
edgomez
Removed BIGLUT support and fixes to sysKin last commit
Revision
1167 -
Directory Listing
Modified
Fri Oct 3 14:23:00 2003 UTC (20 years, 7 months ago) by
syskin
VHQ now understands ALTERNATE_SCAN flag. Shouldn't VfW support this flag?
Revision
1164 -
Directory Listing
Modified
Fri Oct 3 12:41:02 2003 UTC (20 years, 7 months ago) by
syskin
small update
Revision
1163 -
Directory Listing
Modified
Fri Oct 3 12:36:56 2003 UTC (20 years, 7 months ago) by
syskin
speedups and one bugfix
Revision
1161 -
Directory Listing
Modified
Wed Oct 1 23:23:01 2003 UTC (20 years, 7 months ago) by
edgomez
removed trailing spaces
Revision
1160 -
Directory Listing
Modified
Tue Sep 30 18:20:31 2003 UTC (20 years, 7 months ago) by
edgomez
Warnings and ANSI C cleanups
Revision
1159 -
Directory Listing
Modified
Mon Sep 29 16:58:37 2003 UTC (20 years, 7 months ago) by
syskin
weird typo, compilers don't even give a warning but it looks strange ;)
Revision
1158 -
Directory Listing
Modified
Mon Sep 29 13:43:40 2003 UTC (20 years, 7 months ago) by
syskin
some compiler warnings removed
Revision
1156 -
Directory Listing
Modified
Sun Sep 28 16:12:32 2003 UTC (20 years, 7 months ago) by
syskin
just another bug I made. ugly one, but they are all ugly, so it's no news
Revision
1151 -
Directory Listing
Modified
Thu Sep 11 15:29:32 2003 UTC (20 years, 8 months ago) by
syskin
small bugfix
Revision
1142 -
Directory Listing
Modified
Wed Sep 10 22:19:00 2003 UTC (20 years, 8 months ago) by
edgomez
Motion Estimation module splitting.
Revision
1138 -
Directory Listing
Modified
Sat Sep 6 11:24:50 2003 UTC (20 years, 8 months ago) by
Isibaar
argh - fast mode decision was _always_ activated no matter which flags where set - fixed now...
Revision
1137 -
Directory Listing
Modified
Fri Sep 5 10:01:50 2003 UTC (20 years, 8 months ago) by
Isibaar
oops. Small bug in fast refinement - thx Ed for pointing out!
Revision
1136 -
Directory Listing
Modified
Thu Sep 4 18:40:02 2003 UTC (20 years, 8 months ago) by
Isibaar
Newly introduced:
- XVID_ME_DETECT_STATIC_MOTION: skips MV search in stationary scenes (gives a slight speed-up and a PSNR drop of ~0.03 dB)
- XVID_ME_FASTREFINE16: low complexity subpel refinement. Useful mainly for qpel (big speed-up, small PSNR drop of ~0.05 dB)
- XVID_VOP_FAST_MODEDECISION_RD: performs R-D checking only 'when really needed' (significant speed-up, again mild PSNR drop)
All new options need further testing/fine tuning...
Revision
1135 -
Directory Listing
Modified
Fri Aug 29 13:47:21 2003 UTC (20 years, 8 months ago) by
syskin
p/b/i decision changed *again* (how many times did I write that?)
Revision
1134 -
Directory Listing
Modified
Thu Aug 28 11:17:29 2003 UTC (20 years, 8 months ago) by
syskin
I really have to be more careful when commiting
Revision
1133 -
Directory Listing
Modified
Thu Aug 28 11:14:04 2003 UTC (20 years, 8 months ago) by
syskin
oops one small fix
Revision
1132 -
Directory Listing
Modified
Thu Aug 28 11:06:16 2003 UTC (20 years, 8 months ago) by
syskin
Speed improvements; another many-years-old-bug fixed (in p/b/i decision)
Revision
1130 -
Directory Listing
Modified
Tue Aug 26 09:25:25 2003 UTC (20 years, 8 months ago) by
edgomez
/me slaps Syskin. I told you gcc had not min/max.
Revision
1129 -
Directory Listing
Modified
Mon Aug 25 15:10:30 2003 UTC (20 years, 8 months ago) by
syskin
small speed improvements
Revision
1125 -
Directory Listing
Modified
Fri Aug 22 15:52:35 2003 UTC (20 years, 8 months ago) by
Isibaar
qpel mmx MC code
Revision
1124 -
Directory Listing
Modified
Fri Aug 22 15:20:41 2003 UTC (20 years, 8 months ago) by
edgomez
Fix to sadv32 for real 32x32 block sad
Revision
1122 -
Directory Listing
Modified
Wed Aug 13 11:44:02 2003 UTC (20 years, 9 months ago) by
edgomez
Better architecture separation
Revision
1117 -
Directory Listing
Modified
Sat Aug 9 14:41:20 2003 UTC (20 years, 9 months ago) by
syskin
a trick that confused VS removed
Revision
1115 -
Directory Listing
Modified
Thu Aug 7 15:42:50 2003 UTC (20 years, 9 months ago) by
chl
I hate warnings! So I removed all I could find...
Revision
1112 -
Directory Listing
Modified
Wed Aug 6 09:08:37 2003 UTC (20 years, 9 months ago) by
syskin
THE biggest b-frame bug in devapi4 so far
Revision
1108 -
Directory Listing
Modified
Sun Aug 3 10:10:54 2003 UTC (20 years, 9 months ago) by
syskin
lumimasking fixed (part 1); p/b/i decision changed again; code cleanups
Revision
1107 -
Directory Listing
Modified
Sat Aug 2 15:08:48 2003 UTC (20 years, 9 months ago) by
edgomez
API changes
Revision
1095 -
Directory Listing
Modified
Thu Jul 24 13:09:27 2003 UTC (20 years, 9 months ago) by
Isibaar
cartoon mode
Revision
1085 -
Directory Listing
Modified
Sun Jul 13 09:58:58 2003 UTC (20 years, 10 months ago) by
syskin
compiler warnings 'fixed'
Revision
1084 -
Directory Listing
Modified
Sun Jul 13 09:58:44 2003 UTC (20 years, 10 months ago) by
syskin
mcsel decision in motion loop, tons of fixes and speedups
Revision
1081 -
Directory Listing
Modified
Thu Jul 10 17:41:48 2003 UTC (20 years, 10 months ago) by
edgomez
IA64 updates
Revision
1077 -
Directory Listing
Modified
Sat Jun 28 15:54:16 2003 UTC (20 years, 10 months ago) by
chl
3 warp point GME - first commit
Revision
1075 -
Directory Listing
Modified
Thu Jun 26 11:50:37 2003 UTC (20 years, 10 months ago) by
syskin
VHQ is P4 compatible again | improved PBI decision *again*
Revision
1071 -
Directory Listing
Modified
Thu Jun 19 09:59:37 2003 UTC (20 years, 11 months ago) by
syskin
ugly bugs fixed, R-D works better now
Revision
1054 -
Directory Listing
Modified
Mon Jun 9 13:55:56 2003 UTC (20 years, 11 months ago) by
edgomez
Added legal header
Revision
1053 -
Directory Listing
Modified
Mon Jun 9 01:25:19 2003 UTC (20 years, 11 months ago) by
edgomez
ISO C89 comment style
Revision
1023 -
Directory Listing
Modified
Wed May 14 20:23:02 2003 UTC (21 years ago) by
edgomez
Synced RD code from syskin motion_est.c:1.70 motion_est.h:1.8
Revision
1022 -
Directory Listing
Modified
Wed May 14 18:46:39 2003 UTC (21 years ago) by
edgomez
Merged ME changes from cvs_head motion_est.c:1.69 and motion_est.h:1.7
Revision
1010 -
Directory Listing
Modified
Tue May 6 23:41:29 2003 UTC (21 years ago) by
edgomez
sysKin: hopefully, intra frame at every scene change (we really need it to cut things)
Revision
992 -
Directory Listing
Modified
Fri Apr 25 14:53:37 2003 UTC (21 years ago) by
syskin
b-frames look good in still motion, after all
Revision
987 -
Directory Listing
Modified
Mon Apr 14 15:42:19 2003 UTC (21 years, 1 month ago) by
edgomez
Syskin's BITS fix for low quants and tweaks for i/p/b decision
Revision
982 -
Directory Listing
Modified
Thu Apr 10 13:05:54 2003 UTC (21 years, 1 month ago) by
edgomez
2003-04-10 GMT Edouard Gomez <ed.gomez@free.fr> patch-14
Summary:
Removed all ABS() macros.
Revision:
xvidcore--devapi4--1.0--patch-14
All ABS macros have been replace with their stdlib.h/math.h
equivalent. This gives a 33% overall speedup for the plain C encoder,
while the ia32 one seems to suffer a small speed loss. However this
speed loss is very small and it seems it depends on the CPU type as
the abs/fabs usage is impacting badly on sad functions but impacting
well on interpolate functions ... weird inst'it ?
modified files:
src/bitstream/mbcoding.c src/global.h src/image/image.c
src/motion/motion_comp.c src/motion/motion_est.c
src/motion/sad.c src/prediction/mbprediction.c
src/utils/mbtransquant.c src/xvid.c
Revision
978 -
Directory Listing
Modified
Tue Apr 8 15:35:52 2003 UTC (21 years, 1 month ago) by
edgomez
Syncing with CVS_HEAD -- include last Syskin's changes motion_est.c-1.64 motion_est.h-1.6
Revision
974 -
Directory Listing
Modified
Sat Apr 5 16:47:44 2003 UTC (21 years, 1 month ago) by
edgomez
Synced with CVS_HEAD -- faster d_mv_bits + bugfix
Revision
963 -
Directory Listing
Modified
Sat Mar 29 12:01:36 2003 UTC (21 years, 1 month ago) by
edgomez
Fixed some cut&paste errors and some other small things
Revision
962 -
Directory Listing
Modified
Sat Mar 29 11:06:34 2003 UTC (21 years, 1 month ago) by
edgomez
Fix aligment problem for dct blocks
Revision
959 -
Directory Listing
Modified
Sat Mar 29 10:11:06 2003 UTC (21 years, 1 month ago) by
edgomez
Fix aligment problem for dct blocks
Revision
958 -
Directory Listing
Modified
Sat Mar 29 01:29:53 2003 UTC (21 years, 1 month ago) by
edgomez
Fixed a namespace conflict with libavcodec which caused dev-api-4 mencoder module to fail
Revision
957 -
Directory Listing
Modified
Fri Mar 28 08:43:28 2003 UTC (21 years, 1 month ago) by
suxen_drol
sad cleanup
Revision
953 -
Directory Listing
Modified
Thu Mar 27 17:09:59 2003 UTC (21 years, 1 month ago) by
edgomez
Synced with CVS_HEAD
Revision
949 -
Directory Listing
Modified
Wed Mar 26 14:56:49 2003 UTC (21 years, 1 month ago) by
edgomez
Changed flags naming conventions
Revision
935 -
Directory Listing
Modified
Sat Mar 22 13:41:11 2003 UTC (21 years, 2 months ago) by
syskin
cleanups; it is able to compensate bframes correctly (for internal decoding)
Revision
926 -
Directory Listing
Modified
Sun Mar 16 12:05:09 2003 UTC (21 years, 2 months ago) by
suxen_drol
dquant cleanup
xvid_pluing_lumimasking added
xvid_encraw -lumimasking option added
Revision
891 -
Directory Listing
Modified
Sat Feb 22 18:19:32 2003 UTC (21 years, 2 months ago) by
chl
Emptied to have space for future implementation
Revision
890 -
Directory Listing
Modified
Sat Feb 22 08:49:45 2003 UTC (21 years, 2 months ago) by
suxen_drol
++api v1.-127.0
Revision
886 -
Directory Listing
Modified
Fri Feb 21 14:49:29 2003 UTC (21 years, 2 months ago) by
This commit was manufactured by cvs2svn to create branch 'dev-api-4'.
Revision
851 -
Directory Listing
Modified
Sat Feb 15 15:22:19 2003 UTC (21 years, 3 months ago) by
edgomez
Original Path:
trunk/xvidcore/src/motion
Moved dev-api-3 to HEAD -- Nasty but efficient -- Merging work has been done too
Revision
603 -
Directory Listing
Modified
Sat Oct 19 11:41:12 2002 UTC (21 years, 7 months ago) by
edgomez
Original Path:
trunk/xvidcore/src/motion
Changed Michael Militzer to name + email (next patch will fix copyrights with the right holders)
Revision
504 -
Directory Listing
Modified
Sat Sep 21 11:59:22 2002 UTC (21 years, 7 months ago) by
edgomez
Original Path:
trunk/xvidcore/src/motion
- Disabled bframe specific code and macros. My tests seem to confirm this patch does not hurt but i keep these #if 0 #endif just in case i have to revert things easily.
Revision
373 -
Directory Listing
Modified
Thu Aug 15 18:13:02 2002 UTC (21 years, 9 months ago) by
chl
Original Path:
trunk/xvidcore/src/motion
Bugfix chroma motion compensation in BFRAMES mode. Block based has to be
used, even if BFRAMES is active, because we cannot rely on XVID_HALFPEL
(XVID_HALFPEL is not needed if max_bframes<=0)
Revision
347 -
Directory Listing
Modified
Sun Jul 28 13:06:46 2002 UTC (21 years, 9 months ago) by
chl
Original Path:
trunk/xvidcore/src/motion
Modified SKIP mb behaviour for Pframes when Bframes are active: Check if
intermediate B-block can be skipped, too. Check for SKIP is now done
in encode_pframe(), not in MBCoding().
Revision
346 -
Directory Listing
Modified
Sun Jul 28 02:55:41 2002 UTC (21 years, 9 months ago) by
chl
Original Path:
trunk/xvidcore/src/motion
Interpolated and DirectMode motion estimation (DiamondSearch) for B-Frames.
Slow, but working, this might have been the final step to a complete
implemenation of b-frame encoding. Btw... it's 5.a.m so don't trust
this CVS entry!
Revision
345 -
Directory Listing
Modified
Sat Jul 27 23:47:01 2002 UTC (21 years, 9 months ago) by
chl
Original Path:
trunk/xvidcore/src/motion
Finally Cut&Paste and Search&Replaced Square8_MainSearch, so PMV_USESQUARES8
is now functional. Also, some minor fixes.
Revision
262 -
Directory Listing
Modified
Sun Jul 7 09:45:40 2002 UTC (21 years, 10 months ago) by
Isibaar
Original Path:
trunk/xvidcore/src/motion
split mmx,xmm,3dnow,sse2 code into different files, SMP fix, Skal's tweaked asm code
Revision
259 -
Directory Listing
Modified
Sat Jul 6 17:04:57 2002 UTC (21 years, 10 months ago) by
chl
Original Path:
trunk/xvidcore/src/motion
Minor modifications for supporting multithreaded ME.
Without _SMP symbol there should be no changes in behaviour.
Revision
258 -
Directory Listing
Modified
Sat Jul 6 17:03:08 2002 UTC (21 years, 10 months ago) by
chl
Original Path:
trunk/xvidcore/src/motion
Routines for mulithreaded ME. XviD has to be compiled with -D_SMP option
for these files to be treated at all.
Revision
181 -
Directory Listing
Modified
Wed May 22 12:42:25 2002 UTC (22 years ago) by
chl
Original Path:
trunk/xvidcore/src/motion
Added AdvDiamond_MainSearch by sysKIn which seems to be faster and better
than normal Diamond_MainSearch, at least for plain fullpel search. It can
be activated by PMV_ADVANCEDDIAMOND16/8 flag.
Revision
174 -
Directory Listing
Modified
Sat May 11 23:54:30 2002 UTC (22 years ago) by
chl
Original Path:
trunk/xvidcore/src/motion
Use INTER4V only if neighbours move different than current block.
Save quality, some speedup.
Revision
169 -
Directory Listing
Modified
Thu May 9 00:42:35 2002 UTC (22 years ago) by
chl
Original Path:
trunk/xvidcore/src/motion
Tests to not double check vectors in PMVfast16/8 (only in prediction, not during diamonds phase).
Minor speedup.
Revision
141 -
Directory Listing
Modified
Thu Apr 25 23:24:59 2002 UTC (22 years ago) by
chl
Original Path:
trunk/xvidcore/src/motion
Fixed some minor issues in ME, changed calc_delta16/8 to non-linear function of quant
(from a paper on H.26L). Now inter4v finally gives some improvement.
Revision
78 -
Directory Listing
Modified
Thu Mar 28 20:57:25 2002 UTC (22 years, 1 month ago) by
edgomez
Original Path:
trunk/xvidcore/src/motion
Big patch, use it with care (tests done with GNU/Linux) :
- Trivial warnings in encoder.c line 282 ret1 = ret 2 = 0;
- Lot of "New line at end of file missing" warnings fixed (gcc3)
- All 2d arrays have been turned into 1d arrays
To force alignment of matrices on stack, use DECLARE_ALIGNED_MATRIX
(read portab.h)
Win32 users should give feedback.