From xvid-devel@xvid.org Wed Jan 1 04:25:48 2003 From: xvid-devel@xvid.org (Venkata Tumati) Date: Tue, 31 Dec 2002 23:25:48 -0500 Subject: [XviD-devel] RE: irix64 & yuv Message-ID: <000b01c2b14d$dca9aa20$6501a8c0@hanuman> This is a multi-part message in MIME format. ------=_NextPart_000_000C_01C2B123.F3D3A220 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit I have updated the version of make to latest gnu make 3.80 Now I get the following error any suggestions /usr/sbin/gcc -fPIC -c -o ../../src/decoder.o ../../src/decoder.c In file included from ../../src/decoder.c:66: ../../src/portab.h:254: badly punctuated parameter list in `#define' make: *** [../../src/decoder.o] Error 1 my gcc version is 2.8.1, also where can I get the latest binaries for SGI gcc. Thank you, Venkata ------=_NextPart_000_000C_01C2B123.F3D3A220 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

I have updated the version of make = to latest gnu make 3.80

 

Now I get the following error any suggestions

/usr/sbin/gcc -fPIC   -c = -o ../../src/decoder.o ../../src/decoder.c

In file included from = ../../src/decoder.c:66:

../../src/portab.h:254: badly = punctuated parameter list in `#define'

make: *** [../../src/decoder.o] = Error 1

 

my gcc version is 2.8.1, also where = can I get the latest binaries for SGI gcc.

 

Thank you,

Venkata

 

------=_NextPart_000_000C_01C2B123.F3D3A220-- From xvid-devel@xvid.org Wed Jan 1 13:14:51 2003 From: xvid-devel@xvid.org (peter ross) Date: Thu, 02 Jan 2003 00:14:51 +1100 Subject: [XviD-devel] irix64 & YUV Message-ID: hello >Question 1: >I just got an irix box the version of the os is Irix 6.5. The processor >is R12K. I think the R12k's are 32bit. When I a make in the build >directory i get the following error R12000 sweet. > > make -f Makefile.irix64 >UX:make: ERROR: make: file `Makefile.irix64' line 34: Must be a >separator (: or :icon_smile.gif for rules (bu39) >UX:make: ERROR: make: file `Makefile.irix64' line 34: Syntax error > >Is there some changes to do when i use xvid on an SGI machine. use gnu make, instead of sgi's make. ie. % gmake -f Makefile.irix64 >Question2: >I have some yuv files, i dont know what type of yuv sequence they are >what can i do to make them yuv planer. most likely your sequences are in the 4:2:0 .yuv format used by the mpeg-4 reference encoder/decoder. the format is simple: y plane, followed by u plane, then v plane. xvid_encraw.c in the stable branch supports .yuv: xvidcore/examples/xvid_encraw.c. -- pete _________________________________________________________________ MSN 8 with e-mail virus protection service: 2 months FREE* http://join.msn.com/?page=features/virus From xvid-devel@xvid.org Wed Jan 1 13:49:27 2003 From: xvid-devel@xvid.org (peter ross) Date: Thu, 02 Jan 2003 00:49:27 +1100 Subject: [XviD-devel] RE: irix64 & yuv Message-ID: hi [again], > >Now I get the following error any suggestions > >/usr/sbin/gcc -fPIC -c -o ../../src/decoder.o ../../src/decoder.c > >In file included from ../../src/decoder.c:66: > >../../src/portab.h:254: badly punctuated parameter list in `#define' > >make: *** [../../src/decoder.o] Error 1 portab.h, line 254: a newline appears immediately after the ')' --- # define DPRINTF(level, format, ...) --- this defines an "empty" macro with varible arguments. my guess is your version of gcc is buggy when dealing which such macros. try either: a) adding some tabs/spaces after the ')' b) adding a comment after the ')'. ie. # define DPRINTF(level, format, ...) /* nothing */ c) upgrade to a newer gcc: http://freeware.sgi.com/index-by-alpha.html -- pete _________________________________________________________________ MSN 8 with e-mail virus protection service: 2 months FREE* http://join.msn.com/?page=features/virus From xvid-devel@xvid.org Wed Jan 1 22:49:57 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Wed, 1 Jan 2003 23:49:57 +0100 (CET) Subject: [XviD-devel] GMC update Message-ID: Hi, implementing global motion estimation was a piece of cake, thanks to some very good papers on that stuff. I didn't even need matrix operations because I was able to get a simple formula for the 4x4 inverse. The first (heavily non-optimized) version is about 10% slower than ordinary in halfpel-non4mv-mode, but it catches motion very well. Maybe I'll send some samples, later. What's still missing is compensation (not too much work, since the routines are more or less ready because of testing), calculation of prediction vectors and the routines for mode decision. That might be a little more tricky and is connected to SKIP-detection: Maybe a simple SAD-check would be possible for a start. Since we then need the full GM transformed image, maybe we should simply create a full new image plane and use ordinary SAD and compensation. Btw. creating the transformed image is integer-only again, but it's really ugly "ISO standard"ish code: for (J=0;JmbParam.height;J++) for (I=0;ImbParam.width;I++) { int f= i0s + ( ((-r*i0s+i1ss)*I + (r*j0s-j1ss)*J + (1<<(alpha+rho-1))) >> (alpha+rho)); int g= j0s + ( ((-r*j0s+j1ss)*I + (-r*i0s+i1ss)*J +(1<<(alpha+rho-1))) >> (alpha+rho)); int Y00 = pEnc->reference->image.y[(g/s)*pEnc->mbParam.edged_width +(f/s) ]; int Y01 = pEnc->reference->image.y[(g/s)*pEnc->mbParam.edged_width +(f/s+1) ]; int Y10 = pEnc->reference->image.y[(g/s+1)*pEnc->mbParam.edged_width +(f/s) ]; int Y11 = pEnc->reference->image.y[(g/s+1)*pEnc->mbParam.edged_width + (f/s+1) ]; int Y; uint8_t val; int ri= f-(f/s)*s; int rj= g-(g/s)*s; if ( (f/s<0) || (f/s>=pEnc->mbParam.width) || (g/s<0) || (g/s>=pEnc->mbParam.height) ) Y=128; else Y = ( (s-rj)*((s-ri)*Y00 + ri*Y01) + rj*((s-rj)*Y10 + rj*Y11) + s*s/2 - pEnc->current->rounding_type )/s/s; } (so global motion is 16th-pel resolution and is bilinearily interpolated) Any ideas how to speed this stuff up, maybe even MMX? gruel From xvid-devel@xvid.org Thu Jan 2 08:52:47 2003 From: xvid-devel@xvid.org (A Hamid Khan) Date: Thu, 2 Jan 2003 10:52:47 +0200 Subject: [XviD-devel] My video clip require xvid codec.I d/load it (xvidcore-0.9.0.tar.gz) from the site but there is such alot of files & folders that I don't know how to install it.Please help.Thanks Message-ID: <001301c2b23c$5333c9c0$28970fc4@wolpod63> This is a multi-part message in MIME format. ------=_NextPart_000_0014_01C2B24D.16BC99C0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit ------=_NextPart_000_0014_01C2B24D.16BC99C0 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

 

------=_NextPart_000_0014_01C2B24D.16BC99C0-- From xvid-devel@xvid.org Thu Jan 2 09:07:26 2003 From: xvid-devel@xvid.org (Marco Al) Date: Thu, 2 Jan 2003 10:07:26 +0100 Subject: [XviD-devel] GMC update References: Message-ID: <000f01c2b23e$5f031830$bca45982@student.utwente.nl> Christoph Lampert wrote: > Btw. creating the transformed image is integer-only again, but it's really > ugly "ISO standard"ish code: Why not jack FFMPEG's code? It seems to come from one of the reference implementations rather than the standard, it has a more sane incremental implementation. It is LGPL so you can relicense it to GPL. > (so global motion is 16th-pel resolution and is bilinearily interpolated) Isnt the resolution variable? > Any ideas how to speed this stuff up, maybe even MMX? If anyone wants to do it they might want to consider asking Andreas Dehnhardt for his thesis, he implemented on a 64 bit SIMD processor (which is bound to be pretty close to MMX). There is an old version on his website which only explains the process of GMC and analyzes the incremental version of GMC from the reference code, but it lacks any of the conversion to SIMD : http://www.stud.uni-hannover.de/user/73346/StA-Dehnhardt.pdf Marco From xvid-devel@xvid.org Thu Jan 2 09:29:19 2003 From: xvid-devel@xvid.org (zhouxiao) Date: Thu, 2 Jan 2003 17:29:19 +0800 Subject: [XviD-devel] what is the bitrate control algorithm used in XviD? Message-ID: <20030102093012.89DB31C98C419@sm203.163.com> xvid-devel I am a new starter on XviD encoder. I want to know what is the bitrate control algorithm used in XviD? If someone could tell me concretely, I would be so appreciated! zxjan From xvid-devel@xvid.org Thu Jan 2 09:57:33 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Thu, 2 Jan 2003 10:57:33 +0100 (CET) Subject: [XviD-devel] GMC update In-Reply-To: <000f01c2b23e$5f031830$bca45982@student.utwente.nl> Message-ID: On Thu, 2 Jan 2003, Marco Al wrote: > Christoph Lampert wrote: > > > Btw. creating the transformed image is integer-only again, but it's really > > ugly "ISO standard"ish code: > > Why not jack FFMPEG's code? It seems to come from one of the reference > implementations rather than the standard, it has a more sane incremental > implementation. It is LGPL so you can relicense it to GPL. ffmpeg does not encode, so we could just reuse compensation. Actually, the routines themselves are not so much of a problem, they are ugly in ffmpeg as well, because it's simply the algorithm that is ugly. I wanted to first create a version which is as straight as possible so other people might read it, understand the "idea" and convert to ASM. We can do speedup later... > > (so global motion is 16th-pel resolution and is bilinearily interpolated) > > Isnt the resolution variable? Yes, but I can't see any reason to choose lower values. It's won't become simpler or faster... but I couldn't check quality, of course... > > Any ideas how to speed this stuff up, maybe even MMX? > > If anyone wants to do it they might want to consider asking Andreas Dehnhardt > for his thesis, he implemented on a 64 bit SIMD processor (which is bound to be > pretty close to MMX). There is an old version on his website which only explains > the process of GMC and analyzes the incremental version of GMC from the > reference code, but it lacks any of the conversion to SIMD : > > http://www.stud.uni-hannover.de/user/73346/StA-Dehnhardt.pdf Yes, I have a copy of the season somewhere but thanks for mentioning it. It looks helpful (at least for the german speaking part of the world ;-) His method might help to SIMD the whole stuff, even though GMC is pixel- and not block-based. gruel From xvid-devel@xvid.org Thu Jan 2 10:31:59 2003 From: xvid-devel@xvid.org (Marco Al) Date: Thu, 2 Jan 2003 11:31:59 +0100 Subject: [XviD-devel] GMC update References: Message-ID: <000801c2b24a$2e8e0aa0$bca45982@student.utwente.nl> Christoph Lampert wrote: > I wanted to first create a version which is as straight as possible so > other people might read it, understand the "idea" and convert to ASM. > We can do speedup later... I think gmc_c is about as straight as it is going to be, in fact in converting it to asm the algorithm will get a lot less straight. Those border checks have to be moved outside of the inner loop for a start, so you will need 2 GMC routines (one for when all reference pixels are inside the borders, one for when they are not). I think the best approach would be to unroll the outerloop to get parallelism for MMX, having the innerloop work on 2 scanlines at a time. > Yes, I have a copy of the season somewhere but thanks for mentioning it. > It looks helpful (at least for the german speaking part of the world ;-) You have the final version? Could you pass it on? :) (It was on the web a short time, but the server it was on disappeared.) > His method might help to SIMD the whole stuff, even though GMC is pixel- > and not block-based. Hmmm? It is MB selective, but inside the MB it is still pixel based ... just as FFMPEG's code is and just as XviD's code will have to be. Marco From xvid-devel@xvid.org Fri Jan 3 04:58:06 2003 From: xvid-devel@xvid.org (=?iso-8859-1?q?David=20Jansson?=) Date: Fri, 3 Jan 2003 05:58:06 +0100 (CET) Subject: [XviD-devel] Hi! Message-ID: <20030103045806.52516.qmail@web14305.mail.yahoo.com> i was reading in FAQ beacuse my sound doesent work. "· I have installed for the first time the xvid codex. So now I am trying to play a xvid-movie with 'bs player'. So the movie is playing but I have no sound. What can be the reason. Do I have to change something in my settings? XVID is a [b]video[/b] codec, it has absolutely nothing to do with sound. You need an audio codec, too." yeah, but what sound codec?? i have search EVERYWERE for one :/ cant find one. please help me. btw, you are doing a really nice work! /David aka Duke _____________________________________________________ Gratis e-mail resten av livet på www.yahoo.se/mail Busenkelt! From xvid-devel@xvid.org Fri Jan 3 07:07:33 2003 From: xvid-devel@xvid.org (Venkata Tumati) Date: Fri, 3 Jan 2003 02:07:33 -0500 Subject: [XviD-devel] RE: irix64 & YUV Message-ID: <000401c2b2f6$cb548c90$6501a8c0@hanuman> This is a multi-part message in MIME format. ------=_NextPart_000_0005_01C2B2CC.E280CE80 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0006_01C2B2CC.E2833F80" ------=_NextPart_001_0006_01C2B2CC.E2833F80 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi, Thank you guys for your help, I got it to compile. I had to just update the make to latest gmake and gcc. Now as far as the YUV input I did the following with my input "xvid_encraw -t 0 -i big.yuv" and it did not work I got a message that said "Wrong input format, I want YUV encapsulated in PGM". What should I use to get a file in yuv format that xvid_encraw is happy with. -Venkata -----Original Message----- From: Venkata Tumati [mailto:vt35@cornell.edu] Sent: Monday, December 30, 2002 11:01 PM To: 'xvid-devel@xvid.org' Subject: irix64 & YUV Hi, Question 1: I just got an irix box the version of the os is Irix 6.5. The processor is R12K. I think the R12k's are 32bit. When I a make in the build directory i get the following error > make -f Makefile.irix64 UX:make: ERROR: make: file `Makefile.irix64' line 34: Must be a separator (: or :icon_smile.gif for rules (bu39) UX:make: ERROR: make: file `Makefile.irix64' line 34: Syntax error line 34 is # Constants which should not be modified CFLAGS += -DLINUX <---- line 34 this does not seem to like +=, Is there some changes to do when i use xvid on an SGI machine. Question2: I have some yuv files, i dont know what type of yuv sequence they are what can i do to make them yuv planer. Thank you, Venkata ------=_NextPart_001_0006_01C2B2CC.E2833F80 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Hi,

 

Thank you guys for your help, I got = it to compile. I had to just update the make to latest gmake and = gcc.

 

Now as far as the YUV input I did = the following with my input “xvid_encraw -t 0 -i big.yuv” =  and it did not work I got a message that said “Wrong input format, I want = YUV encapsulated in PGM”. What should I use to get a file in yuv = format that xvid_encraw is happy with.

 

-Venkata

 

-----Original Message-----
From:
Venkata = Tumati [mailto:vt35@cornell.edu]
Sent:
Monday, December 30, 2002 11:01 = PM
To: '
xvid-devel@xvid.org<= /font>'
Subject: irix64 & = YUV

 

Hi, =
Question 1:
I just got an irix box the version of the os is = Irix 6.5. The processor is R12K. I think the R12k's are 32bit. When I a make in = the build directory i get the following error

> make -f Makefile.irix64
UX:make: ERROR: make: file `Makefile.irix64' line = 34: Must be a separator (: or :3D"icon_smile.gif" for rules (bu39)
UX:make: ERROR: make: file `Makefile.irix64' line = 34: Syntax error

line 34 is
# Constants which should not be modified =
CFLAGS +=3D -DLINUX <---- line 34

this does not seem to like +=3D,

Is there some changes to do when i use xvid on an = SGI machine.

Question2:
I have some yuv files, i dont know what type of = yuv sequence they are what can i do to make them yuv planer.

Thank you,
Venkata

------=_NextPart_001_0006_01C2B2CC.E2833F80-- ------=_NextPart_000_0005_01C2B2CC.E280CE80 Content-Type: image/gif; name="image001.gif" Content-Transfer-Encoding: base64 Content-ID: R0lGODlhDwAPALMOAP/qAEVFRQAAAP/OAP/JAP+0AP6dAP/+k//9E///////xzMzM///6//lAAAA AAAAACH5BAEAAA4ALAAAAAAPAA8AAARb0EkZap3YVabOGRcWcAgCnIMRTEEnCCfwpqt2mHEOagoO nz+CKnADxoKFyiHHBBCSAdOiCVg8KwPZa7sVrgJZQWI8FhB2msGgwTXTWGqCXP4WBQr4wjDDstQm EQA7 ------=_NextPart_000_0005_01C2B2CC.E280CE80-- From xvid-devel@xvid.org Fri Jan 3 07:27:28 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Fri, 03 Jan 2003 08:27:28 +0100 (CET) Subject: [XviD-devel] RE: irix64 & YUV In-Reply-To: <000401c2b2f6$cb548c90$6501a8c0@hanuman> References: <000401c2b2f6$cb548c90$6501a8c0@hanuman> Message-ID: <1041578848.3e153b60a7731@imp.free.fr> Quoting Venkata Tumati : > Now as far as the YUV input I did the following with my input > "xvid_encraw -t 0 -i big.yuv" and it did not work I got a message > that > said "Wrong input format, I want YUV encapsulated in PGM". What should > I > use to get a file in yuv format that xvid_encraw is happy with. If you're trying to feed xvid_encraw with YUV file format then you _must_ provide image dimensions. The program falls back to PGM because it will try to retrieve image dimensions from the file (which is possible in PGM but not in raw YUV) Use -w WIDTH -h HEIGHT else it won't work. -- Edouard Gomez From xvid-devel@xvid.org Fri Jan 3 20:46:44 2003 From: xvid-devel@xvid.org (Jim Hauxwell) Date: Fri, 3 Jan 2003 20:46:44 -0000 Subject: [XviD-devel] overflow being reported incorrectly Message-ID: in get_inter_block() and get_intra_block() the overflow detection is set at -128 to 127. In the spec however escape coding has 12bits for the level, which is -2048 to 2047. could someone with CVS access and a spare minute change this. Jim From xvid-devel@xvid.org Fri Jan 3 21:06:08 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 3 Jan 2003 22:06:08 +0100 (CET) Subject: [XviD-devel] overflow being reported incorrectly In-Reply-To: Message-ID: On Fri, 3 Jan 2003, Jim Hauxwell wrote: > > in > > get_inter_block() and get_intra_block() the overflow detection is set > at -128 to 127. In the spec however escape coding has 12bits for the level, > which is -2048 to 2047. could someone with CVS access and a spare minute > change this. it this a leftover from times when we were clamping to 8bit? Does anyone remember? Then I'd just change it. gruel From xvid-devel@xvid.org Fri Jan 3 21:35:14 2003 From: xvid-devel@xvid.org (Marco Al) Date: Fri, 3 Jan 2003 22:35:14 +0100 Subject: [XviD-devel] overflow being reported incorrectly References: Message-ID: <001301c2b370$008f1000$bca45982@student.utwente.nl> Jim Hauxwell wrote: > get_inter_block() and get_intra_block() the overflow detection is set > at -128 to 127. In the spec however escape coding has 12bits for the level, > which is -2048 to 2047. could someone with CVS access and a spare minute > change this. -2048 is forbidden. Marco From xvid-devel@xvid.org Fri Jan 3 21:34:47 2003 From: xvid-devel@xvid.org (Andreas Dehnhardt) Date: Fri, 03 Jan 2003 22:34:47 +0100 Subject: [XviD-devel] illegal MPEG-4 Bitstream Syntax / RAW YUV input swaped Message-ID: <3E1601F7.7050307@stud.uni-hannover.de> Hi everyone, 1) illegal MPEG-4 Bitstream Syntax I was playing around with the xvidcore-0.9.0 codec and found out the following: After encoding a sequence to a raw MPEG-4 bitstream, I tried to decode it using the standard MPEG-4 decoder (the reference ISO fpdam decoder). The decoding failed at the second I-VOP, it complained about an illegal VOP_START_CODE while parsing the bitstream. This error is caused by FrameCodeI() in "encoder.c". There is a new VO/VOL-Header inserted into the bitstream (BitstreamWriteVolHeader()) for every new I-VOP. According to the MPEG-4 standard, this structure is illegal. The VO/VOL-Header is only allowed at the start of the sequence. The VOPs (in our case, a Frame is equal to a VOP) are instances of one VideoObject (VO) at a given time. VideoObjectLayers (VOLs) are used for object based temporal and spatial scalability (not included in the simple profile of MPEG-4). We only have one VO and one VOL, so we cannot include more than one VO/VOL-Header. I disabled the BitstreamWriteVolHeader()-call (except for the initial I-VOP). After this modification, the standard MPEG-4 decoder was able to decode the whole bitstream. Did anyone play around with decoding the raw MPEG-4 stream using other decoders before? 2) RAW YUV input swaped I used raw YUV data as input for the encoder. After encoding (xvid_encraw) and decoding (fpdam), the colors seem to be somehow "wrong". I swaped the order of U and V in my input YUV-file. This fixed the error. I don't know the "correct" order of a YUV-file. Either the encoder swaps the color information while reading the raw data or there is no standard YUV-order for such files??? I hope this is useful for anyone and we will have a nice discussion about VO/VOL/VOP :-) Have fun, Andreas From xvid-devel@xvid.org Fri Jan 3 21:47:00 2003 From: xvid-devel@xvid.org (Jim Hauxwell) Date: Fri, 3 Jan 2003 21:47:00 -0000 Subject: [XviD-devel] overflow being reported incorrectly In-Reply-To: <001301c2b370$008f1000$bca45982@student.utwente.nl> Message-ID: yes, your correct I should have checked table B18 first. It should be -2047 to 2047 Cheers Jim > -----Original Message----- > From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On > Behalf Of Marco Al > Sent: 03 January 2003 21:35 > To: xvid-devel@xvid.org > Subject: Re: [XviD-devel] overflow being reported incorrectly > > > Jim Hauxwell wrote: > > > get_inter_block() and get_intra_block() the overflow detection is set > > at -128 to 127. In the spec however escape coding has 12bits > for the level, > > which is -2048 to 2047. could someone with CVS access and a > spare minute > > change this. > > -2048 is forbidden. > > Marco > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Fri Jan 3 21:49:32 2003 From: xvid-devel@xvid.org (Jim Hauxwell) Date: Fri, 3 Jan 2003 21:49:32 -0000 Subject: [XviD-devel] illegal MPEG-4 Bitstream Syntax / RAW YUV input swaped In-Reply-To: <3E1601F7.7050307@stud.uni-hannover.de> Message-ID: Hi, I'm doing the same as you with YUV and I have not found a problem with the chroma channels getting swapped. What platform are you on? Jim > -----Original Message----- > From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On > Behalf Of Andreas Dehnhardt > Sent: 03 January 2003 21:35 > To: xvid-devel@xvid.org > Subject: [XviD-devel] illegal MPEG-4 Bitstream Syntax / RAW YUV input > swaped > > > Hi everyone, > > 1) illegal MPEG-4 Bitstream Syntax > > I was playing around with the xvidcore-0.9.0 codec and found out > the following: > After encoding a sequence to a raw MPEG-4 bitstream, I tried to decode > it using the standard MPEG-4 decoder (the reference ISO fpdam decoder). > > The decoding failed at the second I-VOP, it complained about an illegal > VOP_START_CODE while parsing the bitstream. This error is caused by > FrameCodeI() in "encoder.c". There is a new VO/VOL-Header > inserted into the > bitstream (BitstreamWriteVolHeader()) for every new I-VOP. According to > the MPEG-4 standard, this structure is illegal. The VO/VOL-Header is only > allowed at the start of the sequence. The VOPs (in our case, a Frame is > equal to a VOP) are instances of one VideoObject (VO) at a given time. > VideoObjectLayers (VOLs) are used for object based temporal and spatial > scalability (not included in the simple profile of MPEG-4). We only have > one VO and one VOL, so we cannot include more than one VO/VOL-Header. > > I disabled the BitstreamWriteVolHeader()-call (except for the > initial I-VOP). > After this modification, the standard MPEG-4 decoder was able to decode > the whole bitstream. > > Did anyone play around with decoding the raw MPEG-4 stream using other > decoders before? > > > > > 2) RAW YUV input swaped > > I used raw YUV data as input for the encoder. After encoding (xvid_encraw) > and decoding (fpdam), the colors seem to be somehow "wrong". I swaped > the order of U and V in my input YUV-file. This fixed the error. I don't > know the "correct" order of a YUV-file. Either the encoder swaps the > color information while reading the raw data or there is no standard > YUV-order for such files??? > > > > > I hope this is useful for anyone and we will have a nice > discussion about VO/VOL/VOP :-) > > > Have fun, > Andreas > > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Fri Jan 3 22:03:55 2003 From: xvid-devel@xvid.org (Jim Hauxwell) Date: Fri, 3 Jan 2003 22:03:55 -0000 Subject: [XviD-devel] illegal MPEG-4 Bitstream Syntax / RAW YUV input swaped In-Reply-To: <3E1601F7.7050307@stud.uni-hannover.de> Message-ID: Hi, About the repatition of BitStreamWriteVolHeader(). In the spec it says The Visual Object Sequence Header, the Visual Object Header and the Video Object Layer Header may be repeated in a single visual bitstream. Repeating these headers enables random access into the visual bitstream and recovery of these headers when the original headers are corrupted by errors. This header repetition is used only when visual_object_type in the Visual Object Header indicates that visual object type is video. (i.e. visual_object_type == "video ID") All of the data elements in the Visual Object Sequence Header, the Visual Object Header and the Video Object Layer Header repeated in a visual bitstream shall have the same value as in the original headers, except that first_half_vbv_occupancy and latter_half_vbv_occupancy may be changed to specify the VBV occupancy just before the removal of the first VOP following the repeated Video Object Layer Header. So I guess that its OK to repeat the headers. Jim > -----Original Message----- > From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On > Behalf Of Andreas Dehnhardt > Sent: 03 January 2003 21:35 > To: xvid-devel@xvid.org > Subject: [XviD-devel] illegal MPEG-4 Bitstream Syntax / RAW YUV input > swaped > > > Hi everyone, > > 1) illegal MPEG-4 Bitstream Syntax > > I was playing around with the xvidcore-0.9.0 codec and found out > the following: > After encoding a sequence to a raw MPEG-4 bitstream, I tried to decode > it using the standard MPEG-4 decoder (the reference ISO fpdam decoder). > > The decoding failed at the second I-VOP, it complained about an illegal > VOP_START_CODE while parsing the bitstream. This error is caused by > FrameCodeI() in "encoder.c". There is a new VO/VOL-Header > inserted into the > bitstream (BitstreamWriteVolHeader()) for every new I-VOP. According to > the MPEG-4 standard, this structure is illegal. The VO/VOL-Header is only > allowed at the start of the sequence. The VOPs (in our case, a Frame is > equal to a VOP) are instances of one VideoObject (VO) at a given time. > VideoObjectLayers (VOLs) are used for object based temporal and spatial > scalability (not included in the simple profile of MPEG-4). We only have > one VO and one VOL, so we cannot include more than one VO/VOL-Header. > > I disabled the BitstreamWriteVolHeader()-call (except for the > initial I-VOP). > After this modification, the standard MPEG-4 decoder was able to decode > the whole bitstream. > > Did anyone play around with decoding the raw MPEG-4 stream using other > decoders before? > > > > > 2) RAW YUV input swaped > > I used raw YUV data as input for the encoder. After encoding (xvid_encraw) > and decoding (fpdam), the colors seem to be somehow "wrong". I swaped > the order of U and V in my input YUV-file. This fixed the error. I don't > know the "correct" order of a YUV-file. Either the encoder swaps the > color information while reading the raw data or there is no standard > YUV-order for such files??? > > > > > I hope this is useful for anyone and we will have a nice > discussion about VO/VOL/VOP :-) > > > Have fun, > Andreas > > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Fri Jan 3 21:56:33 2003 From: xvid-devel@xvid.org (Andreas Dehnhardt) Date: Fri, 03 Jan 2003 22:56:33 +0100 Subject: [XviD-devel] illegal MPEG-4 Bitstream Syntax / RAW YUV input swaped References: Message-ID: <3E160711.40907@stud.uni-hannover.de> I'm using linux x86. What program do you use for playing the raw YUV-files? Andreas Jim Hauxwell wrote: > Hi, > > I'm doing the same as you with YUV and I have not found a problem with the > chroma channels getting swapped. What platform are you on? > > Jim > > >>-----Original Message----- >>From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On >>Behalf Of Andreas Dehnhardt >>Sent: 03 January 2003 21:35 >>To: xvid-devel@xvid.org >>Subject: [XviD-devel] illegal MPEG-4 Bitstream Syntax / RAW YUV input >>swaped >> [...] >> >>2) RAW YUV input swaped >> >>I used raw YUV data as input for the encoder. After encoding (xvid_encraw) >>and decoding (fpdam), the colors seem to be somehow "wrong". I swaped >>the order of U and V in my input YUV-file. This fixed the error. I don't >>know the "correct" order of a YUV-file. Either the encoder swaps the >>color information while reading the raw data or there is no standard >>YUV-order for such files??? >> From xvid-devel@xvid.org Fri Jan 3 22:02:26 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 3 Jan 2003 23:02:26 +0100 (CET) Subject: [XviD-devel] illegal MPEG-4 Bitstream Syntax / RAW YUV input swaped In-Reply-To: <3E1601F7.7050307@stud.uni-hannover.de> Message-ID: Hi Andreas, welcome to the list! On Fri, 3 Jan 2003, Andreas Dehnhardt wrote: > Hi everyone, > > 1) illegal MPEG-4 Bitstream Syntax > > I was playing around with the xvidcore-0.9.0 codec and found out the following: > After encoding a sequence to a raw MPEG-4 bitstream, I tried to decode > it using the standard MPEG-4 decoder (the reference ISO fpdam decoder). > > The decoding failed at the second I-VOP, it complained about an illegal > VOP_START_CODE while parsing the bitstream. This error is caused by > FrameCodeI() in "encoder.c". There is a new VO/VOL-Header inserted into the > bitstream (BitstreamWriteVolHeader()) for every new I-VOP. According to > the MPEG-4 standard, this structure is illegal. Hm, yes, that might be a "bad habit" which XVID inherited from OpenDiVX (and the other Windows codecs?). But since there are some features which can only be changed in VO/VOL headers (qpel? GMC mode?) and since you seem to know the syntax: Can't we somehow "define" that the sequence is finished at a certain point and a new sequence starts with the next I-frame, including a new VO/VOL header etc? > The VO/VOL-Header is only > allowed at the start of the sequence. The VOPs (in our case, a Frame is > equal to a VOP) are instances of one VideoObject (VO) at a given time. > VideoObjectLayers (VOLs) are used for object based temporal and spatial > scalability (not included in the simple profile of MPEG-4). We only have > one VO and one VOL, so we cannot include more than one VO/VOL-Header. > > I disabled the BitstreamWriteVolHeader()-call (except for the initial I-VOP). > After this modification, the standard MPEG-4 decoder was able to decode > the whole bitstream. > > Did anyone play around with decoding the raw MPEG-4 stream using other > decoders before? > > > > > 2) RAW YUV input swaped > > I used raw YUV data as input for the encoder. After encoding (xvid_encraw) > and decoding (fpdam), the colors seem to be somehow "wrong". I swaped > the order of U and V in my input YUV-file. This fixed the error. I don't > know the "correct" order of a YUV-file. Either the encoder swaps the > color information while reading the raw data or there is no standard > YUV-order for such files??? The problem is not too few standards, but too many of them. We should finally agree on one. I guess your problem is related to the colorspace paramers: #define XVID_CSP_YV12 1 /**< YV12 colorspace (y,v,u planar) */ #define XVID_CSP_YUY2 2 /**< YUY2 colorspace (y,u,y,v packed) */ #define XVID_CSP_UYVY 3 /**< UYVY colorspace (u,y,v,y packed) */ #define XVID_CSP_I420 4 /**< I420 colorsapce (y,u,v planar) */ (from src/xvid.h) xvid_encraw uses XVI_CSP_YV12 as input. Maybe this is wrong and I should have used XVID_CSP_I420, because internal format of MPEG-4 is supposed to be YUV = YCbCr ? I never notice these things because I don't use RGB output, but look at YUV as greyscale... Anyway, change line 655 in xvid_encraw.c to xframe.colorspace = XVID_CSP_I420; and I hope the problem will be gone... gruel From xvid-devel@xvid.org Fri Jan 3 22:10:54 2003 From: xvid-devel@xvid.org (Jim Hauxwell) Date: Fri, 3 Jan 2003 22:10:54 -0000 Subject: [XviD-devel] illegal MPEG-4 Bitstream Syntax / RAW YUV input swaped In-Reply-To: <3E160711.40907@stud.uni-hannover.de> Message-ID: a program called seqview for windows Jim > -----Original Message----- > From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On > Behalf Of Andreas Dehnhardt > Sent: 03 January 2003 21:57 > To: xvid-devel@xvid.org > Subject: Re: [XviD-devel] illegal MPEG-4 Bitstream Syntax / RAW YUV > input swaped > > > I'm using linux x86. What program do you use > for playing the raw YUV-files? > > Andreas > > > Jim Hauxwell wrote: > > Hi, > > > > I'm doing the same as you with YUV and I have not found a > problem with the > > chroma channels getting swapped. What platform are you on? > > > > Jim > > > > > >>-----Original Message----- > >>From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On > >>Behalf Of Andreas Dehnhardt > >>Sent: 03 January 2003 21:35 > >>To: xvid-devel@xvid.org > >>Subject: [XviD-devel] illegal MPEG-4 Bitstream Syntax / RAW YUV input > >>swaped > >> > [...] > >> > >>2) RAW YUV input swaped > >> > >>I used raw YUV data as input for the encoder. After encoding > (xvid_encraw) > >>and decoding (fpdam), the colors seem to be somehow "wrong". I swaped > >>the order of U and V in my input YUV-file. This fixed the error. I don't > >>know the "correct" order of a YUV-file. Either the encoder swaps the > >>color information while reading the raw data or there is no standard > >>YUV-order for such files??? > >> > > > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Fri Jan 3 22:29:53 2003 From: xvid-devel@xvid.org (Marco Al) Date: Fri, 3 Jan 2003 23:29:53 +0100 Subject: [XviD-devel] illegal MPEG-4 Bitstream Syntax / RAW YUV input swaped References: <3E1601F7.7050307@stud.uni-hannover.de> Message-ID: <003801c2b377$a30a3330$bca45982@student.utwente.nl> Andreas Dehnhardt wrote: > The decoding failed at the second I-VOP, it complained about an illegal > VOP_START_CODE while parsing the bitstream. This error is caused by > FrameCodeI() in "encoder.c". There is a new VO/VOL-Header inserted into the > bitstream (BitstreamWriteVolHeader()) for every new I-VOP. According to > the MPEG-4 standard, this structure is illegal. The VO/VOL-Header is only > allowed at the start of the sequence. The VOPs (in our case, a Frame is > equal to a VOP) are instances of one VideoObject (VO) at a given time. > VideoObjectLayers (VOLs) are used for object based temporal and spatial > scalability (not included in the simple profile of MPEG-4). We only have > one VO and one VOL, so we cannot include more than one VO/VOL-Header. What about : "The Visual Object Sequence Header, the Visual Object Header and the Video Object Layer Header may be repeated in a single visual bitstream. Repeating these headers enables random access into the visual bitstream and recovery of these headers when the original headers are corrupted by errors. This header repetition is used only when visual_object_type in the Visual Object Header indicates that visual object type is video." ? :) Marco From xvid-devel@xvid.org Fri Jan 3 22:55:53 2003 From: xvid-devel@xvid.org (Andreas Dehnhardt) Date: Fri, 03 Jan 2003 23:55:53 +0100 Subject: [XviD-devel] illegal MPEG-4 Bitstream Syntax / RAW YUV input swaped References: Message-ID: <3E1614F9.9080403@stud.uni-hannover.de> Jim Hauxwell wrote: > Hi, > > About the repatition of BitStreamWriteVolHeader(). In the spec it says > > The Visual Object Sequence Header, the Visual Object Header and the Video > Object Layer Header may be repeated in a single visual bitstream. Repeating > these headers enables random access into the visual bitstream and recovery > of these headers when the original headers are corrupted by errors. This > header repetition is used only when visual_object_type in the Visual Object > Header indicates that visual object type is video. (i.e. visual_object_type > == "video ID") All of the data elements in the Visual Object Sequence > Header, the Visual Object Header and the Video Object Layer Header repeated > in a visual bitstream shall have the same value as in the original headers, > except that first_half_vbv_occupancy and latter_half_vbv_occupancy may be > changed to specify the VBV occupancy just before the removal of the first > VOP following the repeated Video Object Layer Header. > > So I guess that its OK to repeat the headers. > Sorry, you're right!! I just found the section about repetition of those headers. (chapter 6.2.1 at the end, for those who have the spec document). That means, there is a bug in the standard MPEG-4 decoder. They call "assert(uiVopStartCode == VOP_START_CODE);" while parsing the next VOP. But according to the standard text, there may be an VO/VOL-Header. So we have no problem in xvid. Christoph Lampert wrote: >But since there are some features which can only be changed in VO/VOL >headers (qpel? GMC mode?) and since you seem to know the syntax: Can't we >somehow "define" that the sequence is finished at a certain point and a >new sequence starts with the next I-frame, including a new VO/VOL header >etc? According to the spec, we may repeat the headers, but we cannot change the features. "the Visual Object Header and the Video Object Layer Header repeated in a visual bitstream shall have the same value as in the original headers" For GMC, the number of warping parameters and warping accuracy are global parameters for the whole sequence. You can always disable GMC by using P-VOPs or Intra/Inter-coded MBs inside a S(GMC)-VOP. Andreas From xvid-devel@xvid.org Fri Jan 3 22:59:09 2003 From: xvid-devel@xvid.org (Andreas Dehnhardt) Date: Fri, 03 Jan 2003 23:59:09 +0100 Subject: [XviD-devel] illegal MPEG-4 Bitstream Syntax / RAW YUV input swaped References: Message-ID: <3E1615BD.5030709@stud.uni-hannover.de> Christoph Lampert wrote: >>2) RAW YUV input swaped >> >>I used raw YUV data as input for the encoder. After encoding (xvid_encraw) >>and decoding (fpdam), the colors seem to be somehow "wrong". I swaped >>the order of U and V in my input YUV-file. This fixed the error. I don't >>know the "correct" order of a YUV-file. Either the encoder swaps the >>color information while reading the raw data or there is no standard >>YUV-order for such files??? > > > > The problem is not too few standards, but too many of them. > We should finally agree on one. > > I guess your problem is related to the colorspace paramers: > > #define XVID_CSP_YV12 1 /**< YV12 colorspace (y,v,u planar) */ > #define XVID_CSP_YUY2 2 /**< YUY2 colorspace (y,u,y,v packed) */ > #define XVID_CSP_UYVY 3 /**< UYVY colorspace (u,y,v,y packed) */ > #define XVID_CSP_I420 4 /**< I420 colorsapce (y,u,v planar) */ > > (from src/xvid.h) > > xvid_encraw uses XVI_CSP_YV12 as input. Maybe this is wrong and I should > have used XVID_CSP_I420, because internal format of MPEG-4 is supposed to be > YUV = YCbCr ? Right, This one is used by the fpdam encoder/decoder. > > I never notice these things because I don't use RGB output, but look at > YUV as greyscale... > > > Anyway, change line 655 in xvid_encraw.c to > > xframe.colorspace = XVID_CSP_I420; > > and I hope the problem will be gone... > Now it works. All the MPEG-4 verification sequences (mobile, foreman, coastguard, stefan, ....) are using this format. Andreas From xvid-devel@xvid.org Sat Jan 4 04:25:46 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sat, 04 Jan 2003 15:25:46 +1100 Subject: [XviD-devel] overflow being reported incorrectly In-Reply-To: References: <001301c2b370$008f1000$bca45982@student.utwente.nl> Message-ID: <20030104152332.7ED8.SUXEN_DROL@hotmail.com> hi. fix commited (stable & dev). a potential problem: our dequant functions are only good for coeff levels in the [-256,255] range. -- pete; life is like a box of ammo From xvid-devel@xvid.org Sat Jan 4 11:20:39 2003 From: xvid-devel@xvid.org (Dirk Knop) Date: Sat, 04 Jan 2003 12:20:39 +0100 Subject: [XviD-devel] overflow being reported incorrectly In-Reply-To: <20030104152332.7ED8.SUXEN_DROL@hotmail.com> References: <001301c2b370$008f1000$bca45982@student.utwente.nl> <20030104152332.7ED8.SUXEN_DROL@hotmail.com> Message-ID: <3E16C387.7000406@gwdg.de> Hi, suxen_drol wrote: >fix commited (stable & dev). > >a potential problem: our dequant functions are only good for coeff >levels in the [-256,255] range. > Uhm, we should definatly fix that ;) Another problem with the latest commit: D:\data\PROGTEMP\XviD-dev-api-3\xvidcore\src\utils\emms.c(79): error: __asm unknown opcode 'FEMMS' ... is there a way to explicit call nasm for instructions in c-files? masm doesn't seem to understand that instruction (processor pack is installed). (Or does intel install an assembler as well? I wonder why it doesn't understand that then). Best regards Dirk From xvid-devel@xvid.org Fri Jan 3 19:28:31 2003 From: xvid-devel@xvid.org (Jim Hauxwell) Date: Fri, 3 Jan 2003 19:28:31 -0000 Subject: [XviD-devel] status of bframes? Message-ID: This is a multi-part message in MIME format. ------=_NextPart_000_0008_01C2B35E.4CCA0180 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Hi, I've been doing some tests with xvid_encraw / xvid_decraw. Looks like all the bframes have corruption on them. Before I start digging, is there any know problems with bframes? I have attached the 100 frames I have encoded/decoding. Jim ------=_NextPart_000_0008_01C2B35E.4CCA0180 Content-Type: application/octet-stream; name="output.yuv.m4v" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="output.yuv.m4v" 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 Bc0nbLfxTsZ+m81jeqdnaW3Jb18/Mj/0DeR5oGLghpwYDmtF4IIQ0zLLQIo/TiUBwuVhC+PE3kiq xr1/rH5qprbeZgfNKi3Zmdr4b/8fiW0wPy/dt36tP5qZv5PZJIHuySSbaal22Rd4NIGVAwKMGVjv R7olFzIHQhsDhjyQdF+p6Pk3mGlDXgRGGb+qms97mYOPVRJIc+WwYEJrzAPAfyYMyw17GmmsCD73 vZM972CGqmZmTkzMkkkkkkWcwV4BgBiYRkyT/0xcDB+CqaaHo9aawQUrKj1T/+nvsZZEFnBzutlf 9K9gWuTPPu+bbfc3nvz73/PN789+/zbb/Nt/822/z+f/N5v8/n/z7b/Pfv8+2/z27/Ptu+e/f5vP 3zbb/PN6+bff555/m+3+fef55v9z7zvm238pV4KNv9uf735tt8zb+sjCyCN+/N9uebffxkvteMFH ++55v/n298eCZ3+bedsYT238bJd/GwUe88+27c22/zbz/PNv83n+Ztt9zbz/Nvv823vzzf/N/P89 3vz3+nm83fNvv8+2/z3bnnn3fN/P8+255tt3zbb/NvP82+/z7b/Nv782+/zbfnm3nc5bMK1DLVnZ a42r2bCDWHHndZuigYjuwIY6TN5YSzbVgzPb5HvLaKRsFU2xrc5UE1rc2wYe2PIqlVWG79zWce8t nGWYzmzFndTxHw/XyPec0c8oq67i7Xq7PRzy2+Cmqu6H97y2r/Sh2uFL6ejuW+phIfj0uVfsd7y8 WaxRpPp2uh+vWfron95Sbd9vvrb0muv/rO7RE6Xoop31n5H0sJ+jJt+sv1afveCqntZe3BTVqmQ9 n/ns4r+pxA73mVdd8+d0slEziz/OXtK6tnYK/c8/XvSh1bYJ928p+F4+HdTxeSPK1mwm6ofy3bxq PVeJVX4t0Vc53MJ5aSR5FJggf9q94SUJ/Oe/3vUQ1MM1TEAr685fQYk9sq4Vpeykp+U8ctpzuVci u8/lAefsjzltJrvvx9aCtagDn+iec9nC/jfiA6r/mxZd/13L6bW77QIOJJMHGrgJ6c5lWPcpCnkP WR5k+k8/rjnPS2E74KPj+fplc+cJ/ee/Za5dmzZLLBi6keie8tmf/7MqIK1W14gtFdPLlFDz3e8E z6+R9sFPOeh6Ys+5z2SSesvFxm6J24uJuv5b6J8ZJ4z/LaXu2ELGz/5z9h99FHrP2kFLfv+f1f1T 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 lznRV1tPlX4Q6Tjp9VyN/rt1f/6f9O2eVh1XfZiSJxanZfSOEUrdtCfd6z/0fAlYJnLb5jtwHBVL vMUEURpurdVdYKvT+kfPfN0Z+s3diLBS+5HmROcLO7dp/RkVU7SMJXDnBXtsOM+6sCb/x9kbfeG9 x7Z7uf7f79w8+d57epKFtkdkepeydFKZ6AulaOleX3+0moad/T8/mV7brC3XzRUz2Oe5vni/pBPE d4tT9dHnz1SRYE60Z+/XtBdzhyInk+CerNMQuEbf3wspEcx/V8t85qsKes+rK5lWuNj73CewSenL BOKufk++1anPOxcE23ywdPc0+zXP7d+yN8vr827pvHOE77XVUjrhGs/25J1lfyzKopXZOEnSPSzo oMaXyt6VRQgnFzm/IS1C5qSla6GnUJ/ItJIUO0/1dF0mOYZqvLq70+raoh+OIuGjsrah6C/2PWo3 Jq7i8WqBERpWZIfW2lSPh37qwoBzlbO9PPF5VygV5FCOQtWzeoloQ1fyLEMXlvbRkTnPzlGYnsdc z8qM57OkTXiAij16cs9Tp/IkYZPign3zqIMiPrfyL0jrau6Y+6djqZXcOU9gkThzf7TMPaHE6sRT yFMBc7b9KI+Tvf+It2QFzocinOuHL28QbmIy2QpHo46SDp8+SJn8/RYEz3Y3lglf+vt7P915vQTb r/X7lsjkiYORvo/59Vd8wDCkB3Alqw/uiBWwHcCXh7CzJ+9/o3Mi2/jPdPNzor/Z9J3QXLPfy1gt jgW3adKtEFXhwtPDDekRKWnoZT9VPdn87kmczs77zmeiOl3mmBeNcI9o1On5HXdeQ/dqmQJblj6q Ijnee2e34b+7sF736Rg4KmSEbpNfehNUX8q74Rn9Cp2iwJm7tR/lBwVp8j75D/1SKW6Rt1hc7FhR qQQFbrpXR/OddvCHP6N9ejbgLmiHPnP6+pEydk/h3d9ait9YF3OdzZbCk97a7Pxx6Ibp9LEk2z9R cXkCU62yOfrIp2QoJ08jNiidksRup9ZCG1pFFvESKPUzrv7LFqNaiOPstDqNy3eWxEucUl6R+I5S aL83uznQq1q6AJLinqElhz/Fdt+c5OTnIudqrFIpU23vJVkPHqao7KvbJyHeFrbbCH2XT13Tmlfq K7erRd6qni5C9k4j7TTrydh/loSKYdZZXfN44rNnHdP3FEfEKj8EynqdlhCfHDyHYYiHEuHpXFUw i0kDChuCnLnqI+4bBc56A4JJDJM50+RlyRVLAT9w4pXecKufq8Pwf48/EUBM6ccXruw7VyFvoR8/ 53u/2LOV2hb5EfQ09iIjWsC1a6Ftjn7/T6wJK8gWqgkx0In1iNLAYFZqeBgoBgH8CRWHS06I1H8B wFCwHARUBJHxHwB57VuboUP8Te//wnhp3f+39dyOTHT66fTksPbh6tnXVUZ4+9ASrQEmASaw5I76 cnDicOSRS7ziJw76ojmnxZ6tp6N+Bx6QX9acTxZ/vytKEVrtH5ynkt7joRZHhdvx5/jfBcVrKvQc FW76fe5hBunHCPn5bvpDVc3px33XXp4ROwhrh6w/OjaedI5UcI/Ip1Of346WDdJ5zPWU1UnqIu1v 9IO+Qcc9+tnZwYOMJWp/NntKBM5V14MEIxPmNV0vzk4UHqRwhLWlk/cqOHBQxSrsNHIY95tT+rXO cFd+tnOSCqyoj1ml1KIhTskJob3lXWPrwj7d137xYaJwU0o6esuu1Ef4p1kydet3tCf/UG8Bcq97 ehROLbZRMlVpVxk77cqlakH6eU3mETtIuW7VhXuhG653OcX710y78ucWzBSpDhVrTnv9BETIwBCZ EiCR300QTIruTIk9OX0x/kOf4fI8+RyYT5H3Owyt/Gz/SOuUjzdIr/54e3evb7Ds90/ol0YTKWKY 5XbTK6xmxx6ulcIVdvSYwCSvFxXFIvVXMmJwyoNxUsu+T1odWvXq9Pq8P89WceoRqLPtd8h6hGRw HgoCmiXAcBQsB43/5UBIos8y1s2rcf6PgDz22gU4izt/5zfNPTDn8uppyac/6RnFOn8RMisuDysp yIYiGIxxjCaI0NImnPI+k13TBFiezuZpBJE3xm/dmOXu9eZ/e09UdXyObmCeccX8YiAmR283hkT5 FGP+yHvmkH6f86dXP/x3fy8cccjeRGEn0OTBedbh//qlaBR+8tf96yc6Cc5TyR6j3bZHPHvizvVx RJv5xZ/zpWb9PMjmrWnaZ6ukcsJ8+tw9kXI8RMjmCat3dAS6s6p2r11fC/smyxaLCe2WN/Ztk5Vk KIn3KourdICu3VpoUeYTjWMHPPW8iOiIK7zYpRrSLLEa1yycxZysw9vl3uzdXE1XqlZc7pkejgs+ 5OO0V7hIfuy2n7fVWti40qrUB1jmN5h7Sc2H+XUliE/rZXTVnKWE0W+K5IYxbiE47ynfvWO8y051 D0lCyxzp74RzaWQ7KKmIru06fMXfCJ8w4kRTIyZGOh0gudI6Lu2QNY226vs+3aw/b+neaMF4rQYB Pp2bj60PZHK7T6pGtFwTopF6gJK43r1adVw7IeuCStDqvAtW6fkeesu9ZZ6hGtQE8d6hGqRqEasO 89SHVCNQjsj56hHZGoR2R8fsjM+1TUFdTl2tU0n0Z60rUAPPGuCjN09P66H5xFum0kUQ5ocnpGcJ kSQJEQRSvfQoCEiJMiTfuvT53sRN2WdtHQ9jzc100R70BMn+jFccxaKz2odb27onoiHKPvvsP5NM AQ4J3TnkcJnH98r4JnVE7nBb8O487StP9daBy1p2Z4/kbfFp6ZOU9wiK2+QTwe5D0/Eb5C+fO8h5 S0gk83yHyiPPpzOcBN99smZ9kFUnuXXzUR0KL4tMgzCSt3nXmoze2okYnuRlpVZyTZsYHDdL2cvD 5X23+ToVXUUjtKdf46ekD5Dlt/6yJ2y1EemLn1dyynPL1I9ZeH1DrU9OScdfsPxeuTsOqa+/2eTf 6sf2r0Je+3MieQ8yfz0uKDkH5oeSn3SbYjtRrLmWXe7dtKHJ5kIZpz+tOevCI5BElgCI0ihE2XN9 /+yN9P3q51agJqv0jcpsPrAkrrmd0d69oWrEa6xlVGdWLqEahGrDt218fPUXeos+5I9UjmeqRqka hGpTvH+oRqkakOqEfPUh1UjUI1CPnqoxWp3oqUI1Id598P2R3Ttkf/UOqU7cO0R+d0Y9s2kFEa3r Npt1o3UAPPGR7HX57PTn5nMt+7fQs6cu78szm7Yiarr3M9O3Id2wj+8db9w/3y+z7hyecRhP6c/J m4TTdyduHHur4eZ5vvEkXFLZHw7dbD7RnlYujPzPkK7Tj7qukvpBpeVz/xS/efGy13liDqs5ATph HJF46+0Z7IqKGiI2gPNF+GIrUq6znpXIEfk6RZHzGFc3YoxcnT1NW88IlnOguC0dptlmU0nOdKaQ 5pVaifWyI6eNfvKVdgoZ8lPlpB9ZvFJKde5y8lP/JqPr9Dniejw4iE7b/vRrNnbeHjVmTbwTLafk HdFPbfen//gnVUWXse7XSXLnEb5t7Dlin/9QvjKoteyNWlfXeWy2RHRopG5pBM9otmZT3OObx2FW W8Px6dejnMdI5q9tLFnWpPGaA1WhfD2efU06tQErAkrgk5EhEuvAErEaoJKsOoRK+suZWWesRq0B O9SL1odUI1YdUI5D1COyOyNSHePPUI1CO6dUh2bjZSnVYdVoCb4/7I7I7h26d/1COyNQjuHb+oR3 DtkdkfNVCOrI6sy1VU7zulc3tIO9XL1+w3UAP4EpMUA+OmS/WK1wqz8vbxHuUJhXADkprBqJnuGz bIeNE9WcnsPd8eaJbOQhT/LHb9cqI7OCpL847PduiWySEM2Cd/fXGlS2n9Rk7f3mNzYoRn3vjlSS Lw73SO6JjY+3Z+qOnJrn926M+47PfuVHXuO+pHqnPsjb3U0pGekGRXUQUfWPMWGrbjU7pqJmNe/V NxQfZG9SO4oGx/9+aOAu0qCsC17enTRjRjVuSvNLl7XoZQRC2g4Uv3jtNVzTvbLJy9FL3ulSS2BO TyAqq2CZ3IclfpqC78rm5mnkopuHs7v0pT19Zauf+/T8lpAr6qaQv8NHJc70KttklvRM3MaGjR16 ags8j4b6fbuNTR7qy06KVJevz6NHSFF8YT/Y99X8E6opF3yDwcA/UoDuBLvkeyJ0IRfUGDVCgeH9 QYNW6fcteaXh28p/OwaGly9pOph3ub9LlP3h1vjpUspNU6/PP590qWPude312edLnH1l6KG92fNK i4pqXpK7736XFyR/lPt/pUXFdRcmbvpUoyd4NW/04U+BU35pwpEw7YB4GA7EgIKVXLEMrTWMZewl D//pAo++L3gSxG297579/m8/+b+3M23+5/P/n2/PPfO+fef57ffm23+ebf5vt8zfe2zz7vnm3+be f5t5/m+/+eff595/nm/+e+c822/zbbnnm3+fef55t/n83PP5v8+87599/m8/+fe/559/n23+fbf5 5t/n83+e735t/Tzz7/Ntu+fe/5tt/m23+bb35vffn9n3Nt6ee718837595/n9/+ee/5vt/m23+eb 3c9+/zbe/Pdv833vzzf/P5v822/zb+/N5v8+2/zbb/Pvf83s/z7b/PNv893p5vt3z3e/Pdv829/z eb/N9v828/zbf/Nv7823/z7b/PNu+eff5v7fm83+fefxG29/nm3+ebf5/Zzzbbvm+9zPZuXN9788 2/zbesz3e/PNvubbf57vfnu9+bzf5vvfns3+fef595/m23+fec88275vvfm83+bbf5t5/n23PPd6 +e7357vfns3+bzf5/Z/m83+fef55vfnm3+e7357vfn23+bbf5vvfnu9+bzfvfwAAAbZRYFSLOg8B /jg8BAcg8BAdgGg8B/hgHqwDADC8SC4vLhI+EO0Sfl/lQ88rLlVkqpUX1To/8ImZpIEEEEICsGgB 4QQDB+o+XhAEkfhCL6q1RVYlK6q/fWyXNnNnuMOYweA/twYvB4CBPBvgwlAwQAQAYA0SR+ED4QAb 4NgISouVj+j/wMpEj4Q1Q9nxK8qmKvVTiv47a02++3vffJv3g8B/Ug8BA0hCEgIIPAf3YMXCQEMf D4SR8rBgPj0uH6rxeXfwEASfxT5XL65ZLONnU1g8B/Rg8B/ig8BAwgwlg8BAfgGKgQQQR+CArLi8 SfBCkCErEv6se/Li8vlwvEguijC6s6mw6EIEAIKoEEA4IQBo+UwuCCEIfBDVRXimKh+qhf6fy2Kc /Ny2aZBAB4D+jEoHgP6sHgP78HgIDsHgoBkHgP8cIJcDAeBghggAfBlIMJYN9VoKEA4GL1CgD0H4 MBj+7jcPA8B/Bg8B/XgxcDeBoDwEB2DwEDCDAoAQAgAHAfBghAowZQJBcJQ9UBABlShSB73lKhTc 1rXrb32nvb3s5176LOg8B/kg8BAdg8BAdgGg8B/hgHqwDAQC8SC4vLhI+EO0Sfl/lVVeVlyrJS4u L6p0v8IhOEEEEICsGgB4QQDB/ffLwgCSPwhF/1VqiqxKV1V++tkqjZzfe4w5feDwH9uDF4PAQJ4N 8GEoGCACADAGiSPwgfCEDUGwEJUXKx/R/4GUiR8Iaoez4leVcVeHeK/jtrTam977W9ne999fe999 999be+++++1vffffffW3vvkf3WDwH9GDwEDGDwH+OAYDwEB+DCWJYBoBpcJJeXF4ICsIUgQvKvqx 78SxIL9sLy8uijC6s7uHAZWDCSEFUDUGEsGVgGlymFwB4IIQQhqorgHYqEsS1avynFMUz3+5bNZp sHgIDcHgP8cSAeA/zRJAOVeB4CA3APEgAwA+CT6qy8Ifp/1EoeF8+qwGwIY7HtLqBpg2qLh94fFy ouH3vFxcXeipUqVRR5V70z3venJ70mSTh4MoJ5przDXmGvY001me972TPe9k5mZk5MzJJJJOSLOg PgMJQNgMrCAI7KcA8DoMWpNH32vMAykepVDNbY3PlidrPTmZ+KZVMU8RV4QPfb3vtb295Lv6g8B/ Ng8BA8g8H/XgwlA8R/1g8XAOg+B/4vTWDwP7CDwH9+JAB4lg8BAk+B4CA7Bh6DCQDD5WDwH+KDBA LghggFygEAfCWJd+CCB9WrEgIA/olKx6Pvlyr9+O/zyi8jgeA/nQeA/pQeEgRweHgTwYIAPmf+oP Af1YPAfwoN8HgIEkHgP78HgIDv4NAeAgMwYAwfA3gYv8P6JYQADy8G8CAEIGwfwIAQS4fD9UPwgf H4/LlZcJY/VK/K1U3yhT6qY4fAHfBlYPAwDoMPhKBi8A8vANCGAYDKgDgDPl5eJZeJYPBwB5dPWK lY/HYHh6pvuRvc69999be++R/dYPAf0YPAQMoPAf4oBgPAQH4MPxLANANVCSXlxeCAXhCkCF5V9W PfiWJBftheXl0UYXVndw4DKwYIYQVQNQYSwZWAaXKfFwB4IIQQhqorA3FQliWrL/KcUyXP9y3rNN g8BAcg8B/jiQDwH+aJIBxd4HgIDcA8SADAD4JPqrLxJk/6iQPC+fVZRICGOx7VVgHGDZcXD7w+Ll RcPveLi4u9FSpUqk95Uq9M973pye9Jkk4eDKCdaa8w15hr2NNNZnve9kz3vZOZmZJJmZJJJFpFnQ H0GEoGwGVhAEdlOAeB0GLUmj77XmAZSPUqhmtsbnyxO1npz2fimVTFPEVeED333333333333332t 777W9999999999999ve+xvffffd77777777774/c+3vffffffffffffffffW3vvvvvvrfqp2T016 mX/9lZJmyZT/PV6sAhhb331s6tjRC3m3332N77G9999jh9betlhK++tnX2OH1t77GbW6dfW4dffW zz7Gdb3PsZ1jcxi5996tVLAYEaubqdbrw2xm3q9R9Xty456vV6s7jg0xUaexWDB6rZA9VVUnOpPg xaDAWDXsPCo8vve1ml8UrHWMlQ6vexVzdXK5w++M92HBc5yKpymu9bGaThGdFimbNtZpbFSLe8wj z5ulh5rJmM2zjVymQ+20RlX6BegxpPZFoxBRSN/3+RJC0x/IKEvBpwUqz6f9QnQH6QE73286+3nH 32MmYwY6N86NHvj96ucCtne93rbR999repvej3HXL4Y9FSPJiHjlcgwYMVp5CzzkPdCF99vCp9FW nyNzedV+HCRfNmW86nvDMgMoefBdNLwZrc0TqfpejqAEgct5/hElXomsbXmksxKMWVthYtOGkLun zA0WRXCYaosVcJxU+xufYyZbGqLITQ0fb+JBk3vQ82NB+dFW5zVT7629RbzinoXwaKYyg7WGanOi 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 433vc+3k77WdeVtZh9bouRdKqYyCG82iW2KzJEnjU5MGCUmZ1iTmHmHUlfHWRvbuZffHdXvR5wnA atU4L3N7nu08y++xhgvjU6+++1dyXJiZzG99rNLLe+NcTi96HnSFbe3uauLnW++++1vYW9jJkXKO RoTSZjUbNpeoXmhg1jVTCwnXWTE62eY0JtDywhJGFkjrX3n28LGpXjnNrPepvOLZO9WM6rnnt4YP vvvvu5W6k4/NPvvj7vG28mffWeMH2t7ecRZwyeW3PvoWZct6cT18pJsRR+Gh3xmYNG88h54+61+R hzZ5TMvYq5rp5jPNbhti8aDjc998fvdayubfGLebOn0mMyc02s0rncIn330XDRqPXvHRzW4fvaqT t3PvVtZ597vt719z2lk773U3H30LeCei42QJTqdyfjR/TXAML9dpEl8PYROYyVrI32FtOH726vd4 pwtPva6afYz62afWdzDeH5xC+kQVN7nW++++vuc+rk5MOsVnH2s4xufb3N7Boa4yecayd9eq4wJm Nd7W4L73t9GjWfYyFPlhMv3HwT9IkvnK2LCUZNZ5CzjkO5PTr7eQtZ8bb3jrecfG2Tvaz4/eh3C8 wxn29zrYW599999jOvd8d7jSu8ZvoVz4VD971Q8+FT7rfWW993KxuZWNT776q9WM48aePPvV6eOt 7hpm6MTb777rQlsRO9w+rx+9jIm1uda2aa3Ot8Xvfffffffa3PqZO9Huc9D3GF8m8Fze5bNrXNvj 9741u973x+99DwWh9DydzXK2DAkNrPt+aKX085kwy5y293vvs3aPHERbzB1rhC6331lnX33x+999 997vd7vd7tXGb3fauffe77V3Pd997vt3Pvd7tK+n27m27n2rm27ue7VxkzcZLn33333333333333 3331t77W99fe99999999999999je++++++++++++xvfffY3vvvvvvvvvvvvvvvvvvvvvvvvvvt73 3332N777O977777vfffffffb3vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvt7333 3wAAAbaQ4+kFxiX8SvqlXldzP4Ww+JYlfVe/qvymYtL0hgB4Hx/MLld9B7simzJ3hwJDEu/VA2Fy pQCj9PKf5O57L1u6/6Oj/hcYl/Er6pV5Xcz+FsPiWJX1Xv6r8pmLS9IYAeB8fzC5XfQe7JtmTvDg SGJd+qBsLlSgFH6eU/ydz2XrfX////+Hxl5cXUvuTGtOg8D/vl/vCR5Uqigv8Xyf/Obnvy9nTYki QXwu/bdaziVwQQhqxIH/shd1TvfeJQ0NUXAzSoCnhgJKtWPgQlXvKs/FG3JGoSfR0f8+YQwheUq6 BQpcDwP+6X+g+nlUUK4P8/+c3J/ezpsvLlYHrqY8EMIasSh+qkA93d77yzw0NUXAzSoCnhgJKtWP gQlXvKs/FG3JGoSf//////////////////////////////////////////////////////////// //////////////////+nT///////wiMGnwDc/+Dxq2COKg0MSFQlqS/6rBG3urU8EAfFw7BD0Dc3 FlPTf/////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////9wAAAbZScESKODwECODwH9uDwH9yDQHgIE8Gg+Bvg3y4II/Hw/CD 4A73gDvFytWB9WXD8fy2D8fiV5Rg+/1Tu2HADQDFQN75fYDKwhhBCEXDyqPgHAHD4A1WPd9kpcPw DQQJPYpHYH7dyDztrgeAgVweA/kweA/gweA/wQeAgPwaeoBo+Vgwkg8BAbqgZXADgYuHysHgP8sA 2F8LoXBDoBw/Vg3i8Gg/CAAdYEAuspcPggiTBKqsDyovVqgY6uGwDAbwIJcDF4NAQAb4+ivw+BBC AJAB5d4vyK4XCSXeH6qK5L/0/Irz8n7NZeDFwMEIGgPAwEYMJQMXAyoD4IYPAwDYIAQADAQ1A8A+ DKBKVD4eqFP1ClRqhTcJ1tzAeK5TpGTqemjTfT62DwEC2DwH8+DBAB4D/LBgDQYShKCEDwEB2DF4 PAwEYB6oEFUP1Ylgw9CCAcpEjwlCSq+XD0A5UrV3VatV9RYoA5u75yeDwEC6DBAB4D+dBhIBgDwe A/ywYvB4CA7CEJQNfAHgw+BgPgoVYlqhK8JHwYDwQVQQFYHvqhJVq+q1Y60u9xvKceDF4PAQTIlA 8BAlg8BAphDLgQQeA/wQeAgNwQAYfgHqwYEDwBgBoQRKBi4EAA0SQgg36rAMLxJCCXj8A0EIvH4I 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 zXofnWOErKuQiOueZV5mm/HWb7SSHmbw9Dy94eezdzk7uc969zj2buczd0PL3mPc1dz3e73Yu5je +vuehbnvvsbhVuchbns73sb1tye5znD9zO96Lc96Fue1uQt7ld72Nze9Juc9benve97W5rctuU3O fffffW3s7nKb3oW976u5zG4U73ufX3PV3vY3vs73sb29625re1ufQt71dz2t6Xe976Le97G9be+t vSbnOfY3t7l970m970m97296e5z3tbmnvR73OY3K73s73tbn0Pe59vcpvek3Pe1ub3Mbn3333297 7W998Xua3vvvvvt733333297W5re++3vFe9z77777W5vc2t7777W9ve3ufa3t70AAAG2kePpI6P9 On/R0f////wXGENWrLqXe972fmbcnedGYliV9V7+q/KZi0oxv8v/2NbcIg0P1H/viSPy6SxR9Wtn P4cmTb/IprdZqV/wiMShL8rV+xV9RdXsGAfGEJUqL4X///++u5NvO8OA3xL96BCLrJNA53AYk96W e9K3kPiV6CSPfj0vvy7qjyn9zvOXkx34LjCGrVl1Lve97PzNuTpwSxK+q9/VflMxaXpD/+X/7Gtp 4ND9R/74kj8uksUfVrZz56KJt/kU1us1K/////////////////////////////////////////// ////////////////////////////////////////////+RMGnwDc/+Dxq2COKjRiQqEtSX/VYI29 1anggD4uHYIegbm4sp6b///////9ycv///////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////4AAAG2U2BSikDwEByDwEBuDwH9qDwEBmDB DB4D/PBvgwIBfQYSwhF4N7wQwPj9UAYEISVX1YQghqghfnpQZWJFy3+z9y5AY0DwEBuDwH+KDCQA aDBDAMLhIAMBhJEkGCEX+CH4f0SRIHo9/7yov8CFQPCWJFUWq5+jvNVTh8HgP8sHgIGcHgP2cHgI GFWrLgeAgTwb4PAQJfxJBqDwEBuDD7wBwBoMEFWAcDFwk/Bi8IIMXUSAaCWEP8H9hepCCXqRLv1Y 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 e++1wytnWtYhfffY3vsb33331tzzc762fY3PuRt8NPvjqUMn1iJ7ONSJqb1eDIatZMtmH3I1cjIk 8L2GGhmy4K2fC0arPXzIYvtaxxjc++sWGhxvc5333KxjJ9DyY2tvfa3vvvvvvvDvvvt59999jJ0L NufFW57eeffW3t7x3nnJ5zsFWk3DCTh8Z6i0ka3IWcJl5P0Zt5599rMpM+ssdexk4/Il98Gr77G5 rOsZ1999999999bc82977yHOcPPeT6+ce+h7yZ8dZlz487linkIrjjRXs/CekSTC07iVzeafbKTv rZlgowbKTot7zre99bc+++++++++tuffW3vvvvNqb33O++h5p77zaxm+++5332s23rnX32ykz7Za Ss5snffffffb3Pvvvvvvvvvtb333O+vve++++++++xvffffffffffZ3vffffffffffffffW3vvt7 333333333331t777W9999999999999999999999999999+++/vvvvvvvvvvvvvvvvvvvvvvvvvvv vvvt733333333333AAABtpLj5IeGXF5fB9Nut4ckqmSrw/LJ9uSpTqf5U/+8ASXlwlqhKqlXLZmc kpXhMDYxL+JX1Sryu5n8LYfAML4EMf2/8Jf4Xf/fqlVVqx16iNMamThwS79UDYXKlAKP08p/k7ns vW7r/w8MuLy+D6bdbw5PVTJV4fl9PtyVKdT////+HBiWJX1Xv6r8pmLS9If/y/tjVtPJ/Kn74Qi8 IIHC789YO+2zjTEpPZb5q2ER8wYShLVBBErnx/bJ9RxWrY1ITfg+V+EgfF9sqnypfe+06JIl/Hxe Xe8PB3y/t97vOkt25PbVEajEwk/DgxLEr6r39V+UzFpRj/+X9satp5P///////////////////// /////////////////////////////////////////////////////////////////+RMGnwDc/YP Grgjio0YkKhLUl/1SgRt7q1PBAHxcOwQ9A3NxZT03/////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////7wAAAbZUcEKLOg8B /dg8BAjg8BAlg1B4D+zBqXg3gZUXhAHw/HwQFYB/6EH5f5UB7xePh9ZKXD4S6pUj/2b7M3poA0G+ AYXgxcDUA0GVCXVXx+CAEESwDi/5cpqql4kF/x8rqq/nqotmzfSgWcvMHgP8kIIPAQI4PAf5YNAY A4G8DwH+eDfBi5WAYDQGL1QQviRS8IYBherUgHhCoQy5UrVBACGJefA9KpbVb7ACQeAgPQZUDKwe A/fQagwlgGqweA/vweA/yQZSDwECCXgoRLBhIB4CA1HpdAeBgI//Ev1AMLgbAhBCVAGCUDAeAOo/ CEoCEJJeJSoRi5SqwM333k3n1N7yX89pwHgP5sHgIH8GVA0BlYPAf0oPAQGYlA3wDAgAgj7ysGpf 4uCCJBcJKqF8BhKBB9Fc8P5fT8n/yXNz9J0ynQeA/uwYEEHgIEkG+DwEBmDQGBABvhBLwgKx8DwH +eAcDD0IHhKVl9VqlQHghF+CXPj4unvqAhquKvq5unQeA/RQeBgxQeA/uweF/6QeAgMweJ/8wQQf NgHQeAgwweAgVQeA/uweA/wQYSQeA/iweA/xQYSgYSweA/ywYIIMrBlQMPlQMAaXAxcDQEEGLwDw ggGA0VKgYSQDh8qVAGBCEsfqx8ELyofe8PvQfeVTxdIqaOPvudbe+xuRZ0HgP7kHgIEcHgIEsGoP Af2YN8vBoDKi8IA+H4+CErCD+gHqy/yqqlRePh9ZKPh8P/qVIl+zZmb0+AeDKwDC8GLgagGg3hLH nx+CAEESwDi+l20uqsSC+j5XVV/PW+t9zfSpnLzB4D/HCGDwECODwH+WDQGAMBlQPAf54N8GLlYB gIAMXqggfEil4QwDC9XoQQhUIZcqV+CAEMSc+PPW/ESWZAzB4CA9BlQMrB4D99BqDCWAarB4D+/B 4D/JBlIPAQIJeChH4MJQPAQGqlVAeBgI//EuUAwuBsEgICoAwSgYEIA6j8ISgIQkl4+VCMPlJdgZ vvvq7nPJbPsbn2tz77W59999999rcJd73N72t77e5Xc59vengggHAysG+DFxfRLBvAGhBBAEu+pd 8vAOEkvEhXVWz9Vf+Pv+t8p962a3HF5eXl4lq1YliWXqy8fj//y8vLy+1WrL1au79WrV/qn//27f 222nwzNtyJ3332MifKc/I8DwH+CDwECWDQGEsGH4PAf5oBgBgMAcAeDwMA2DKx+DaDYEEFCPwhAe HgQh+Xj8G6JHlZf5SXeVqh17uqLyvIwggiCZzANAMBlYN8GVF9H4N4A0IINB/9UB75eAcJJeJCuq rZ+qr8u/799vvXLc30eDKhKBghAwlBACGPwQQhAyoEASADRJHoKEII+CAJRcJI/A+rheXgfH6pVF aseq5Ff1Nqn829Og8B/Vg8B/fgysHgID8HgP70HgIFUGLgYSgYSwYISoGH4PAf5IlAxeDAfBBBh+ DD8AwA4A+hDVSA1VD6UA8S/l4QR/8uHwliQXeHvs8qLlHrngyAMBvKgDy4GgICoG+XqhLBqqCAJH gDR+XcVF4QfF3oJatUBwuHXy9T+AolXKBrxp99je+++ngGgGAxeDUGLi+iWDeANCCCAP76l3x+Ac JJeJCul1y33/j7/vqLfetmtyVg4Xl5eXiWXqx+Py9WPx+P//Ly8vL7VZeXq1dt+rVq/7////239t r6YONyJ3k++8n32tze5999999rc+3vfffb3tbm977e9D3OY3Pvvvt73330e5zn3297e5jc1ua3Lb 1Nzmt7e9Tc59vc1vffffffffffZ3OUzz332tz625vetuU3vV3vY3DTsdc4cMqdzH/VeHque38jNk lOI5PV82z15tiViP/wMBj3/ih6sdGDqHupkfnH2t7776FuPsYyY4QDFuOzhk6tjNXe0vRoptEI1U k82xzukKn3pm8I3xtt84fNKaN5tjIEW8lmmGOdMKdwY0LFN599jGTG0u9HvOi1FvrSN0IEPecWxo tnVsavo9xnrmPpEJOJXDU6tk6mbCZjxs8xI+M5HPFCZ3D5AcRSIgv0aiL8aF5inXjF90MDxwmSSF lBZuS74NHsSC9LmDhMzI5QsGhk40bWIjaZ9FVFzT8cj5jiI8NZdIiA6JyJ7JA4YcjnThxJrkDzog 5Oc5DlX9NjHIiPJyJyX2O0Y16TdZcwaSn0u8nxfadSeGD/tNpyo0rJunDqchq50PDuR5wmz7hTub Gr0meMSvGHzSXw7punE+Y7s4TY9KZT8JxrT1GbGdWydOTRgdOlCehOn6GdRjJhAd/Fz4pz9zp9yL PDSEwyZjdf150KMtGeaw21xdrCeb/RKvL7+X46ziFgMzMOJ5sdh4e/B8XeXv7u/v6MFfJnOaHB1P ii3iHGyCgexInbpKrUttGwzS6ueVSCKfr+08+v3Tzk8/tYps7ZXJcK6Qdev8ASYGSXBn7DdClyLO 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 k+H3uOjvmDMytMWLzDMZo8npw8rnXDCOGfXuT4S9raAw0xzaQd+zu+1nTqflaRsDG1ksd+ZZ673x S2GDBlHk9Fh8Veilwx5MdGp5OZ4iWFA0bK1plPIzZEi0hQpn6eY3vj9yu4y0U0qdKeGop3hU5fNB UuUL3CynGCnn2N7625Luc5abls63nkmbQOGY0M6LOGHC84vnyN9XOEKL8cXPnBxmo5TGjk5DK6Zw 2eScID9C1F2vcNB1rvcMkqfPnD6Fw+9CzOHkRWThwkEfLIwuGHlPe2tNCbV91026dPp4iMAiG0iz 3ICNPD8inX4fh1fF67mvkXek3blIzyHk2HFCnua8Y8W9mEdw+cHcnvfUzp4dZxwyTPnTB5SZmHnK pnBmrkjnO++tvT3HnEjGfeY23afWxmNsmOLSeznR0Srbm9kkZm97fQraz6+uS9OLZ5ouk6e48ZPN Y0fVz0c3oTqEVcLDaZl0yoic9E0Mzd1vYLhjL9pYg6QnnMZtL95gzM4wRjLOHD1hE9TceSTMk5K+ mU8QHCRPxslosJ+nBh71habF7h3OOOOVoozfQ84Ml84cH5xzud8fvQs2SK5+Hms++NJOOnEm7ooO rlP91yLbc8hQ5OMJSJKRG8Imc6M0Oeup8cbnDeY1c9PcTOPDfPuPpMjJQzfGm4kekxq6vXPYaIRL KGDJ0Z827KybljdboTcedGqeL8icYHtSQlR/G+nCM8ruSHEzzDnRSdCVOZM48dQ5WdcudGefrunm 05GcT6lFZ2dtOnEmyeIbj0+QiGgZvEmGdc4LWbceYza259bOIWdOvjXOHXOV999rNsbxecbm55sz wLkIyeY2h3nGpn2s4+1nGc+bQp8JnDrGR1vON5O1vHXBo8dFNnGpx6QjRvlx55GZxOYe9zNLMm3T jnxnjWRtg854yST0mPvTIz4tefHUzj25vbmba3IeFbn333333328KX2s4++++1vZ3Ob3M73qbnPv vq73rbn2Nz7G5fe599999Huc599je+tuZ3vX3vfb3p73ve++xuffYO9bc2d7e9vc++++tvfY3M73 oe577625Xe59ve+++xvX3Offa3vvvvvvsb331t77nfffb3vvsb0Pe999998XufH7he5re+O9zh+5 99re+++3ufffa3tb32tz74ve++++3ufb3Od999999re++wAAAbaT4+SHxlxeXwfTbreHJKpkq8Pl 5cCFoN1VFfsavp/q50EEGA9/47VDyevfRrJWpkcEhlwH4CGrH3VKq/lWHVw58FRl5cXUvuTGtO2f vmrYRAwO2KLYtcGn4fGXF5fB9Nut4cnqpkq8Pl5cCFoN1VFfsavp/q50EEGA9/47VDyevfRrJWpk cEhlwH4CGrH3VKq/lWHVPf///+fMA0AyaX0ChS5UDKxLH6rR4Xq/A3bB1+zg7JrP3zVsSHBJEv4+ Ly73h4O+X9vp3nTpowg1UqBgPCQXjzwH1fi6/V5FP9VbVP27t7SW7cntqiNRiJHfBQYlCX5X/2Kv qLq9nCAGBz0s96VvIf/PmAaAZ0voMkKXKgZWJY/VaPC9X4G7YOv2cHfDllvmrYkOCSJfx8Xl3vDw d8v7fTvOnTRhBqpUDAeEgvHngPq/F1+ryKf6q2qft3b2kt25PbVEajESO/////////////////// ////////////////////////////////////////////////////////////////////kTBp8A3P 2Dxq2COKjRiQqEtSX/VYI291anggD4uHYIegbm4sp6b///////7p1/////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////gAAAbZVYEIh HB4D+5CGDwECWDUIAPAQIYNAeA/vVZeEKg0BvhBoBw+LvKy8GHvi/1CDLVfqPoXT2gHK+wf299xs 8DwH+CDwECWDfBhKBh8DwH+aAYAaDAHgHA8D/zgyofA2g2hCBQD4SQPj0SC9UXA3Ah/VF31A/+q+ O7MzZ2OB4D/DB4D87B4CA5B4D+5B4D+7B4CBJBoDAgg8BAsgwQQeBgNQeAgOwDQeA/zxIB4GAbBh KB4H/nBBBh8DKAbAQAZWEIIIPBQCoMqLh+EAfAhgHj4SxLBRK6pA+PVeK/vcmV4PAQJIPAf24PAf 24NAeAgTwaD4G+DfLggj8fD8IKoA6QA7xcrVj1WXD8fy2D8fj6KMH3xF3cOA8B/RhDBggg8BAbl4 PAQN4PAQJYPAQGY+Bi4eA8B/ggw+BABgDBKBgDwYSQYDwQvA8D/ziSAcDCVQhA1LwYFDPgwIYQwZ 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 UbecZ2ybnTqcyLXBFlOpca09wgQ5HTLMzh8fnVpESecOvbPqZO9npG2TKZw+Me/T6jIbODPOnKL3 vR5+aSRyTC8mIhzjRzkknpiF62dfU3HGDkQh5HaYInpcmq+vGo/GqnDnSRf4Yxg8rnOn0cMQuPMl MjVLnLCYaBUz8OGjwvPKZGaRZHzledGPZNmzZxCmfPDPNGTrodQ88cSbjjhntMGOeLBm2uSRREu4 5yfxOE2YK25vs5bSxYU6kNJfYaGnFiF9P6dGJgYItKeG5M0nejwiurOaNDH8YcRlhAebkL2NzzHe dp9Hvccbxi1jVfcfGLMFZCfc1ufconyc4599jPvq7nrTphfOHRzIaBW9bPseHUu872mkudcTqaU+ QIumyI6lkcbPHW84n8bea00cZxmea4yMhh4ve9b7r0+nhrSQwhZjT7GhAclkZHSflbJYQJ4EdqPB ZrHTFROomTycaWk7xB+jQ65LjN3VyBnuLNDPFyBnGOZpKxM+izic7D4/PjbMHhpnCZyu9wgs9XPU mQnUfCNzlCmhk1krBXNbnKpuc+1ufHWfw8tjJHN50nQ8Kxqrm3JJmDj0uQHjj603q56uT5XnOkvS dibhXOkzkPPnlcmJmynlNgaH2fiY4cQsB7R4Z8gSSs8Pk/MaarB48MzqlMq5pEfs8YaRHnqeHqTJ 9DCEZKeXzZMpvGbPekBExM+ntH+qDd1xKkmlGMMk4kzZANFpkqk0DnNEZOsUjb3K4VOcr77fRq+5 WNyHgJcIu6OPuZ3OG3w6dVlTxpPw2daceb+n15OPDDmNHubzgj688epAdbzo5z7Jtw5OaceXzz1f ppz7czafSAmJXI8nIKRiPMizkh/h54ydmZgxsqfD4yGgz/m+1bpHalFjHemnJPf9hxt5lPN6ZNNm xkwOjcn4KE2Co8hZ841OEwzzx840SHU+JBsNDDUFR0R676QGDR5PQvbJ3DVTc4SlNHXvrb3K+pvO Pj97776Fuc1nB+Mheda5h9ibnm3M6O82dZ6483nVtyTNG3rb2fem+kQ/NvNve+3mWcKyBrNpM9M2 dmYaPjn4YbjQxGSXhANHs59zPwxKSNZtr4SuVrMM7nJN0OvH4yffWz77G5vPvt5x999rjn1dzmNz 76299jcxvffU3vb3Mb3297G5999jc+++l3vetuZ3OffW3vq73rb33O2d7G5999zvvud99998XuW3 Kb3vtb333332tzW9bc+zve3vW3Prb2Nz77777777777e9Jve99vc+++532977e599999++++++++ 1va3N72d729777777W9re+++++++++++++++++8AAAG2lOPkgmMuLy+D6bdbw4EEuCArL1SpXL7F fp+brM0mBIZcB+Ahqx91Sqv5Vh1cOI9HR0cFRl5cXUf3JjWnS4vBDwG4rqr+tz99xY4DY7Yoti1w aAgAwIfvDpWPb+c/W9sbu2ny8D1BCVD/ihXPWLjuadR0dHR0dHBMZcXl8H0263hwIKoICsvVeVy+ xX6fm7vZpMCQy4D8BDVj7qlVfyrDqnkdH////w+OX0+3JSPwBwkCSChVqC/PKLkU/5FMyGhKEvyv /sVfUXV7BgEISPCSPv7R/RGziv67gYGq97O3B7g7+zaztbuvR6Ojo4KjAOANt8XTLYO2Ej5fT7cl Iz5/Boqlyjz1/S6bb6UmAMVf+DAhiT625KX8YgHWHAHe8EEuV/+qL5J2SKf8m8MenhFsg9oj2M1n rZtHR0dHR0c+d9J/82S9MgHAoADwP/A8P1E2qIPfzITCUJflf/Yq+our2cIAgKgYFCq9fQvmVf4M 8GBqveztwe4O/s2s7W7r0dH///////////////////////////////////////////////////// /////////////////////////////////+RMGnwDc/YPGrYI4qNGJCoS1Jf9UoEbe6tTwQB8XDsE PQNzcWU9N/////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////gAAAbZWcEKm8+rvB4D+lBggg8BAygwlgwBwPAQGoMXA8B/k hDEsEBWAcDD8GHgKAuEpWJdEnwMB8IHwDy4D/lYkKlUwuVWfUF/8/ya5HnQeA/uweAgSQeAgSwag 8B/Zg1LwbwMqLwgD4fj4IHwD/0A9WXqlVVKi8fD6yUuHwl1To/9xRmb1pwIIMrAMLwYuBqAaDeEu qvj8EAIIlgHF9LtHlLxIL/j5XVVsVfvr/3LZLncPvrANAa5kBgDHHUPOvQ940fDuCADgDAgiEqAM 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 TcSil99TedS5o+lcImeAJMuGvCI8eH40Uyfjkf16c+jGCQp/rjCPlXcf0Up+HBo5yvCUnGHk8OHx F6dP08feYzkgNcbcmh/hFTSmaaGoh54aV7hizBt9OMZEqcaGhnsWae5+mu9aSO6rZY0LnpzrYpPs 4SYy9LPrnJRovkx1P4cGBGVkyLRPXFCBym7r2cjOJ4u1yzjrlQslPt5xfhx6TGBC5rer0LSJoyzp tD6ep0R73vedT3ve9rehSe9iT3329yPe8na3s41aEwgpkB56LMAxiG0POQ4kzlJDieadUx574w80 ceJMZvekL0MZjz6vKeGbUnq7JE5H8Jxow5D+EhGt4eRSHAydwZpzmIRhVKYQhju6dPJ7EsiS1vCI tIi0aDVP498PmmNO5PPhaGJAz6nFQnS4wbMhcNMWdPPRZ3liYLXvjTwJjMe2ROHJXOeOcKjR8aZA 40MIye84lzz3oc3OebczjE3NTcp69zeAtvPqZMdH70LJzSsxq5HnDjx1ucpnTSFI6GL63K5Hnjlw 8hZENWd3TCPMm6eZzzm8+lzwYs0hHPr7pOcRSpJnDONtkozzl4kMMkcUiJ9CdMjPG5mZWcGi95h7 RmTo9oUhU5JjoyYOqZ+Glc3KQIWwRkisnnkvpqnWyJn7rbKA0NU8zHtGameJvSR7eFi2fHOag0ei DXEBxXe9Yjc5RZXuVyuVvctnhF3vc9CyZwwvSYm1yedh844R41OTp8+55PMb5/anGL194UjvzHHG t7ZxoI83x7umjo74ZOK5KSMbYrbzSKdMkNPr+mkx8Ud0ncnyytpDPOon9JOUmT4Y2sNujkJlL4pA m8wRDnNEjkm2LOkuHkeeIKZRSJzR9POcMuiRsjHHQiPIfqU4ZTzLRMYmEjGbG2cj297777ecfUzh x999Tdgtbz6uccLzjO861mku+EDhtuNtZ59nOHXxh51x198dZ043jN99Dyd45wqITrMyEgZ0/H5y rvZ5CclfZ2z5AP3tYvHM0Jsyda2jCuccztvNvjyjNrONb28+++0Vz7777WbazbW59rc+xua3sbn3 2dzm9zO97e99vc+xvfffffa3vvvvvvvvvsbn33329z77nfffffU3uffffb3Pvvsb333332Nz7e59 9999999jc++xvffY3Pvvvt71tzG599999999999vdH72t7777e599ve+++++++++++++3uffffff fc777777AAABtpXj5MKjLy4uo/uTGtOhB+P/Ae9C6XyuZv5k3nezpsNjtii2LU9AgaqEkvLxLoH1 X5/II/b+Xc/xo//+X9sa2nv04XGPvCX76v6qbvtLKeAOAN/fF0y2DtjjDwYEIEJVitWqn1JdBElu 3LtPkjBoPld+EMv7VHVHluzDlLpVOnTpwVGJXhL99X9VN32llPAxcJAPB/94/BkYOBSuR////5Uw YfxQXFyr5fFPrJzNYJQQVQkqskVy/kjXKVvDYwQFSu/APEvtUaXqPLAd4cEsuokeH6tXS6Z9SInt 78//+X/7Gtp79OfMAwG+BoGAmUBmEIGg++plL7Pqqq569xrOXhqWT4jyVKdAMg+EuK7YX57uSf/y GDRg0LgeD/6xJBkYMVu9PRvIpztZq51OnTp06dOCowYuEgHg/+8fgyMHApXAHFwlf8P1au5n1Jb8 +j////////////////////////////////////////////////////////////////////////// ////////////8iYNPgG5+weNWwR1iA0YkKhLUl/1WCNvdWp4IA+Lh2CHoG5uLKem//////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////3wAAAbZXYDIy58+KnJzLhIL/l4lCUP1YlF4QlasuVK/iQP6XUfiVf+n6Pi+iUXj8SgPl 1HXwPF5eXbqhX+HQeA/wQeAgQweAgSweA/zQeA/swDR+DeB4CA3AMBgUIB4+CF8A9WXA2hCEjBK8 Xj4ffVqQgj8fKhHH6qKFKkdmgWwBwPAf1YPAftoPAQHoMAeDAgAGA8BAjg8BBsg8B/ngxeDwECiD wH7GDAHBDErwPAf1oMJYQweB/3QgAHBDBh8DQSBLBAB4D/NCAJQ/Vg8D/xiQrBDB4D/LVgxcP1UL ggF0qoStVf96AeDNHIGLwYSQYuEsGCADCWDKwYIQk/VfEkGLgQQgg0Ev4+t+Pvj8A4S/iUrpdVfv K6qv/WqlPlVszZKcB4CBNB4CD7BAB4D/FB4CBpB4D+TBgDweA/xQeA/VwYSS8HgP5cGCADKweAgO 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 SdP5lYPZJOtcYg0v5oXr5gTBTwNYBYgo6SGUz9GVPuEemPvoVNVs+8Z+xaZCs9y1jvCZohmCOfPp +xp4vlE2U4nnFrgp1rh9hwz+smkYyvUnDWa3nGThwZ63WxA6+ZoWLb1neGcID4jlqgUNxoX8E1Pn xn6RQy1aa6nGOHRCKcuOPvGFjM706Mfo0jZJTkGqmaj31NzkMoxJGs4h506vnzjWeQ89hlFxxyvG evFnHRS44OfhH0jGYUMyGjjtGgzMgrrTcGbn9IgtGUecOpfTVR0avS5aNdT8IXIefGorlK44Nt71 ZHHpM49w3xk7hEMWYe/rxkzvCN51Jwg52PeON5wfvGTmddhp0OtbkmQZzlLDjmdMNG081ZYiHPWq Luy4f6RjnT9MmukQy+YYrBK8ZDnGI0g1Z40YMDLt1JK5hc+84zhelo1G/CkYOcFJ6RuedGQ6+EQy Ck0gvOPNjIRM3D7nirCg6z9IoRpctGR9wV/hl5sKhhZMeCpC3OGZT8POc9fDhzkIsBYHmeHTQUvM faTuOEyu9zW98ZNznOfa3K73t7n0m97kW5z2dzku5zn31dzm9yLe977O5y25Tc5vctuT3Oc9Xe9j cj3Oennzx88hZ9ym5z6Pe9z6Fuc+1n1c8eY3t55rcIu5z3N7nK+ruchbnvrbm9zG5vepuc1uY3IW 57629vctub3Ie96Xc5yu56Tc5yXc5yPe5ym5z7G5Fuc59jeJNznK73qbnI9znOVTe5be3ucrGfb3 Psb2tym5y+5zG5nPuQ9zmdzlNzku5zhtue1uEFvc5nc4Zd7nOV3OSbnOZ3OQtzld7n0e5zm9z625 8VbnM7nPtb0m5zm9yu5yHvc1177O9z76xXIefc1n0u5zmc8fb3Ie9zO8+1ufY3MAAAG2luPk0dH/ p0/9HR////4KjEsSvqvf1X5TMWlGIQ1asupd73vZ+Ztyd506fOg3/+8XRX6Zqtjjc+/yq6q9V/QY X2ZIP4PZI1R31c60xyGP4XGEJUqL4X///++u5NvO84aEoS/K1fsVfUXV7Bh72z0lbyHwaGrLwZtW BX4xEhUqH4Iav/1e+/uTbW6f/B8YliV9V7+q/KZi0oxCEDX/NVb7S9jnB2TBDVqy6l3ve9n5m3J3 nTpeXAhaDdVRX7Gr6f6udDA5Kpkq8P////////////////////////////////////////////// ////////////////////////////////////////8iYNPgG5+weNWwRxUaMSFQlqS/6rBG3urU8E AfFw7BD0Dc3FlPTf//////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////9AAABtlhwQvpJF4/A9C9XBKVq1Y+U/A98vVQuV/Lt HX/l0Lx/FX77tVQvVz14PfmweAgRQeA/tweA/twaA8BAng0Lgb4N8uCCPx8Pwg+AO94A5UXK1Y9V lw/L5bB+PxK8owffEXdw4DwEC+DBAB4D/HCADwEFCDwH+WDF4PAf1YPAf26sEEHgP6UGCADBDBgP gw+AOB4CA9H6pV8SAYuEkEEIKoG+JQQy4Hgf+cIYQxIB4KAVEgEAfgHeHgkF31AljpR5T56eDwEB +DwH+ODwH9KDwECSDAgA8BAkgwBwPAf4Y9B4D/PCGDwP+2DwMA2DwUAqDwMBKCAXAoAYEMEAvAPB gNg8D/qqx6PB4PAZpUp3eGgQAZUCCXAxeDQAwG+JUVwfAghAEgA8uhfJFcVCSXeL/RXPX8n8/3P2 ay8HgP5sHgP68HgP70HgIHcHgP5EHgIFEGAMB4GAdB4CBXCAAcPwh/BoDBD+qAPBggAwQh4qVD8G 8Jej6F4+qv6v/qEOTQPKpZLeGlQ+HxcJBcXCUPlSofD4fKvFxcXF3p5UXKvRR5Uq97nvekz0nJDj 77zffffTweAgSQeA/tweA/twaA8BAng0Lgb4N8uCCPx8PwgqgDp4A7xcrVj1WXD8fy2D8fj6KMH3 xF3cOAgAyoEEuBi8GgBgN8fRXB8CCEASADy7xfJC+KhJLvF/ornv/inPjvP2aZB4CBfB4D+dBggg 8BAbgwBwMJQlBDB4D/HBi4Hgf98A5WCCqHxcJQMB4IAB6gSfiUJP/F48CCrVKpipUX+UyqYpzMrw eAgfweAgVQeA/jweAgNweA/wQhg8DAUgwQgQAQQDgYDwIAIfvD8SAgCUJCoSBK+JQkQuLoJQQy9Q oA+qUeiqenomcvIHgIFcGHwPAfz4MAcDBBB4D/DBghg8BAeg3lQMXghgwlKwQZ8SwDxIEgSlReqA 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 58fufW3PvofD7n32sHEaFInOoe88kzgWk6LaMiw6OZnyBz6WWaQnWjw0zLjjBTa+iMPHyOJ5ki6R GxpPCXXHUmbITrWYR7z4tCtkB46M8+A8LHvR4ye5P6L2RW80i2xvdITDIC08cObowJRehZAQJ6EW GiXTCnQx0aK58nQtsjFjGRJcWOOjfYMkxhnPnVs4+++++1nVdx199jJH297WQt72sgazb777fTj7 45zbji25vw8+zhX3h5bc+30+10LX2s+3nx31YiOM58hfazjegOtZxXOvffb4NX3284+3hW3nH288 +vvc+znRS++/Y3vvvvv33333333333333337777777777777777lfffffa3vtb3333333331t99j fffffvrbr77777W9yvvvvtb33K+++/fffffF733333337W9999999++++++++++++++++++++wAA AbaX4+TCoxK8Jfvq/qpu+0sp7yj0uz01c8n/guMS/iV9Uq8ruZ/EvYfsEkfBCHY/9f+o6ySXrbNh MAYXwIY/t/4S/wu/+/VKqrVjr1EaY1MnDho/31k0nVj2ghFyqt+niyHv4aGPvCX76v6qbvtLKe9P el2emrnjB52H////hQYQ1asupd73vZ+Ztyd506n/nz98IReEEDhd+esHfbZxpiUnBhKEtUEESOfE u2T6jitWxqQmst81bCISRL+Pi8u94eDvl/b73eHTR/g+/4SB8X2yqfKl977Tt25PbVEajESO/DAw hq1ZdS73vez8zbk7zp0weHf///////////////////////////////////////////////////// ////////////////////////////////8iYNPgG5+weNWwR1iA0YkKhLUl/1SgRt7q1PBAHxcOwQ 9A3NxZT03/////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////3AAABtllgQvrYPAf0oMEEHgIGMGEsGAMB4CA3Bi4HgP8cIYlg gKwDAYfgwHgUBcPi8S6JPgYD4QFYB6oD/viQqVTFSqz6gv/n2th0jy8weA/uQeAgSweAgSQag8B/ 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 ExIPziLxohOnls4Oc4uSPWKYZlRg5eRk2xM81M4OvCGnwpcwufOOPqekmPGH6meQPYzgx7jxCeU3 4u9HmxU5jhCMfw4dbYFA0T3jdeOWcCcILbP004Y8lNkT0vnHmyRCyUYos8FxANMhZpGdQ8IwrZxa zkWZeh5MbXzx0fnh3uGTW59rc3nX3333332sgfbydrsC59XCp77c5r33k1vV+kj28238JGe6GBKz 4aNN7RM1nH2dwWtZxnzpAbb3Pvt728aoedctuffZ3hW++++3hU+3nG8++++3nH33777777999999 +/ffffffW3333333333333333333329z7777777777777e6++/fffvv33333333333333K++++++ ++3uffffvvvv3332tz77799999999999999999999wAAAbaY4+TCoxK8Jfvq/qpu+0sp4A+Kh8P5 PD4u94vk36tRJq/Z27ToTGrCCqoByqK1fZfqB0ktZwmnqpkq8P/weGXlxdR/cmNadv4oti1PWfvm rYRI/8NjErwl++r+qm77SyngD4qHw/k8Pi73i+Tfq1Emr9nbtOqwgqqAcqitX2X6gdJLWcJgkOSq ZKvD///+VMGLx+OghD6+HVA52cBjAQx8P5KCj1X7OebxE88fgb1okgGiWqEu0fqp5XYqLwO+liv0 2T+xp6tXJFf5OSfskjB288X/Vl0Him0Rh1ct3Dn8HBiUJflf/Yq+our2DCe2e9K3kPo/58wYvH46 CEPr4dUDnZwGMeBvfokgGiWqEu0fqpFdiovA76WK/TZP7NyvCGPh/JQUeq/ZyNlj7zxf9WXQeKbR GHVy3cOMX/////////////////////////////////////////////////////////////////// ///////////////////ImDT4BufsHjVsEcVGjEhUJY9L/qsxRvdWp4IA+Lh2CHoG5uLKem////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////7wAAAbZacEKLB4CBfBggA8B/OgwlAwB4PAf5YMXg8BAchCEoEFUAaDD4GA+ChVj8 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 jp9fPDRj49vc3ubzj77625jhOtufffZmTcJWtz7WuTvtcPt5t9vNNY1Zz5xvGrPMJeGm56bfZzB1 rCpve1kTWcHPSc2dW3N5G+++zjg4cbzj7lbzj7777Rzj777lffffZ3vvvvvJ995Pvvvvrbn33333 333333377lfffffW3vvud9999999995PvvvN9vc+++3vt733333377777W999999999999yvvvvv v29z799/fb3vvvvvtb3329z9999999999999yvvvud99AAABtpnj5KOTNXsHnpg7mbSAeAo/30bh OEhiX8SvqlXldzP4Ww//CYy8uLqP7kxrToQC8IKouV/VWf1V++uY3LhOSMvA9QQlQ/4oVz1i47h/ 6OjhEYl/Er6pV5Xcz+FsPkjw7///RwVGJIB4lYEIu+JCgfF9vlKvwHP2VVd3/u3bjxK9BJHvx6X3 5d1R4e/ud5y8mODAxK9BJHvx6X35d1R5T+53nLyY78+YQAD//VKpffvqpYuMPEsAyBC+q9S8feV/ Hnrb9V79tX19g8BS+n4tZKMfe33/5c8IkjEMBgav/95NHmjrzEjGRqY70dHDwwb4l+9AhF1kmjru AxIJXoJI9+PS+/LuqPKf3O85eTHCV6CSPfj0vvy7qjw9/c7zl5Md//////////////////////// //////////////////////////////////////////////////////////////kTBp8A1R+weNWw RxUaMSFQlj0v+qwRt7q1PBAHxcOwQ9A3NxZT03////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////7wAAAbZbYDIg87Tb1d4P AfwYPAf5IPAQQoMCCDwEB2DwECSDBAB4D+1ANCGDD4vBvAwBoPAwDYMPB8JA/CH8A9UDwP/KCArB qPgQ1ReAcXD6KB8XXyseD8vxXmKZv3I/KDjwPAf0oPAQMYPAQMYMJYPAfzIMJYlgwkAwkCWDQSBJ EgGisGqtWDVWJZcPqPi4SxIEiyUShKEn49qsSVVyqsUS7ZccDF4MEMGHwlgwQAYfgysGEgIfy5WJ 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 afXOMzCedGprx9jctnGNzXCcQuEFJjLmM6O94yfZ2W3hUzsU10kFONa86zyYQ8IhrkzjSXdh4aCD 3vOs7nDnOTaJzrPNr5jhzxk1rhmOcgykYyXxo4U/SInOjrNnW82ztv1w5wrIDTOwuMdLExsZcYsz sEMjPoHBS8y+jNPxoUOecHPL09r+EaTxO5ogeFnQYNCQZ0+zi3pGOctzDsyVI42lzxx7PuoTrm88 yUZHXxF+4GIcOPm2sw1nBXjIZK4VnhznToVtenBebcqHw89rh59vPrb19z32NzyffQtz33kxJw+T 3k++xufY3voe97O96Lc5zW59fc5999rPPvt7n3O++5XKxn1Nzn331tz77O9z4k3OehbnvvvvvNqb m9603Nb329z7629Te9rc+++++++xuaK5ztbnO+5328+52tz77lW3Pt4CH32dzn197n3xNuc1vfb3 vvvtbn2tyLc5z6Tc5z6m5y25vc+puc+3nn2t77e9vexufY3Pvsbn1NzltzG59wAAAbaa4+TCoy8u LqP7kxrToQfj/wHvQul8rmb+ZN53s6bDY7Yoti1waQIGqhJLy8S6B9V+fyCP2/la/xo//+X/7Gtp 79OCY/e2e9K3kPlxeXwfTbreHASHPVTJV4f/h8ZeXF1H9yY1p22KLYtTwQfj/wHvQul8rmb+ZN53 s6bgQNVCSXl4l0D6r8/kEft/Luf40fYv///5UwYfxQXFyr5fFPrJzNY0yCCqElVkiuX8ka5St4bG CAqV34B4k9qjS9R5YDvDgll1Ejw/Vq6XTPqRE8z8//+X/7Gtp79OD4wDgDbfF0y2DthI+hApco9R LVAfgHo3J/vOjsh+JAHvYDb6F46Zk+O+dHZDf5tUTPbyLQwDA7c2qJnt5FoY/D4wQVSqD6QvL5P+ /ORtvpkEBUrvwDxJ7VGl6jywHeHAYvgQR8PPe/63JGPVqEYll1EhUP1aul0z6kRPM/PsX/////// //////////////////////////////////////////////////////////////////////////// ///ImDT4BufsHjVsEdYgNGJCoS1Jf9UoEbe6tTwQB8XDsEPQNzcWU9N//////////////////+YM 9/////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //sAAAG2XHBC+S5nmYMrBhIBhKBBBgDwQRKBlQMqHwNoB4kj0Dw+HpcXaB4u+P/gdH/1SqYqVf/3 5gGLggg8B/Sg8BAdgwBoPAQHZeDAHA8BA1gysEEHgIDkHgP2sHgIDcEEIIlj8GVj/4MXhCEj4kBC Bi8SwYSgglxcrEigHgGF4HwDAD1V94fhC95RFNUBD95yMiBBBlYBheDKgagGgyof31H4IAQRJCAX 0u2qqrEgf0ffqq/nv31vrZvvXG5DQPAQG4PAQXoQAYA8HgIE8HgP68GH4MAeDwH8GDK1YPAf2IMX AGgwQADxIVBCLwgiSDAgqweB/3RLBqDQSfAg/LgYIMHw+UghD4IPqJI9ol6P8y+Vq3gxeDBDEkIA QQYSwZWEMEAfA2AHCSCCEEfhAEoeKi4EISC8S//Hw+A8qtVKh4qs8oVW+mZ577777776LB4CBdBg gA8B/OgwlAwB4PAf5YMPweAgOwhCUCCqANBh8DAfBQqx+XCV4SPgwHggqgDi8D3/CSrV3VauX2ly odN4aB4CBdB4D+fBggA8B/lgwBoMJQlBCB4CA7Bi8HgYCMA9UCCqEtWJYMB8IIBykSIJQkqvlwHw gKlau6rVl1HligdbbscDKweAgmx8DwECSDwECqENUCCDwH+CDwEBqCADD8A9WDwEBn4AwEEIIlAx cCAAeJIQwb9+AYXiSEEvH4BoKBWPwQ1YlF6v4/L6CGr/+X8208xg8BAvhCBggA8B/llwPAfyoPAf 24PAf55eDF49B4CBBBh+CCDAHiWDAHAwkAwHwg/B4GAbEgA8GEuBBBoXAwKCqgYEIIQMoAOBh0oE gv/4fAaLrVR19999999OYMCCDwEBmDwEByDCSDwH+KENWAcDBCCEDD0SS4SqJP1QIYlD7B95WqVX +iWXl3hHL1UxTvTQkf+DUSgYSwb4MJQBoMEAEEEBWDQSxJCErEkSx+DFysSFY/CEJYKD/i4GHgN8 SRL7Zf+vxKVRR7tlyPCEDwH+CDwH8iDAHAysGHwQgeAgNweAgpQYSQQQeAgPQeA/iwYuEsfQHgP8 MG+PweB/5RKEgSwQAgCUXhABhJEouL/gwIY++PQYIfwQC/0VCQq3xdvr70UPBgQAeAgs/g8B/k/B 4D+nBgg/B4D9XCGDAhg8BAb/BhKBBokAH6qoMpBgDaDKwaUuEnQYIHlQMX0EMIAMChV6ENV73Qbs g/UObK9999++++/vvvv3999++tm1cHgIEEG8DwEGODwH9yDwEC2DCWAaDwH8eDF4NQeAgMxLBggA 8B/dg2g8DANiQCAJIIKsGVlwPA/64l+BghiQDD0uH4N4ShI8oEgSv+H4Hggj/C/J4e+HbgeA/BQa A8B+5g8BAtg8DAbgwQAYIQMEMGAMBBBvg8DAOggAgD7/hLBoDKghiQDaEIIHhIpeXQSQDwZLPfHn vqPsaeTweAhPZAeA/pQeA/wQeA/pQeA/wQYIQMEIHgP8EEEA4GA8CCDCSP/eH4MJIMrEoSFQkCUD KwbIXF0EgENRgIapR4eT09GMjgZUDBCEgIIQAYSgZUEIEEfg2gGiUCAEAfBBEseqy8EMSS4SvKh+ XgfL5Faseq5/6lWO/t/h8HgP6MHgIEkSQeAgbQYA4HgP6UHgP8sHgP8cIYPAQJYIHwDgYfg8D/vg oFQlAwBwMJXxJ8DAfBlY+APLgP+/VSqYqVWfUF/x21sOgxeDBDEkIAQQYSwZWEMAwfA2AHCSCCEE fhAEoeKi4EISC8S1asfFw8LrVSoeKrIoVW+9mSnr777775Hhyyg8BAig8B/bg8B/bg0B4CBPBvFw N8G+Pggj8fD8IPgDp4A5UXK1cV/Lh+P5bB+PxKijBK/1TbucbPBDB4CBZ8DCUDwH+CDCWDwECyEM IYNBKAPAOCCDCWDwEBuDfEoSgb4QhKEseAoRLEr5daqVgfVeH8VF99VFub+T+PAMBBBlQNAZWXQS gb4BgQAQR978VwuCCJRcJKqK5P+iueL/f8pnv/m5uWxl4PAQI4PAQM4lA8B/Xg8BAng1B4D/B/4H gP8kIIlAxcDKwgj74MJABgN4GLwalyoAwAwSC8EGj4SAbJBKHwkeLh8JZcqLi4SlKpVPWez0h9cF wWANoMrBr8GgQAYSvgghB+DKgQFQ+VAGA0okj+gGBAVCQXAoBKVCQEJSCEJXhKHwKIuir0ipUOvZ DgMqBghCQEEIAMJQMqCECCPwbQDRIBACAJQQRLHqsvBDEkuEpV4fl49L5Faseq5/6n8n7u/O3333 33w0cSweAgkQYSQcClAPAPA8AePBKBhyOx2zmsCWJKROBpKl1XGm6qLgV13J/cU5F7yPD+DYDYDK xLBh+AaEIRgOgpgOj4GUgykdgykeqgNiAPWmE4MVsNarbHKvcbAzkU8U7zZHAgAZ4MXAwIAhggAw Hwag2pVY8+Pghgwgh95htnU+ApxJaS+HOfVe9Oe9ZqhvebyTsO8bwZUDBCEgIIQAYSgZUEIA0fg2 gHiQCAEAfBBEseqy8EMSS4SlXh+XgfL5Faseq5fqVcn63Tr7777kb77777777777777777777777 7777777yvvvvvvvvsb333333333333333333333332NsWqawrxsPBkNsnOqZwZvrZt9betnnxJuO OH51bFzGQPvvvsZApkxCsZdOrGVWIljJdzmSxlicBrGTLd6mGim8KlMavffWzrGeYzr76mSthitm mM6++xtkD76n0qPnn0nWEz1hAEwYpMKYF/EZwa7WgkHj6PoOFAVDRTJ6Fqm4wi86KheMhrNcVU05 k/GXykA0KGZ82rhEQDLoxQJqfGYyZFCYJRov4QQ6Oc7qYYuSZONEYLh9nOi1JhhwZGUmVEvgj6GK ebeTpNh1fZPHkuCfrnp55y4OPjFFw8fI0fnWgje0F4y50Y0E1whZ44ErkX05090YMYuZ2zWDFTeG KF4bBZjb70nMIt7icZ6YQXtalJYFy3HkiFrw7U7SYUJyINJCQmb8aJBnnBUNSdyehOBoc8pmDrqQ bt94R81sYp4xg1u4mXactp9PgSW9NnTzOibJbXKejBkVJ7TA1gyJyJPtIU4CmxoFiuUDMmS+Hj55 JoNJgxGqm84k0rYVVxlCwj5wWp4z4TvPM6F/TI0+CcJT6HjUlXxbDwVskOnELGeHhxn3DFmxa48+ Os69P0yYtuwYbiUND6LZFgWxzWycS6cadI7waI9m0MeBZrkuCyppdyeGIyGJ5JnBbdGa84jI3p54 jJjYx8one0MzoxYo6mOGnI84LI9Foz5khTxAJSoXi9yXedPosJ501XDL0NyEYHHjTRDCQoaGD0Xp yBPjREM9sEjkBI3hkKTYz+rGAXAhBefJ0e7xBGRank4Vk5EMPJxceVyDnBeh9POGXQn+m+7CI2l4 cGoIgxGfD4VjThGeZ2jNcjyPekBpF4RmjyHohedGPNHXvTzw0cwlC1FjIapRmMf06bMTTwzzp/j0 LteznGQxGeQcBMFdPkyP4RsLDSAsVMHEQRp77h073DifRkFpqHxnv4GAcDEgw+nmYnFxNppHlb51 5Enrnio4RYSJN7ApSCxvF7EjqFhWdT6cgylixo6h400oNs51ZYKW8mGezGljHDbTyU2M9kxQwJho heMpTxE84niuHTYzVz0DEZ5A2NXsOOJ5EgfQxNIWfw8heosJ81cIk8+a53Dhx9XZdcFTHF+mVdrp /GtGKLIBo0KRjwvh4nh5Jna4bmRlzY0gvYOo8jGoLFnAcTIvemH8IxLuzRa8a4vGjhiwwcCa5nOB cnhMQHBWMWaIyYZjHpzxUbqA85LtHzmjFfIgrH5tTYGg5GiewF5SgGnBo4YstRmTlC4Zo88pNDY4 3wiW69FnDgYIupRjCNzJdTHkeDQc/OrHoyMD4x4XHYFDZhjww+NMneefc7OCyw0i0YzRDVMC9S4D WhcTjf1tEY7hKcR9Wg1iQZuSadYLIjCY2NMxMMmxToSCPOMyOnUuIY1uTNO5jTThvsCroYhklxhD 0eI9s9Dh42aG26EIh+bo1Oh6aODPGouFBOdT3Xhkl0iR7bYCkoRNBS1n0PesLWcJNTglPp9PH4wG AOIBxmziGXhoYK8JTKHkRaNBizvBgCxOIsTjQmQ811cWIWb62fTxd1tKFjjwx8jjjzqLumKYNKfT x9KXBcTuZOYLRk3m0vQWuUMQ2cIm5YnJzg50oyKXmku0LSEPASUebBxC5CwqIBkzRwJidF9YShbZ pYb50+M+gsTr0RBhpP4f53CbamOsixJgsZgTjV9nMH0eMxkF6XrCUFlRa2RJ64sLSF3NFa+C81kE 1TIglScenIrzvSFfCbBgt02I85H06yZNDjGTlM0NEn0YDN6fxobk70zATm0WLz5sZ4sZOi3sJYcW yJD9vSIJhSWkrjSX3TwLUwvjLo2cIm0frsjYuI1eH3N5pPy9NGEUCZMysRDLn/b3IEZwgQvnD59P Ghw6NGcKiFJvJzSedJmTBMjxZi9X4noW0TsZho+mEucsdh5LrkpDaSIs9q5jSrpCjxBI2YnTnCVX CxM5PeRLnydXTk0qEiGX6mGjoEZCj0xzgvWPoeccxnX0WZPE6TJUoyPCJsPPnzzfO526fW3raE0h ZCbTkwVHQWcJseFHssGtfhx40RYxFiVKEifEfSJksPpD4mTwwNkxCkxqUk8J19t5pTF0PIt5ND7O Qk454FpM5Kfg1GmHxjyc0eGKeeOHeGkuM3hUh4wMotMSQjPK6xutdFiPtwh6d1yu0CXKRDM8DHRq aDA0MR4beMyFPIDqEa4Um0/GkfAXuJhTwsCzrKwvHOSdMUw+k+u4neiMp41NmDKT5rZCF27wYDPP B8LQsSUnNL7TxknjVp8r8gXJONmGoL4wRI8kFptDOycFbGRJcYmCNbqU2l6Ttkva4Y8mJobGghTA yQHmjh5vMM/SZ7OSGhz4mIdZPHk/i5hhwYowGp7ZrsZAa9pskGuTJBrTqXPBg5HtjMUMi9C3nX1p ioZOHzoLXjkKTo9iUD04l2zfDpIniZh5GQpcyQlp5CzY0RZll5xPMUjt4eLD6LOtk4UCJnjOid6T O9N1lYhSYnmutckLh5YWEyeFfOBi2J+tB6VDJPaJxmL9GrPT4JiTIgTHJ6509QXdPotx6jRF7usr Q0ZevhYZQ87003kaTJ4f0iVxqsleImTmqybeO84fGXJRdpMYawHjLtDXecN4nIBk+k+940cP6aZx cKl94vfGnCcanULBbaUOSaEzCEgfGLIsC8jwnSYTi6aLBrnFhaToe0CxGrWSo/hIfp9rj3mzJ2mU RWSh1eCyb3pcnIjK3Rgn144JT/SZgjCMYsF4fJjgwtGAoYG1MM6wnCsQ8Wtgs0g1eOc4SOGXfMXI 4UEr0PJukiPGA1FrflBMGeEw3CknJT6evFg6NkYhG9FIhZy4lIQvehZhsnQ/qYZsRs2pkYvXyQHE aeuAk6TitPFpvDo1RZ8yTq5lKTJfe8AwFeOclzDjiL1rGaawxpMjz54y10ifQ9wLBrPt+cp9bOp4 UXh44Sp5MUBPLW2hkcRem9QjLjk86Es6bGTHjl/gYHULbGlNjPNJRaNThtSZC8Yj6/SYTHU8FmM3 YFKTFRM9ffqc0h4ShSj0JCVkhwac1cI3hQNdCA9Ted4lp46mGCACoiIVU+qvYh4gN/ietph0DDFO RH+3sBGJS4u+ra/VSlZqlrxoIu1h+YQa2cIBl1jEgzdMGq2bT+pDx0+fVyMrXJk/hPWmTbJ96X6d 0EsQT6XoLY8NRzhZATwmVzTVJl94sXxXwnR9iRg9pgXM5wnRZMGJAN/hwWnkfXGBcMcnOKk73K58 8JcYcXInvpMnI5IgSi4Y8+gNBKNRnKhMSHj7mt6LaXIlxeF409caPJ52jIiGqLIDeDQd5G5bC5Jr HG2RiQiSSVwrcNZhZxkydGvpIuYck9D4VH8gzR7iMsPJMKs4GGkiej6MbCSMOODU50WnE8lf1cUh ALxLnue780FOW/kTDASKENV5kt0ZAgfHyno/L8BUeoxAOnx8JTCqL0RUL4feRkGKEFLZYCR7+TNx OTf+pnR4pVb3+VXEE+OYY+JH58IPxKBALy4Sy8umj+VXaqVUC/8+qHwEwYAgZlimbcynJvOdXwU1 X+S6XKs83RGUxHJnCcfKrbaB4eWfbaotOJgkXt1iFYrl+wKOyxrCPZFrhZiU8mCQbvejXcPeTNBw Ze2C2krWRoescJBnmAvx1p8+n2PGpCaT42FxEo71pYbimHBtIXHEv08IJGiNL7JjSNFpxmQBYn6/ MI8FGYKU/QxPC04kyY6RjvI3r/DQvGXQDI6NQmS5Im151XPnWOkSH4THBiwuuH8tPAtELbTn7Gnj HrksPnCFJvBYPGPGBkVdJH1dOap5vSGnx3uOIvAobgyPteTKJ2JQyrIm+5nnBc9X1ONXs5/DyZRe MjgvEvHj4D6raqtsZYwQ0p4nGci7/vq2/jxUi0aCV74+kwSrll7Vd3QiEguL/X6tUJdg8+I1ZSMJ OuBp+xVo6L24B2AaxNqtVEfvon9emCQQr/4SZANKlPR1B/FKfmi2f+JIHFI+VyWCNN/NKwtHylTn 1JaKR3PyqlNUVLkqRlIaTDfRV+fBmGhEuq9TzFhSXDwuUgfUe+rywEO9/jPlIGEddPKi9VZVJd/G h5+f2AX8YEvyqfV0efUKe2cULbv6fGclXvF6j6oD//qr+fg+k56rsK//Ar/IIkDKgeEv2UDzSfzS IWAh+UcHttu9mI8yt6u4SvVWqoj1adrCaSi4KRn+/L4tEKUniofqJZqi9zVCyI8qir0V2+rbbOxH 2OlLhKvS8u/9bFeeoFYzEZ9p6eoU3MsidscouYMYvG05b2gwRqK1J5V6Zc8qjQJ/lNUZxSI/ZUbQ rRkGhiQYJxkx71clQsLs6RpZe42HwSmmKFSeDiVvkwTEqhcDIwEfVgRnUE9OEfHPS4Vw3nDSXtGR 4YqYpch/DzkWLWiYjYzynSekiLJDhIvtk8PtbJhFmmReYEuAx7kWuDj5s+j2QFgssJxi+ojrzR1b e+lwvwPXxIVn28Xq5sYoWFqc0j+jAKz742zhMOMmOLYwTyE48ajLqWocWAY7BkvhV0VjLI4erzwz 3i4FiweOoinOA4ntgFuBoLgpwxfVf/VUqVe1WXsZQcCmU/iAjEoGUfBtA/ZVaj+ZCoFKp8n8Mghg oNLgQ/l/p6VoRr6gTklGZePR8JPx5Lf/tbxT4dM/YAm94ZBTBAGCFlZikC96oLEnenhKBCAyytl4 tuNLuLruwo6jYGqpIlwBI0GqeJVLi7ONJpAGF3PNIcmlg2IlUPj7DCc/TJucZucGyOgx3KiBECtV wPhwLvfbWTB6NU+K2p1vUxaOikjlzNWZZaXzS35FMYa7oeeF8QAjHwQ/lDM5iwWb7J2zwFd4unpG qa3VGd3c4yQAhK5JrE7J3KnxasSUgIky6rVTnNa+O/Islw1J/czvOtMcbcJXi7BH/al0tNxkdArW hik3SdP/jkPIDKvWCHWGQpSZGNDqfLpRpxNhMzNJT6e9yNY5HJ4ULbiQVHhqnnkYpwZG28VJePyJ HEqLJguIEmWkTNARWBmnnzkSnSRHjS4b4TjvHBo6nniWigXJMLDYvffGFm3HmvoYIUqesGSHuczk QTpM0NDiHpCEoOLfRg+iODiMIjzPXBmn4CwMvcwcME+k58XGWca6YTloqecOKzeRJ/BAFnBqKodG ey+e/QPjyb6pNGHwZi8lqIprlBfnL6VYdGnJggDKh2tmiK25VPJ2o1kO+3uKKA8uikDPluCEMU8M oOXKrPM+6yIblQ6nxG4t+AuU8u21kB0nozc+hR3DQM0kX4L1WrVN0OUh9PEoej7AYRy6pvK/XRkJ V/73u+qbflyqaBW33tS2Hy7axa2vpWc81datWmaWQFVanDIKZS4e258EL8SqCgM53mqwPcl6JFRS aP9iW+UURK8fIizBcXZsaHCBR6Aqkrz5lM4+qrcHqv9qmfn1SsSxKswGSK7AVVd74G7C37eL3VSk ZD68jHkpn0inLeYBSwEY+mWZ1kIruHP+uSzG18QGpneGkPpj/zC2fEL1vGOGF3LhS9nIDYgtOlPp +DU6hetG4QoeLhiizIsWIR1nnJdwwCgd6A+5PRinun368a5w+eSZg6dQ8iermhq+pMyTjicPuXwW Bwc5OFRM3kLWTqfWT4yQ9zFOK4LU8pwgcl1iJPGgWosQskC5iax8SyIgyOt7YONp/WTWRsZn+itF m4aOM/SeV44KMSFF3w73BECTcwxfAZnak6jPjMol1XMo6Si4vhet7Qi7v7UWUW/nDTk5+eqQ6lFC oLQCk4fzYGvqJDCpQBm7U1FPsNqsiwqGWcHUY+hgMLFOft3i0YKs0iceGc/ZxgItagjBFxgBcxPS 0Vn0w+Nd2VMyWnv+LqB4etStwQnnle8UMEwi/1bGFdFBj9xqPOp8+KhTE7z7gubedTljZW/mHK7p InwUe20VKrcORhYXjTmjWHHDrIzgjz8Pp3HzaF3RPsejxkwNHI8Fo3hLInIEWewjZZIGcJ6Qr52H 0pwiIxo3jRfNip9Fpzh+n2t6+ZOsb2MaMSNjv684OsXnh1nDSeFyBtkwudPIecpxHLpyEJ8czNO0 2zrkmEY4ygjcvM8eGTYFhUfxKMtch4zGaeLdTjBsoMjBP67+YkRhhbljQD1YjCOyFieqEetntSoD KrNaffe6I8SHxn+9NXgTewjDLAyemeN8tLY7lofu2JSsYvTOqoZK/YoJfvsyG0mGew/XpZZDh88w C5tmGs0qcwQL40Oop7cFGDgFl5E09PVRkjgnkc5LwxHC9T4FfD6XcWlhqHkLME7O2bDBC8NBSlz7 JwgGHvGr1s8n9YE0eA6BYzkxt8cY1CpC67DoxSefCzBqvmBo+1nBnmzGC0hPjJ0ZicJDgi6Y8sdP jNTPicZ4LJ4qGhOh5ghXPp44lyclI0edNkIxcFx8WHV8xKcH4LUYZETw65FxT6doxwks9PzcaLRg nNnL7/FqIBov0DjFYYEMYjz/gNTzd27C0wPp7P29CYKeXRXdvB0uIR9VW+u5GBoqtWJ6e6SJ5UT7 qkkDNS0cXBMOgBedMIQJhwvBaNgmHOM4mPIU3NH1eYSuQ5jNCEyueOJ6cgwkLArDBD3BcxzTymNC dfBzD1z6euLBrzrwqZ+dCzrBM3I83s0WDmRCcPJ7JOdXceaz403nT774y4RcJ+ik4MmTDLho8i7x gzHjR8dZ04ri9yLh5cUC1Jmj4uGThFw6ySPbyR9bOo8anyNPIHkY0GKTGuWdDZ4ZJ8XPGj5pDm4k VzlcmdCM4pHmjoR+RcZKt673/F9Vb/km5CntwYjMFpd5NzFuxFRX5fjB2y294f8MD4y/u/YdiQY2 GhkntEOwmFyxOh/BQu0cVywwDG1+HYQuZojjU5D7E+PR8Gh2yd0kSYIpA2wnQQwRo8pFySQlCZn4 nTEbmMVIeNSBIcTEAua3tyNJzF/D5twy5ETEQLVnfwkeTWZa4cQjheTpc64apM4fchZwhGXFZKsS ufS7zRsa5s2cT2wWY1f0yML1xsYDDxmNCYbdq/DQSJdvCLseNUuSXLSdgaoedmHBjznHCUXj+eab Sis4l/X4iSp1xfHAgFw9+AWtI6FviYwc6SJcLYNMhCFP9ZrvqldsHluRpYqjhqrokdHsRp0T369M pJdAJ/poM0wX02Rkjk9OZOnVgtT4NT2EDxp97hJWz5kY9wxGo1SYJ3TjmNMLh3pyU+M+0EohSpzK WsjUar/UxJwaDnwanjqXFkPnkLhlc6xhYlwv6c6LB+NR3muEyEUhexnxvnTrxvn0w0NDP07a4V8M nhjkFECkyfS4zYYGZ1GWH5WhebS8GkZOuSzSkuoBicZl0YGmsYN55mY1ckxikeSJMkODN9ClDeoj au96eMyQy2Rp64xBOcPlf1bARjPHyv+GgQJn+/LTYQFSpTqn7VY6MlXvRbSM6n+VXmT2RfBY5hzB xJmoLjacwTXnDwz+jE7CI89PGY/8ryAIOf/ZwyMfVJ8U4cIlNx9Kd2i9yFI8cRzPpiV6udOoea4d YyVT6SwQXpMJqTYnCQZ7iAnJXI8mGjl86MULkIzyTF2HAnayRvBcDXKBidOIs6SDQZ5+EN4QHHoe 0CaeW4Fqf2GRoeOpd0ClY2kz5hBoyGm0aPHGc90YDXRHHDVjNvoe8nea3GD6Sc3p6UkOIsK0eBU8 Zc/GzzzTEjqTxIfx13DYU8SBLVqGpqAWg0UF/5BvBuMh99TqYlCErL/iNCwbV5s8FMi8B5Qoveth 2MtPf/P+96XtQY4y54x5MYOjRPxETjki4S0YKYLM8MKREaOqeY8XjmcY09hKcV4YMPJOZxTwHHen O0mQ8WOGe4Vw50UOS4WjRGNEZYQmiBF6wmGbEGWFQxQ965Oh+RKNXvsfRqr6TZ3BcMmdOJT59jTD JCkeWG7mpw4jyMZHBni84RXBgfSlCs4NU/TBs/r08FiFLxqim8tRCpEdWPXpNoMRnSBnID6TEETh OhGqcmzBzCTpt99bONTJk5QhGh+n0fUwCglIU8gKtNklChJPEIyPjEZ59YgPxAQjUZ/sU15cB6X+ J42IQZ5w79XnbR3+Z1tBp4YpkX1fIebw/B7WrIC4ODHmK0c6YPIsXLiwWr6A4eQ9gxLSJfFt04vw PwFEiPRlJ88aR9JYceMuSuOw8mUTQhGpOiwwWJo5TQkZlPMhcDhrvJxk0n3Oi4rdcBKOp4JsXYFp Qacj4ynPRMc0UNcJ0mbRkwSN5MvhIfGFnHOfU07yMd73jrbOGk8mPGDg18hMac18OoecgTKZGMUu yyeGbSZ7RSFFNOSwkRDBHn3ki2cSbyI6+tILhi4d14tMDLkxEf7qd7fDq2aGeeZFkGA1PIfzTzkz gfYwXdudTmS/YPB1GA9Oe9KyWdKXrZIkyGHTauHotPpM4iGhgYppRloyaPnWS0XkLGRJ+vQG4/Xj Y7jiTMjq8NixnC0sJ29GaT+izBzhjVioXttHhj6LGiakZwZ6YMCQsAT1eIBaNUfWiEFj2cGg4wkN I87GT4tZzyz0mZE2nh3n3M50wjkdJ4fRSpkwM0WcPskCHgtXN6Z6f08LjA0XI3uGL0MBq2CUaRfU bseeRcC44fGT5XhYwQn29gVvrZtrJkOQwekyI+2KRh7gsOKZ8nGP6fJyUwMuR8WPExtTq0F6c8FP L1QjV3uqaAkvH1UUjH4/Bjb4fV4+HWpn0eTnmjKTe4VJ50244zkOhkhY0vDKucuGWNwyZM849Dyd gEgYWfi4ZHE9OwtkMT+h0LmmyDoWtZMizqwCu1YWq5H0FyIv1GToDhM9JhWKyZHi8qMoTQ/NDIU8 NDptJnxVSFXF5OzNsmpoa52WJxoRqZ9ynrsNM506n9BY9NmkgCxDwH4ZMkAz3tHDzjCTYuHj5K39 ZKxc3n3282tvGuFzz6LPmSQa86JrDT0PmC96LOEYVIvcJz/NOs7hknInL1bz6E+16CxR5lonpKiz qx0ap4LU3wJzKPGjiJJmNecSyNwPjvSZJkxsMBnnT9hEeNqcJzYxyg1aPnDye32nUSfHi2RAsKRn 0xrJBGzwuJkWVkxzCcZcaYJ0zQ1PMbhl4jPQXDcjMqZELkm4rFoVItEMjmuXzlPq5883hKOtGcch 6B51XeC5GXF0C02eGLPjRmgPelxoQkCLGiB41XzwLRvch504+1m32sI0mEx0+1jJnRmz7GySqSJz 4UmfBOcfsJBz9pMMDKTK+kejHhIzmAWie55KcR5OR4dS586fSbgvc5U848+sfCn3o3FZtGMDrjwy nMdJpp96XMzhMSJ4Lp45I4ZGeEdm9D4aEjQWmxn8Yb6eFiY4GJClw6GYqFSn0iJlsgS5Bqx9KfZx dXp5O46fTxQd40RBil3hIM15HhoFFM0aFZ5w04VAsjT08KAnOGkWeF4uGXOuIjrP04aFP0LyQ6+1 hQ3ub3CrJSZrcNsWuazw12gEmHjfXExO9c5ONUKQXjVHPp1kUmmSnUx4Y5kL497Ewpa4ffSfXU4f SyI8pBh4dFIzw507yd6nHuR5ONjZ5DOLOEjP0akQzxR00RDMiS6VoJnTTqXGh3K9nI3p6Y7xoTMk qMUMZt9C29OnkPFBtC+9KRYTCndBofEXMYRgtzy2YZzuLvazg2yA41nWt7777W5rONZM+ti9rPpM jZccZmd0EsZPAvgyODEY8KzSAkIV84cTmC5uk6wrch4WixObo55O3mBhcMm3I8hOuGTwlO9bJxmk OcJjyLPkbkfDLyJoiSETchck+AlQiDx6fjLJ3pOTvSeDIK8DFJxgTLE41HGaOJNmMEBpIK2eSCw8 1kKe0acC6aMsetCYdZAfFOLzT0efMk45zbzz6Hv6999FuNnH3K++xufffawra3tYVs5s6+1m32pH B+cbzjeNW8hazzPSAlfZxqaeY/Nvs4wBYN5YfazjW5nIgvbzz7WbSZx72fXnG8++0V7777ZTqHgs z7e99999rC599+++++++3vfeT7777799++++/fcr77777777777777777777777777yfffffvvv3 3377777777777lffffffvv77799999++++++++++++/fffffffffffvvvvvvvgAAAbab4+TR0f+n T/0ckcnJNJv//wVGJYlfVe/qvymYtKMQhq1ZdS73vez8zbk7zp0+dBv/94uiv0zVbHG59/lV1V6r +dfZkg/g9kjVHfSFpjkYd+FxhCVKi+F////vruTbzvOEQlCX5Wr9ir6i6vYMPelnpK3kPg0NWXgz asCvxiJCpUPwQ1f1avfXcim1u6Z/B8YliV9V7+q/KZi0oxCEDX/NVb7S9jnB3w4ENWrLqXe972fm bcnedOl5cCFoN1VFfsavp/q50MDnqpkq80a///////////////////////////////////////// /////////////////////////////////////////////5EwafANUfsHjVsEcVGjEhUJakv+qUCN vdWp4IA+Lh2CHoG5uLKem///////////////////c///////93//////+UMKDhgtQp////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////sAAAG2aHAZfIX8geAgWweA/nwe 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 HLk7CxzNMQ8n4zTYv3Dyx5PTrHoSnqdGe0K3aNNZZOPT38prSg8wxrPRcniPxJJnip97gWwm23SU KfZCfTpJAWR40FPfpET3QuPnxnrGD+oxmZOCP13WAMpRidNHxk2jPWDjJONR/j286IL4RH3r50wz nhkIWSOGb2uuVzrhrvJSRPfrAUsG3vpMlxs/ETxnNI2EnMt3TY0JgWicsDFDZ0JBh08M+PKwtXC0 7jhnzdJBH1PCIKeskJAM/U4whCdRALemXc0rXNTGXMvtIhn4Hzy08jM4EmvGfw8fi8bRQXWQGOHU uMun50wnrGwoF95gXDPxMLuMizhpqHgWqfcjEOcWGmch7myC9JwAnUjcCy08njTmm9AwASCySYGK lCloJJrNGScsja1ChbWT811gxT94AkopFcXx6EBye2kjIXL0F9GjiEoentlRF/G8PZLiztjbNSGh noMFycqKjzDKTI2jJilfCokKSRPEdL1naL+SEkDFBwgGeQk06GOzRP0jGewvxdkk9EiZOSm0vAtG gz9u4DDUmwx0UYSotNgoS0weGelN2kJUebEABY0Eeyu28Le6UshIyTGk8gtZ3oSIxnCcRcsPDFow bT55gXGBiaCkzEOnBo4U+oXnTiXOu459TMuV6QY9JucaV3jVjevuOCFjV5h6e5xwkHWaBatYya8o JzOE0bbPp7wqe9nvNJBm1hWl+O09SFnoV7NFKHnXjn6+nDre9nxo0ZHPdjDj54deheFTPCEkQs09 rNsz5OtGMC8dTCs0zlgwMjnIM3dAebHOWnjvQTx1nTrPvWn1NDY5+Mi1IMhkFnPjKjUZjnRYSGzr OMURadZywjOjnODI6FnxxwZHQs4yOjJ7WFLXArbzqTOHHDvGJ0KHgsjx06zubJHx1nwqZ3HUPNnx kwowBzmjreAh9rc+3vfY3vsbn29z776u9ze5be++++++xufrbn33333288+0U++3vfffffffffW3 L7nPvvvvvvJ9vc++xuW3Ptb1Nzn33329z77e5999be+zue1uW3PvtZ5je+hZ97777625jcKd73vv vsbn1pOHG57e5Tc59fc5bc+++3ub3qbnPsbltzG5ve+tuY3Pvvot7nPsb31tz77777W59wAAAbao MfJhUYleEv31f1U3faWU95R6XZ6aueT/wXGJfxK/5V5Xcz+FsP2CSPghDsf+v/UdZJL1tmwmAML4 EMf2/8Jf4Xf/fqlVV/HXqI0xqZOHDR/vrJpOrHtBCVKq36eLIe/hoYleEv31f1U3faWU95R6XZ6a vh0wedh////8KDCGrVl1Lve97PzNuTvOnU/8+fvhCLwggcLvz1g77bONMSk4MJQkqggiVz4/tk+o 4rVsakJrLfNWwiEkS/j4vLveHg75f2+nedOmj/B8r8JA+L7ZVPlSXvj9U3J7aojUYiR34YGENWrL qXe972fmbcnedOmDw7////////////////////////////////////////////////////////// ////////////////////////////yJg0+Abn7B41bBHWIDRiQqEtSX/VKBG3urXCYIA+Lh2CHoG5 uLKem//////////////////zhmT///////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////wAAAbZR8EL62DwH9KDAHg8BAxgwlgwBgPAQG4MXA8B/jhDE sEBWAYDD8GHgKBUPlYl0SfAwHwgKwDy4D/lYkKlUxUqs+oL/jvk2HU8HgP7sHgIEsHgIEkGoPAf2 YN8vBvA3i8IA+H4+CArAP/QD1ZeqVDxUXj4fWSj4fCXVKkf+ETM3pOCCDKwQC8GLgagGg3h/VXx+ CAEESQDi+l1tVVWJA/+Pv1Vfz1UKfc30uNxwPAQI4PAf24lA8B/XiWDQu8DwECuDwH+SEEHgID0G LwYe+o/ANCADD8GoMJStWAYB4fj0IVEsG9o//74/BQK6XUDlpdP3vnAGAyrwNVQNADPAw/CCrBBB i/wQBIgN8A0vH4/EkvCCAbC7wMpElWJYlg3RL+Px+pV0vLwOq7VKvr33333331MHgP10HgIK8GVA 3gYvB4D/BANHwN8EAIAII+8DAHCWX+LgDxKLhJVRXADwQPD2Kh/78n5P/m5uWuB4D8lBghg8BBbg 8B/lhBBhLBlYQwQBJB4CAzEgA4SQQQgiWEASgPhBLgQhILxLV/HxcPC4GlVKh4qs8oVW+mZ7jl4S AYDKgQS4GLwaAgA3x9Ffh8CCEASgDy6F8kVxUJI+8P/T89fxTJ+bn7NarweAgSRKB4D9dBqDwH9O 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 g0IlPTphnpzCNCxqCzQpio8n9BPFRkWDOQX1glWNOclysmWjjSe1MX6f7U51Br+9h9PGo7pgnRAl pcXpj9PjJkyYThRcIkfG2WyQ0SjT6KTLku004aHFZYFCIaI9CiJAY5xzM1xa8S7ZpxpLhad4eEue OjVC3RzecfY3PvrY0b3MZ1vct0nffazjOZMPNJjQKnPJve1nX325mGswzzDp599vNvt86eHOFQYm 32edJINH2vgYM5vg0a3vt6M+1Mhffffffbzj7ecazb7eFb7777777774ve+++++++++++++++tvf ft733333333333333333333779+8mt77777777777999+3vb3vvvvvvvvvvvvvvvvvv33333377+ ++/ffffffffffffffffffffvvvvvvvsAAAG2kWPkwqMSvCX76v6qbvtLKeAP8qHw/k8Pi73i+Tfq 1Emr9nbtOhMasIKqgHKorV9l+oHTbVrOE09VMlXmjX+Dwy8uLqP7kxrTt/FFsWp6z981bCJH/hsY leEv31f1U3faWU8Af5UPh/J4fF3vF8m/VqJNX7O3adVhBVUA5VFavsv1A6batZwmCQ56qZKvD/// /lTBi8fjoIQ+vh1QOdnAYwEMfD+Sgo9V+znm8qR54/A3v0SQDRLVCXaP1U8rs8Xgd9LFfpsn9m5X q1ckV/kmSfskjUO3ni/6sug8U2iMOrlu4c/g4MShL8r/7FX1F1ewYe9s96VvIfR/z5gxePx0EIfX w6oHOzgMY8DetEkA0S1Ql2j9VPK7PF4HfSxX6bJ/ZuWuCGPh/JQUeq/ZzzciJ954v+rLoPFNojDq 5buHGL////////////////////////////////////////////////////////////////////// ////////////////kTBp8A1R+weNWwRxUaMSFQlqS/6pQI291anggD4uHYIegbm4spO///////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////wAAAbZS4EL62AYDwEDuCCXA8B/Cg8B/XgwQQeAgVwYA6fCEDF4MAcEAEEA8IY/BleFw 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 jaPF5yCcZ+ZOihg6ykJJmtCo8Mu2bF4x6SI8LDzkmZ6E3RBBIGf0n6bbbTCYjcxidPpAeJeGld5I rtHCo4n6yc69c4eET0YoxhwavU3QK0eFuEsC1F6VEZpyXJ3vHR48+lzh1yxTjecbz62Rvvq7jy29 98Z4wyjA/YlGoLUZ4YkpANDS+lbIeHGiITjvMOGeuLFjtYcNTox5NwjDgyeGWTjjGHXpcWnBiMzj TCE8FL1tk6NPOHQsGSTnT6cjPN5EknRaCefS/BqbMDrFz0mfMBenrtLEp7e02RJ7AmBPi5UKjCWQ jAmkBwa6cTQ05LoBYNTaWT+nY9J9MpzqU4r0YaJ0uNKdQi9LjDrIzelxnCWELRTg4KcekyE4ffaK 59jJH2s4hbzjGcfWyRrNtb32cwyTN7kmNQre+vnRozmjj777e9vNt72cZkb77feHGcK5WBk1hazk 2TGzrOTnh14F5xvNNZC1jV9ve++5X333O++++3hU+5333337777777777777776299999+++++++ +++++53333O+++++++/fffa3Pvvvvvv3337777777777nfc77nffffc77777+/ffv33777777777 77799999999999999999998AAAG2kmPk04SGJfxK/5V5Xcz+FsP/wmMvLi6j+5Ma06EBWEFUXK1a qz+qv31zGLhOSMvA9QQlQ/4oVz1i47h/+ERiX8Sv+VeV3M/iXsPkjw7///RwVGJIB4lYEIu+JCgf F9vlKvwHP2VVdl/7t248SvQSR78el9+XdUeU/ud5y8mODAxK9BJHvx6X35d1R5T+53nLyY7+fMIA B//qlUvv31UsXGHj8A6BC/5VVY+9/9LpbfqvXbzb0zYPAUvp+LWSjH0n/K/2XPdyRiacDA1f/7ya PNHXmJGJI1Md6Ojh4YN8S/egQi6z00DncBiQSvQSR78el9+XdUeU/snecvJjhK9BJHvx6X35d1R4 e/snecvJkOf///////////////////////////////////////////////////////////////// ////////////////////5EwafANz9g8atgjio0YkKhLUl/1SgRt7q1PBAHxcOwQ9A3NxZSd///// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////gAAAbZT8EL62DwH9GDBBB4CBlBhLBgDAeAgNQYuB4D/JCGJYICsAwGH4MPAbFQ+ ViXRJ8DAfCArAPLgP+ViQqLpipVYrwv+O+TYdUweA/vQeAgSweAgSwag8B/Zg1H4N4GVF4QB8Px8 EBWEH/wD1ZeqVDxUXj4fWSj4fCX9To/9RGzJToNQZWCAXgxcDUA0G8P774/BACCJYQB/VVtVVWJB f8fK6qUz1vt9zfS43HPvvvvvvh7BAhjBh6OmgYfgw6EgSRLZL8aZYb+XYwwyXl2T8zav+++03FFs o2EFjbURwYAHBAEJMXJR6kTDouY9MaYSj9lODLsp2f1v+0PW/t/+Iu0t/JJtp4PgPAfwYICQHhv+ NpMAT5eCRAsRX3BM333331MHgP6MGCCDwEDKDCWDAGA8BAbgxcDwH+OEMSwaKwDgYfgw8BQKhKLx Lok+BgPhAVgHqgP+ViQqVTC5VZ/C/47zNh0HgP7sHgIEkHgIEsGoPAf2YNS8G8DKi8IA+H4+CB8A //wD/l6pUPFRePh9ZKPh8P7qkfzB1mS9J2MEEGVggF4MXA1ANBvD+qvj8EAIIlhAL6XW1VVYkF/y 5XVSmet9vub6XG3Pv377lc7+/ffff333331N5tXB4D9lB4D+5B4D+fBhKBgDQeAgWweAgNweAgOw gCUCCqAPBh8DwMBCChViWXCV4SPgwHgZUPwDlYHqqElWr6rVy+Ul3t83lOA8BA+g8BAcg8BAdg8B /cg0B4D+5Bgggw/Bi8GAPBgPgwQADweB/5wYFADQHgf+cEESwbAUIIJcPwhAwHB+XQSC4Dwke+XA ov1Rqj2+OkPKeQPAfooPAQY4PB/3YIIPDwGIQweL/6QfAgHQYAwHgP8kuB4D/LH4MJAQVQPAQIYM JIlgwBwMAfQQgYDwMrEgA0IINB+JGCWXUS1AQQDAYFGXAfCECGPqPBH8rqr46rwZUDBCEgIIQAYS gZUEIEEfg2gHiQCAEAfBBEseqy8EMSS4SlXh+Xj0vkVqx6rn/qfyf/u/h++++++ng8B/Rg8BAxgw B4PAQG4MAcDCWJYQweA/xwYuB4H/fAOVggKxKLhKBgPBAAPUCT8SxIV+Lx4EFWqVTFSov8plUxTj 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 3ufbzr62RNbx+eWyR99C9MDNX0xDCHKiwwNM6dOpcxpoZJNp542MueOy9FBxjehTefGs+njjlfSD gXCn0446OOElPM5NRYxnUWCcJsDFOfRXwaGyBJ5r4ZPJ+LDHp1s2FyfYRhQQQ8i9DHViloVstjIZ cFpw2QPGeaJ6La2yMToz21+EZEdC0ap4gJHGyAwk0gzxwzaz7H1lkYDJ0jMOPCnj8wic1ix8ed77 W999999jOt71Nzn332sw+O8mONZ5jGrObOvvvJnccHWfPjvcFbPRokPNZ5rhA3ua+G2tsUNZSdb3 DvOnWcaObzQWs8461mnx1njr77777777lfb8C9ytZx9999999999999je++++++/1tz79999++++ +++xvffcr7lfffffffffffa3vvvvvvv33333333329z7777999999999++/v3377799999999999 99+++++++/fffffffc77778AAAG2k2PkwqMvLi6j+5Ma06EH4/8B70LpfK5m/mTed7Omw2O2KLYt T0CBqoSS8vEugfVfn8gj9v5dz/Gj//5f/sa2nv4IjLi8vg+m3W8OAkOeqmSrzRr/D4y8uLqP7kxr TtsUWxangg/H/gPehdL5XM38ybzvZ03AgaqEkvLxLoH1X5/II/b+Xc/w0xf//ypgw/iguLlXy+Kf WTmaxpkEFUJKrJFcv5I1y9RvDYwQFSu/APEntUaXqPLAd4cEsuokKh+rV0umfUiJ5n5//8v7Y1tP fTg+MG8Jf/wIQ+s/dA53QYkBh5S5R6iWqA/APRuT/edBjol+okD349Lp8u6o8o9c7zl5Mdbm1RM9 vItGHAwO3NqiZ7eRaMO/D4wQVSqD6QvL5P+/ORtvpkEBUrvwDxJ7VGl6iMSD3hwGL4EEfDz3v+ty Rj1ahGJZdRK8P1aul0z6kRPM/PsT//////////////////////////////////////////////// //////////////////////////////////////5EwafANz9g8atgjrEBoxIVCWpL/qlAjb3VqeCA Pi4dgh6Bubiyk7//////////yJm///////91df/////////////906////////////////////// ///////////////////////////////////////////5g3////////////////////////////// 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 QT9JD6PLCFpkgLDienQkHUVrKQl8SMo4Iax5PwsdlGGbUzhzQTEssSHGhQ2Rq/HDJLiw6jGqe8Pi cTVA5OQ0JXnE8aizNFxpHrwzTpAriknQ5PcntGOHhYNE/wWNmDR4azIBqdS+DIgOt41EI75SaBg5 GZGDoVJSPJh1oMRm1jN98cZtz776XGZ1ww/jD1iUYJ+Qa4RmSdF9PDkyOSZD8pk8M+phTTILTgYH kukPdFZYeSYvGZlJnTIyRlRnmyRZs4MWC5DBxpfQcPaYTmTHSYaIp/PHiBSYXk68xZxZyLKyJQR6 NE85i4vZ42LAYwnIxW6FlGAMKk/eE4elBH3HiGaGTLZOVca8OGzq+lhgWq5mDVPIW2hdwUkinQvS kzGkFKTOkjGnhn0iwLElDGmukqLJITPU9BMIBizx1nTr08aAskQy4K2c0fR8rzwzScb6e6M3MmSM LjT762599fNDVbj2NyFMmPK5rgtb+i4b5sJHq5MeZ4KtehzQhLdGqSbYoPx7PuNJmha5Ec684oGy mDjOFbkynCLjR04MvNb4NBqNbTyTP9ODRHjHphyLxOMyMZDKXrJxnRORPGeERGcZxMaeM+JhgdzE xCsxhvTyfOM6QRgw9swh7ZkYs5g+lzhIOHo84cC9TP9OLeIjastc0ZR8W24QgOPDHmKfusHsPqTe w4bzCxMbNNZGpmHN+kA4xqbfY3t559rPvp7jx4layVbc+jyshPdEwybYVONORegkrvODD8YFgVnx k+EUIDr0WSE40GmlcfODLM++krkLcdT4QhJopej42JyVg+FgvOnz3SMdcE70shobOJy4abRuE+hg nhghOmtJU9gVPb02fT5omOBFkGKeNNRDM1VKxwZ7+1MnwXI6Ms4KwtGXbcdhHD403RowcRly5SLh KTpdKjIzXE4sT9ISQVkSmNExUZS41NJCYRfDUq2ohOYe17oqaxahZk4P3Pvvvvvvvt7mN777WdZw nZJ32Zm4eebe5rOPvvs7zr7e9re+10hfZ6FhE1ub9GY5+IScmBaN5xvcyU7HjrOHH28wO9xxrc++ +++++0GMK33K++++++/fffffffY3Pvvvv3377779999+++++++xuffcr77777+++/fffffffv333 77799999999999999999y3377++/fffvvv333333337777777999++++++++AAABtpRj5NHR/6dP /RyRyck1s9///gqMSxK+q9/VflMxaUYhDVqy6l3ve9n5m3It0lPnQa/8qLor9M1Wxxuff5VdVeq/ oML7MkH8Hskao76udaY5GHfhcYQlSovhf///767k287zhoShL8rV+xV9RdXsGHvSz0lbyHwaGrLw ZtWBX4xEhUqH4Iav/1an31OTbW6S/g+MSxK+q9/VflMxaUYhCBr/mqt9pexzg74cCGrVl1Lve97P zNuTvOnS8uBC0G6qiv2NX0/1c6GByVTJV4f///////////////////////////////////////// /////////////////////////////////////////////kTBp8A3P2Dxq2COsQGjEhUJakv+qUCN vdWp4IA+Lh2CHoG5uLKem///////////uv//////91//////5Q2Xu3f//////7u7du///////du3 f//////////////////////////////////////////5EzRIzX////////////////////////// //////////////////////////////////////////////////////////cAAAG2VfAyxnyXPyB4 CBdB4D+fB4D+dBhKB4CBpBhKEoGEkGEkSgQRLEgSwQVQNPeBoqEovH8H5eJQkiXP2CWJIQvDxQJC ubFe7fTM2uB4CB/B4CA7B4D+1BAB4CDXB4D+3Bggg8B/Hg8B/Ol4MXg8B/Cg8BAcg8B/lgwKEGAO BvA8BApiSqLvgHAwQgDwYvBBLgYSQgAHj6Aw/ANAPAOB4KAZCADFwkg0LqXAHCUrHgQ6PB4qv/PT DQeAgfweA/lweA/ewYEAHgIHEHgYCEHgf9kIQMPxJB4H/fBh6DYDwMA6XBCL1AMCEDYB8D4NoQQh ZoMp8PFClr+5w+DKgYIQMXj4GCCDCUDKgYSRI8XqhIBi8EAIANRK8Jc94f+HwQR8qEtV4v976v0V zyvymeV/ku5bDoPAf0oPAfpIPAf5IPAQT4PAfzIMJYPAQJoMJAMJAPAQNINBKEkSgDAeA/wwaq/g 1B4CA/B4CA1Lh8CEXCWDwEByJV9KJReJPx6pCH6yKJ5Ro7nD5cJQlCUEISh8JAQh8XCQJAkKlQ+E oSh8q8qHw+LlUUKi4uVezypUq9M973p70mSHn3O+++++ng8BAvg8B/Pg8B/OgwlA8BA0gwlCUDCS DCSJQIIkiQJIIJcDT3gaKhKLx/B+XiUJIly2CWJIkeHigSP7R7bt8Om64GLgYSAYSxKBgggwlAyo GEsSPF/hKBi8EAIANRK8P57w/8XAHiV4Sy6F89//ornlcUz3/zZctMg8BA/g8B++g8B/jg8BAkg8 BAeg8BAZhAANB4D+1BggA8D/pg3i8GLx8JA+CEDwMA2CADfHgB/wgAHq/D8EIGpePi6KC4fD9UPZ R6B3JM+GYPAQU4PAQOIPAftIPAQJYPAf1YBtB4CA3B4CA3Bi4GLwaA8DAOgxcDaqVCSEAEAIQBxc AcJBeJAQPCUPoEAA8S1CgFCXRUqiqKoq8mcvIHgIHMGAOB4D9/B4CA9B4D/HB4D+tB4D/LB4CBRB ghFwMEEG0GBALwYvUhBBqEAA4IQ+EsfAyoG+qBpfzwlA3wDf+Vq/l/lcVd9PaCjtw+DwH8GDwH+S DwH92DwECSAeDwECWDAHA8BAig8BAbg8BAtgxcDAHA8DAXg8DANiUqBgDRIEgEAA4A8GoQAbwIBe CB6CWAcEAA4GBRAynS4IasSoDUIKofK1Q8Ho/UQGe++8333305A8BAug8B/Og8B/OgwlA8BA0gwl CUDCSDCSJQIIkiQJIIJcDT3gaKh8Xj8EMvEoSRLl/BLEkSPDxQEJXOf3cHTZ4HgIFMHgP7UHgP4c HgIGMHgIEMHgIGEHgIDkHgP60EMHgP70A0Hgf9EHgYCMHgoBsHgYDEGLhKBsB4H/jBi4fg1B4P/z B4H/FLwPghAhAeBgNKlOqR1gBAPAQQIPAQHYPAf2oIAPAQa4PAf24MAeDwH8eDwH86XgxeDwH8KD wEByDwH+WDwP/ODAHA3geAgUwhlyr4BwMEAA8GLwQS4GCGEAA0SgeB/3wDQDwDgeCgGQgAxcJINF VLgDh8XjwIdHlVKlKp4PAfvIPAfyoPAf04PAQT4PAftIPAQNoPAQH9BhIB4CB1BABvCSAaXgwlA8 B/k/VA1B4CA5B4CA1BCLh8JYMJQQ9EqD8SKX/Vq/fANVSWj4un560dU4lwYuBghAxeJQMAeDCUDK gYSRI8XqhIBi8EAIANRK8P56F/h8AePvCWq8rir6v0VzyuT89//ta/YdeXCUJQlBCEouCEEIfFwk CQJRcqHwlCUPlXi4fD4fF0UKi4uVek8qVKlXp73pySZDjzcjfffa3s54+++++++3k7mT777777e5 re+xvVwYuB4CCfB4D9vB4CCfBgDweA/kQeA/yQeAgRweA/pQeAgXS8HgP7sSgYA4EAGH/gYeAwQQ eAgOQeAgNQYIIN7wN8GgMJYBgIAMB8SB8DF4B6v0VzysS1RcJYISofwuH6uDqK/hkDwEFODwH8iD wEDiCCDD8ECF4PAQMtBh8DwECGDwH+OPwYfwIYN8GCCJAHwYIQB4B4QFaoSaEEShLBBBh8EL4QRL BQgH/CEJatUX0eK1Y+HqsDvgyTODwH46DwH3aDAgg8BA8g8BA9g8BBVg8BAqg8B/agxcDwECiEIG EgG8DCSDwH+eDwEBmAcCAPgeAgNQYEAGCEAYAeJQBwBoPAQHYMEMGokBAVqh8rCAPlQkKi4IHvUf Fwl/VeV+Lp735ACQaAwQgYvEoGCCDCQDFwMJIkeV+EgGLwaBABqPvD+e8P/FwB4lKhJVQvnvq/RX PK4pk/Zu48GLoXAwlgwQQeAgUweAgPQeAgRweA/owQS8HgP7kSAYA4GgMJXqAcDBDEkSwYA8G94G Vg0BvAwKAGA+JA+BlcVqornlYkqi4SwQlQ/hcP1fuD37i4ShKEoIA+HwQghD4uEoSBILlQ+EofD5 VC4fD4uLvTxcXFxd6TypUq9J73vSSTIefffW3vvjbBwoengyoGLwYIQMJQMEESvCQDCSDKgQAYfi V5XB/4SgahAEoA8fKh/7354v8XCSqV+iueV/8pk3P/kufeDwEBmDFwPAQIYPAQHoMEAS6EMGEgHg IDUGCADFwk/LgQviWDQGVAHAHF/x9b79VfLxIH3v1Vf+VfUW5vvXK9/KDhQ3M8++++++tvTmDKge AgnQeA/bQeAgnwYIIPAfyIPAf5IPAQI4PAf0YPAQLqsHgP7sSAYA4EAGH8Bh4DBBB4CA5B4CA3Bg ggyrwMrBoDCSAYCADAfEgfAysA9X6K55WJKouEsFAqH4IQ/VwdRX8MgeA/GweA+7QYEEHgIHsHgI HkHgIK0HgIFUHgP7UGLgeAgTwhAwkA3gYSQeA/zweAgMwDAQB8DwEBqDAgAwQgDADx8AcAaDwEB2 DBDBqJAQlaofKwgFyoSFRcED0+Pi4S/qorVFyifkUuB4CCpB4D+RB4CBxBBBhLBAheDwEDLQYfA8 BAhg8B/kj8GLwbQagwQRIA+DBCAPAPAOVlwQ6EMShLBBBh8EL4B4lgoQD/iQJKtUXgcVqy6F6uj1 UGQMXRUDCWDBBB4CBVB4CA9B4CBHB4D+lBBVg8B/diQDAHAgAwleBgPAwQxJEsGCCDe8DKwQAbwM CEDAfEgSgZWPfRXPKxJVFwlghKh+CEP1c5Ff3L4MqBghAw/EoGCCDCQDKgYSRIheqEgGLwaBABqJ Xh/PeH/h8AeJXhLVeL4qqv0VzyuT88r/Jd7XFwlCUJQQBKHwQghD5UJAkCQXKh8JQlD5V4uHw+Hx d6eLi4uVek8q970Ue96SSTJHN5599999999999zJ9bOMbn333332tz77777777W5999yvN9vc+++ ++5G5k++++3vfcyfcyffcjffffeTyfffb3vqeHbAuGm2DgvtUsTGbbS1o84abcZI9uXujE4JNQO1 gcMS08Mxj3rMuCxw0wpIXDXdB2SHVuDVTJ6QsdkJVNA+NCcKmgedOnBp69xsaZqB08ZBU3Z150Fo NM4cCpjGCPeg0iCpTazT/QvR79t1g9CJTGbajeJACFMKpNp9QyzSYDFY/KMlDKDXemlDIrNL4UPU MpNZmOFiIyeQ1NsAgLlO2And6KUW90MPqY0w6oZHWmunBoZMNns6Jjo4+kh1vcNPtEBwuNjTX5OS jUaBWj32DQmUnTgsG2DHDokzRMbCtzdOHeJBqx0iGnie5YFaHSPSNT23k5CCJxkp4dFgU+62A29u YWsDTpIh4nFLudbOBT+23Ru2Zqicqbrppy3jdYYxzq9PmZuaEeCOkc0GNJkchBC/nCHK2RDPtXPy WnawKRafT2qalpNmg4L7lYGYz91g/6xKebW4Qzm847Dwj+dTDEq1ILYkQmm80+9PRjAZbToThT7O 0wnItgdg5GZ6yVgIcbCnrcvSfG2j4JWwlOGBnrtaRXtKWETk2FmnlgGXVz4z2WcZFv5Y20d4M9ln iY4MuASc/UIuOjPSwnysAOnAy6SnBkPpFTNBc0hGWXT5/asTcJRkzvWoMOLEh0KfqfHSLV0AZ5oM 3MGRnKZzdFs2kiMmxIwtRY5OU1dc7PYOMMxcmi4ySciRgMcupqGGTrbdjJ0Kfty6tVJJbIuM4nwo eu2CIdrzqfJo1EfqaQHEuwxvWmmAcZR+ILQw2dKQcboVjPunhrck50ZqYsMCcZliVgHEAxaRhPhO dCnzanGlyLQ+uSWE7uuCniMDmQFQYc1MQY0CSfen2HGHXosjYoGfbEOMCvucEJ/LmcPcwmozCnts cwJu70F8NAciGB4wM9aRcHENbMf2HI2dPjFrmTOLdOPGLgry9ZP6S0+nqFKjGDXLrWozucYGnLt3 lI0+6vstMLwsBxmpcnSwYe7xu8TwWp6iXR2EuNi115Iw28YtlsHEXUiJoVwE206M/qUZVMAwEYZD vtHOVMRzd4eGfaiBgpqDjd7MpPFPrsLttX9Y2nU1ijpvT+RnqmDvNzud5uJj5aMU/MQsUt7zRdcX rVK3Vv1lAkud+Iiy/OiGYEfQJdxrVwt4okwdpFqufv0jI0FVcI9mLd2JUugL7UWH6kgxDKaSIs5K 263msHE+9YGOXBEGNNxo0FM5D++GGaTttdRYbdDwj9d2qCGd5yohXl7w6eCl+t9Dc/Wm2SCSxcjc eCn2Uj2IupQjDZ9RtJyvT5C8Z68wazqeC61ncKTnxHiwzcFM/usdBPsbnDg61tgKKmXCg4NQp4s4 sEmRk2eh+tEYz9kTJ7ScbCeC66dOJd0f/DYz0zR7LGj/SDW2iwWPGL4pNrrcJvb08dGfa0mceY5G AcQnzqP/2Uci66FuAmJ6Zag4gXN2ugJ4zO8ngW8bOcJE+EJyaKYpeM+4SrNjE2nNEIzzOxZM90bF 1QA4YjP2KZtLBhZa2Z+Ne9zTZ5P9xtcGBai4sO+1pmrC9PYTnEBhsEgiT04YVqM6E+sMFpqKBqn6 MmuH4kyaiAfLhAnzvGljyM3dGHTaTbS0i7q3G50Z+1ZogCnJoBEsGeYYajTL3HAp5Fw8Qd4Al9eM +XTHOcfwsIMFJxP/YIJwsSntptslEU56laYmhYlPnU+kLOpRlOxYV9qxKn91jaEptGMeiCfGeI+T CsZL1MmpHzUQ0q4wNjPun2ULYyPWGuLOT4kQmby9OntxhY6nsJ6gcs07g6YGCV4U+tdFc5rkkJot xfkuic4WkAz6z3jSVALu1vnCtId403epC10iZcQ2jJ8R621dpbEh25lxa6x08m41Q+FwdHjoz+a0 zsX5GtsPcxC1xIT6W9C4RubuhWbEfWkx3VxNNzqcgyxfdTAmGRH4lf1tkxSXmycWZpMcEXmyNNkh 4EcF3AcFIz5Uh8mOzOk70/jREQodFLbR0Z8F4ZTofi7IRHRn6ysNPIhcORrJwAioAjGefjIU65Yy dTO12Evyw5xMbYpAFPtrW6/mEoqGRAaT4f1hs9qc8gWCcZ/60SBu+UEuNvPjLPp7K01oT63jJG5P sfmIOmdxOwcPJ/tWBIW17fDWwKgp4RSon/QHawydcaGPw/xJgURBpHx6eNyLq3S3hF0n5WenRntC 2t3lQAk3M1uAuIouQVGhmfNZgyahDuwbNjJL0KjQzxYjOQeqMf2tpjcNjPo81jK30cOqAZ93ms86 CR3A7wiOJ9skT0rSH7qBIam2AlS1N1IMQpz3LL0NBSOot0YdTLoyKYtiA4MaMhn8IPyavOcTELdx Z4BBoZ/GEyMa/y8WJP9bbjW9KpNd3U4WvGf+r8WIWEBz9q7YMZ6s294z87OxBwoAXGz4cg4+MDoU uwNMU0hTw/DxaNRnzsP+zrzBkZhT8baMsGn8ZgSOeI8GGkxkX9HQD28bZXPOCn0R4StkeNUza45X jJjurA4XtBhCwlr08i4Stk5UeGe3W62GFZJW2WsNN8aGbQXjP1gV71AQqGeUZNtyaQuEf2pieW9a qQ93Nh8bkvSUYutt0ZSQtO2pxmZCn4WpibmERuN7BDOQ2YGeQNo8Gz5jNYPFKdpKNT4zykGKltFN lwLbOG9iyyTGCdohGfcqaxJyJiTiR6M1ejKnxn1oE4IgFYnK3HE+aNYV6ajHOgryCvGTp6dThcVH LSIKeQN7nSOy1BUITxnLvCsKaYPCPtBPOa0j65OTtmhL63Dsb21FsBx84FPZSBVdD4HH4pmMA4Y6 kGuvjgp+zp72ok4oBjfRqeYJBnzpkCcLAcfU5nIymiLDuDsa8hgZ/+xTgzab6NIk0lghHq9PN6Di bbhPs6zVgvRBiTzeE3cSNBadT/Q5tRDXw5JsjcKBeMeQ2GDh8Z7LVzAtGnFo5kobAUbT7vRf0/17 hn8OZ2NH5XSRAkOnU+IHLaW9GPQT5hb0LhmfWoOxmwFkxx06Iy9xgtLTveSN6zjgcRTmouhg4Z9W 5rSZ/7VS1nDHNRpBPaxlIwqT/luthbz9aZJTnMZRCcR9KWjVULyI3ZpF+/uMGXiM8aTdKSLaysZy tMkKBCcemdEMMDtAYsaWAsODqEpMhTPmp+riz/k/R1eFi4tvOtIyedWccJk/EyxzWbsh7NlTMHEd ptP1gcCzbgmQGepxkMu2vlBw1BjjHrxsycTk7HLmJKMhn9TllE7kx7IT0+nyjVbg1O63uFrxntaM IMAYgRU28KfsYuzVj2StNxY40M60mS9O0/xk+M/PoSgjETNbN6ilLH2QRGtX0B5sZ/MGkCp6x5wz 45g5K3p7rGtgsHDPbPUY6kM9goeN/nBCFvFoVGxkM+M5a7LFzpaT294yS+4yfGeyYk7oRZrBYKN5 uIkjNiYkOCP2M4YzS0mqyTeC+RrRsMDqfG8U7MMdvcaLRagxk+2OO4eCnxBEYy7crIUNqdByc71v HuOBT5MYZGmSDAghCamkafohjXdhgYoAjT5QnN6L+BUi+tAvsg367sB2HxH9TnZMQDKN8gqxowfG f0tclJMUQnJRkIsiX03UTwXB8KejU4ySbghNjNiCCcxvgSQ85PzKjFwVATNM1O4KfLax1A7lPQkZ zgxIhmM/qaFYL8dz/J/RdaSwR+VhEMOsYDheFM4MCOkGF31bzWRcsy0lSskNg7RY2A065PwGIAT/ TMEMZWloGF4RjPtSAO4werfEwOI1ynD70muuiBx+krxn6LsZAWzOnrwVjRLxY2f3rB5Ph7znjBF5 +k+LnN5QHjPmJRft09XoxwUnXjP6QdTDRv3TgU8JU+TMClOyLuDOXm8enzUwBLKALmVlxq0joVDO UwjyJXZlCy3iOEgzR9pq5zvAn9uNPTPxILiTa8dosnQShmWd52FAyu9ja/MIYtdMypm8PDQYWm0m YP9C8Z41kAIYwz26ePDFlhJDFiw0PpnAvOaTgtbnVkhmNvGewkP8orytdNZtTkAViPIW2Y2+qGBq trjgUzgtbcFt69smeNRnKXVzUg5bPV5+OGeWnFoMv51o9unziPzY3uxo0tOxp00dZsPiFi8RiBHD nCRPskmHeJwHFo0WIk9tAY7pQDq/ASZASxH9QNbSJjGcX0mRLsU/xg+fEfMbQkG2kG8BwYIXnE/N WAf6tinu3jaapGTVT4zhCn3m8BzBFkWogMHgvTBUMLcgJBmnisqMuF4z+aTbCEa6zYjMvGenJWEV MLRKby4YcI+1kYMLH+1OmNFeHHhT20S6NKKK/OMsoHIqMRqTjFnHAiGYLUmkfZImbO1i6x3Rw5PX AXic8CkGEFgz5lWCRpnAHQ7Wspg4M+YthJaR9xOC03nSc8FPuasd+Z7AS71Y68yM/SebzBlUAruN Cg4nzO61qXBn7cZ4uHxjSOZ7KyslMp/V4DFYmN+7rEgGGcIJbua8KWV6CaM5rHOGTscM/JjGhFGE vCWWpAm0hJ0eKn4DiZHsk8eC1T91ZZpg4kGPG05tY2FPQgMM4QFZYWC47TycrGiHMDPSNjdRGxHL tSktw5i6LDdKlHU9Pnhnvb4S8wbhf0YH0+pjNTi1vWCK1YwMyt9q550aXp1dmJhc8Z6iLMNvidpO JpGJvBXWCdye0NjOlp6bRWthGM/W62DhjmnNoTdFJoZNcHQ4MZSlgVHU+AwLeWNFbCAzRwCenIk/ ha7hjukKfIgenjNTcbt7ETXLmOHvh3k5mL5talwYaxzrFIk87K/uoDQwT5OWmNXbGlxmdBgreI81 yEjcIeHHJ7SYiqjWdIDdEYYDPiWM3Dgj2W7tnMov/zoqDwW4SiHjvjW0zJyyk6IHC0gCn4lB0Gdb 4MersjsQz9kaiSvPuGf2JODPMOlBLalp3pGM9FCo9b1JDhhGNsGoOCcZ/YCR1JxGWsEQFehqZosj ZKn5SxMwRjGrESy5xFrtDI306n8J87rRD1mkzfW+0MELP61h8Z+kqMU7rfGO0ULLC3DyendnG6fk OZETxH2skubaiCMrafjTOGCcKfaxW0gxGZNUo1PHxkzzJFjR+Q+nnNm6lXfoDcbD0ap4mWPFLJIy xD4j80/am4dnguto2wUOEel7w1mk9SWNB0f4kCOkQz/1KUjJdch0AnMgn6cEe2lLaf+F/b1/N50/ 0lGejObCK2cOyt4YPjJLZfBZdbOMSllgwGQz4MaFNppI6n0+FgzfCq4d3SZPxs26EWQqNJ/ASukk oJ80ajOWgYiwzh3WxgUkR9ObYhiGAqA4KBjAvGfbtHBHEzbyqDXYkF5pPQRKJ6WDNGKtRa4Z+FRg a09T7hmczkAoEZDjfSA6M/h3p6pGukbBp6fTvcYaInyHRj6yZ7swUwWU8M/bzo1ZW1OKhXTQzGfi MBp7uXgr8LaNBHsBXeiOT1rNbPxgL3jPBb7zOaNyVhlp45cdGehbUMn/4zxsP4GG7kZLQX9yXne6 s2QAx0Z+PmPdBpUh5M7kbjZaM0/KMqQu4TJ7AJWnTo1GfdULNsMEVq7em0xy8jLZWthKTjP1AdQM B6e7l5yh+QcT5EuEBEnrN1ombp8aou64Kf2zexboOOttIiTJ1PrJQeQN8XPPOCPELMlQEVq0aQFh KwsSInuS6ZkXIDA1SeDBGaa0bnEPT2jLMaGCfL2SbtNdYrupjHE+JaeGeIhIFfWzVLbG9aSmHJ+Z UOk+6z/rDdPqNbaYBM1tpB0XjP2L6Q3EZ32clsAx0+lKT7hHJM9vEdr93o0I49H3Yba4LBqM+oGo FTZPW+tUaJgq706ro2QWfV3jPraIZLaOD7ZqsrFQ0lIRHoy0wxjeBS0n4F6KdWG7jgzxZepwm5lp 6YVLg490LU9BpAT9HOm9zbjM7Doz7MfuEqzb5pEcT8twWWbhPDWlsCxPkabONjcTZTllD6A5wznH YyaYTusbNm09IyTgxyoT5kZ+RnGSd3TOGzSe23hJjQxntaI9GAzz/U5JMHJuToqh4Z5pIY9SJYw9 Oe812t8CWcYsCqIodT0YL5jvdIRq1uBgM81YSw5ko2h0HEac2i0ngtY0aM6eGfRZRrgzsIjieVE9 SNWHd52G1DKQPj4U56yIAw8i4iLDKlKdlitl5/h8KTyOJtbZQuOw8k9jIJeUtWmDSDnjROnh8d7B VOn/lVaEIVDP53RhyXd5qJIe+vrAdvtZytaCORkwj+XLc1JgztQLmY1YkYXJKtmXEjK1ccSeUVNo iGHhn9T6MFlsMHXH0/Rr6dLQtjB/psZM7XfhMdT9R8GLQdEO7aAyMXL3RSFPnCzh/TUZO4MDJAM9 BSO9RyN9E03uMJTyKZVhRxOcCnqE7cLBbwjSzrwpedGf3hMhevx3BkdT1ygnYPE0bZCsKPvetOtL TcWOwHBS5PqzLq1LZ2BVLrFPdIhn7xumZpahGOG9hCdT+uMkGnE+MCEQWJBPgO4lILxcVJcE04jM BT9aGmdU8aPVO+znIlTEUpgnT5I0xUp68xon1OCXHjH6YPWtRcnJwoWSDU+eS9iN+LGMYKQ4gwCn 9BwW4y5bU4t4yNxefx6T6+hUimozCX5WkodgLnVwcLwchF4z9mDBhIRB4ID0tPY9PxCMqsRdXfre wlCz4YNHzgy4f6KxzQWJoap41izjUIxnm2w6GgtGB5PrbY2FlWFMF4OSH0Urc3WBeFZ9P2vyAsY0 2YMjPhaHArmbkK10RzMq6KGeN96TngpzwbGuCtpreOWPPtentcFmE8SIHHk9GY6lCPI7rhn5SDua wLMqNhOM2UF2ktPjPwoaFHI6gSibpIMjyfJqMKHkkOhT2D9qSBFNbFvutkrwYaiPkTWHiPGzSxk6 n9SIH1SiXJlGcKRnGkmoSZP3K2OAX9k6AzCpIWLkMWNDP51NByT40nGfMEOgOYXpONU+aec3QcGL xHlQ1PnoTnwpyaBLZ7BTxOdYQDSH3jPazGAj7y3jQ2j43dMZEBTQ7E54Z4GNbzMSPayxiimMd5qV gm42vYQOCn98WBUpupMRkEC1LG0wr7SW2HRHstm2LSvgySTpytCIMzyen3p9skAwnTG2AvSfICf1 HjMP9EEXDPbSwB0SCfprRAP9JRn3GiaaFHRh0dGKbGfIuIcIIUjUEQB7B2DVPAxhNjAwxAThcM82 s3d1ENAoa2GTjPsYZkUlCQ0zIfaKMQp7MhFgG0R6lgVSrtVOVpCV+ceM/zZ8WjW8GsNp74iC+XCI iV0LbgFJfe8EfEQLXAYiWWThiMn1salpOvyCY6M+JieSnk5G5wibL4UA5OeohBjHiPxIflpBErpE jnDPtrRFUYuPn3J9id+sGW8ShR6cG4MZGeLsabOdrQuqcyfTlpsmagXr45POtAEHgHpOBhsBNkjk /1qxqB8KNxjH5yjJPtIJD9wcmqdT0rLJjQ/OXRmmnOtnwp/F5EpMlzhkjHJGcPjPoVVkgHUJBgfG P2ojSUxqkxjhmeMrkvNC1saPcn410rIE50roVHAo9hjgOGlYunshEb5GRej2F2z5mMDY4n870Xbt axI6yLrBShFIU9qdYY0VtrE8bZ3iW9TwY5xq4zqcW042TiPmf9eiFRj6WMFjaXoCY0d2RNrLDTQn NjPWxuY2wKKhBwx5gdPcfTxblhMfF6WSQzIftJxknw7pa+Y3UJO8Z85AMHc60DhbJ272GOaNHiOc Gc7r1uNsxOC5kxp0PjPxLoK0B6MYbB20DhfjW4DhecCnltXCr3WNGgz6kkkTDNxAM9BQFIhsNG9b P8JI8Z+NEPBn2IaZYIjwz2WWiXjoaS3QseI/obkpCeWwqecTxYy6hRRinsdM4wMsXYRVxaWZBMnr iGDnwZfQamw5VmTgx5g2GL08FpqI9MIisjGfqEmmUsOaWue9Jn7CTiMlT7LpMR6beMXnBQTIOHiQ ZNgHHLQKc+2TN9X2hgfCnpmoCM5GTTxVTVGhy06no6Scsm7NDY++a2zx4U8ciY9J1OA7VhuMD5wZ 7WLFg1b8Y4OzK3bEAucnnpA4GF3GBkUhcM8y3DkP8TOcI55RVhMlNa9ySZyr2vLE50Z65OCMKtJh yFBtP2dTpgxY0BaDTl1o8njoZRbGzOpoAzDAU9omarEIdBPiy+RcZnSEZ644OeqZ9vSXCoLHBT+D Penm+uwdkBlyXbXO7xYT4cTPp/zWjg5D04YTLE/0BnQS2AcGJZ0tFIzO6UM9NiSPhIv5v/8jbfAo 64ZhAL9v6mxkyxuwBedud83OqYDFCFwlye8I4HQIgw4tIVWnQpkCauVO79l2b2JOjFWpH3h3Z8GQ qgeNgFSshBi8uoQv897+J/+biQGlLcIXx4zBYEP5dmyJhTZG1PVGxjdFwQ/qlSizYnz1xHbbBqkU tIOI4MDoUwSP5ffq/23+1vdXP0tJR3sX1mdM5wEonjhC0xOo6NUJg+MLNGDI7kFIxSSeRU2nxEST ODNeNjYrGmlGnU/OjKvHfMbS4/qeN1O4Z8snZbLcCJPxgmU8saxO0kQoiP06UCg8M9elFet5IFlx jO4SkkPjPeowoI+n8BwVnRH3Gk410iwZuGSZ2xYwL9JusNjAZ/Rl1E0RZYLWckXExlPBioaMy9Nb xKNMWbIE/EmkHASiyE4DhnxO3cwU8rax3gxsTDUaJ6PcP0ZxIG5KGIyaSoTrI2AWNzJxPK04ONpS flEJYleIes7lDALhon9GaEYpTPE5kKe2gCyMp3mMPnhUM+PZzqN/rvFqV62ic1y9pADgnCn8EY0L GjlaJzowT2EtoYYyUnOgnAsRi1wSGp20bkfPUcAIcM/ncYRC6SnDyI24R8wKiVwGONp3HxnyoRrR HU9PrEtS1x8Z+dwpO7UAVSlZolyEqfFzwqOmBnhEaxJiRkW8nDpwY/Q2GnEyF2DJo0FOWrYA+J27 pEFzbItdI5P1ORyU+zcAZ2IQuT6FgVJyJlfAsGPiQy+wEyOGLT5hFS0hzBoeEfmE25xcLNK3Mmzq fxO05sQBNrCcBuvGZ+tZWDEHGmZao7WAWHy4EASRL8PVWqvSbqkSvbJ0HhP/PJdArIS2OCmCQL3q pVS+zFS6ge/RezSxto/R9RKCDR5QagHBAVZdViSqCGPq1udCF6I//k6bgB1AOHtVxWJQ/H/6DNgh KvD/3tskVD8uV1QnvqO0R34PAf5I+LwPAGBABA8EOj8fiWqBtVl6sGUjwSmy/0VD9X/6qWLAHD+9 EaG8dKSgfBfB/7s5PJWr2yIVlxcdcu7JbdanKtUcks4TCIvEAG5N9+4ijTTatvnmd4txmeUeyTc7 lDyVqzljjav7AH1V9OMzapX8N1ixfFl0cIjMvQTRf8ULBSBtTdZ4p3nQ1asKOoRk6mktm8thSVUM sCkZUfjmWXvRFvQHZkgztFC+Tv+I704x4roJ4zIEy/9ZxRanRcGxB8fj5nONM26BGNknvq/qlfvW gd+hxvR5B7/E/5PEoQ8Uqvf7xqrJs5NRWsH5afCnBOSsMxtnEZQM281rgVwS7PZ/2d3Q/Bir1IP+ /qDELDSHjyOOGfd5qIQDzZytZ3DxPXiFJ2GVokJzqHPr8vMQdyAvUe0kJDPZqUYJ/pt29sK3EQGI tovWp4Ke3Eb+Zu4iTkLWroWSPo71jzXabPdeI8cB82MLFuQBnry4wufzEVoYaMxnzooiWOzIBjdN 4NXjPyptIUjKx/E4wlm4fPCHLoX8RLDIBb085G4RNMFgsDc+nhhZzNSYfWa1fRRODMZ7bAziIXTr Z0OxZ0kGf1AFpxvcsyWN1YkSoSUFqMmwK7MwHCfrZENBnoodFvGv9vNIxm4Z5ACMRXTupT59PwhG eVCwbkFCf0/0mYD0XbhMMv0RSW1oRi0ydOp7ACociUHC1tomT2AFyJ1gqRG4MhhFfrtAqNU/2pQj XFVWOisZ+ke6LDcpHuPGXNNBidPDH5NoOE/D+zBqfGfLUKzQwiU1MGWCjK9MqEyCzBjY1SH7gCKQ 2vGfWjnCeYOeU0igthoRMawYuOjPxFxkygFXBvotss6YOp42CnvE6Ia406TrYrGfuaKu62kEI1sE EpOdpGeGeC1jWgOWbNc4YcMzK7HyrDSIj9wncnLUnArSrOIE2jUZ8u6u9ap2Axazt5Q2FxcJMzP+ 5dHWd1egzc/EuPOhTwh/ErypV76u7KCkU+nbwd7/vkvniTAeA/zS4ejzxf/PDr3pJkxpQOhLnut5 epjQQIJUUD0vH6n9nYX0f/RNyBVsCAXD6UDisf0GArLIkty6jhL6yk9HvmgCAp4/EkIY/Esf8/L8 RdVFw6TfA/+l/pYBaVZwPAf3INJ9UCgvgh2M/EpUJSlRQM/Vgyj3pE/h8pB8b/5CAEAvxWX2JVKj ylbFOfqhNFaoMggfEmz+776w6VfQy3/qt3ZCBxoRgcBdXM5FXgOtZLaUILI00TiXC4SPaPfD0vkn rQUI/k9boGvDwdLf/qMwJdCCr/P7zGQPD6dAkqnE1+4uHvsYn7ChbTGvCmGiXYJX6OvgejIG1fwR Bqr9fFw/z4GrkHtsVKyzw/L5E/KTj70HShu6u2vUi4xVcbibUqUXw10+FMMGH4BvwDPQuo+EuCSr bqqeEnyjOzS8IdkUtdg+pGCEJY/H6rwHy6iQXKb9R8vVfSq/qFUy0GS1ZTvHDuAe1SOsu27qFuyo aYmqhLyaoVJC+akUTepCMyDHAp6ujvShI02O2sbf/Ma1AFhcqLp4ds/7dUqWwVOq0+H1cu++Zho4 nLXwY9TPWPpfDaMmrUHLk/YFkm6RneYdRct73p4/0QlgRD6Xmsw64KAp6eo0Cc5EEZTYTJE1LCRM TP16eNYWZCUZY22Eiek60vrBrnrzZLIBmGtSnsWBWi4Z7TCTgW8aTdD85sxcXLjEZCP1sLCXU3uj GDB6fvMGE729AVCwlaazhOj+o+9bFd5dF3GTqe6YsadnNW/1ELAp6ddMCTA2j6nONXTxkhT0IZab FcaTYMxnxhC+hVwljaZ9IBnjAn0qXKDlzuAIcI+dWGu4NdOnHjL8TJt4LS05LATzgzzpEIx2ngY4 M8Zn1IGAXosJBnn0Qwp6BVhkZ+E20+4m06n9Ov4SmBjMlzpDrnpOjR9BZCPp3SsHEMDAKnI8GNwW 8q40T9O1vMRiY+yMxi8wPyagTbZJT7wpyZ4Li7cRhRswa8Z6Mxk8KcsAJsIq1GTSVATuOJmWwKEf EgCkiY7l0dEwU+aemNsYDiFvDOk41cnmDvCduiC8Z/WmOb0m6mPTL3pY+d6MTSc72Hb1bpDgXSJ7 WCMZ/gtSBI0xKRQFiYCn99JbWo1IOLYDDIGm/V/lu0DEtQ7suJTiqwuUKVc9k4v1ac6dEpWJZd8R KjnOL3ODSH2aThTmJFn/84Gui8ffEj9VI5nc1Pz4tEiK1DJb69Sj2iwvEr6v/sk27MUZPNohjHa4 ZgYBefq/C3S0t6RatrTTd51mq6DgUnnDuCP261BHm60OrKNPbANTZK31XCptLdcGQjn3nC3OsLzI nBjnlKqCL64wPZqewd/Go+VhDVF1ygoQONge8JZegvpUZCAdQDRK9FNBlOVmggAg92ph9+2L2SyE h0Z4NIJNanh2pXVVlNSlG4SlRcJf2Wp8Dg8+pxcFEptRdJVdAOL5loQwaDxQpoMB0S/D/LyAcEsE DJ/ALt8OgdVTm1XvfAfBh4rsAorLlRcX4l9nTZ0KfYAYqEcf/1bv1SkCReq5jHSEf4XMKpKvg+WA t7g0/FfZJ9tZZF+otOD+zq+Nsxhfg0PHQHwXKODRxagOlCWLVj9Il+C87ojwun5GmJzCZZMTgYJX J7JLp3oqPpeC4qO6M056ezveL0yx1gZTeTGmUmmU/i5NpFzWnTWToj9XW5pbUZII/cAdBH63Vhhq VLoOOnQp4jL8IdX+WbRd1IkvQX9nV6jFThoM/kyXdILiOBJb0DLfJ081/OrrELHTgz7T5IBAcDW8 li1Z6Jjoj2u8JEr6jROF51PpFw801upzvCBP3YthJRnvCS1uDVPaN41pInqcHEeFoOGoz9SnmgYn ZyJ3urhnk7beNcME/CA6nxGEeRlq4Cw5yBhzlXPL/uo8BYJTAy+ORioWuTyFrWTTAMY7jJkZ6YlO ksMHGd5wYfEYDhmTJeY0dndIApSFzYa05JdIE8/dzDc5p0FgMeGwwnT0Cpwx+ri3T9MnxntAk3JB EPFIR1rhVRgdGeg4QdEILG4QArSZC4KXEzKYh5tSwJXORTZJ81fTrb0zp9AZNyAn9CrFxeI/OcYa wHYeGnEQ1mNaE70u3SCkPNIU/SKalN948pCsZ+1aTYHvDswaNGsbxYFhTSfNgrzgrSYecIyNuCoR cW0R4OWEpz37xc6Ad/ymAzbLQ2qu9IHAbBXfjUtvJJw3tDGvd9JJvBugXWGPNCpJm5nlHF4jK1C5 QVQKVL/6fki0kRdl5CTiiBO4mFhOMwOBNUf2Mp8L+LgpDw/VfUb/nAMzUgjqpUA1H09bQNXvOg6H ZC9QqA9R1GezqJXsoSHhnISYEPuyS387g+Er9bZv1XUZ0SaEEv/f1UCEquWaCg8olsgKQdamzaZ0 vLudVcXUIu5OtEvtEQdaI+7GEdi2dFx0Ker8JY/9MUqvUCw+HlRqLEWziY0qVjsef/29BS/nR1Nw ez38X/68jbuTJtb7RBrrfaOutdpVGxO46M+XYnlnf79hcFG2ST8vx5B3bWpv7zAZLYhmks9L6cVz lYHsRdPzZNsTp7qa2aNDoUwOgsAd8A6z8qmqfTF8qYdgqzkLpFXuN2N4WtH+Dhom7maVnMOdeM5d ZxoKhetImCoqI3JDgkleO0XpOHtOpXqfdI4w2bT9aTbFiMqTCj1WwEqB4eEekNauxgmqkWZUyAoO Eaf5hMSSk3CXzK41Cn+bI8jB2QzGYuMzYLQR94TSGJdSE/ctzDrxn41LGxmuyL5Zec0+HtMA4Jwp 8U/SwZd/dy+SE3SXYuYcbCnzU0ZIpLLm+urzUZJgUFDzbwp9WMdYWIcmYZY08cIRHutXNXhK54Uz 90UPvDUc9wx6A/p7N5rVCkGODf6IoC6wcwjS4YeCcFoMPp04TjFnT3ZtNPGebTmsJ+EzR9L8b6Rn TquamHxl+6czgJOGXjPcLpgiClnSZyf5QyakJubAE7aRjPB8iAHMUGNfMmxn1GM+riv6+sIH6QOC mUbMCllo1/rJq6lUGDLhHnODTColoJ5wZyhaSIxdKjBd8ZKaKIQDHOYQ9bmmuElh5Pb0pG+C/i0K kHXDIFymXbU3UhiaiTim6jKhaXKy/xdNudWbu0hEcmF+Gjkl3LQX2n4fGfg81gKc4ZN4mBXALhKn 4wT5WTA1GQz8aicKMJWUVIsSMkp8BsE2zOyW3gy6MTt2TZ02sv2QZLmNapxbtGOC8qDF05SRclvQ ylCliEgZgYBfzQ6W5B31AOhmqnOUR0TK7KLXKqkbYmNI+rmsLvtzia7iPhh4znM+txHUFAJqri25 zKoRNocGtHbN/K2iGbLPMDgx3ScZn9n7+/1I3ZWF9Ib5UPb3m9bpNdm5xBFK3bMMF+M80Z8cFMPA /fe52t7N52YDExeq+XAe57t4twK1f5s3D5fLzix5xwKfcxARqcIwzPvPDPPYu5jh0FvHp8hM1phG a429PHZJsX62Z55Kd0FynpT8dBqSDP3Bmu8FuZMhT1SsRIWhbPd6p3iZE0LVSuKVDcvUw0Ubs7i9 ZQCsjeM/W+Te6mSmY2nSBZs5pYKUDLBx6eDiIyTtIyJPfCOJRV0KRnxL3ixaCaVVZMMWCgLOAmDQ Z5t27GBivQvBao9ukAj53ms7BkjSdcFPGdlicZjMtGZo6M8CwnjJwFjGzZpIc707zYfGIu0QBZ1/ RMWHxntrC3KYHAwQHD4x+DAKbT7meoHNgIGZ9djYYWGTxsYigOp9pgYPGe2x2EotAKzMUOcFPbUb wZik099MpcUpASBSlwyDQXuEFk28nDLwp9NqU8FmEQUnTgz0ZiXpMgf3nFyV4z0bEBjO9AoRowkN nhkldFHA/fEbZqnRHOGIgF/+nMMuCi52Ge47mjl1e8RyAsbzUKIWGWz59OYZzF3PVF6ueimlYyCm RKrR11tNui8SFahWPG6txR1rtHWjMfAeHo7V7Oc83InpwSvd/nmICIF7q9HxoaItCZBkIBnw7WG+ LGuEbScX5cMJ/Z0yRtjYUyaQpnBYzJ22Yj6Mu5kPl/vTG5v0hT0tcFPk8o1RWw9N55lSDFYC/5l5 Zypnf7mcaXFp2HApQOgt8dbOoigXt9aLAE4jtBZnwWiYIQWrbODPrYhurKyYkYcmCYLWjEbn8Bia uGQFwi8DGozWOcMhlgWDA+eTyeXi59zL095JHEKeeJTq55F7pyB50F8UJAceGeh6RJmSTsjB9NtL GGROeT525Swcy9GLazREmGw1XbYI0+YiXIxbYDjHD6fw+mHL4y0M2G4jTkaeULV2freRlfZYQLtV MJ+Nt9GQz5vMzAMpFovEz+pJq4t4GLLQT8C9P7rbHeiran5bwpbf1GUnuRYQSEZ5YK+d4V4cljWY 10gwjQvRe3SfLBQu25P6QSG1xWCeM5fmp3dMU5wwMhnJuAlXQTaMhceS5OdJx3nzwz+h6K+p9GiP nRrhXCanxn7po/NfhFTwz9J+VtwMd3D9BwUhRHpIOSW4GJw+FHxKAnrJ0jfzaQK8PuXxlNIkueHA U0ajPxkic9JMIzifmCfE045o9CQZ6/+FgsFepz9uog4FlNhT6bD4jFfdZFDzoy6Q/xZ0KyYZJ7LE J2Gmm2sP0KJCgKxHhg2Cb5Y9LSQ6FOGTBwmPqZzmoGwIyPks+xqzUFxePPxr/prTRCQZCcKfoijt RkZMe2HZ3oHd+E3m096ZgLKgEDM+1cEjYthBl4T0X16fk4RsZwldN2pwyGeQYghLe1zBAGYz7FFG y+szCAv5i+tFYwvpObsf/6aNIaCZCEZ/Q8jBotgTeEWr4EyRnD7xn1HIwsL9XTFpNwQQwK8BY0Ah PycoMZvSoHEsRnE+41psZ+J+nhP1ME/KDiZ6TPUOoT4gF6XGNnD7dFKf02/m4kJ+Ghlm5HpCap8Z zOLsx4zOmxk62xiclWN9jaYHEZsR9YSYm2J3IcjcuakQGdkT6tnBRoO4RHE9lEsunFRZE/RmulD2 MP4vWOcPDPHZXiMi63dSiCLkeFR37Ky4nNjPKThaMRy+WG6FafCoL1mwcL2TeidP62ZKjkzjRwnG fNPcNDQ3T6etXONN8Np9/rIOFvKRKcJAWiT4yTYNS0+Inwm4Bct2oD6/rr3pzdwZVvhLHpd54+M8 hcSNt8vAwNp4smHc62LkzR4Kcmd7eDPXmpYsTuen4ZbFSQQhqLhlw/BxkxvQSxoM9/THalhjpzDL Up0+i4QjU6nuxcX+hFDacrX7ZeP0J4zDgU5HUrk7O8NaSR70/ISTSYtbO8FSe0eZ4Lz3SZPbE9UN pQWNZC06mfoWdJw+DHczm0WhTlvG+6eijPb9tAeHg+nh3+9fP1VvbzK3zRqTOA2CjHNt7Ii7w71P ShGsuLz13iiIIugq9KX0tzsRohFAdIFZgnFhUnj8D/sZmrlJwJS8vUTGpU2Aws9HDOHIG4CUcVJz bJKM+psLT2EvXjIMxHJoMeEshMlMnRn7BfcYZyVgBsQIz9qZbGRYTp/Ie/ysnz3BeMzn+n+HonYd hCnjkapY+YFgYoebiY0M/pvHH+p2qcMJyE1YIeJwGuT8AJu62K+8XfeoK4R5OyGAsygZmC96f5Yn uJzDZKfT74bEq803Eqdo/zEiHhOM9tL1t/RufsW4OUIuvavzTWECeWTay0eabnOdpVSJoMVu1A2S JfjEqRqQVNjk6gYGQz8RlCbdPbmY+WJMg1BPeI9cWJAnGi4zek4YWTb0HGeVbtGSeDhMEYcgLSgP Ge5HBZaSAjDI4II/V4aBwTOT62uiFpCQ9WbJRl/IedIyFo7T6Z+DOyHZh6NC9OUT0XNtNi7TAmGf lwjpSTbAp1dajQ4M9tyCdTPZulpxCjBLcnKTdRIhrjRwRKyEyxZSEZnLBnGCX1lOShOC1Gc7Ak1t PTdzoXaTtkaeoImByQIRi2Egkz5xySRmn3JTjIa8eMnO6SlREteN00eCnMhw0VhFMRHT54KP6hgV QXTW184Rn3pNYUowXYtGfDfCdoMUgrGoj2RweVSWpAWs3kXfVRfPdztRC5wzgv/GvTClFw+JBfbf 8m4ncIyVDhVXQv+p3d4wYyPGcoDDz8g7H6vf4IsLeUYKlQ+Ly78xhe84m5BnC4f2+v+LNrM0Uqt2 du9ogHKO4ZCniQCEpH49V/9xZrUooBZeHnsHUq4XWQFhDWvGfbfNUlmCKSxccArRP2GfnU9EC7Oc N6mRioZ/8TkaxX12ZW+VG0Rww8KZWCPurlKGmNDoYdSrAnvPjPWb6lK3X7YUJlyVNoK89CQZnRYa zkaPhnaY+fGfpDah12lQUpgHPT4sY/q6wXsDsQhnNJxnwcAsOCvK/TRwZ8Eak5lpY7se8QfAq0se dCn1+EyQZ6THTqeMGmqMiTWrmtzaC6T9aYWFoFOaCKMSxE02u+IMZFoz7N4kOjtpOZocg54Y0aJ9 5s1qBWnaj7nuNuiPSh4z+FT26FWo8KhpWxuSPGfKmGXOxO3ui1vm4eKkB56Pxho5tFZSh4t1k8M9 TE6E5mtpQvKRoMXDL422EpujE+hZDcI09vjD+DCSkOg4VjD7oZYnapL8aI5WNE+y50a2hWjyxzpx hwxzTCubDBk4Mh0xvepQoGRwZ/Dc1glwjrCcXxk4n0FksDoalt1tAKWqDmjyeDC9ssCsKzKc8qU/ oxm9OhSi9hHuV7mc+NU8KDroRoeiJzKKSQBhFxE9PYG4YocCLjHdIeJ6gPjPZXr1zsZ09nc3Ar2P ThjvGxSnNtDFOGTkp84G4DU4Jj3YoMj+Kldkk2J+yBFP49V8f/rQjRK2FYEYKL2etXttQFWozSyw vcdL1cTbz8m6jjV/M7CWy7ISXbF0Z47+xVvrtkU7Jk521DbJC3VoN7M5kXp5UvV1OkUl20Fa2We2 +52Rb+5G7kuBx/0/n4ij2IE4U8Dglqi4fQfiVR8rVwejz/7irwiQDSrURcjDOrxObEoGHperVzw/ irWrir3ugXvop+BW2vBdOPjOb29WhOOmgHfsTm2icZ8vBEQilML+M9emFR1P4kGiJKsWGsIujboz GclxbzjbKws0dxo7WE5G5P/jLJNdJ73T+kafuYCQsBgXxFiZoZzKlF4xHWtFVw57FJwJxkz13SgW piN4z0+6SZA6GcyAslhW9PKiVQh4J2LBjJJplP6IxSLi3hUiNigq7OBWnsiibE6dsajhwXJ6E6v2 hoCXleEoz+bwLdqPZkYRXvKQyM1LInCr1TyzkvGBmZGf1itxF0mxuzGEIbCfQMKLw233AkJxH9TD khsTJCFkRMLEaQPidn9hM4Z6UPiCWNfov3GrRpegx2jRPxtONGrxpLTjJCQJOaK+b3MPgW7oOGae hFAWJzuLY2KBCwwK0ho+eT4ZkwiFUWNp4upSnDBY6UkYxero04yYtAZK00MgWoznMZw5wwdXTnxm nrTRge0ickPaFe1kbiwlGegFHk2jkXKUQtwkg1UldY4iPU8FMrFMEEghOvHBQdEehiTXYjTHGXGj gzwmWJa20LYzoD3DPtGwm5nRsOQGrE6Qw4ZdA1BNOaQSJrSGvazgw9zhqhThDCUZw1INTIwtC+Sk Z1MyBaQ0gOCL04M/gF9G5WQeJ0bTQg05xOeOJ+a2ODpBwxk9AtEZh81Y8Fpk89ObWk9VY1gyXP8s OgbF6ttNLPW27uWZmDmavOVQWS2XgiyzkQuqpvNZmZJ72STMiDkKero7V7X5tiaV8XiJCUrIgkhu 36aoLFluQXAYgUzop1BqhWFMzCFfgwHavcYvvRFPKi7AJvivFdaZMA8BAZ/4rZ1nideSsEs3fRDb gC5Df7DQz623a6DPqZsKte1SVMq3dPAujmohqIuzriNlgB709h+zVgYY8GodtDQc4ZRk+9PGx25O kvRnW7CcR4cjGYd4sRrrueMWe4DgtmU08YpYgSQZHjr0/rUZILci7PAELnk+HU/Cl7PYxATcSnmM bBjqZkMEl4Wi6/nAu4CWM81YzbNwOwm0UbK0macfGe31sbGWm9TNNCxltF1tF0Y+LWOmzgz72bBG 7vSo92txpcofbVOVOFfYj3vTjk9lnAFLB+Lb2VNePtSM6kI08C5NnUIUcSFRDFhWi60m613BT3qM giVs+MWGDEaOjOjQKfbD60bSEgjFjTL5q2ohg54x+M62e63CVvpoM0nDCYwCzTyLKjBEAW1hNLI0 bS4gmDE16ZSTNThYyjC5uALGHPtNDlYBJ0ZS9Pwmb+Yp4R6NhqFJyn24J7tIDo5mT22IAocMzLU8 QCw6uswFozODP2kpxqE9GrkWtw0zqXCbUaUVp9Twrfd3rIzJCwWpcFljIVoaWvUkfmgPScNkgLRb DFP0+FHER7ICWI5lekeyxggYFzeyBg8ZdtcYZiNdsB2At611wz22z+okgrFBM5OWms6fERk2FIz2 ek3NMQm7vAF8pgKYSXACPj6+U5cidksvgYY0OBhOEJ7jDwpyLxLEibdxtntR0FH1CR77IsVFBUQB DEv6kdplxALBos0unKIFGu9ACU560biDSBK1hMlAcky0hkuDgTUGMBT8QwJ2k5HxJqIWEx+HxnJf rZIeuKW2woKglJ0/CNpMchQlOiJhtPE3bJzWgrX7D0q6cnTnR22xh5YkZ703YlGCZksYC8KiQZ+o DuVficgbS6SzV3OTyaRMymFdP/WPBT240eYZhwtaTHlhkdGoz9JNikWSCdek+vT2kD5qMoWwVdSR NhvkTbMTtrQWDPhnhKv/qQkaFpoZ7bVbajODLrS0abQAmyLtJmCDLKsUCkKhn8sYZbBIb43E5JE+ BM1zk6uLjwz2F8IssaPyMVtGK4WEY1T2+NdnRdlRjDZpQZQdJU/CtKUgJJhoIlNp8TsjHeVhEdQJ RTzGnBT2AmI8W4/RkePhZ30RhGJjrkuU4j6seBNjBUIQ5cmcdok76I2U2NyeMkqfeVGRb3cPYckN DH3A6eRnjiZ9oMSrafYE/Sdku9Tv3AclIE/ray7Y2GLWYyNODHYs8RljbJzV8F8qwOKXJoWaAw2n 6wF9xdoYjtk3eUwntLPFXBntqclS6dc83QF9Foy7IqXXJY00Dhbjx+9TPw6l3ChwxzGspFE0WJjQ zlqU2NBcGWpz4z4sZ42TUmvUILN4U8cEl7TQyZNPCkKc+ysC/p/qc5OLhFBqZTwpJT/YQpSMMZxg 5tIhn20RppYsekGdyZzvFyWjpkU1gkTygWMglDkFmDESSXTvaloVdMjPGA7xu8prR2ORXuAmbCFO eMC3ZqQarDLIRJ8NDHtYBjjJKn4yeXNB0KsChP+0yA+BLAuGicgpKk513kCcVJ47i3Etd3RpWMOw Jwp7NAUOBmeJDOkiZ7iF+wlCtGNBnjhPow/nFosAvRUg5WqkGrxnllQkHeZxe1jrAniTLOAn1tTi Ya9acnyatcXDFMQ6hpsKk/UcfxP1ukgYdXXWNDOVTWoRbcXGv02jPrcpENBn8reZrLTsT4hoYLID VRuOJ6S6VoDQJSUW8b5pAnpkzrN3go0sJV8YQkCe00k3gOP5EhNGDxxL0/cGBSfTwcEwr9UZqDJJ taTa1SYap4vwkocDIROOGcsBxgFvEx7KvG08OmU/Exy3pjBenEAF6I/aCRk4Vhj0R+CobtsjA+FJ yrcQCih+Lscdp9JiPHy7pbQSqkvYSCMuiNICsO4Kr24d2DR4z41SS8bLSNrhGMzAz+NHt61Q+C8h YC46nzFxUMqf16ecsBjR0nam5FrmXECFIsF58R5N1k+kIGmEJg+M86mpllOfsbbOEqetutBGO8u4 Y8VR7goznZT2IgnNuEcmGxHJtGe3dJyjSY8FP2HOpnZVyHDxBSMZ/Ozu28aozmxvejBEHoVzRrpI M/U+NRckStdOJuG/VeXNmHxqFPvF8ZaJAWhMxoZ8O08nn6S8D8WtE6c1hk2IvDvSWyzp8ZzSAKwt JMSPPHU/oxu2tjStCmLCOfGfkwFp7GqVhhrQjdgDr0LToUkMNYsSoW3OeI5w9iE/j+awSuGfpQam 8F/jvsQC8Mxnh+FssdGNFmLOPhT8AmeZD57a4RB+LTvCUKewFjXezMRdTElRJCmEYja12Xu1Zpfp I4wFP1U2n4c51I3MKD3LKxqboCe86TOJ0/aJ9rRSVifcXPJYHzJ8Z967daJkbeEj3hT+HONMnuM7 iYWjisk7qRjPQ6Wn7GG0lNIxZlaTbNa4+n0+sY3Rilo0BcQYJy6uysDjlKRj2BuR9WI09vLp7ofj CZOnGmTI1xCMLGzzOnDGB4KxH9XbGXQoKj58+nKrEfV5UR1uCrWnDPwLSsg6e6wSHhnLUr5A8PnM QEB4ZNEbmsC+Hzozzumu53ODHOy7s/Bm2ThT2eloJXUYXWwPDBwmen69wyJEnDsGhtC2SchXxqdC kzbsPnnt7km2fJHIcz3BmhYxgsTnwYdW+DHEVp7pIM5xDj0E0cEHQTMwmNCPi9J9zuFordjeYeOh RdzreRs/KmJ5uudRmM9KdDKDHLtFJ9PvW9NQQCUXgnDP3qeBoL2yRgkEQydT+BenFaTjyo8npJpX qEVXQuYa6y2MOpiQZy4TbEW1nRTDL+EqPG4fH/jOLBiI/Ori8arknStCM3J9YbsF/kOGqLehinoC QHJBZylhAnNBRkUqQVNsMGwWB8aCOepQjSAwx3TGZm0Xx6f3E9pC0aStHtqzBCM57rASDvG0Au6x oIhIWiO3SwygeI/OsDhJRV25jXUcXqQl+200Fd7Yg4ODpsR91C0nuLC2blTUpZOneuPJ/EvW9E6A W9RHu3jDZGI/Yn6MeZjHTGiem3JdcMdjOjPBMnhXkpBIRpFzqfjO8CfrEGjJSTQJE/0kgXN9asJr nCfbScZ8Fum2GM3uChnNNhUM9gjBiWr05oMbp4QuDMoScGu4yMz4U8aDTIye4CQecFPFnMHJ2sNM phcnPwgp4Z6HTshDyiEYsjJunRHOp8c3Wju9I4lAIcMmhFzte9L6zkNC/A8JFcqGmOS8GRyDVJkx 54lzemHM4zGYq5AcFZOrjI8Me4+42M89AmFp88M906Agk6WHOEYyfJlAU3XJY6Eie1plhk0CKNT6 exRufHLmAu9cSYThTh+LmJJwbmDwwODQZ9l6NnMCzws0leM9prWDKxVgx7w9i504Mvl+2WgMDwTC OJnp4Mb4SmxilnrW84d1IS2J9PJzlqToU1GVA5zI1gyCnradSnWumas88dGe2Iozy7zBwNKxTkII dRfErRPjCzmFHRWj4BYVjhgEgRXjJxfBfwQTmZ0ycT4dY63Rltojwt08na0hEehwpChq8dd5RoDm CZwz9vE+s3tSknutN5zhPrUUg6DUdDuNrWb1CSWabGfn6BhHRUoq4mrXaVDO4CwzF4MU+trOo6MW RNHcOjJ9DYgujQHEBEM/oJzOvraQhYThUDgnTzpWM8pNwZpPiV2pnN69HrG6Cz1IDheni8PyG4Ah tgtSBeM+xN0tBEO93MXGdRDg/oJxMM8+WnONEMk7u3U4o1yf1s7g0MAZagyS6midrgn9I2LBFnWj +rCw48Z5QQx4tqQ+bR+VKDhjDsSjIYvx4aONLZ19vc+h+BadHG6vT3k58bA4jV8YIXCLnQcRH3BT 4DE5LDyGG4fj0m2RRft6FUzpoZ/YAm2lbBlYBuL2iwMxnpOjXKTmgWw1EcjqcbnZHnjyf3OGwslD DhCntjfBueqeNJ3PMDPKkp/SBJbBf0lPozjBOdSC9JKoDl494yb+spguicYuCn3QwmG5W4fneWQW hkeGf5IQpGjvR0ew+cGc9IWuMLEpnRCNOEXS6MDscaSnnQoRFSYEn1pMFOHbTjMtCN8hl1PjPaEM 3GCVNxL0XXRsaZE4j9iFk4sDhuezqbU8O6WYnefGf3NaTCjqynGqGOXAc2AuAsHjPRi9dtjlovaA xanndSvZamkQUjPZhW3RpFoViv9vYTcQpHHBjxrQ7gDqlow6DgtGf1bujrjBHWrqaLDUdpjizOtE 1cM8B/Br2AlmXiPy4sRbe3hSC/6mnZhptCTORc6Hr0RPWKV4OiNP4mFM602eRTj5SsLRHyt86dzr ADpewWEbhH5SsJrzMbJZ1YX8JLrwpCm9YqIXGzbhnmNJDp3QtCkxhhxc6dehZaM3CTc57WcYycZ7 36RHDSuK4Qo8lgvOsfCNbcpncBwVjvcC0Zxk5nhFxcYDnJmCY4zhW4c40umzo5zx/r0mcNuETPXX jVzWbZOd48dHCs6PkdZzuOHODgnPhwKgpeDWTjLIOI3HOvaz7eNG/nTIy4VxnRq40kxmHlOvETze sww48cHODgnbPvHO2zRkdGTPes0ZUHBSn8J62ae8T65E97PxIbRuHOzvMRnQmOs9E5SEw73HGdzh XnDr7WFAr2yY63ufFWhGRtnOjNys4zCsfhUKcFkCzONY2C99fe5+++L3Mb3331ty259jctva3vtb lN7n31t7G9++++++tuWz77762efffffWz77W59+3va3Ptbn33O+xuffZ3Oa3Pvtbn3333332dz29 777777777777777lfa3Pt732dzn31tz7G5rc2Vz9jc++++++zue+++/ffZz7kPc9C3OY3PvtbmNz 9jc1uffW3vvvAAABtpVj5MKjErwl++r+qm77SynvKPS7PTV8Op/4LjEv4lfVKvK7mfxL2H7BJHwQ gOj/1/6jrJJets2EwBhfAhj+3/hL/C7/79Uqqv469RGmNTJw4aP99ZNJ1Y9oIRcqrfp4sh7+GhiV 4S/fV/VTd9pZT3lHpdnpq54wedh////+FBhDVqy6l3ve9n5m3J3nTqf+fP3whF4QQOF356wd9tnG mJScGEoS1QQRK58S7ZPqOK1bCAmst81bCISRL+Pi8u94eDvl/b6d506aP8HyvwkD4vtlU+VL732n apuT21RGoxMWd/DAwhq1ZdS73vez8zbk7zp0weHf//////////////////////////////////// /////////////////////////////////////////////////+RMGnwDc/YPGrYI4qNGJCoS1Jf9 Vgjb3VqeCAPi4dgh6Bubiyk7//////////8kYLT//////5Q+UiPmhLBecyG2wcbNGcc5f//////O Gahr///////InD7kTKccdf/////////////////////////////////////////////////zpnXt icwbv//////5QzxIz///////+YN///////////////////////////////////////////////// ///////////////////////9AAABtlbgQvrYPAf0oMEEHgIGMGEsGAMB4CA3Bi4HgP8cIYlggKwD AYfgw8BQKh8rEv4k+BgPhAVgHqgP+ViQqVTFSqz6gv/n+TYdIeXKDwH92DwECWDwECSDUHgP7MGp eDeBvF4QB8Px8EBWAf/4B6svVKh4qLx8PslHw+H9UqR/4RMzek4PAQI4PAf24lA8B/YiSDQu8DwE CuDwH+SEEHgID0GL4EFVR+AaAcDF4NQYSi8vAMA8P4rEiiSDKtH//fH4KBXS74HLS6fo7VBkDKgY IQkBBCADCUDKghAgj8G0A8SAQAgD4IIlj1WXgoRJLhK8qH5ePS+RWrHpfP/Uq5P3de++533330e8 HgP1sHgIK0GLgaAxeDwH+CAaJQN8AwIAII+8DAHCWXwuAPEguElVFcAPBpIrnh/78U5/81vLYZB4 D8lBghg8BBbg8B/lhBBhLBlYQwDBJB4CAzEgA4SQQQgj8IAlAfCCXAhCQXj9X8fFwHi4GlVKh4qv vKFVUea9Ty8JBABlQBpcDF4NAQAb4lRX4fAghAEgA8uhfJFcVCSXeL/RXPX8Uz3x3n7NatNg8BAk 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 hpJrHqFyOhGnrcATWCQjW00iwvIDrGYTzhEMgxQ8yjRE6mTNIDD6Fhf1ZgLEWLCdc8lxsE52hQvm ho1kL7eFD77448Iza299999999rc8mskbxo1mn332863i998dbI0OPNvc3krW9rSjBrOPt40ayF9 98da5w418In3333332861jRvCp9999999+++++++533333333999re/b3Pvvvvvvvvvvvvvvvvvv vvvv37nfcrnfffvvvvvvvvv3333377777777777lfff33333Pc77+++++++++++/ffffffffffff ffffffffAAABtpZj5MKjErwl++r+qm77SyngD4qHw/k8Pi73i+Tfq1Emr9nbtOhMfwgqqAcqitX2 X6gdL5azhNJVMlXh/+Dwy8uLqP7kxrTtsUWxanrLfNWwiR/4bGJXhL99X9VN32llPAHxUPh/J4fF 3vF8m/VqJNX7O3adVhBVUA5VFavsv1A6batZwmCQ5Kpkq8P///8qYMXj8dBCH18OqBzs4DGAhj4f yUFHqv2c83iJ54/A3v0SQDRLVCXaP1U8rs8Xgd9LFfpsn9m5Xq1ckVq5OSfskjUO3ni/6sug8U2i MOrlu4c/g4MShL8r/7FX1F1ewYT0s96VvIfR/z5gxePx0EIfXw6oHOzgMY8DetEkA0S1Ql2j9VPK 7PF4HfSxX6bJ/ZuU8EMfD+Sgo9V+znm8qSkl54v+rLoPFNojDq5buHGL//////////////////// //////////////////////////////////////////////////////////////////ImDT4BufsH jVsEdYgNGJCoS1Jf9UoEbe6tcJggD4uHYIegbm4spO//////////////////JlhOMnbt3//////7 tzu3X//////u3bp3//////+7OFhQFDr//////7v///////////////////////////////////5E yf///////MGc//////////////////////////////////////////////////////////////// //////////////0AAAG2V/BCihIPAQI4PAf24PAf24NAeAgTwbw+Bvg3y4II/Hw/CD4IEgByouVq x6rHw/H8tg/H4+ihQJXxFtaOAgggeBvfL6DwP/KJIQQhD5QOlYBwBxcAarHu+z1VD8A0ED09imqQ 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 rZ1bcxJz6SY14denuhCZIRihsBI0koLU+zgtQTk8a2jNOcROT6F8rYmJiMY5BaZxx1coyJGMYvjX JFzDlfqYyda2idiblj6QIUydMTrnPjNCyMMRk6LCzhOigzGYz0Yykk7zpMmPJBiFAzxkF2Epx6my Dj5AMvQvFZLsJEPO0Toecw2izRC5FhQEaMyMmKk9XCshPovhAeGoheMjUavNPrZAhFOvffayEcb3 tZ199ve1il9rc1n2pPfbmabz7e9nOGnm1M6+3i59999oyc3n2udaMNHImcK0qRzWfawqZwrIGsXP vtaOPa9IX328ZvvvvtlONY1b+Bi+++++++/ffffc77777777777999rc++1vfffvvvvvvvt73333 33337799999999be+1vfvv2t77777799+/ffffffffvvv77777nY3vv77777nfffffb3vvvvvvvv vvvsb3333333330AAAG2l2Pko4SGJU8rBtL1akFF+/Ue283+zjUyEwSGJfxK/5V5Xcz+FsP/wmMv Li6j+5Ma06EAvCCqLlf1Vn9VfvrmMXCckZeB6ghKh/xQrnrFx3D/0dHCIxL+JX/KvK7mfxL2HyR4 d///0cFRiSAeJWBCLviQoHxfb5Sr8Bz9lVXZf+7duPEr0Eke/Hpffl3VHlP7necvJjgwMSvQSR78 el9+XdUeU/ud5y8mO/PmEAA9X9Uql9++qli4w8fgHQIX/KqrEr3/0ul/fqvXbzbr7B4Cl9PxayUY +k/5X+y57uSMTTgYGr//eTR5o68xIxkamO9HRw8MG+JfvQIRdZ6aBzudBjQlegkj349L78u6o8p/ c7zl5McJXoJI9+PS+/LuqPD39k7zl5Mhz/////////////////////////////////////////// //////////////////////////////////////////yJg0+Abn7B41bBHFRoxIVCWpL/qlAjb3Vq eCAPi4dgh6Bubiynpv/////////////////5Iwq///////lDCgsbYYAsv/////////////////// //////////////////////////////////////////////OGnOQx//////////////////////// //////////////////////////////////////////////////////sAAAG2WOBC+tg8B/RgwQQe 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 m9MQiGXfo1GccFKVYEhKEZ8+eS7JgLSRPaC24cODVHI0YPtzCpvOpCwaixtyKTyankmLeDALXxPh RSE2nMFqfIwqGTWZGW4aFzhDKe1tKFhE4ZMiMkjxnkYLTdBMCNA5PwPwwb4MU8ExhnLcI9BOR5OF SV4z4WGUvTSY2CedGHnBodUz6U+pjV6TC4KeUElJm6s46n0aRGfPjRUyPuayBrcvw8da3PvvtZx9 jGTe599re+38CxvGj7fhGzuMtZtvNN5xspl9nOU+3n2umn2s2z4LwqffbwqHWec+1ufW3N4zaz7e Tvvt4yfffc6FnTzZzz7777777799999zv333333339999+3vffffffffc777777777777779+533 K5333333O537W599+++++++/ffffffffvvv7W+++/fff33777777G99+++++3vfffffct999je++ +wAAAbaYY+TCoy8uLqP7kxrToQfj9UB70LpfK5m/mTed7Omw2O2KLYtT0CBqoSS8vEugfVfn8gj9 v5dz/Gj//5f/sa2nv04Jj//L+2NbTxcXl8H0263hwEhz1UyVeH/4fGXlxdR/cmNadtii2LU8EH4/ 8B70LpfK5m/mTed7Om4EDVQkl5eJdA+q/P5BH7fy7n+GmJ///5UwYfxQXFypWXxT6yczWNMggqhJ VZIrl/JGuUreGxggKld+AeJPao0vURYDvDgll1Ejw/Vq6XTPqRE8zT//5f2zk2nvpwfGEAGqku9k uWK85SOhApco9RLVAfgHo3J/vOgx0fl1LlNolqgPxPJ/q4Mdtzaome3kayMOBgdubVEz28i0Mfh8 YIKpVB9IXl8n/fnI230yCAqV34B4k9qjS9R5YDvDgMXwII+Hnvf9bkjHq1CMSy6iR4fq1dLpn1Ii eZ+fYv////////////////////////////////////////////////////////////////////// ///////////////yJg0+Abn7B41bBHWIDRiQqEtSX/VYI291anggD4uHYIegbm4sp6b///////// ////////////////zBjT//////////////////////////////////////////////////////// /////////zBrmv//////+YM///////////////////////////////////////////////////// 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 30PC+nW8kffY3Pvvud9yvvvtnc+5X3333332Nz9rc+++++tnn3O3nn319zn33O++5X3333777777 7625ytbn3333332N7777777777nbzz77lY3Pvvsb3O++++3vY3vvvr73Mb3331t777e9bc++++xu ffW3vvr5577e5bc0dz77G5yrb32t7777W98AAAG2mWPk0dH/p0/9HJHI1NbPf///BUYliV9V7+q/ KZi0oxCGrVl1Lve97PzNuTvOkp86DX/lRdFfpmq2OXs+/yq6q9V/QYX2ZIP4PZjVHfSFpjkYd/C4 whKlRfC////313Jt53hwShL8rV+xV9RdXs4Qe9LPSVvIfBoasvBm1YFfjESFSofghq/q1e+u5Ntb p/8HxiWJX1Xv6r8pmLSjEIQNf81VvtL2OcHZMENWrLqXe972fmbcnedOl5cCFoN1VFfsavp/q50M Dnqpkq8P//////////////////////////////////////////////////////////////////// //////////////////8iYNPgG5+weNWwR1iA0YkKhLUl/1WCNvdWp4IA+Lh2CHoG5uLKem////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////sAAAG2WuBC+kkXj8D0Ly8FArVqx9FfwPKy9VC5X9VoHPq1Xi8fxV++7fQvVz14 p+bB4CBHB4D+3B4D+3BoDwECeDQuBvg3y4II/HxeEFUAdPAHeLlaseqy4fl8tg/H4lRRg++Iu7nG XA8BAvgwQAeA/xwgA8BBQg8B/lgw/B4D+rB4D+3Vggg8B/SgwQAYIYMPQYuAOB4CA9H6r3xIBi4S QQQgqgZWJQQy4Hgf+cIYQxIB4KATEgAwfgHeHgkF31Ak1Qo9vnp4PAQH4PAf44PAf0oPAQJIMCAD wECSDAHA8B/hgfB4D/PEkHgf9sHgYBsHgoBUHgYCMEAuBQAwIYIBeAeDAbB4H/VVj0eDweAzSpTq nhoAwGVAglwMXg0AMBviVFfh8CCEASAgl3i+SK4qEku8P/RXJfyfnvxTn/zWq8HgP5sHgP68HgP7 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 33O5XK++5379999999++++++++53O+++++5X3K++/fffvud99+++++3uffffffffvvtb337ncrnf fvvvsbn33wAAAbaaY+TCoxK8Jfvq/qpu+0sp7096XZ6aueT/wXGJfxK+qVeV3M/hbD9gkj4IQ7H/ r/1HWSS9R2EwBhfAhj+3/hL/C7/79UqqtWOvURpjUycOGj/fWTSdWPaCEXKq36eLIe/hoYleEv31 f1U3faWU95R6XZ6aueMHnYf///4UGENWrLqXe972fmbcned6Rp/58/fCEXhBA4XfnrB322caYlJw YShLVBBErnxLtk+o4rVsakJrLfNWwiEkS/j4vLveHg75f2+nedOmj/B9/wkD4vtlU+VL732nbtye 2qI1GIkd+GBhDVqy6l3ve9n5m3J3nTpg8O////////////////////////////////////////// ////////////////////////////////////////////5EwafANz9g8atgjrEBoxIVCWpL/qsEbe 6tTwQB8XDsEPQNzcWU9N//////////////////////////////////////////////////////// ///////////////////////////////////5oz9Mf//////5gz3///////////////////////// /////////////////////////7f///////////////////sAAAG2W/BC+k3vB4D+lBggg8BAxgwl gwBgPAQG4MXA8B/jhDEsEBWAYDD8GHgKAuHxeJdEnwMB8ICsIKoD/viQqVTFSqz6gv/n8zYdI8uU HgP7kHgIEsHgIEkGoPAf2YNS8GVA3i8IA+H4+CArCDfgH/L1SoeKi8fF1kpcPhLqnRL8ImZL0neD wECODwH9yJQPAf2Ikg0H3geAgVweA/ywgg8BAegxfAg+olgGgHAw/BqDCUrLwDAQh+PRIolg3gbv /fH9EovA98DlpdP0d+DIGVAwQhICGEAGEoGVBCANH4NoB4kAgBAHwQRLHqsvBDEkuH3lQ/Lx6XyF 6seq5fqVY7u786+5333330950HgP1sHgIK0GVA0Bi8HgP8EA0fA3wQAgAgj7wMAcJZfC4A8Si4SV UVwA0ECRXFRf78n1H7FOblvToPAfkoMEMHgILcHgP80IIMPwYvCGAYJYMCAJQBwkgghBEsIAlAfC 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 1yFlI1w6h7haPKeffU45z6+aj3x+99bPt5x5J7QJh6E4VIeQGxlyU4l2nXpyPdCzQWB1TCo+nhcU jHGRZKF65eEq5Ohl6MAseSQ5snQJXp9C5kwCeeGPPnhg5IUkAcfa6dT0AsXZKBc96uLmQwTxmfPy vTxptYJyg9kbIE5TNF0PIxpZGASEpWuDRjp9psVJSt9425D1cWkbHGxkMvu0ziRow2fGqTJhqcUm gPORZ0bGcbTBcvlATBal9r5HOQ8nE7P1y+BcO8+8fmlM4cfWzjeQuV99rFw63OfffH5xrNPtZ1qb mZdJDYqzR1vvCZ99nOvZ3ubzDO9zkTZEdcr7lZOb4ba9JX2sy+++0c41ufffffcr77777777e599 ++++++++53O533333333333333K5333333K+++++++++++/v333O5333333377999999yvudzv33 33O5XK++++5b7999999999re+5XO++++++++++++++++57nvvvvuV99999jeAAABtptj5MKjErwl ++r+qm77SyngD/Kh8P5PD4u94vk36tRJq/Z27ToTH8IKqgHKorV9l+oHSS1nCaeqmSrzRr/B4ZeX F1H9yY1p22KLYtT1lvmrYRI/8NjErwl++r+qm77SyngD/Kh8P5PD4u94vk36tRJq/Z27TvwgqqAc qitX2X6gdJLWcJgkOSqZKvNGv//+VMGLx+OghD6+HVA52cBjAQx8P5KCj1X7ORvETzx+BvWiSAaJ aoS7R+qnldni8DvpYr9Nk/sap5Wrkiv8kyT9kkYO3ni/6sug8U2iMOrlumP4ODEoS/K/+xV9RdXs GE9s9JW8h9H/nzBi8fjoIQ+vh1QOdnAYx4G9+iSAaJaoS7R+qnldiovA76WK/TZP7NyvCGPh/JQU eq/ZyNlj7zxf9WXQeKbRGHVy3cOMX/////////////////////////////////////////////// ///////////////////////////////////////ImDT4BufsHjVsEcVGjEhUJakv+qUCNvdWp4IA +Lh2CHoG5uLKem/////////////////////////905f//////dOTk5Ov//////dOTp06//////90 5OTr//////3Tr///////////////////////////////////8oZ80Z6O///////lDeYN3/////// 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 Ma8Z7KBtkgFhk+9Jmz/KsfT5TCwCxhwmEm0+k5xPbYwlHA0RE3zq8nG0ng1IDoyZ44JnCF4nQCh5 w8nkcZ6HwWjdgTLC0b7Z3SXh5J9eFxKzkQTpNIQvSHEmMCJCdRZ88cSbzUr0+aGC5vtIxSnrXpK2 FYD2zSFkh0Z4wNYLlnHGvHjJxAeGnK56nBc4eXXvvvtbm821hW+3uffWxolKWucfRyOoBk8cww0O uGsNDhynxj484QuGe4IkzJC86O86cVKcMMZ1Y9cmXgnuEoJx0dlxz08l0MT4xQ9px9P6vRaEridG Xp+kQWCOQdnTwnw89P04eTd6f60M09Y6C3IEoDU/egkw9hpM2jOpdKgMIOBYQjfNPGCfIeJCbh1L 4ffTiec6SYfpAi4C0aFCC6MkWyQxkankWdG5lwyfRqTOeztvc+FFuNjV5tsp19Y5199bBavvuRt7 n2sw+1mx8zrw7cwrfbzTfOk7eNG84zjQaPt5lvc+3nGs43k4/OM4r69vC5ztZh9rNN68ezmOkTWf ffa3Pvvvud99yuRvt7n3337777nfffc7777777999zvv333O+++++++533333333337799999999 zv3779zuV9++++5333777lfffffct9++1ufffvvv7nfvvvvvvvvv333333333333O++++++xuQAA AbacY+SjmzV1VZJSdvJK8eAo/30bhOEhiX8SvqlXldzP4l7D/8JjLy4uo/uTGtOhALwgqi5X9VZ/ VX765jcuE5Iy8D1BCVD/ihXPWLjuH/o6OERiX8SvqlXldzP4Ww////6OfOqLFXvryDAA0II+gMoH 1VYq+BzfwdWgcrPjqQwJXoJI9+PS+/LuqPD39zvOXkxwYGJXoJI9+PS+/LuqPKf3O85eTHfwfGAc Abb4umWwdscYerBlQlD5Xg9LlX9H0o79L0ddOyyfbkpGJA+8Py4v/8ejrskn/8m8JAwNX/+8mjzR 15j0YkjUx3o6OHhg3xL96BCLrJNA53AYkEr0Eke/Hpffl3VHlP7necvJjhK9BJHvx6X35d1R4e/u d5y8mO////////////////////////////////////////////////////////////////////// ////////////////8iYNPgGqP2Dxq2COsQGjEhUJakv+qwRt7q1PBAHxcOwQ9A3NxZT03/////// //////////////////Tp///////y5vikE5V34MJj56/x/2AnzATz5+P+PwFm7//////8HBhT9x8w C39BO15I3HDfAWv//////z5u8Cze82YZU8rAILm5XgX/2QTnzp5/lOglR3//////kTcfN90E5wZH j6Cd7Q8Fjj5qgq8oBPeGZgzn//////5w3v////////////////////////////////////////// ////////////////////////////////////////////////////////////////7wAAAbZRcEKX edPqbweA/owYIIPAQMoMJYMAYDwEBqDFwPAf44QxLBAVgGAw/BgPAoFQ+LxLok+BgPhAVhBLgP++ JCpVMVKrPqC/+fa02pg8B/dg8BAlg8BAkg1B4D+zBqXg3gbw/CAPh+PggfAPvwD/l6pVVSovHw+s lHw+H9UqR/7JfZm9JwQQb4IBeDFwNQDQbw/qqj8EAIIlhAL6XW1VVYkF/x8rqrZ799vub71xtz77 7776cgeAgpQZWDwH6mDwEB+DFwNQDQbwlgGAwB/x+CAEESwgF/y4SgDqqqsSC/4+/VV+DX1Ub7in 0uNyGgeAgPweA/yQeA/pQeAgSQYEAHgIEkGCADwH+GB8HgP88IYPA/7YPAwDYPBQCYPAwEYIBcCg BgQwQC8A8GEcHgf9VWPR4B4eAzSpS3w0DwED+DwEB2EMHgIDcHgILUHgP7kGAPB4D+TB4D/HBAB4 H+zAOB4D/LB4H/nBi5UDBABgUAQPAwHhJBi8EEuBhJ8JIIYB5eJapWCgVA0LxI4JSr/wUOxRNcDw H82DwH9eDwH96DwEDuDwH8iDwECmDAGUG8DwECuEAA4fiSrBvAwQaqAPBggAwQh4qVD8Ggl6PoXj 6q7//qEP3QPelkt4aTCQQgGAyoEEuBi8G8CADUSor8XAghAEoA8u8XyRXFQklyov9Fc9//p+T47z 9msvB4CBHB4D+3B4D+3BoDwECeDQuBlYN8uCCPx8Pwg+CB6AHeLlaseqy4fj+Wwfj8fRRg+/1Tu4 cVD4fFwlFyoSh8XKh8Ph8q8qLi4u9PFxcXKoo8qVemT3lUme9OSHAeB/cQeAgTQeAgMweAgQQeAg Sy4Hgf30EAGHgMB8HgP88GgPAwFIMB0IYlj0FACADCWDAoQeDgLR+X5gIYBwPB/+eboKLcDMnCAS 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 ZhKCUGIxYVHGT5xL8KSTCbh1Gd5CZGMi0jISBzf08mcckQOI2J0y0fQs00RIeVHNGYVZ9GmHDr0y unBiQhUjyZkwfQvuEhKnMMMsqYhG504IUiBCc7r3JyqakvzgJka52n0/yIZkX8IKkJ09oiN3qywz uEiXFXKwYOJ5HpvgvYJ0mA8nlGTX1yFwzhpPOLDQYdFystJzzOS4NBh5iC06hyOuTwmGprXpM+ZM N5M+++xuQ8nerm3rZt9bNvrcIRk5j94cFJpLnCYKxhGbgWp8ZZDPTpOcWkfHJkdrzivDN0lbziFu eqen9IxC3NmuPNItsKiYYq4dE4wWzKsMdyEiLOrU+K0Rxi8apZZhlpvSKn05r8COlKcUUjBZJfK2 hI6GAVjPba2JzJhI5rpx6mKeI1xOkxoNViMZfRwiIY0YhEcEfT5xIfhCcRYLd5YQJ5xhg1ZRp0ZJ cVPp5kvE5EcHfyC943zxw6MLOjQ0++++++++Ot728+++++1m282+1ua4dbxo1M4znXs6EZwhfZzH SRrJXm+++zuF7OczhCzjI4zngWjWZbzw/Ovs58211z77777777777777GafffvvvJ99yN9zvvvvv vvvvvud99999999999999yvvvvvvvvv77yfffffffc79+++/fffvvvvv37W9yvtb3K+5X777++++ /eT7W7c777777777777777779++5333333333wAAAbaQ4+TCoy8uLqX3JjWnQg/H/gPehdL5XM38 ybzvZ02Gx2xRbFqegQNVCSXl4l0D6r8/kEft/Luf40f//L+2NbT36cGRyVTJV5o1Li8vg+m3W8OA kOeqmSrw//D4y8uLqP7kxrTtsUWxangg/H/gPehdL5XM38ybzvZ03AgaqEkvLxLoH1X5/II/b+Xc /w0xP///lTBh/FBcXKvl8U+snM1jTIIKoSVWSK5fyRrlK3hsYICpXfgHiT2qNL1HlgO8OCWXUSFQ /Vq6XTPqRE8z8//+X9sa2nvpwfGCAEFXQQvf9bNsTN+fQgUuUeolqgPwD0bk/3nQY6Xj4EKUFGXR X7OeUeuIn3+bVEz28jWRhwMDtzaome3kWjDvw+MEFUqg+kLy+T/vzkbb6ZBAVK78A8Se1Rpeo8sB 3hwGL4EEfDz3v+tyRj1ahGJZdRI8P1aul0z6kRPM/PsS//////////////////////////////// //////////////////////////////////////////////////////yJg0+Aao/fDxq2COsQGjEh UJakv+qwRt7q1wmCAPi7oIegbm4sp6b////////////////////////////////5E3p0///////y pvugnBcbi7QTgZx87oJ1BZAFOCQ3J///////BcZl1gLA+fAT+AnqwrALMGcIm7//////5UwygLM+ c0E53sBPBahsbnvDYz1NBkYN///////nTDMM+gnHzDP4VzQTgyPndD0WS0E4MsgJ541QVOf///// /5Q3HDcGRI3o//////////////////////////////////////////////////////////////// ///////////////////////////////////7AAABtlJgQt5glzPMwZWDCQDCQCCDAHg1HwMqBlQ+ BtAPEkeghFw9VF2geLvj/47H/1SqYqVfvfxogBlQQweA/oweAgOwYA0HgIDsvBgDgeAgawYvBBB4 CA3B4D9rB4CA3BBAPEsfg3xL+DF4QhI+JQQgZWJYMJQQy4uViRQDwDi8D4BgB6qqvD8IXvX0qu3w Q/BkjIgQQZWCAXgyoGoIIN4f33x+CAEESwgF9Lraq+rEgf/HyuqrZ799f+HW+9cbkNA8BAcg8BBe hABgDweAgTweA/rwYfgwB4PAfwYN9WDwH9iDFwBoMAcAeJHghF4QRJBgQVYPA/7olg3wbwkwEFWP gYA+D4fKQQh8EH1EmK6Jej/MxWrPAw/BggiSEIIIMJYMrCGCAPgUABwkgghBH4QBKHni4EISC8S1 asfFw8VaXKh4qsihVb6Znjj777776+dJ094PAQLoMEAHgP50GEoGAPB4D/LBh+DwEB2EISga+APB h8DAfBQqxLLhK8JHwYDwQVQBxeB76oSVavqtXFGl3h03hoHgIF0HgP50GCADwH+WDAGgwlCUEIHg IDsGH4PAwEYB/gQVQ/ViWDAfCCAYpEiCUJfvlw9AOVK1d1WrH1UWT1HmiI4GVg8BBMj4HgIEsHgI FUIKoEEHgP8EHgIDUEAGH4B6sHgIDPwBgIIQR8DFwIAB4khDBlf1YBheJIQS8fgGgoFY/BDViUP1 fx+roH1f/y/m2nmMHgIF0IQMAcDwH+WXA8B/Kg8B/bg8B/nj8GLx6DwECCDD8EEGAPH4MAcDCQDA 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 cXHgoONSWOpdgXGuidPFCVk+1mmascQs5vFzAy+EUGaJ72c49PEDDp0gbPK5MlPoWFBhJkXHGWc7 E45enxt5+cEzROns6LTvTZpOZrT6NY4dRekpSZOIudPNaA9lbhoZ86JphHlg4P8ohE3YTIsLxkNU 9Pg1LCVoY9GqPSGKjFDWaeRFWdldXK+HzD6e97Rkas5YTdYcMu8/T5xHjGvXehz2GdCxHnXOHGLe kbecb3PtbkLc5fNOfb3vtZ995jPCwYOODQYuGemnPUycFolxq8Fqj6QHS1ysohInJ6YXPfMJGpSH 0KT4fQ5NHTqPOpReC1TkRdPk5MkmSGhuTtcPJMh5yWkUpCMWQk5h4jyDRpHMGHJlIDei/pKj6fQI xNLWIA9PohEk17R+r8gwGfEYtpI229kAhyTJ4ndgJyfM2ivUiN4qOjPTIwwM9pmOOiJwLFzY0OqZ 67CVT3cJdGK5VnTRcM8aHhbSByX2mkoucyUjIWynELCo6+1uffazj777777yffayd5t7nm+3NzXD zX17U6ea+ErWfbmTMzGmHnx1jI2Oc5CU6zxdc9DzPwjIG8++zjRfTA5yU8ca3t9h19opxytHODrO Pffbz7777Wbffb3vvvv333k+/ffffffffffvud9+++++533K++++++++++++++++8n333333m8n3 33777777777799+++0dz7777777777795X333k+/ud+++++++++/fffffcrnffffffffffffAAAB tpHj5NHR/6dP/RyRz3JNJv//8FRiWJX1Xv6r8pmLSjEIatWXUu973s/M25O8702fOg1/5UXRX6Zq tjnLPv8quqvVf0GF9mSD+D2SNUd9XOtMcjDvwuMISpUXwv///99dybed4cEoS/K1fsVfUXV7Bh72 z3pW8mkYNDVl4M2rAr8YiQqVD8ENX/6tT67kU2t0/+D4xLEr6r39V+UzFpRiEIGv+aq32l7HODvh wIatWXUu973s/M25O86dLy4ELQbqqK/Y1fT/SEMDnqpkq80a//////////////////////////// //////////////////////////////////////////////////////////ImDT4Bqj9g8atgjio0 YkKhLUl/1WCNvdWp4IA+Lh2CHoG5uLKem////////MGd//////////////////////////////// ///////6dOn//////+RMMj59BODLgJ/ATzxhk7gJ5g3f//////Im4+fwWQBYZAtDZnwycXM+55I3 //////kjdypnHnzmAnnAzefOnn3QTugnHzoV9BO8FXj3//////yJuKG4+buAnveYN/////////// //////////////////////////////////////////////////////////////////////////// /////98AAAG2U3Ay+S/yB4CBbB4D+fB4D+fBhKB4CBnBhKEoGEkGEkSgQRLEgSwQVQNPeBoqEovL wQy8ShJEuf/BLEkSPDxQJH+qbdvpJTYPAQP4PAQHIPAf2oIAPAQa4PAf3IMAeDwH8eDwH86Xgw/B 4D+HB4CA7B4D/LB4H/nBgDgbwPAQKIklyr4QAYIQB4MXggqgYIYQgDxKB4H/fANAPAOB4KAbAOBl Qkg0VUuAOEpWPAg0eVV5Sqeng8BA+g8B/kg8B+9gwIAPAQHoPAQJIMAcDwH9qAaEIGH6sGgMAaDw MA2DKC4SB8EL4QVQPA/8oICsGo+BQqi8IJcPvKB8XfitQJasDtijQY2DKgYIQMXiUDBBBhKBlQMJ IkQvVCQDF4NAgA1Erw/yD/xcAeJSoSS6F899WqHs8rilQr/6Vr7weA/eQeA/lQeA/tweAgtweA/f weAgbQeAgPwhA8BAjg8BA8ggAw+Er5eDCUDBBAOHwNQeAgSQeAgPQDi4SgZVQYSgh+HwkeVAgD8I Pi5Wq8EEfQDyqAhe9788r54+XCQJAlBCEofCQJBcXCQJAlFyofD4Sh8q8qHw+Hxd6eLi4uVKs8qV e9J73vST05DT777776LOuBxpPB4CBfB4D+dB4D+dBhKB4CBpBhIEoGEkGEkSgQRJEgSwQS4GnvA0 VCUrH8H5eJQkiX6/gkiSJHh4oCF+Abt3M9h0GVAwQgYSxKBgggw+BlQMJIkeL1QkAxeCAEAEESvD +eg/8XBBEpUJKqF89//h7PfimRX+buWmweAgfQeA/fQeA/yQeAgSQeAgPQeAgMwgAGg8B/agwBwP A/6YN5WDD8fCQPggA8DANggA3x4Af8IQB6tUPwQgal5cXTC4uEvw99arg9wRQzB4CCpB4CBxB4D9 rB4CBJB4D+rANB4GA3B4CA1Bi4GLwaA8DAOgxcDaqVCSEAEAIQQC4A4ISsIQQPCUPoEAA8S1A8BQ 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 n6KsZ3p4OzPbrDROFOUwg8b8lYe40eScqTgwjUraPBkU4QJ87BAJbeJxd7uRsJpbOSN49PiCAuMi FNBhRdt40HRkZz91YO2z7TSEmULlLQ1mMMsjUhGfqaNVsVdy3exIF3G8vA3fnbjdDYBNIBmX4g0X cRRhc9tqc4yzqaQrBKeM+p8K4LYjbJ97yGmFzvQvGfxrBhSNDG044GADhmM/d8yOAcmJsS9E7OEK e3gxOBT0/IbvCe+EAi15ojT9ZNAsLnavTTUBwYJ4WMdQE8WHfA5dMXPJnhy4gMNFRplowmeyTakp PpUF1BXgtFxSj8XAalChsnGesR3N4L6+mnDPIsJCwgNHBHnQvIGidyfwMXQ4Km8mVzrmM6hbnK7o HYqHGLHvpcVO6MGc8ebmfF5wZM42wedAsHeHB7hGOc47hEOvnHBWOcnvSHToq+kT2viEjb5r2jMh ZxodSe6ILuJoNTjWdZkZeOZH7N4DhS0Ssy9h1yWGgOSgL2PcKZTozaZc4LUvYRuNDntoJVJDYUy/ KXb1ISnjxwKkmekPuSeJKfDgVuaxkye2kswgZOMoLmdYiCZnjLuEbPjmECwOPjr6fOtfT4q6fODv IIdcrRTbeebxq3w4+1gxpvh59nhpz777e99bPPJ999995Pvt7333333K52t6p3vfffc7lfW3vvvu d99999999jcxufa3WtzyfYzjyc777yffffffffY3OVrc5X777e5vc5XO++++3uffYzz77777eSPr bnkpNzn33k8n3k833O+tvX3vffffc7nZ3Offffa3OV99zuV9999999je++1uAAABtpLj5MKjErwl ++r+qm77SynvKPS7PTVzyf+C4xL+JX/KvK7mfwth+wSR8EIdj/1/6jrJJets2EwBhfAhj+3/hL/C 7/79UqqtWOvURpjUycOGj/fWTSdWPaCEXKq36eLIe/hoYleEv31f1U3faWU95R6XZ6aueMHnYf// /+FBhDVqy6l3ve9n5m3J3nTqf+fP3whF4QQOF356wd9tnGmJScGEoS1QQRK58S7ZPqOK1bGpCay3 zVsIhJEv4+Ly73h4O+X9vvdudOmj/B8r8JA+L7ZVPlS+99p27cntqiNRiJHfwwMIatWXUu973s/M 25O86dMGZ/////////////////////////////////////////////////////////////////// ///////////////////yJg0+Aao/YPGrYI6xAaMSFQlqS/6rMUb3VqeCAPi4dgh6Bubiynpv//// //////////////////////////////////////////////////6dP//////+ER+BZBMbnU////// 8kb+VMFq8kSf//////p/kTenJGC0//////MG75I3HDgLJxg3f/////////////////////////// //////////////////////////////////////////////////////////8AAAG2VGBC+tg8B/Sg wQQeAgYwYSwYAwHgIDcGLgeA/xwgiWCArAOBh+DAeBQFw+ViX8SfAwHwgKwDy4D/lYkKlUxUqs+o L/jvM2HU8HgP7sHgIEsHgIEkGoPAf2YNR+DeBvF4QB8Px8EBWEG0A/5eqVDxUXj4fWSj4fD/6lSP /CJmSnQQQZWCAXgxcDUA0G8P6q+PwQAgiSEAvpdtVVWJBf8fK6qtnvqLfXN962NxwPAQJIPAf24l A8B/YiWDQu8DwECuDwH+SEEHgIDsGLwYeqqPwDwDgYfg1BhKVqwDAPD8eiRRJBlWj//vj+iUrA98 DlpdP3vgyAMBlXgaqgaAGeBhLCCrBBBi/wQBIgNQDS8fl4kqwggGwu9AhiSrEsSwbo/+Px+pV0vL wOq7VKvr33333331MHgP1sHgIK0GVA0Bi8HgP8EA0Sgb4BgQAQR94GAOEsvhcAeJBcJKqK4AeCBI rnh/7/p+e/Zubn7Gng8B+SgwQweAgtweA/zQggwlgxeEMEASQeAgMxIAOEkEEII/CAJQHwglwIQk F4lq/j4uHioGlVKh4qs8oVVRMz1PLwkAwGVAglwMXg0BABviVFfh8CCEASAgl0L5Ir8qEku8Xqor nr+T6j8U5+zWXg8BAjiUDwH66DUHgP6cHgP68HgP8kHgIEP4QAggGAxcDD4IIMPxLAMCFQYSS8II BgkKgDgb4MCEJQkCQAYDYJQ+EjxcPhLUFw8yFyqDz3se++8IffffRYPAf3YPAQJYPAQJINQeA/sw al4N4G8XhAHw/HwQPgH34QVZeqVDxUXj4uslHw+H9UqR/7ijM3pODwH9KDAHg8BAxgwlgwBgPAQG 4MXA8B/jhDEsEBWAcDD8GHgKBUJSsS/iT4GA+EBWAeXAf98SFRdMVKrPqC/475Nh0HgIEcHgP7kS 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 X2883DHhxkr0s0xG8Fo38ptiYOJUp+nnGBj0iU93VgmNm2/gSjkvRgcOI/hw0SI/HVDp8atycMMj 5ixWKGei96eNDtzhHK2CSFPLv3WisGG7i5IViuJ+lotMueM5l2JeoheeTC1kjOp+AnhW0b+GCs2N 1xlLIL0Y1wwI/eC92GKv1pcnOjHwQevGH2wtGjG9Pym0gDhTlI0Wuf0jCJJ0jwMRYpkQtGmNTh4a ZIMHp5FzQWZPw6IeUjQaiw21hO+j+oQmc5nFpK+1ufb3Pvrbm9zeceT7HwkRZs50++1I+Ivh+k5E NRpjQ89PTniG50Es6vmGGD6EVxIh79JEkjpwnS7qCyaeIh6uAihKLj6EfBXh4Z8o18z1y/GXBkfT m2TCaGMPteV6ukwXJTCOVSmSc0n2cZPM4T9aAUuSJ8ZFwzaWcMBnpBccPNnqFSFnV2yIY8rMBccO hUxBGuONkSuCxNq7YJz0uKTvXsZ8c8aOaFD1c25jh9or0Lc5vJ32Nz453HXvvtZ5rJ3m82pjNrPP vvuV99nNtmGs21Mat7mvQufZzrnk8mtkw1kI53YcCsc8GRCC1ZyAK32shZyLmELWTuVnJxo5XK+5 X2ijV99vNvtZt999999+++5XO++8n333333333K+++++/fffc777777777777777799995PvJ999 9+/ffcr77799999yvuW+5333333777995PvvvJ99/vvvvvvvvvvv33333K++++++++++++++AAAB tpPj5MKjErwl++r+qm77SyngD4qHw/k8Pi73i+Tfq1Emr9nbtOhMasIKqgHKorV9l+oHS+Ws4TSV TJV5o1/g8MvLi6j+5Ma07fxRbFqes/fNWwiR/4bGJXhL99X9VN32pOU8Af5UPh/J4fF3vF8m/VqJ NX7O3adVhBVUA5VFavsv1A6batZwmCQ56qZKvNGv//lTBi8fjoIQ+vh1QOdnAYwEMfD+Sgo9V+zn m8qR54/A3v0SQDRLVCXaP1U8rs8Xgd9LFfpsn9jVrlauSK/yTJP2SRg7eeL/qy6DxTaIw6uW6Y/B wYlCX5X/2KvqLq9gw96We9L25D6P+fMGLx+OghD6+HVA52cBjHgb36JIBolqhLtH6qeV2eLwO+li v02T+xq1wQx8P5KCj1X7OebxE+88X/Vl0Him0Rh1ct3DjF////////////////////////////// ////////////////////////////////////////////////////////ImDT4Bqj9g8atgjio0Yk KhLUl/1WYo3urU8EAfFw7BD0Dc3FlPTf//////////////////////////////////////////// ////////////////////////////////9OnT///////kS3Of/////9OYN/lDDI4YZOMG7//////+ UMFr/////////////////////////////////////////////////////////////////////+8A AAG2VXBCng8B/cg8BAkg8BAlg1B4D+zBqPwbwN4fhAHw/HwQFYQbQgqy9UqHni8fF1kpcPhLqlSP /CJmadANBlYIBeDFwNQDQbwl33x+CAEESQDi/5dtVVWJBf8uV1Vfz1UW+HWz1xtwIIIAMrBqDFxf RLBvAGhBBAH99VVLwgCSXiQrqq2fqqqx9/1UX/vXGt9KYVj8fl4ll6sSxLV/H4/H6v5eXl5f+q1Z erV3VatWr/VP//u2/t220+tggA8BA7gglwPAfwoPAf14MEEHgIFcGAMisIQMrBgDggA1APCGPwZX g+AMVqgaA3wgA3h/B8rCF8II/v/j8IKr6pSJSqDyf2+o6epgwBgPAfzIPAf54QAeAgbQUIPA/7Ko SxLBlAMJZeDBCVg8DAO+VF+iSXA27/wNqsIQNwGBRK+8/3w6bPAGAyoEEuBi8G8AYDfEqK4PgQQg CUEEuivIXxUJI+8P/RXPX8U58d5+zWnvvvvvvvp4PAf3IPAQJYPAQJYNQeA/swal4N4G8PwgD4fl wQFYQbQD/l/lQHlRePh9ZKPh8P6p0f+ETM06AaDKwQC8GLgagGg3h/ffH4IAQRJCAX0utqqqxIL/ j79VX89VG+5vpcbjgeAgjQeA/bQeA/wweA/yweAgQQeAgNwgAgg8BAcgwB4MJYMCAAaXgwkj4ISs IIMEIG+EEGVCSrEj4QAD1fxK+PwDi8uV/H31ZcXK6qUqFKpV9vzgYAwHgID8IIQwag8BAbgwBgBo BokiWAeAeAeDCQDeCGEEIIQy/4liSJIkiWEAuLx+JYlj9Xfqy8fj9X+q1atXf//+2/tp1999998l 58gYA0GBAB4CA5BhJB4D/HCCrAMBghBCBh6JJcJXxJ+qBDEofYPvK1Sq/0Sy8u8I5f6ZunQDQQAZ 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 F1H9yY1p0IBeEFUXK1aqz+qv31zG5cJyRl4HqCEqH/FCuesXHcP/RzBmQiMS/iV/yryu5n8S9h// //o4VGDfEv3oEIus9JR13OgxoSvQSR78el9+XdUeU/snecvJjgwMSvQSR78el9+XdUeU/snecvJj v58wgAH/+qVS+/fVSxcYePwDoEL/lQ9Er3/0ult+q9bbzadsHgKX0/FrJRj6T/lf7Lnu5IxNOBga v/95NHmjrzHoxkamO9HMHa28PDBviX70CEXWemgc7nQY0JXoJI9+PS+/LuqPKf3O85eTHCV6CSPf j0vvy7qjw9/ZO85eTIc///////////////////////////////////////////////////////// /////////////////////////////kTBp8A3P2Dxq2COsQGjEhUJakv+qwRt7q1PBAHxcOwQ9A3N xZT03/////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////+aNzv/////////////8obv/////////// ///////////////////////////9AAABtlZgQos6fNLYPAf0YMEEHgIGUGEsGAMB4CA1Bi4HgP8c IYlggKwDgYfgwHgUCofKxL+JPgYD4QFYQS4D/lYkKlUwuVWfwvVjtrTamDwH96DwECSDwECWDUHg P7MGo/BvAyovCAPh+PggfAPvwD1ZeqVDxUXj4fWSj4fD/9+pH/s32ZL0nBBBlYIBeDFwNQDQbwl1 V8fggBBEsA4vqraXVWJBf8ffqq/976jfDrfS425999999fB4D+jBgDweAgYwYSwYAwHgIDcGLgeA /xwhiWCArAOBh+DDwFAqHysS6JPgYD4QFYQVQH/fEhUqmKlVn1Bf8d5mmwZWJIMEMGH4QQhD4AwI YMrBBEkAwSB4CgCAPwgiWXiQPgPKqXFwHhK+rqpUPFVqryiDr1yHA+CMEtqCMIYkCSxn5N3I3jA6 HZcXtT8zfyb6Kk7TeTZLvLijYfHAKFJ4GH4MOhIEcS2Vee+w38uxhhkvLsn5m1f999puKLZRsILG 2ojiA/H6VhM0wqYVt/szzTTDTHmmmvZk9knvZ6ZmZkUSKJJJHB8B4D+DBASA8N/xtJgCfL8Fi333 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 jgU5gGBD9VfPNJfFP3AwB08r9WQeY/+RcP52JwjL1ar1QAWFPD9UngPgq+gjBOVGyNHeIEQzE4uZ AxiOBiDhS6sWAOhx3C1h0DaUNuSCfc5AcCxCeIicsc1PJPoUJjxhmHOtNn08E+yLiZa4VgLWhKM9 occj2BPEZ8xw8jyh/XPSesaLXZCJD1iFhgwl4Kz5hFtCho2LG8nGI41SuGb09L1o0HYXtGOk6eLq 2SDQORc1jRJn2jZENTloUnXvt73O3vfa3rHONZpzpc6976u97nGuWgiiwwNGJHl5cOCxLn454y7z Q1cnruYBNOtiELEctMkzhj0pPSTpt6TGUGB5PQDVCLDoYCPVKxGxMuN3AxdPfgh0pP5Dvqq6K9cB Gb9+2KLwkG1DCni/tUXlQhmMnJb4+tsoLios8Kcghj1ocUWqx/bs4WC0u9ohzwDedEIWHTgHwStv ISThNXByVzne2EU7OIQzB57//e0Sy4xfXEngNypHOTqAooSaThsHELRA7tDM/V3tKBkEynnJwI4r XYDhPVnAcNUZe5AzI62IQcGb1bpsJwJwSlJ9TiyOLkHIKSDiQE1LpVgpSi7BkMnqU/hngLPhKM8I gkCqCd4zOtiNcjGJ8zTyLYFgycMfdCwQD5waDTzowPkafXjQXGX2M83M8niq8YMPeMLPU45be+hY LV762cXz71t777naKefazj77XpK3nWivfbxq+82Zk5xnORzWNGe+468BNZkNNpIz9BiTt0bvCz7b RABhYXWK0yKgwqOGwszHw8/RMJSofKFgjOU+zKdJlYH7hod7F0bjE41onM9P6dbz77fpM+3pTzeK Gs61k77WfffffffffffffffffuV995P333m8nm++++/ffffvvvvvvvvvvuV99++++++/cr95Xk8n 333333779999999++5b999999999999/ffcrlffffvvvvvvvvvvvvv33333Lud99999999999wAA AbaV4+TCoy8uLqP7kxrToQfj/wHvQul8rmb+ZN53s6bDY7Yoti1PQIGqhJLy8S6B9V+fyCP2/l3P 8aP//l/+xrae/TgiMuLy+D6bdbw4CQ56qZKvD/8PjLy4uo/uTGtO2xRbFqeCD8f+A96F0vlczfzm 872dNwIGqhJLy8S6B9V+fyCP2/l3P8NMT//+VMGH8UFxcq+XxT6yczWNMggqhJVZIrl/JGuWFrw2 MEBUrvwDxJ7VGl6jzEA7w4JZdRIVD9WrpdM+pETzPz//5f2xrae/Tg+MA4A23xdMtg7YSPBh5S5R 6iWqA/APRuT/edBjpeXAhaDdVRX7Gr6f6Q3+bVEz28i0YcDA7c2qJnt5FoY/D4wQVSqD6QvL5P+/ ORtvpkEBUrvwDxJ7VGl6iLAd4cBi+BBHw897/rckYlahGJZdRI8P1aul0z6kRPM0+xP///////// //////////////////////////////////////////////////////////////////////////// 5EwafANUfsHjVsEdYgNGJCoS1Jf9UoEbe6tTwQB8XDsEPQNzcWU9N/////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////+YOnv//////////////zBu//////////////////////// AAABtldwQvkuZ5mDF4MJAMJQNQYA0EESgZUDKh8DaAeJI9BCHw9Li5SB4u+P1YHR+rVKpipV+9+w TgyoIIPAf0YPAQHYMAaDwEB2XgwBwPAQNYMXggg8BAbg8B+2g8BAbgghBEsfgysf/Bi8IQkfEgIQ MrEsGEoIJcXKxIoB4BxeB8AwA9VfeH4kTyiVXVAk+85GRAgg3wDC8GVA1ANBvCXffH4IAQRJCAX/ Lraq+rEgv+Pv1Vfz1vrfW+33rjchoHgIDcHgIL0IAMAaDwECeDwH9eDD8GAPB4D+DBvqweA/sQYu ANBggAHiR4ISsIYkgwIKsHgf90Swb4NBJgIKsfAwQYPh8pBCHwQfUS4rol6JeZiv54GLwYIYkhAC CDCWDKwhggD4GwA4SQQQgiWEASh4qLgQhILxLVqx8XAeVWl3h4qsij1vpmeOPvvvvvvosHgIF0GC ADwH86DCUDAHg8B/lgxeDwEB2EISgQVQB4MPgYD4KFWP1QlQSPgwHggqggF4Hv+ElWX3S9XB5pd4 dNngeAgXQeA/nwYA4HgP8sGANBhIEoIQPAQHYMPweBgIwD1QIJcP1Ylgw9CGAcpEiCUJPqXD0ICp WX3S9WXVRYoHW1pwMrB4CCbEoHgIEkHgIFUIKoEEHgP8EHgIDUEAGH4B6sHgIDPwBgIIQRKBi4EA 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 L/uXnVoS9GMUvTUA4KXPCtpwDa0QEiFYB1CZF3NA4U8grpTqKbpCQ6npIe4wWH9LTDZEM/2OOBdY RDQZ4R0Y0YMUTBQj2m8ZIkxKigma2XDTE5WYGoy4zdwsMESfnAWPSUietoTyf141h4wxuZ1kZLiz xj9OPNvb3q4rp1fBaPb3ud9yjrPOY3uVvChve1nWsZPs4VnG8Fo1nX2YY2abzbOdNvJmR0aOZM4+ H/h6cAOg+/GICKfHOq6HwsypAiezl6klHttIhz+9K4OxO8Uy2pgVjp+/sG4rcOcSvKsNiRS67w+9 nnpUwRDV9n41hgjZzoxZyA61jBnh6kTOQG32dGdNNZlrMNdc+53O++39e0Uavvvvtb333377lfff vvJ95Pvvvv77779++5X3333333O+++++++++/fffvvvvJ9999++/ffffvv33333333O++++++++/ vvvuV99999+++++++++++++++++5X333333333K++++/AAABtpbj5NHR/6dP/RyRz3JNbPf//wVG JYlfVe/qvymYtKMQhq1ZdS73vez8zbk7wnPnQb//eLor9M1Wxxuff5VdVeq/oML7MkH8Hskao7mr nWmORh38LjCEqVF8L////fXcm3nVmjQlCX5Wr9ir6i6vYMPelnvSt5D4NDVl4M2rAr8YiQqVD8EN X9Wr331ORTa3SX8HxiWJX1Xv6r8pmLSjEIQNf81VvtL2OcHZMENWrLqXe972fmbcnedOl5cCFoN1 VFfsavp/pCGBz1UyVeH///////////////////////////////////////////////////////// /////////////////////////////5EwafANUfsHjVsEdYgNGJCoS1Jf9Vgjb3VqeCAPi4dgh6Bu biynpv////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////kjd//////+Ex+Co4TNzixud/ /////5Q3FDeCQ3o///////+6////////////////////////9wAAAbZYYDKe8i0kOkufkDwEC6Dw H8+DwH8+DCUDwEDSDCUJAMJIMJIlAgiWJQkggqgaeVA0VD5WPwPqxKEkS5fwSxJEjw8UCQrlqnZc 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 bcgnakjPs41Pjn6GHSMZDn4uA08dalrmdZpzRAz042SpPgZdODJnNOHP8dHuwlczjTSNr6aHP37Y Ojy749pR2AxQXOw4FnAM8JX262lFYMJQlgGF6v1zdxNSsAuHjoWcHgIFMIQMAYJaovv1f7dB4aAR AOgKtUrn6QgwQFQMqzWtBkkB83/3dToWcGEr4NItAeJgCwfO/8QYSoCBkaBVYD5n/r49R6RBSzBl SoIAl+wdwtFQ+BsHYjwavOdpIOeDveHkZ4ZDnJ2W3HR1rHTgwtPpk+NRztkJUAwFo3o8PPs901Eo wHOjI0vehQdawmHWbODv151roMbFO8+MxedY3t41a2iZ8d/I945wpRQqFh0fhUzjI01mW84OeuJQ qYzb7777777777777yfffffffY3vvv333296u5ze5999g7n32d5K533O+++++/fffffffeT7zfW3 Pvvvvvvvvt7lNzlt7777777ncrnffffffffffffvvvvvvJ9++tufffffffY3vvvsbn3377nffcqx 3Ptbn332N74AAAG2l+PkwqMfeEv31f1U3fak5T3lHpdnpq55P/BcYl/Er6pV5Xcz+FsP2CSPghDs f+v/XmSS9R2EwBhfAhj+3/hLsLv/v1Sqq/jr1EaY1MnDho1dVX0lJ1Y9oIRcqrfp4sh7+GhiV4S/ fV/VTd9qTlPeUel2emr4dMHnYf///4UGENWrLqXe972fmbcneHU/8+fvhCLwggcLvz1g77bONMSk 4MJQlqggiVz4l2yfUcVq2NSE1lvmrYRCSJfx8Xl3vDwd8v7fTvOnTR/g+V+EgfF9sqnypfe+P3bk 9tURqMQg/DAwhq1ZdS73vez8zbk7zp0weHf///////////////////////////////////////// ////////////////////////////////////////////+RMGnwDc/YPGrYI6xAaMSFQlqS/6rBG3 urU8EAfFw7BD0Dc3FlPTf/////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////5I 3f//////Im4Jj9AsOEzh5xI3f//////KG9HOG9//////////////////////////+wAAAbZZcEL6 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 v/QcCpB86ALLx7oh6DFAZHGSq1LOAjuEnwl86VjZw5xJVq48y5ndSJ9nOk77774/OPvvtZhrPM9P vfc77e99re+++5X33337777777777777lc779999+++++++++++++++++++++/ffv33k++8n33K+ 5X377777779ve/fvvud9999/ff377+++8333333O++++++/fffffffc777777777774AAAG2mOPk wqMSvCX76v6qbvtScp4A+Kh8P5PD4u94vzfq1Emr9nbtOhMasIKqgHKorV9l+oHTbVrOE09VMlXm jX+Dwy8uLqP7kxrTtsUWxanrP3zVsIkf+GxiV4S/fV/VTd9qTlPAH+VD4fyeHxd7xfJv1aiTV+zt 2nfhBVUA5VFavsv1A6batZwmCQ56qZKvD///ypgxePx0EIfXw6oHOzgMYCGPh/JQUeq/ZzzeInnj 8De/RJANEtUJdo/VSK7PF4HfSxX6bJ/Y1a5WXyRWrkmSfskjB288X/Vl0Him0Rh1ct0x/BwYlCX5 X/2KvqLq9gw97Z70reQ+j/nzBi8fjoIQ+vh1QOdnAYx4G9+iSAaJaoS7R+qnldni8DvpYr9Nk/s3 LXBDHw/koKPVfs55uRE+88X/Vl0Him0Rh1ct3DjF////7f////////////////////////////// //////////////////////////////////////////////////+RMGnwDc/YPGrYI6xAaMSFQlqS /6rBG3urU8EAfFw7BD0Dc3FlPTf///////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////9AAABtlpgQkPKcoPAQI4PAf24PAf24NAe AgTwaD4G+DfLggj8fD8IPgDpADlRcrVj35cPy+WwvH4lRQoH3xF3cOA8B/Vg8BA2g8BAZgwBwPAf 5IPAf2IMAcDeB4D/PBhIBlQMEEEC/BBL6AcDD8AwSAahCqtUDFwB9VKwUAQS4vLlPhE/mwwDwH6K DwMGODwH9yDwv/SDwEBmDxP/mCCD5sA6ng8B/cg8B/ng8BAkg1B4CA1BoDAgA3wgl4QFY+B4D/PC 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 fUxwtISdHsjY0MSAZ56jFws65PaJUhC4iGXgWHz70PuBefV35wy+53K+++++++l3OctM+hZ0hTxc LTqGDBP6S9IjZClz3WFobGqHgsa9OY4M6gPUFuRt715SrEwmSS6Rh6JyJcNGhOMeEgX8BPCYKPaI PlQTq8BPe4RkEnMC5WoYAUXxVU5aLAzDsCJBJURgnuE2VRuUhV31hs0MuFhkFweYzqWaQnSGzyfB yajItJ+VAu9POlq4gitvBPGSowM9jj0pOnAYbxyTPkKfgUjJ5gvC44cbwuQ8Y8FaPC1sggwQ/rIv I1cjYoJCfwkoybfonffUOfchZ5l777WbHebc+tnX2M6+zI4cbk54Z5PtZtvGb7ObCh95vs7jjJ0A DC/fJz4WcvUmC9T5ONKfOCnEkeuAPBDVc6+gEgdIhV0BwJtZ0oIEnSOkYWQgMJKsfz4KQqFm0Cwz p84+30as5PSJrujVrGLW9rQn2siZ0hGRNZ1rOPvvs/Awc+++++++++3nX33333333337yfffcr7l c799999++++++++++++xvfffvvvvv33795PvN95PJ5Pv3333333779vc/fvvvvvud99999/fvvvJ 995PvvvuV9999rc+++/ffffffffffffc7777774AAAG2mePko4IjgkUGUj/4+9z/pbVLXLInJwkM S/iV9Uq8ruZ/C2H/4TGXlxdR/cmNadCAXhBVFytWqs/qr99cxi4TkjLwPUEJUP+KFc9YuO4f9HRw iMS/iV/yryu5n8LYf//9HBUYkgHiVgQi74kKB8X2+Uq/Ac/ZVVtl/7t248SvQSR78el9+XdUeHv7 necvJjgwMSvQSR78el9+XdUeU/ud5y8mO/B8YBwBtvi6ZbB2xxh6sGVD4fK8Hpcq/o+0d+l6OunZ fT7clIxIH3h+XF//j0ddkk//neHAwNX/+8mjzR15iRiSNTHejo4eGDfEv3oEIfWemgc7nRGeJXoJ I9+PS+/LuqPKf3O85eTIcEr0Eke/Hpffl3VHh7+yd5y8mQ5///////////////////////////// /////////////////////////////////////////////////////////kTBp8A3P2Dxq2COsQGj EhUJakv+qwRt7q1PBAHxcOwQ9A3NxZT03/////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////p////////////////////////////////3AAABtltwQsb0m94PAf0YMEEH gIGUGEsGAOB4CA1Bi4HgP8kIYlggKwDgYSwYeAoFQ+ViXRJ8DAfCArAPVAf8rEpUqmFyqz6gv+O2 tNqYPAf3YPAQJYPAQJYNQeA/swaj8G8DKi8IA+H4+CB8A+/AP+XqlQHlRePh9ZKPh8P/qdH/sHWZ vY08GoMrBALwYuBqAaDeEuqvj8EAIIlgHF9LraqqsSC/5d+qr+et8p8Ot962G333333w2FQRweA/ UQbBCEkdiMyPgO6yOi9WXN60qH19fpm9a2+uj3NuXcqi3JeI5CITgw+B4D+DA4DDsSWRIEpMI7DL Bd8v3S9pN7195thqyVpKzqlSzlkuSclXRR4SGQYuBsTttq2QUAHGWWf62222Iw+/9v/7d3/91q7u 7tt3bbbb14MsHgP2sfJAZUCkHw7BRJlQIA/bCCwk+lCA14SE/02pC/+qtZLo1/Wt+01++tuXfZbO 46YawiBjBh+DD0dAw6EhgRxLaL2WGS/xdmF3mv/n/tMty2NssYoUMb2zbe2LEw7Bi5ltODMApFbL f2WWQDhGbbbb2/+3/4+Y3f/3bd3d227tttt68PgPAfnIPBwJYlA8P/opgeLgFwYL7l4QHBYg19wk M++++rvPKYPAf0YMEEHgIGUGEsGAMB4CA1Bi4HgP8cIYlggKwDAYfgw8BQKh8rEv4k+BgPhA+AeX Af8rEhUXTFSqz6gv+O2th0HgP7sHgIEkHgIEsGoPAf2YNS8G8DKi8IA+H4+CB8IP/gH/L1SoeKi8 fD6yUfD4S6pUj/2DrM3ppjBBBlYIBeDFwNQDQbw/qr4/BACCJIQC+l1tVVWJBf8fK6qv/e/fW+5v vXG3OV/vvv779999/fffffVz5xFg8B+yg8B/cg8B/PgwlAwBoPAQLYPAQG4PAQHIQBKBBVAHgw+B 4GAhBQqx+XD7wkfBgPAyofgHKwPf8JKtXdL1cvlJd7fN5TjweAgfweAgOweAgOweA/uQaA8B/cgw QQYfgxeDAHgwHwYIAB4PA/84PAwDYNAeB/5wQRLBlAKEEEuH4QgYDg/LvCQXAhCR75cCi/VGqPb4 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 C6XyuZv5k3nezpuBA1UJJeXiXQPqvz+QR+38u5/jR9iX//ypgw/iguLlXy+KfWTmaxpkEFUJKrJF cv5I1ylbw2MEBUrvwDxJ7VGl6iLAd4cEsuokeH6tXS6Z9SInmfn//y/tjW09+nB8YkAysDmjwdYP 8HXODvhwGHlLlHqJaoD8A9G5P950GOj8upcptEtUB+J5P9XBjtubVEz28i0YcDA7c2qJnt5Fow78 PjBBVKoPpC8vk/785G2+mQQFSu/APEntUaXqPLAd4cBi+BBHw897/rckY9WoRiWXUSvD9WrpdM+p ET29+fYv//////////////////////////////////////////////////////////////////// /////////////////kTBA+Abn7B41bBHWIDRiQqEtSX/VYI291anggD4uHYIegbm4sp6b/////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////+wAAAbZcYDLPdPHSFmeZgwQQeAgMweAgMwYfg8B/igxeJAMEIGCAJAMPQb4QQPgoBKBD Hw+UghD74kqwOiSrLi7yguHyv47/NzJ2w+uNQYIABoPAfwoPAQJ4PAf4YPAQJ4/B4CA7B4CCNBgh gw/B4CBLB4D87B4CBLBh+DUSRJBghhDVgwQQDADlYQADAYIIQQYEAEEfCUXhA+DUG8JYIYN4G+Xf VKhJAM8qHnqX2qgD1SpyMiBi8GEkGVCWDBCBhLBi8GCEEP6r4kgxcCCEEGgl/H1/R98vAOEn4lK6 q/+Kv/VX/tVKfKrY3JTgPAQJYPAQfoIAPAf4oPAQNIPAfyYMAeDwH+ODwH6uDCSXg8B/LgwQAb4P AQHYNQDlQBheCCAeDwH+CXg8D/nhBBhJBhKAP8DF5eJQPAf5MEgSB6DYJANVXwggfoQ1Ik5lher+ 4GCCDwH+WAeCACCDAggwQwDQYuEoGA8DeCCDF4NRJBACEB4uHwNgQBLElWrEgSgQh9flw+A8Pr7w 8Lv/VKsxUcY3vvvvvp53KfesE6LB4CB9B4CA5B4D99BgQAeA/xQeA/uQYA8HgIE8AwIQMXlwN8GA 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 gDDKMQY29M9GrwWZ8Z9Coi0ZPp4b5iix6+dhlrezjOjVneeawrY0/HsYyGnBj4+8bS4TPGfpoKTi 5k+M8rCVOR9umD3CVPT6CuFtYI2lhn3GxmMXy8Oka7Q0eI4ZpvDUxmdKRmGHMw+5PKSGb29OplwW phPnd9oCMqCFeh88RRvBQiRpxqllREaxK+WEeMGUyLVuNJxkFUBJmTWTqZ+JAjtEETNsmxYMsjQn xk45LgwSdGS5sZ5NZDlGL3hTlIkdoewWZQvlPuDMQvoJYZ5AcufGYU5yjSEMyWtdDk5g1ht4jnfT Rpu5owi0AcfeI8K9LD/AcYecEfN6lJtTaOXAVEDjB3JwjeM/jHUom8x1C7GruaTsJIY6cGfM4kT9 HB3QMXMLdImW7b1nj0iEtTvCwKflxq8ze9owXKO6QlFGBURvBjqeKmLxkYNBiukgVjPHdEbIVWpX 8QNBMtwgra75HjH7WrkJMh3KTuT8rWvbrGdCnZOdOt8NJ/ASmmQsBw1ab5LF2hSntr9CazN1hOJs XEEkuHhnyjBlOCuIbYhJlmgHECfwJivCW8JXp94NRkDgnCka7R+9SBYbHfaUBiNE8+4XYSIW4WrZ xJwiNHhxsGHosFodPrZwYeKnHRCz51z0Px51nj/Hh10+dbzbMoeGQ7kbeOvD5ockYzKSLDjfOkjM zq4pebe2Ss5p7ODgnBbM4ORwY6k4E45OHIrRmzoWTORH0J687DjOO04zPin6liMpFRa2SadCzLix 7Uhyn3sybPIgcLRlyZzjTOvbgDEGPZ4WC+Xq8Aal6RA5EAtzORpMo1Z3YRDnZXMMNYER1vGTP0a3 euHOyT1oycSb+0nc+3vGF0+fOs/Hxswzw+M2d50U410+Mmd1OtYLRvMPvtZI3ufcre6++8n3k+++ +++++++++xufffvvvvvtZ599999jctufffffY3vvvvtbnk833m+++8n333333332N7776m9777e9 9rc++1nn32tz77G59+++tvY3vtb333k++8n333k+++++tvY3vvvvvrb3333331t7799999999wAA Abab4+TR0f+nT/0ckcjU1s9///4KjEsSvqvf1X5TMWlGIQ1asupd73vZ+Ztyd506fOg3/+VF0V+m arY43Pv8quqvVf0GF9mSD+D2SNUd9XOtMcjDv4XGEJUqL4X///++u5NvO8OCUJflav2KvqLq9nCD 3tnvSt5D4NDVl4M2rAr8YiQqVD8ENX/6tT76nIptbumfwfGJYlfVe/qvymYtKMQhA1/zVW+0vY5w dkwQ1asupd73vZ+Ztyd506XlwIWg3VUV+xq+n+kIYHPVTJV4f/////////////////////////// ///////////////////////////////////////////////////////////5EwQPgG5+weNWwR1i A0YkKhLUl/1WCNvdWp4IA+Lh2CHoG5uLKem///////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////2/////////////////////+AAABtmh4IX05F4/hdC9W Cg+rVj5T8DysvVQuV/VaOvqy7ysvir/5lvoXq568iv5sHgIEUHgP7cHgP7cGgPAQJ4NB8DfBvlwQ R+Ph+ENUAd6BA8XK1Y9+XD8fy2D8fj6KMH32d3OGQDaDKwa/BoEAGEr4IIQfgxcCAqHyoAwGlEkv oBgQFQkKgUAlKhICEpBCH3h8PqB4uir0HiodeOA8BAvgwQAeA/xwgA8BBQg8B/lgw/B4D+rB4D+3 Vggg8B/SgwQAYIYMPQYuAOB4CA9EtUq+JAMqEkEEIKoG+JQQy4Hgf+cIYkiQDwUAmJAIA/AOVDwS C76gSx0o9vnpkYPAQL4PAf2IPAfzoMJQPAQKoMCgB4H/jEoEEfg8D/zg2ghAwHlQlK1AMoBQD0eg hiSJWaCh9mKWdw4AYDKgQS4GLwaAGA3xKivw+BBCAJAB5dC+SK4qEku8P/RXPX8UqPxTn7NZeDwH 92DwH7qDBBB4CB3B4D+zBqDwEB2DeBvA8BAnhAHw/HwQAYA0A//wDwYEAGCEqVDxUPwYIA+slLvj /6nR/4RMzemlQ+HxcJRcXCUJRcqHw+HyrxcXFxd6KlRcqVRQqVKlXsnvekk9JJJIcc7777776eDw ECODwH9uDwH9uDQHgIE8Gg+Bvg3y4II/Hw/CD4A70AO8XK1Y9Vlw/H8tg/H4+ijB98Rd3DgBgMqB qXAxeDQEAG+PvK/D4EEIAkBBLvF+RXFQkl3h/6K5L+T8n+yfs1p4PAQL4PAfz4MAeDwEBuDAGAwl CUEMHgP8cGLgeB/3wDvgglw+VCUDDwIAB6gSaJQkq/F48CCrVKpipUX+UyqR3jVeDwED+DwECqDw H8eDwEByDwH+CEEHgYCkGCECACCAcDAeBABD94fiQEAShIVCQJXxKEiFxdBICGXqFAH1U96Kp6el WcvIHgIFcGLgeA/nwYAwGCCDwH+GDBDB4CA9BlSoGLwQwYSvggz4lgHiQJAlKi9UAYAf4A6/kHwB oQ/++r+r99Q1JoHScHgP6MGCCDwH+aDwEBuJIPAQG4MXA8BAagwQgeAgQwQAYuB4GAjBgPD5UDD8 Sh8EASBJAPEgA4ICsIEheJAkCRAUAKEDgl/LoAeJPlX/KFJfkALffeb7776cgeAgRQeA/tweA/tw aA8BAng3i4G+DKy4II/Hw/CD4A70AO8XK1Y9Vlw/H8thePx9FGCV9r+7nDYPAQH4PAf5IPAf0oPA QJIMCADwECSDAHA8B/hj0HgP88SQeB/2weBgGweCgEweBgIwQC4FADAhggF4B4MI4PA/6qsejwDw 8BmvKdU8w8DwEC+DBAB4D/HCADwEFCDwH+WDD8HgP6sHgP7f4IIPAf04MEAGCGDAfBi4A4HgID8f qlXxIBlQkgghBVAysSghlwPA/84QwhiQDwUAmJABg/AO8PBILvqBLqi+9vng8B/Ng8B/Xg8B/eg8 BA7g8B/Hg8BApgwBgPAwDoPAQK4QADB+ENWDeBgg/VBBBggAwQh4qVF4NBL0uhePqrqv/qEP3QPe ly3hpfAMBlQIJcDF4NADAb4lRX4fAghAEgA8uhfJC+KhJLvD/0VqL+Kc/3P2ay9UXFxcJRcqEoSi 7w+Hw+94uLi4u9PKi5UqmKlXvek973pk9JJJJx2+/ff777779/ffffffVwDAeAgdweA/kweAgdwY vB4D+vBggg8BAag8B/dg8BAjqweA/zR8DFwQAayiQDF4MEAGCEDF4BkANAOBvhCCEDaPi4A0If/T 8nx/5UXjzyseF/5xTXA8BA/g8B/Wg8BAqhDBqEAeg8BAmgwKAHgIDMGCCXgggoQDwZWJQ9BlQkhD Ej6oS6JZcXhBBAEr4kl4HxJ+Ph//ysdf+XRX8d+cng8B+qg8B+Zgwlg8BAtg8BAug8BA/g8BAfg8 B/jggA8BAdiUDeAOBvgwlgwkBCCAqBghAw+BlQQBJLhICGDBABlYQR8JX/F3xKVeH3lQlSVUqL/+ n/eUSyHwDAZUCCXAysG8AYDfEqK4PgQQgCQEEuhfJFcVCSXeH/orkv5P5/uWzdx4Bk8DUGLweAgP wYA4HgIDUHgP7sIKsHgP80fAxcEAGkBsBlY/LwYvAMgBoBwBwMPAbR8XAgqYpz4/8qLx54vHhf+c U/cqHw+LhKLlQlCUqVD4fD5V4uLi4u9PKi5Uqme8q97Pe96TJ6ckmGn3333332cAwEEGVA3gYvLo JQMrAMCACCPvKwPwuAPEgfCSqiuS+iueH/v+n5P/mtyWxl4MJAIAPAQGYMAYDFxfRLBvAwQgZUCA P/qgPUvAOBAEgSFdVWy1Vfj4u99Qp965ub6EzzvvvvvvpzAMB4CB3B4D+RB4CB3Bi8HgP68GCCDw EBqDwH92DwECL8HgP8sfAxcEAEGA2AysGCADCQDF4BkANCADfCEEAG0fFwBoQ/yfk+P/Ki8eeLx4 r/OKa4HgP1UHgPzMGEsHgIFsHgIF0HgIIEHgID8HgP8cEAHgIDsSgbwBwN8GEsGEoIQQFQMEIGHw MqCEJJcJAQwYIAMrAPHwlf8XfEpV4feVCVJVSov/6f8qUSyHweAgfweA/rQeAgVQgg1CBFYPAQJd BABgQAYIJeCCCGAeDKx8PQZUJIkiR9UJdEsuLwgggCV8SS8D4k/Hw//5WOv/VD34784AyeBqDF4P AQH4MAcDwEBqDwH92EH4PAf5Y+Bi4IANIDYDF4/H4MXgGQA0A4A4GUA2j4uBBU+Uz3x/5UXge8rH hf+cU/cvgGAyoEEuBi8GgIAN8Sorg+BBCAJAB5dC/IrioSS7w/9Fc9f+Uz3x3n7NZeXD4fD4SC5U JQ+VKh8Ph8q8XFxcXenlSpUqijypV72T3vemSSZIafffffffffffffffffffffffffffffffffff 33333333K+++/fffffffffffffffffffWyEabhecY2TTGTsYSKZObWzTGfY3KccMFijVjctngvnA Wqm5z776n3hpz63Wjq2RPqbnPvqZwKVuBatkz7402j5+nlOkIYPvrbYmE2Fp19jp59jCljGS2NWP DrGmOq4WkKLC81sBOTwWQ5NgtUcMKYyynBnKWEsIQmkQYTuGLc7xAeTwcRhbhwWIvgxJXJ7R+UL5 nSCHUvOrhJ08UhSMItGu8BxyHEfDUe4ZMLgv6MeQQD4xzNGKcJ1OELleJCcOhiO/hkaJZ8h1xpCz zk85IZI4SjPaTEdcQB8ExxDydcBqTJmgcZNDJxKemhUjJ3JMWn3p+B+VOr3wHEaTiEzDZMyevhlL MjGnhYN81DDkWNQwyEqfw29EITxoO8iCdb6DjKnBO5Fidzhj8E6c7h54yaxskgVOSaQaU69TPuVx fwhGfByF1aBX4YBkaCdGGf9ksVDtfeJh1eYjbrjQz7jOYC9aSLmt/+7u1ZvIvwrMGnJ81ZsXe01M F+AnJeWbgugrNJOP6cBYJds8gFjR5PlPDIKnJ59y7iMR4LFcWkh94U8OQEODILTThh5aWC2Ex1Pg wlTtJgSAwIk8ncR6wLmfx8pCpPc6Hz4x/Bi5xpPg1THEIw6w5PBYhL0+5Pgqc5zW5vSHlM+8ZcFo GBhw6w1OOT+tmBnCbA8NJMao3a9Lkrc0lCpLwiCw+37cPJeHcFMIE83MBOwaFZOkkdiIXmhn94KU CM06EJ1LjQ+L1/vCIFsxmhlzSVk8skceRbYejU+nMDJlh6cBLWBx5yFxGUHekiFpRmgIk8EzGTIC yBPBZCmkjA1Ge+rpDNaabF8ttEfpsJk/voDEu//V4kJvSIQuRPS/sMxpohFQz0R8l2DXh9wxHCoa +wBbhv6CYE51b0wnx8eFZMlPjj54YfvUBJAcT45PDKFQ1I3J7iWAsJBUiwraOTTqLNuEI+IyssEx EGOOhxLwYk7kPhMdS5mPcl4jYGkGBWSMnaIHJ8f5tISQZHEvEgszkoOPCwa6Ns/d0KnDFtojQqD8 MKQpMThSuMhnp1yEZtCYYuSbNIhkKBzkfTBtPZJdFxDwyjydGeXI2dsauS5NFhw9dgjEHgsT7kuk TNHQuPDPPFBnAwAcNBz0keMhhaEUjVyeNCELgiU69lCRr41IBjyUkCVwyZgjh9yTIzr08Lk5YdSA LgSJ93CQ35pls8RiJ8w2CeyMRgMenOHLwnNpMQRQ/DSEedShYFwzKFhBlCVh55fFx9rj08LDkBZr AkJ+gsOkou8Gh5PjDjQtbGKe6NpjLiYZfWmxlBiLTSLcfjk8MuULnBYi2BZ5d8F41xyiGXVxSfGK XDRmdChy5xDJSFXhWFQVJNKLpTkbZJUnEZELyoLU8K7vTwVnVPgxj0XKTwQBX0TJM0mota0wkwqD cXBKvsmukafHcIsN9GaeagzNuGPDwMdCrpg4kwsy6bhEvxAMlyMYsVDHuEZtPyXRaLz4VJ8Y6VOF wwGgz+ioLUY04J4Rs4qNMZ9rBYIWbcNsE5wxb2miCdWThONE9hk7BTMhiEqf4NhnDLIWIEJoY91x Oa17hl6YICU2FXMkBo0xgtXxFxpI2dlpMfGFk51zWSCPTixxPAXD05aIJ0aRsjPp590I+LjAZ8b0 oFmUgFSF55PFruH3DjWFDxkzmGjDhj64kdHJ7jB4aKcc4dSe5JvGYLUZCwxBUMjSX0jcdVyJYEkd eiw0kxosLuDBFM4EumxEyTSemRkl4C3WO3h1bci4mdMPDRPiIB0I0piMESFzakBauGIpvoMYMOGm SlAwck3OGAz8DgBx92Ezl94TrcGrGORkNsm1wibQ0DGC5yPw9nTszGHq8NuGe7elCUmq+mkTnJO9 ZxFBg0kPcJXxxnnJfhMdFjXBSnmXXg0nyRLtITD8XAepnjqTPkbZgY5QchVGjznJ43ZMkaYB/WAH L8Mkgk3BYdUxqRpc9g3Cnjxv9jID5p46njQ4ZhlLugOJURlFwh4bci22iE89qQDU/hGZsBIDw+l0 DxWQjPNEAuw45LgnEdci2ASgkJE8qMRKVDNbhkFin6wT/YaRmcGp1TgpNpcbjLtBLcIPwmKRqdG8 gsjnJ4uDCBjYeGe9vjtbzGOsCdMFh5Xg0w0p9PMnU865o6saR9PguDqPC1MOTeIQGJ/SU+TpzieN RqaCNPgvaOO4MlfpgaJdEZojIWzzYO6cSek9Fpgaac+cNpcYiwTPjTOh0Ag4h7HBmeEScdvBoyhI icd9rnIWcOK8bNRpsJEm4gmipFw2eDJPdBoaGCeLkp6oj6xCp8efR/AXIsI0PLTcjxk4uaDIlcMO RwFk5GZOhwKEeWdPp3w2OZhMeciKeWAZTic+t9GaE2TWtC9fGMIU86SEmmH2NoHG0WyKHESPjzjl csPcTgPSnFkpO3BGMpdg4y2fPKZyphYM/RHAlBlGGGzdSDKmAsS41s6IAxGIxY1N9GjldwLRncdT 4CVu8DE+yNU/TmoEzR84uwNEnGIMkQ3AelMjPSkgOJbwpJ+jcUHxThmWi46h8OmG+DF9HmCFyXGO kRlPZoJKSjGZoCxqntGmhaDE6cwkz62EsJVdzl8g4Tq7p00njc1OHjzgpzHBM48445HieZqc6K1N rh9OQjPFpNwZi1wi7xWNxgaXxUbTO+P3cIYMRl4ec5zEsbFwykbiNzlM+30TJcjGh5FrEjfdPHmc QgWBEqcFjBBPoWJ9JEud8ZhtPJ0JuPDFFwFhSFCQjOSMWaNODFZ7kvwOhQQw4M5gtUBzT4J7kmFU ITKe2Ez4mTHCBD3E6+QBUk4CYjRHjyeMCA2LU/Ss0wHYD+mBilxjwJiYR7B9NxGFqIjhUMns9fKE yXYPtCmtjJXRvi7SApMq5IGDOmODBL6DkI1rB4MXxnhfhO4ocbG+dOmhkyPCg1PNjU4iyYJicQeb Z4TOa4fQs64Ysgc48zg4i001ihX04YS4Vd0ZHk+MELnQ2il4MIT+IEMjc5DMMTEy/DIofQ5jQ2nL Q/QgL6WkwD4MGMFsh9zRM9bc+n5hLhkwF4z6TQaBeQNGkeSh6Z7wViLw+HriY6I8oLRgSsG04C3p cW8fWWkxMM/RMNEGAPFrkL0FgMWckGrWOAoSfBoSoBQj1qlh9PxlAMxYh6EgaFSukZC7Xr4YOQ9C C3GDOdRwJFdyYlGngYkB0Y8kMkR1Xb6+IRUvOUd1MFRMOMnNJcmkNvGPjhYSnF/oYkj7403Oehbo fG2dNoWTrOTxWhQcGBGcZ2T4fnxvkBpyuTFRKhax7ohuGudF5pM+LvRwrFpANBk9GBMWvOocheSD PFpEwlCkLnqbBhy22feYU/vEB0ydc944yY4JdAaQuCtFkQJwvGfzov6C2TjM4dS/WG3JG4MQwT6i AWKxrSVXGppvTAmq4Lk+MvDgq4FQyS4qCusNIRSrPpspPJ7ZEC8hIcGc4Sgnkzj6fSE4Gh4gVzeF Q0R6JKTYmJ3o8HE65mHE9A49AlR0YItKf4NDreNVMmGT4z+HQmDwXIhc5HmiPh1nFwwEXjWGBZwl eNMZHDqe5PXEgyS4J0hzpENy6QmSZF8BZkS+EyeFfSRo+xpWZZ5TbYoRcOuCVC4TEKTGXBkTqYUS blJU/sPgOF55LnaQELOnNR4y7ucphxGngt5qY68ttCVLhYaPM9bWFjS/VoAhHkJvjZxFknFyQYJ5 9ndrYWRGYpUufZxOHp5nPi9HmxURrTGiucMouTRHNkATIs/oXnRnowkRtBZq2CGTthV0gGeJ12Sf jxY9nME4x41GY0OIWfcn8BKWNkKRc4vMlIWswzpBaOQ8cv1EFAWLeGk8lhAVh0T8GqPM44O3DPfh 0XhENAp+pAlFTjhM5r2BMO9Mdw4NsPXmxjzS4wZAQcS7ALEZ0E5LhZoLBGCOuQCT4dPnF+DKMEKX gsh6OTntJIJ7jkDk/h8dL8hDEzIwZRi5Pq5oLEx0aJ5lzwtGXOsrafCUiZ7wUhMz4fHKM8MOQVn3 JMlO6jJ0941GgBKf0Ihe0FgUI/gLAYXeQ0nzhjBqQVEKx31YXH0PC8wiyYWnEXjZO8+riYaoWNSJ Lmg/PrXphPrRqtRPTVP62BQgZ5tyMvJUmyjfTlRi5F3CoJyMnT3rGT4YoevCR6H9CxISDjXOnVME 4XpMXOHBG+hegtBUhzN6SMzCysnRlxolPQ8dXyY4pKPkGK/EYrGiI5LxwLVkjpOscZ5D5CxkwyeC 7jZoYvVxocXnCUmTykKByE00aInIc8oyu7hMk20QLAmGg48ocDM4j7Cd5OlzIdntGikibCtyI8JE 2GoFQ52SFjCY8lxeaGIjxkfGhp6TnQWCAhFYj7A9GOhuAwait7OfaGiPPExC+yd41fSZ4khOnhE0 5xxPW1ZoKIEYn5TieT8bpELwnGfNWIjwWNtisJldsL6ZTxqeCwkV07idPC8L6d4QpcL3Cpvk6lrD 2vRmvonE4y7p08FTxjkbBZnCMZyBZdOBW944yTTgzwqFhiGT4w5BW5wxY0IExw4K9CfOoedGq2Qu cdnc5PDE/Ascrsn8ZMJyw8lAW57WzhEmXhJSoW9FohHk8kCwK3q7R7A/GCXgVC0lZzr0+1McKCRC MTQ10gxF5lPYPxk040nn0wJkGY0S+iE4lFbXArUzhlJwWoT/BQn4SUJSILWcjFje09FpnJzBtPOV SbsDA8j9TBWyAoFknoy0icbZTBSjw4HIxSQ80CUnjDUgI7z7ZOjwiwaEymMRij4TuCxJ8AR1AF2F ozR5PFzp1LnAiOPoWMBqvhOGCFi8Vr/BQK31tyHjAlYzSU9cnNnVClZ1w7K48ILwZQrInozhZDek zU0oDRj8OtmGiE4n0kCLkCyBIzjWmU508LyNKMhnpCYWbwtPMED1MkXFK+kGJOhzi1dNYNiJo6dn SEavGeTc02FoR8JU9gcuIBgQjPuoiclhohGiXFoqDFnJM0jT0pk5RkRJ5wgC8KH1MiFSe5KAs+jH AD0XSZWI0pOQr9BZm2/HI/qYkIkRgZ6dhk3mOMgxkhTLVnEy4JJKn8xyTSMakw/NqnMUwhfTJGi4 b0Ljbc+HEPE50fm0MpkiS4zNE7cnJ5+Oc5zscJ2yn0LPwEtX8+OSdo1JEgCUec6CzkFIWclREz3J 4Rri7YwTQ0kwWiAanhiyNmuTuQPS4zGGhgkxqIAYOGLI2BX0WvSTNaTt0ypk55C6MAsGumJD7kuT 6RwlHGMT63QpUzh5JnMFUNq7YqJF5kYYJ7uE7xcngWRnsI1wvtJEuuLgsFy+DiMMH0P0lerhhW3p 4TP1y4LEZMXHosMD6L4JjhOzMtGp9UtkhEMhlz5FsGg1HH0ycETeC3jJ06hZ+MAKGHjWErhj3rJ9 BYE5wb50Jhq8n0mZDB6ZzgUPWIU+XukhvgqcM8E82NBoaR8MEJMlKTHyNJnpQwOIU7D5AhzIywJU mFZGC2CnpDy5ANeELmDaH1wUhRYsQrmjzjrGTo9G8cmziORAdMq6zgpG/FhcThYMPPEjhJ9cFx1P NrHgt04vic+rkb0eFBDwaKeskxpvIULC84n4fSPLAFEauUGAtS4goRgGIDBvshfD51KcCZDouPpz fVjRM9LtjU6LUkhkzDptjJkLJT7eNEefBHCSwnG+UEuFqFx9Fi8ahKnhYQngmbn0yruc+pnjaXFT njLuBcPcnsk5PHC5XNixJNcmIzQzkWEwxPwHEzkKUICZMoZIzZsnSbS5x5KkmCeiccRYJQX1YmGe eOsUnBMNjFkx/GydyuhYJyRGWGK5s0rnEpKnkYxOnEm2CQLBOhfRnXoeNcImc1opRTJhgQotg70m 4KE+NrkoOJvpsI9KBt0mGTJQwwsGRpPGp6EAtGvyLGzptTJ0jBtPeA8oITKeQmj41S/TrIuhlTiA jGq3DiTh3ToyQ/p0gUyYKRtkD280nsE5xq48jVOeOpMnZPBUMeWBF1ZtxM5D3H0ORl76PFuGNcMI 5iY88M8VjRONIRGU8ZmnHmenzgx5/hkw2TJzCwXh+ewYpckBZcMCTtw8bGreeGP1+JxUKhonlAXt BaMSVjOrSxcZJ595LwWLyJ4RIXpsy1rrOSbI1Gd49eVclYJlMOgxDd6L7p8xwWqZC30mGeMAirRg LTiLIqFpKhYRH1Mi4cTwXe6TOJUeMDjR5FnxMlJEmTEBOlOScIkLJpFlg0RhO4Y/e08yjeYenMle Mz4w+JGSM6cR7hyFlkYGQg9skwQTTkWmbFtieO2bzh5PqxHnT5IK19tM4WvocjcMs9w69TcSJJnr 0akAxFGp45D41wWuNgnuRa5kmBOGXzdOmzY0R5MSpsMK7DJEhJkPpyk4iYOIlm3PNI9MMWOvC5nG hEnKs8cLekDKYhVz5EjmTjEFszkhlXdHJZU0Q4TJZCoKxuQp/XdfwbnyFSZKFqPYOw9ScR5G8ajB yXPjNKOAvR9ICU+thGnkZkXkKPI04XmF/RCF9BZJfgmBe6Mm8Lhpnu0jekhhoTHUW853SRLk+n2Q tGulecrxzmwrOp4nx59cyv9Oi9Fgt9IMcMcnDQ0fTzOJjhIDkh1HnuGHtbh1kzkhzz6TNZEM5Ixp wVHXuR8C8m6YGu8WC9PtaP9po6Ewy+AnHFwxeixoZF6fhO2ZFmBeI9GM7Uh4KxcdQsExMOTCeTRu 9MNGk4wUOaPIUycjGORujQmcrPpjCZHMkC1sWDPCNY6Yh1yck2uAaGBKkzi4xWGKPBNgz4NEKUMj VFo1jpXgYL4YR6xYb4Vt0LTqX5oCukDcGieLisa6ZiAiETCYhwYvWzCXFx0YI/gwMH0eTcNn0eTg s9Goy40m9F4uGqI8rLhyfFCXPkxAnrlRMCYZulBIMmeBZ5AnOIvp1EA2AnpfgOMEOQYiIfoXnlyc Zp504Fz0vReC1RG18LTSKbnOffGFMyacntHmDhGYX1gEnUemBOcaVOc49OQyw8eIB3wJj7eLkunI ws3hxPdqHUQDsKU54mG2A84+IXhg+cJ0X0Ex7xcjqeNCBskZXPp4SBVzT3CFLjUlIB386MnL8g0G SKY5CsXslUDFP1bh7eJQoOoTSLDzBnicZ6VNLESPRn0wx6KlNOQDQT+lZ4ZPfRawubTi4PRWi4dN E7eLhzMFr3URtyH8d1Y4n4F1JukvTqLhgahUNehHXnApTmuNmMNjRymsLMDFL1YXEUwmFM94bF40 QpiyMnEpT6bgvIl/naRJjSXPw459qZxrensMkjjzk/gVuJDo38D4WNiZySREkOdbaIknSInLRok+ kpUNYfGX09IF7oSDPXhKwFxQf4ZNJ5zgSpT5InnxnrICXLZxFniYmZ0h9p6LGlwWvTzqUyFs1sI0 9Y+4a0+jzQLTpMzkUTGl5jDKTp4RpkJ4QgoZYGgyYUig0Rp7QVLcIxoCenmWmDDbTfDHcIEexGzH CDXtZW9fNk6HgnDVU40OLTouGuOXnTyTIyI4hHBZk6PJzzJ9IUcp+DIJGBgnzTqwypw4hZCGIpng X5vQxcizLyRfC3icBQyTHLjgLVwUfwKGGzYpOHUmfDJz7G5rj09ggzmtguDh1HhK02fPIeQRk+Ns YuT2RAGAVkppozMDPHADlz8GAsPDGRkMcRnEpXnXIfmrJnpwFDGUw4XOU04vOpM/oOJ3Ie2ZGqPi MidwnRawm5oV4LRk20gLdxGaUmTIBUnnlnBeIRAMnqwJmpSgB6ZAKDIUm4KyN55JsGw8F4SDbDCH FeYRkCX0XBcZSYvPIDC2eQskGivTfCdWRgXsHPJ7jxGQMnXJgWqpxq0FyeccLyVJuGLaYjR40lfN PDSR4Fhp5ORaVgOotZBIWOPrZM1uffSZ/SOGWfUvELkyYjQ+MGiBj0KFsJ0/gVp+tkP8pPwZjC8w QAGpHPEXWPdJtjnjX0FtERKbS+lg0IOgtEy8ID52A4kGGcsIm3AtEmhGJw2nsExYQGuDRJmhiNE/ DxYaPFouT2hOecNEm5CyTYdTxqmJ+mhoI8EwVkDCQ4cUyIyNvoqOsZGnkwVmGidrHBOl0Bs+ZWwW qTPoAXR1PN2BgTQatTImMBoiSc4KXIpkpFwZJ77BBE4XPG5bHGDggs+LzqelHIsBOBZtEjeMUfTZ o2vve+Pzie5znDbhtze9aRIMhznyKsDRt4x41P3jYDHIsJSYarzJhii2RsKumGTKPw+GEXGCXCxo nJk89lICYy3m083CJmmHJM/hoVjJ8gU68an2fDp8Z41NID5sapc4Cxjhjzbjh4Z+Ew06GAwJkeNW KLTozwtgLnujMYmxl1wEGGth9yXBO0jNjjF51LkpHekY69I3L+HSNDyWEifAvxxBFjSTJsGAvTwr cdjhnnOEJ3ToLUb/CALhquUaAsm+MdGgi7yZzmtYZMZ1be+tvW3t5xWbgyWzzG5Fn8NAPRZ1MLEh KpozzkLcSDMo1MkZkhV62LebRAAUl3nsOpPvBrBaK1zI42dRz6je0CaRK65uHBHmsJRg46nneifC eNaA5Jito6cSy1sVmUg0E8OuLDrhnkTZOJ1sF5tXKDPCZPSGFhyuTpgc9ML0eUBYKk5EJMiInI8i JKLm8XDHuC08fUyMyPzyuMxcM8VDIgFRhPYF2dJDoLJEVt8wQ3PQ8weS6JkLjGnl809fNi99vp59 9bJH2NC59nc5rOD/j1pHRztA4Xnzo1+uPuETGt04Zeh7wcRDJLGcLAFDWMwLzqTQjRl5O3ohmikF UIBckKMXhcj65Y0bT23nSQ4znTiOTBLDB1JnhlpIk+mOsOPCFPBcDiNx1POHoFumRr4yKwtNDPXF hyJIwQJUAfONKfIgOhKr9GQvS6UEZwWIyJD3ECF8DFwx4LFgjNuV1hiSKbuDVJwhxAQHk8kJDxkf mh+NVshWxY3jJ9jGo4zjn3332pOZInQ8++++3jV9vOPvt5trJG94/h5rc1PHM52Cx5vs5OQNaYLR 1tkhx99999nFxprcOs0cffH5x99rONeBY+++++3uffc7lvvvJ99999999999/ffffv3333333333 33377777n7yfeT7yeT777lffvvvvvvvvvvvv799999999/fffvvvv777+8n33333332t99999999 +++/ffffffffAAABtqgx8mFRiV4S/fV/VTd9pZT3lHpdnpq55P/BcYl/Er6pV5Xcz+FsP2CSPghD sf+v/UdZJL1tmwmAML4EMf2/8Jf4Xf/fqlVVqx16iNMamThw0f76yaTqx7QQi5VW/TxZD38NDErw l++r+qm77SynvKPS7PTVzxg87D///hQYQ1asupd73vZ+Ztyd53ptP/Pn74Qi8IIHC789YO+2zjTE pODCUJaoIIlc+Jdsn1HFatjUhNZb5q2EQkiX8fF5d7w8HfL+33u86dNH+D7/hIHxfbKp8qS99p27 cntqiNRiJHfhgYQ1asupd73vZ+Ztyd506YPDv/////////////////////////////////////// //////////////////////////////////////////////5EwafANz9g8atgjrEBoxIVCWpL/qsE be6tTwQB8XDsEPQNzcWU9N////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////4AAAG2UeBC+tg8B/SgwQQeAgYwYSwYAwHgIDcG LgeA/xwgiWCArAMBh+DDwFAXCUXiXRJ8DAfCArCCXAf98SFSqYqVWK1Bf/PtbDpHlyg8B/dg8BAl g8BAkg1B4D+zBqXg3gbxeEAfD8fBAVgH/oQfl6pUPFQ/Hxdco+Hwl1To/9g6kyXpO8HgIEkHgP7k SgeA/sRJBoXeB4CBXB4D/LCCDwEB6DF4MPfUfgGhABh+DfBh8rLwDAPD8eiRRLBlWj//vj+iUXge +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 1NzW5yj8Km8aD97edffffHMs/gMYVgx8yz/rygavs5w+zogFQ6zkxpnGT0LQnHN5wc77wlOvtYVP tZ5vJh1kxxrFbWNH3x+dfffaz777777777nfvvJ99++++5X33339999+++++++++++++++++++++ 53P37yfffctyvvvvv3333779++/fffffffffvvvvvvvJ5Pvv395Pvvvvvvvtbt9999+++++/ffff ffffAAABtpFj5MKjErwl++r+qm77SyngD4qHw/k8Pi73i+Tfq1Emr9nbtOhMasIKqgHKorV9l+oH TbVrOE0lUyVeH/4PDLy4uo/uTGtO38UWxanrLfNWwiR/4bGJXhL99X9VN32llPAHxUPh/J4fF3vF 8m/VqJNX7O3adVhBVUA5VFavsv1A6SWs4TBIc9VMlXmjX//lTBi8fjoIQ+vh1QOdnAYwEMfD+Sgo 9V+zkbxE88fgb36JIBolqhLtH6qeV2eLwO+liv02T+zcr1auSK/yTJP2SRiH7zxf9WXQeKbRGHVy 3TH8HBiUJflf/Yq+our2DCe2e9K3kPo/58wYvH46CEPr4dUDnZwGMeBvfokgGiWqEu0fqpFdiovA 76WK/TZP7Nx4Qx8P5KCj1X7ORssfeeL/qy6DxTaIw6uW7hxi//////////////////////////// //////////////////////////////////////////////////////////ImDT4BufsHjVsEdYgN GJCoS1Jf9Vgjb3VqeCAPi4dgh6Bubiynpv////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////cAAAG2UnHzW4JFBlI/+Pvc/6W1 S1yyJydTVhBVUA5VFavsv1A6batZwmkqmSrw//Ty8uLqX3JjWnb+KLYtTxcXgh4DcV1V/W5++4sc BABgP+8OlY9v5z9b2xu7XsZeB6ghKh/xQrnrFx3NO/1OCRQZSP/j73P+ltUtcsicnVhBVUA5VFav sv1A6SWs4TMc9VMlXmjX///+HyOSMFmrQN99fdtq9QWW0Kr9tZ2Dj3ecybq9ttpo2MT6e9mdyVda Hxgwnb/dshbsQTbbIMu9Pe3hAVKhJtBgOl4IfgMf/9X1fPkP8NoD+3zGKLcK5CpZblWOJNNe33rf Zbcy23JbbYva8lcmrbJYSw+MtTJ1NUN8ztURTs5EE5Itx3hlNJtoIredqiKeZ1ac2SciA8KyLXpk i0U8k3ZF7UK6O9e//hsoyxdgGOe3vbsKrYv1eTpGNFbDPsl/9TO84p2r8pOZ+qT3dsb5LbZC3Vp1 YgIMJm5tEHZ/OLS26ub5sFP//////////////////////////////////w+TZ4nYze9X4i7AcJl/ 8VM7nEU6j5QcA566vIG/H5jtZVZzi3QLcoMGCgI+Bsm875ktb3yjijq/TV4THWG+7WOAWnO9RqLM RIOilbYBrdZG6m2cRc6ujXNE3h+J1ljN6jWRdgOFP3n/Nf6iQKNRC6x9N8BTlihAp6spDLnAlhjp fiqA4CksBgwmBL4fNK+ClBrrDeznEKPlBwovMwf4VSRBA8BwcgmF/teuld51d/A+l7rLWb1Gsi7A cKVP8Yb3OIl0fKDhQMIDLAbB43/5BwcqQkUZ4n0s53iHuaCw4E/WNUXAaVAU8MA9ioZjss3Nzqng b5YGMeoRm/M6ywV3t5eLUFjAWD+B9Jrqpnc5xbqOSgsQHPS91Wxm9R3iK2AsAHuL4Dwf/WOCznYp 6spRFHOBLLXR/ibAcBSWAwYTIE/h9Nrubm84BKyhhXGWVHvt+53iFTiMXyuJ0DA4B42AJLAYB3Ak Neb+Gtd4fmdZYzeo7xFbAcA9yv+MM7nEU6j5QcKGDB0CKDxv/uDgV6kJEgeD/6xwA4tAdwJfD6TX VbGb1Gsi7AWASnUqgpPHQ+aJPOoflmZmDfgbSQMHevz130q8jwhD4uHYIegbm4sp6bo8SlQ/Uq/q sEbe6tTw+H5cB+ZudPhCHxeOwQsA1M1dQcD9D8s3Nwb8DeWBi5L3WG9znEKPlBwoM+b1tpdfUC1B YuRgOBTliji3erKQdAl4G01fxxk3ne3iPhsJE8K8zTclGspYoY9hqyDDHlWqHng0wKOB8y3z2t+R 8QqcBYyumArWs3vOrIuwHClf39pLXMGGwGweN/+QcHKkJPD6v+MN7Od4uj49P3WWsvUaxtyQOBVj gBykB3AlXqpgk9j/DZoFWCoF4RC/JdzNNyUax4eqMzCxFJOqTUFCiprm1X0C86o4iU2ajQ8FH/// /4fYVPggsFZpZarBnAWD0FW1hkqmW9XXgLCgmGZ1U1t6jWR8gOFHh+YCsBhu2HO1cbQ0gR0JmXJ/ km64Xp1BSeNJlLXm2+86gLdRdGdr/DaA7AtAV8DJ81kQFTW86tkR8EQTtW0IOTO85eouoKEsZFGZ hqSDTw2VzVOZpuSjUYpgcCnZBhmDg7cMdHynbpajto2NicW+ijMw1JBg7ofVZggMlUq9XXgLCgmF f8L8VTvQYZSwGDCYEq3uq2cznOropaCwAe9Rrqpjd6h4j5AWIDne3qi4GaVAU8MA92kqpQcTIoH6 rB5Su2ZV6HoODgE3gZoHtAxAV8DJ5NgCzQK7AydmEwgbdU9W4i4aFceGx+yBdsFfoUiJgCzQK7Ao F2jxTu6Wo7aNjdFM5FGZhqSDToej4MHQIoPG/+4OBXqQkZMSx8qaZKpfZqNeAsHq+6wxu9RrI+QH Cjw9shmQkjigfttNlXf6hXgLB87tmFUtqJ3tYIHwDFP7R63bRGFbODKgYFADJwVQrnoo9ItJBolx 8JZeCF7c3uNnggD4u6CHoG5uLKemxIVCUPC/6tTqneYvdJ18G8JQPB/+I/BkYMVuEhUJQ8L/q1Oq d5i9PhoFqhwY2QLtgr9CmBZo6U7ulo3to2N0U9DYkawDHgV2BQfVQGK2YGoMGbi+YozMR8kgwcLl bAg5M7zl6i6gpQT+H+id+0Uq+6qY3eo7znbICxAc5L/FbOYoRTveS0FgA9/r6ouA0qApBhPRR6Ra R3/////////////////////////////////////////1sGnwDc/YPGrYI6xAviQqEtSX/VYI291a nggD4uHYIegbm4sp6b////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////sAAAGwAwAAAbULAAABAAAAASAABoQAZwxaESBS YwAAAbJYdmlEMDAwMwAAAbYS4HYIB4NQA8HgPxcGHgBgQRDA8nEgFLqcQh2XjpnWEglVrWy5X9V+ tXRJ9t9d9bl3MtnO5KcDgDwH72DYDKwZsEIuHgMkA6DgDhLaENpOylBlI9EotLsTJffYEEdNNt6p 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 JyJvLOrk0frtc2M4C/qYjRw0deA4/PZLOHsh361vDcpPmtRoxiDgqdsl5JAXubi3bJAyBwDj0fnE 0P7OvMcU6sDjq7f1NtWhI5zeU1YGRNSHv1EC4clvUYrYzGs3sq1IbG0vTltsvFpaTP8U8ne9WpNy 2wqWvLSig57uyyA4jh/rj1ZSDXJKiF0gTJKLOWi+0gpbpzr34kHF/L0ZGOzZZzODK0J3/LcRwZHK Bg7vZ0YAmNbATI494VbZODCv1nMyhne8CSbFr2jEHBQpICKopsVrvfV3lRnf068ll4iKCBO5Gsk6 Fe+XgpPSYujKjJ8NqLi/T+mcqGCidzYDqQ2Hm9odn3+2TsgL9S7SJLxXnELmj1pO+h/MUlfDU5ID golETo31xGuUO1701RpK7C19ZXm3383MJWv5/89uwqRWxd35171tpIlytlxaItaZa2KZLOxGaW6i XXIwxA31IMChBoCFWOWmhL0ScaSNVaY2Hzd2tK5t8osR8I3s4A594pktCltOepZ79kxqf/1v9nvQ q6vt5Fgd1wYgUIPAfx4MqBSRR8vBgRS9RlweCVe+XiJWrReDfFvxHJrgagM2DwH8mAeDb/cLy/Wk insHxd1pqLc53vUUXq9ULWvH5U2iyzFkd7urc50oKgYUXlRooDgTTazdnM5CWowHDE+2DNBtB4D9 zBqCHPpmNglD7tUJh92clWma2j+sBLq8xwafJmS/a2yzbaN22+7qxLVxQRHirb+dyZk5yI+ikQVr LF5BpbZhFGlV+V2jO9Oti1MXNewDF3dAjqIZOjU1Uy6Vouvn0kW5wZHHuKZXPdteLRiKOHmxU1qg bd7IRFvVvbOzhztemdWXr495Ttw3FhM1oJqe9Y5ss1ZlByN5X+Z+tfvO+vRiFKsiiqLDxqt8zJ1H Tr2dIi3NlmtB4KAZ7OdbbxqdNRd4hSpM+JKdlHc9ECyIgPl7NVMCE1wO8bT1fnO6WOvyu/L1AEVr wUMufarvfWv2Ff4OK3OyozxUAwFV9WVb5ndRcFAw+B1rU1vg99ppGFRsdCA3oMapvoLHoJpnBBgL B8Q4ETYr8XXw/+pAjaL+U6imxRJDYOFQXh+OpifbBtu2wkPvM5slgzFZ/9tI19I5uOS5TfAohW1V PeIQX8NSqIUwF4Llarq8RLv8XdBa//yoUBIeUvbOHjSAmXtn+r9GZBKcbJ178exedGJ79UTkPX+d gDljiGws3lBgychErm08shLAceIp9kpVKbCY3/FqScGI0T/OlHeETrR+Rtmf//YFSTQ++zl1RbMF 5IJyfi4tRzmRekAnBArGh+q3kyyFm0kiHkqPpvOAt1lPSil8g3gfKKVU2pvJIDhUYb/Ehbs6DDDZ 3ou5CGwYdD2J1betbNn+orbYUmiA30FOkm3vOzcm4aoyJHm+m1Tei60JO3nQHnmxgqbVspvWWckm DAZOGAIWMwIapq73E+fYshuy3EFRUYIXkx4Om/KlF9e2n4TMMtJ1X8WuM+vVjaAFhuBq4wfW1VFL qzyGXxE1jS8vRnzlGKCjVFrvlljotaHSpm59P+b+8l//iPUZoHIEZ079mbtUKaSguVke2YpoLAiP R2bmLyWAmw37YalKYgIzjKNP0B1F6kJVF4tzBlth/nuoUZGfSv14v0MCOOXYgAcC5rzH4SCqOYsj d8WBcn3lxTUYvfkm9/OITZI+d5JEME3Vyfgin+asC5fM6z5uI+yEoDhMpbnerx5hTPkV/u8EWA47 im0F4+n2KhzwZlSAJkaVZbBfY6d8ypUa1/qOfR8nF6FWjf1FUaq4i+iWBzt/0UPrWyzvaMq+1EvI Ceil8XUQBzfVDFJXwBxAq017VpG5CXtRusdrRGdfrAXF6aXGAJjUZNqnilbnQXEMMM3J/fXl72w3 YtReJty2UlcXHA5qiSdu1FJEIqNF6eF7c/FvSWe6jsgilNoVDROP2x/SzJWE2WVFz/+L5tsRGuIC V/tjX8WW4iJId93zeyEOWkvXo2xTnaS3jkLlklGEdY2ZHjcaZ94CLVozlFBUIShmtNwRJZUPNREx hL63hYtWplwpi9gLgagogh4qbxSDIk5V83n6tKtO3lQIiHqM/bOw4fUXgLh53vAyeF8AzQU+Ul4I poUItYIG8sozO94QlpNrcWcpnu3ZduS5eWLrxE4XJgPVLbL++25u5FHZZDdCUYNsaxt9qOAurY9t eyivKKhFBcsQoaKvycXyd70/n1EycT0slQumZekGkIomKech3P6/4jXpJQXE8CyZ0Hdh6KiBYHN3 cZJ3iHqNARVOUpc7i6OLUFw+Cry08nei/vQq2Rck4Rw1JSWg4ExIcSDT69/AwdyToPFQBdcr3vTl N0P+A8bAEycCVFe/7souIdGe3FplnF+LhErchL1GJ0hEWRnjDbVl7xZ/I8txeIEZ7qedFKqjtNEN XtfIev3l5ydRrkVdAcf2YVIVtPI57F1kSJdY/6czeSW3q1KBPsXXvZbwTbySt7/FvTJ3urTqPnUX RSri1lq8gvGlfV9/uIukq5G/Yi4uUkanC2qAcTVCuzoV7t9BjKxvdDA+YZsHsalFxmOX0gYIRrPZ qwZEdPwbH30suKOICU5O9iNZ7verkfnaK67OnzJcfC3kUWgn2Luid+HVFwOQBXL04nri5s95VBSc nbZOziNeCjyKRmLzXAk4c368p/o2ptY10k6QZWXK6XKi8dppxHVY+ZSebT+kW0qnJVP8DyokJCdA PYBwKUGSAHAHt/kNsK0uRoQm5CsHAp29uKGsAneziNwO4GZHaoGCCDDsIcaa3UdD4Ssa3B9OB7AV n6p0FaouqDaxi4N7BeitgyFJrfWZMgML+8gvOtgzAYIYPAfvPx2H4kApJ8eDre42l23E6dBb3pVK ai6F4MKtZpX9u3tRL27aj6htpOGCiR/0uq/zA2nelEQI0JMTSDr3SvvaiiEwuSZFl6he9m7e6u9s uqHk295ztWy1FENeJ2EjDUijIpW7UYOPC1phr0KsKaQpRzbp8XaYkR8r2y/smRaQ7F7UT3Kue/Rq 9PkZOCq9Ob3KtvFn1ZZ2CurRjCFL9m+n4uHImq31PaJ6LUWyr+Xcpuc5sEVykWKX8bJJcD9hpLkD uLyG5F3HrebkXW2DTCVVI++xeXn+zq3JSFJV4cl/pCsFbkXRcU8IpFrYQb3zAQQh7cwswRh93u3l hUb6UEooMl1l2SydGb5HY7A7/JGFQl1jOlkxR4sw2iySSG1lGNS0PW3/yaiKfLUE7S17ZbGxwCCI zdvOF7HSjaeWaWHPQ50kXIjoj/uM++BD/tGGx5vzJVf9W3myouqcl7yyXgJwynG2UVl+XmnGyDfN hWQGbCsH7oANStqaUhXGZ1c12UaWrvkFL6am5ezg0J50tyA/VABzk7OEcNapcgMRNeGXzWArZQwF CzcRcGd7a4XteUfcaY0P5bAqSLnWRHGzLLBok6RKTJbwgN/gOGhi+657DpcvXPmmKIPV1jfUbzH8 U5aiehyIpRqULgMNJkvxnFMvAypxkL9A5tPPWSKYssVEkGQVG1AGvjmlSOo0fUElX4KSjAQwPRvM ZYqjdkU9+tiFbPbQqE3y4GittqJPNt//yr6zVqjvNXRcApCVEf1oshFD3TYOJmwvgoE8ZhXbt1BJ VskR28CcRsD7P5Nvq1Z2Fne9DcmIJEjSoQYqYxqbyKTchq21a1dGdSmty3OrRGKQtHzF9ndsvTQR jitlTeYsebXhczdsm+yS1B3rsXppg+/qyn2dWWXzZT5f96vNXQwJzKflVMzbatsgpFhod3oJ74yH rXi+clU5OztXQBgGArXTao1rbIaNdGpxGH0/IURVhbttWRze8Cid0DN2yEnotyRGRHo+kYlkEBRU Aou9vVlwnVnsX7aK1PtxAbI1u2IykpPVC08rRrvBXDZZMycqlCvSFFqchbRlCdr3/ajRjTtREba7 fJFrsXUIwrV2aW8iu29sgyI7bK1CEr2iZe7ydtXstJV7wjxpn31Kr9e8vob505f6xuWWqTXT7tmH kvFV6+jXcf1fmlHKWxDD1aXWrf5hvttI0vLbFD6WqnNGfVyOx76Sr3Zn50ktmzkQhy6kv1cG2ZKi 22ERb7Gbge1dbkxid73q0hbySI+rvNpt+pRwLM/ZOVxa7I7/mliZqK/9XsAt4l/8MHZpIBv+fL/j lQvPAyDpriE8QxN7JZkmZUDq8Hl7xF0Zu/jmwtA3gDEgBvxHEFXFWtZla7eSLDflWUcnEZwMSdrj LclU8tzsRXls6E41av8/u+3fd7Cq2XlRxZAQIt+g3xGFv05eVSj7DSByczFyvvOhgKE24M+vL1ru dQo3qxq/2QlOWPVtFkdMjil442MXbhbxbuTnJajKXDYukxvcERteElQxwn8AbsBAZELcuz9ihBk5 tqlbku0N1MqGEI8zEPEQ2ooxPxCfbOjoR9+miT8U/97mWiLkDGERap5ubm5MmVTtWRHhwqZlUdKv lKEkFRL/7vyy2WVrZUMti8RA6Cp7bIeLUL9c/Qk+bLOMZeo9tU5nOlSEhFeQtZVN+ox3cmwTjb3/ N/Dy00ovF52CkwlyKN7NiFeHPnD3ENnSdsw2POTrX/avyZtPL4PE9nb61cRLNoyPINCTnwMN95aj uVbs4cTiTOQDRfsGEo17RRqF0YTF/6a+tnL2ctih6llxeQhnIJecnkubw2V9QoQcRQBtP6YIJZdX 6iox4DuIuv5x5c+XelV47xLOooEtxXiGDTtc//FI14ORWV8TsqIXRc+imtz+cF3UYUQ7aK29lkJJ SH/3uCnjjl6uE3UbxCd+H8+/uXL1bgmX+j6MloQxfDmsIgYabM31AdwF13r6NgTXyoFuLjQlPDj9 lGJSjIlC2UbC4jKJM3Zl9tKLlOss5tIjzkD3OgsSNVuWWrC+HCrJUssSERrFn1atw+X7KK7lsvaH FWNn9rDcamzKhQICdeyrEM+9OFpiD/fc2yxAbpTSGbt9ZZxYZzgrUk5Yssu6rLzlKQnnZx6azdU6 p5M7F4gOTOKOkOsWlR9I36qOy8I8/v1t7yhh07Wdne3gTS0itOpzktkGVkfSLoL59LLM3kDKPj9H HrV4MnIZL7EFGT0/xTvQp1n2U+ff65Tsi/SOPdlIosspuwkWXgLzyZ+WG8ab3zX6ST+Xk6A5edCs PIPAfvM+DAfAOVgoAZUrVIi2hBCG3lwfjxVYBqqVFW3G9zq54OwMEH7IMCDisGHQNll7wsCCP1dx oDo+jcBEwDCTsu1nQ9nORE4HCIyfwgJEiRUqVDffCA38cDn7eqRFtX21ehGZ8rtyBk97ObyygS4v aiRwK2wcojiXisvbLxLL2QgjtnVLbLP79TqJe1BEUkKpFocNfENX9bA8yLTPTnISvPZm+UYH2XdX k6vwNwxPlYPmeTW7mKZFDWLoUJDOSIwk5KiychJApbTVKm2djf7Ufc6jKQkIMNT0t7btQ1BAjJZ7 k7Vl4uQTwr5QdwnavF/NcRrvblzCTQ55TzvJjra7rFO7H/p7VOW/HlvVbYTJ7FPnLScsIM/G4aXh ZRMyqd72852OU285ctK53oUy0vTuK6ff1TssM6WRNmh036ySL2EpOREZL9huVHF0UIsXCSk1eWt+ R4eKphB9Q65xEiO+nli/HvrMMiXWbdxK3Fvek0stkRIwdwi/8DzqCBkJhntwA3QUezuqdlUgwKuj 2dlUwGN8hpEVCooP8ibfT/O1CpnHWw/ZhO/d833kvv+p0YjwRhC+r2t6Pvf1R6I70VDBtuCHjdgM LpwJFxIVVvvMSpbEXVwcCehZp+z8FTZSSQTSWrDAF5stfpnSCvhxdS200GYZONavd6+ZIxEIwIEp OSHrSHbLNN8Wo1IzC3KQ7PKXb3l1qs5Pd5wja8PtnE5cjW70HPOtqrEFXcSu5VuroAdwJ1dTBaut Co4Bb8duexYY9Ijol/6ysGfTg2ygynFkIpTygiT+C9YHXoSjH+tmExan2xSPADANqpv2RxJ0RLZS hcwoIQQh4PNxLvy1uZc9ijkzqGdtnaSSP46VfqyJeL3kR1EKXcsnNpRwJCBKaxv/bnY4xPt4ssfL qiS1yFVsk4iNAuT7YH+XueseM6SClX8NkZDFkQnzz8bUqVCgarqv/b/y9NLdByLjjCOWnVtAzJVh ibEzFDZQA48+UEpgcwSt0Hi4A+rUHiv/nsPLiBn+ZgI9kXryDW6qjTLUuZO292c5ERo2hWWnRvXL UfXMs2/owXB0J7wi+2vfv1p2MiiKaLidFifz60USo+1cXBiNUS5tscxRGtJEEiEiz9Bzn9/bd7QH hQni09SoZ2qIaNEafmcyrXF1lgcKNFfraotWQSR2d6J31cBWxboI8zBkQy3pZLyTIvwhX1lhXJMt tgxefSqFebdUw0VgPP5xiJ/7JiPhScT4os6EyqtriCAPPp/7kAcuFEpzPNikFJS7B2wCLOsFpXEF NKSTqMhSBh+wPPCTNHlg4+x67M7JP9vZOr84SOOZLL2LBNX5fo7aKbEJF3O7N7eRAQFjPye+znMq winS2staN2IjRmKrXHMQIMXXRoTxcypL2W/MVFTGjZvnIisGjECLHEqxbeo7eCbqFHT78Abz05Ny kqAXn18bTRGOSReIwzICwlN1U3bMKbk6KiAfN56cLSRZanuEcvOWnDzStr7fl4uKSzELKg2InvVH 9yrSIYgPre+1F8D5eQkxdFCfcO+AOONjKolEJicksyLcnaU9JzicD25eiBLIhlRFDjn2GJkyFvtl 5b+Xj4eimELc417c2fiEPAyWeskazG1/6oiC3oLitTZOKPy9IHGPzelndRSrcE9rp2PbFYlqrmQQ JKObL1eT/Ua5IaGgxvm52VjVjcRE5Jr9aSJvf9n5S277USM0g4gFYXhw03yZz0NfXGXSNj1m8Fb7 ib/v9tyijq/S+uWWVEvTQTSPKWX66yCc6vAdD5Sga1ltq2Gs5a1b1Esj5CNZ2P/8vehk99T9A0OM sGSlYJ7xnW9U4pJTg4Er6Uf+vM+pEWFS3UYpPl6cQVHJnKivMR1GErWuLallIH9/ZJvb6DIj2qNl 5RQZS/Lcs7VjVgTWlxosXtGCMa71yikvTG0dyoidPE88j7OQMzkRPsW32vmD9V1RfcWi1dtXPl8t a1awKI/suXBf3oZR2gK2JsvRfyC4E6ZFDI+7soa3G6SEGRMs9+ND5msX1zqDvLLwoFfvgRRwzs0k LVXrmWI0ZGaiVQm+qqgorfQTFBJbLrlm7nikhhDV3PqRSP4Or2DAQdkGB89fwf/VNcgMCOV4MeOk GUZ5uz8u6gOnG9n6qVaMusZbTYr36M+3f7NvJvaeKse3vaivFgkRLmhzpIjXIN9Pns7hvmDJG9ra 513tlPYov/ss6ouKM9atKUEAw/nrdskIRmCLt0rsuC8VbW7YpWRuSd5x9k5T7a25ZVpLJwHHVt2S 3oJhXFfs9FPstneykKWaAdvup8Tsf7QLRTliBfuDDgn1yZFNJn8hRBlwJGtN+DhMoXNj9nc+15Nt lK84bi4JxhgSfy2sViQhs6/h9tJlaSIAxCQwytlRhLtY1eb/153lmw9LKrbZMiwOF40ro5edvTfB n13yEtCRFmAiFsRBRrI1lqw0ztfnMpLOk4xBh+DYnBSgzGphJH+yXisRgPCPLCyj/fVlNvZVoR+1 ZBedFYdAb4MCjEgSWeJgQAQk6NLQRNwqBhzfDmTneSjkRIOPXoG/xQYfQM5gYn21HyUo6SPbBvD9 WnsZEgfN0cZbolj22lo/T29+p/UeKeoV3r+LGPjhJkZZDnV88b3ahppxxI0nEP3mFQKxNkwc/q1/ tK7V0d1FDfFzgowfFw+8WZe85297aS2gnP2ZF0dQRGJyMau84iiGoBQ2KmGsYi3WWdX+3UNJIaJH J41t+p4Vmyb6nY9OeyU/2t2r8WPXvSAmZIssMnNoiB1HX+tWLL870lhLHoxGg6E02FpCwWlyOfrZ 1EoKZAc+qvCFT0jedygSlR0arTV5ZeFEqxtAK5Iez7W9M6j5JUL3GONzNX1GoESQpNiqttqDhKEW f3WpGyyqIuS0MIE9bVN6K1eLui5w79zV/YaCnei9f4HVKYej8UUZAvvfUtasR/w0jICbTf2KsW51 EDkQJi7JZ/AZDlWrikBFzJd9N9ZubwHnoAPnYTb+Cd9cfJGN/FO62zsgFbsgODG16bHlEQ02/iEP B5FeRv6phSp36+gsFwH2oa9tqbL3nUQoo3UBJyOfc9bYjpBvXbuL8pQj7VkMBMv1y94U05apWrhW o/MQcq9NFHaaN7qAxyPtPPlgLcF5TAcQJy8iIjTgeAO7SAp3FW2LjOPTEbnq7nyto4qOlJ4s1xir 8FYu96+zO84aRgvC/9UI4uSOKy8RhQ6N7YuTF2ZfWyW2wo4Rn80tqc0W28JFPOQkPJX/FLaLGvf3 oaZeBWoPvgy39qORTbUE4ujRFPXFNI6TUnfVwPZO5CSUVnB639lVCzLJLadOts5/nLOL95sK+IkA rNFTOpFfhfs5QxPFke5ufAh63++S+nyrs3snEFKs8Lz4gTtjrZNn7OIJn1yTrzofT1n7Su9KIUH0 /zsUI+1wpuZau5jzZwdl+1NkVerGKlaZnnb35ZvapWNIDsfs2qYvKvCjQEznlOllRf3cGRZYFJwS Fx0ktXo4kqJHluCIL1kaM6Smky8k4KGZhy16ipJT1avZaEidW6aN0VTq86s7UvWUK5sinO1ZTnSh TOoCaaEUX13kk7bZJAq8+3Lf0wkqfFyvGW1No2uW5ySIJHKaXMqtuN+uU2jgxcmOhKYEhV7buYrb hXt52U0UFLhQ2lbVFcZYsurX/LqJa02h6twal0WHRlQtw+2bnugsewaZRZVgcQHxIBvqx2ChwIDL CZlJhcynb/+csvl/Z5RCvbEbSPnEDhSO4EARh9g9HrWJmG1HG5u1Rdi0sXXPGVa8ISp+aebmb+b3 tPFWk7cQ0YvUaoIBf6NplbDeWRdpnNRopZF8pJTqejwfIpfyzoiQoCrGD5RW+T/KxKgcFxV7Eu2o hluPUqfbKouVBtGi/QNT8DGx0gnvSZtTQRP0rYhS5TR8XVE2otDngvOrtz/kcs5YK1hBWvTue1xU eqqL5+89uBtRmKlG22P+K1KCnE1FUQb1BFOXvIKEkwPBf9c/Ay/2nL2LIaTNr6xxfgOILHFtWXPi wFXnw7azemzkRWPpq3iy8KYEvx/dgnfJjyh83ewZxYjF/0xYqltWQ94sFZX7bbUvLYSA5Z5phXR/ G8kUkk12e8s68vMpcyIyRBXmdS7er8lCg3dlXh2qEUtBwTnmd2q1MkF6IJFqvENKThvCs2f6TuN3 ox6RWREKG5gQWcR7Vjgr8Xqi/JFfpYihsExSJFM3q/IhOGd768XdX/OwhbXLxC1oDKoRL2cPH+6p UbeLWroXihIPd9JN6vItaKhYlTMJ1+c1BYjBx+cP8vLy0+2em3ENpEWHNWFAzZa+q3myxBKj71ER LevORDwF0th5JY99Hetevxcoler7zAh3/rVdQwtucpoKEpF+TowtCQbNXzYc70qpyU42Utc2KgYP 7e4nhauioTbfNfin2ji1FEeDM+WL/duWXneUaTfo+XiJYJ486c4TtmfpkfcNd2Lw8bbVd23kLAki F/2kX4HC16RlvMlq2xeIrFgTfgnnXtrDiS2orF5OI10QLl1NG+2+l4SIBTFY7Sqy7BlvRRd9xT3p WbBz8/C04+YYBWqN9O03VATH+31/LBiCwp1XdLcW4NDDDSne4M+6fhjw4/pLatLwN9XWKOcPz/9z vNwltubJRcQKKbe7cGKx3/KpO2DPeEvZ1+5Xt8t3FKn0tqE3RVTDMtUFlWRrBFfvqL5Tks5SkHBO ixnF1u3oJmAruubSHqvyZJxrON2yUkyzvQcuJjjWAYVKUcaneobvaSA5Cfw/LG2ts6tMyIu8Jo1Q o2XpVJIScWPPsXjrCJtL46twtlhQfzDW4jQhMoi5M24iGZ2P/uW5NCW8f8eWcL7/29ndNm3K+H9l 7qq7iGUMDilT3VPYiq9CigReSYbfPhxeQYQN6V+1c7Q+BViDJmNRBSBRpju82RZYa0PmKplXXRWn 5FwXMTUpcqLKoTlZJqAHHVa3faojdoZCdgw4m8Uf5IiRHa+OvxYtnSWPnY/PUSs5cUYLtJxkPkoI v2dyzYiW22ohPXPD7E6MYX3QTK6Bryf+gwuyZKMT8WSihvApfVlOOmIBWfyFOtsToyh8OYPAfwoB 9CCDAHgyueZ6PKPWEn99Vm/DpocY1L2xQW9RLEjjwPAfx4HQcCkBRCOCD2T4+EZL5J1HR6n1phNM nZ3e3skp8NavY02OP2/bgMj1Brd7dtN1TbbUdIW/y7IaO307cDbte2W0R93IwmwsaycmZDRCfv/2 r9p9P1yTiHQqQzFxRnFnd4uNH000HFveBIQ5yZQwrii3lIOBdFe77l7SgUtoCUhUYT5QjIPOjMhX /FF6enMnFJO3TkbKqt8r2ZvMM2P2Ppr+zkab7nYiUoLAnN7Ln+xGQCbWAYQQgZfLtqltDPq0gZ0T WoLBPEArbO+22+tR4tRSQVDj/1H+KBaPa13my82zlgbuMevZ0FytXdubWHY8qTec7iOFD1sqmHhU XKBJVfTfX/7LcN3i9B3a4ccrXyw1ePuWjZ8sOp+Qr4UCjJ6V0gmZLse0sKyR6k2e1FiA7Y/A4Iba rKlaTK/dneWcssJYGRLCGN9ORHYiJzbPwgCWmYbxKln5xfl7LlWq16+6GObgIBZWvaW973ixXLMQ jUXiUAcJY79jQ+Tc7LlbbWyXqPtIgkFyoDyYsrSaRSVr8s6iNIEQoC+mH/rcmFWdhVEQO6CZ06sn IuFTYQvg8BBJss4wnSgpUyqslWNNMb+euLctkNoYcNhASAw4xseRLiXC5Ky1GfDbbEYwQr01Xiov V40PGN5LcbZ2ZxHc9auSAuQYABntZYSs7eX4/buo6vZ3nbbVkXC38hrxFl8BWaKGavdJBS+s1I3a vSSA44X9l3JaL+gu3eNesnCSzBuNTLfKSkhx8vZXl4V00Rt2Obu94SHP5SiJEQLwkqy5ymyQ6l5Z HUAxP3LdfUBG+YCGIRaqygip2NimMe/Yg/O8Bx+8+p/FH5+rWDIaDhKDwX9uH5d61AtiQeKhzFqu H6lm2wrnNmSHlmiyRe3wOIluSO1j5Z/d37DfKuXf31q1DwRLwKjYG5sEBjVN/VLZrOcWFJiRXheO 9k4x+3N2otnUHLURvpxJr2ZCrJnby8GtkcmglNEh+Wp3/pUUvRlHZXymZYnb01lg1U9G4a7W1X+I f/oxCRUISvMVF7VRpB2r8oi9UN8baWNI3QxO7xaqMkGernBmJScsBmy8fd55Wq39htlqRQsi7Yss WWod0ivrzXLs64svbdsKuRGuR/eoaNBHVER9E72zgm95f/u9KshLXioEIea3+JfyWZqjIiinlXhQ KWvu8k7bUUCjpg/xqeWyYgUjEg7acLVZYVFd/t3Z1HqJdHwVHmwNJc97l/8bFUWsRhk443PZ/n1c tBULoCQhOpU/vMM2Ft56yVFJatLZ2BSrRzYeVYH2VQKFsILFubUuxrnbI0qg4nkdKqutKegG+DAG iWClkSJ5jSrBs01OZai7YieMUpVmRGoUjG1ejN402r1CQTZ3T/M5HNj0IW4XCWkZqmNeVtfbz28m 5m97UcCoFKISegxY1vx60rbHqtusRTb/RzsszMpXz2c6tePJhCEovENL4uLmvss6Inpdszq+2Rfk JCAdtYIwMOvYp/B2B/2KL/uVgfWy5/EzbVXu5zZbO5ZQS+xd11zZ8GbBmWQPCXqRJ5hmZhX7+d6W B3VKCnxgqB4D+RSWyKx4yqocqt7Bg8NBeI7aVtttu3b/dXqHsXDAJxjudopnD/3lAfAlbE48Bh2I w/5MS5e87iuX2lBoKyqdifs+knvsfncvtl4blXRwgTanMvM7bORDT4pHg9VpJk839qxD5/wV20kc 2a1Tne5ecRCi/NqZKNrUGoAX4pTAgj3N6OZs5wPc73qNfoUE4B3tBWse/bxDRibGRo5nvqwRNxKr nOyWIeEWEGiLh5Fgdl12Wgbak52QrMFYrxvaWK2NlRSzmlBWSEpHTsWJi0sVqIjIpSsqVFQ3MoL9 csZBg4oyXCumW+VQo2KMxALgXd5JCItXHzdQC8nuJ8pClG1uyonWWIwjLqztqFcJkmN9JfN+U5TV 5ZRkeTydv6uo4jiDrqqoPeYviCoSiguvQHn2zdbzMzsN1cMHJflv5aGZ7lsVwqowWFFeyNTVOE0d 0BBZ+W8y96sFCE/UNPrT6jnV3rz5zWw+2KcLG8s/k3OL9RjKio2rHl9S3CvENNGpYbCoy19YHCkk kT83JYtVr1FenOnXXwibU8sot7Ctc2TatCB/1jJbMRdi69XPlB+JCS/msbmWxf1Qdi6N42ZEZPlW ybKhl6sJrwTrb0ZklClubs+oiy8IVdm2ci9t5CmrAvVFbDbVaKrbsRGgXtYWzapl7lXOLwVXnIKW wrpgYDwlAa9mq1cL9yW/7K1P2d5zkvF+IKfDI2XKx8P048bDtV8spKavYbh1EdAgpt80IP9myZLy dU84bRVZCiFZQDqcFOI5eXzCzGW+5LOVRMkX53OrIFzZ2cywVm+uqV13Fut3vUeyr0I0/JdlXubL L1SdOo59EJ1s4ol6v2w8xVPNl79Vav64G+XoVTFTDK/tzRnyjCoRRgp85EXF52V2eqAjbVZErYvK Mth4z9M3lRIjRFESq5BveyoVwpJUS9/wtyWEnei+9CvRE2uKW1BAlq+U2M36e5SWo5EALB8gy36i uLIFwnNNpvqe5/OXVpqxyqTcfEZM+bT1U35vyndNbJZ1YllRHuOLsEWBpd3oMFBr6VLYI4GLydAw 01cnZ3occ7Rl04VwSqkZSNs+buyVb7H83eDGWEUltRhUXwbRcTv8O9vODLlAcJpuSTd2wZ2mwolJ GcZn2LlQaiK+CasVsWrVZHF5TyqKiONdFLdt8yb6RbUbzPOyU0tKCcjqpkRVX8RRaUHHUG2LkWlh Tj47Pt3c7e872rkgRq/4Ijlt9vJV+WIwHESahdEiBcQ9T6ZbOawj2bEMRPrWaoXtUxCT/9ztnpcx YqGS4V0plWPfBRvyxarLewZX86sKC1Y+r3fzblRWWWqTRFfu7LQcKFMLGbRwvEJ7RKUYwP04+G8H gP4lUDKhHLgYPC8GTjxhWOUm7LEeKcnZ2orOwl5XHh5l1n6n9q9u38229eP2QYIYkeZ2sA8DAdgf HolWT+tflmWxeLWyzvEVXOCPJPRr0R1cbSLk0wt4u9fTWtvVig82LExd+8tq9FRXGMayRHTZES77 JOcnDq3vjn/UAUNdtFBWezCV75e+LIuE/li4YIwTUuKKVEgpaP2wFj1zxcFwpl9KrbAzpB9q3Air t/LsfF9xvgU8E8In533KiozCNgzQBqtnCr+VFzcOvKo6iNHbsk3tlBNgLTInyasfl7HrEhbUc+0i 6iOrtwq1GL4+P6m/uz7XEBXKgpyfzl5bpLIaIGw9kT6ojAfLrg3/xHlcWCClTsNcztGibbVaQ7KS gsSUMKQFC9ssiCQTdEUJNQffVbBirbQwPIwHgv+lcHjIAmwJDPAU3NBwFTyVoIt9QeMgC65rT/Fz ybSFSv1RqO3lCod7e3pv+vMZqj9GiMxT73aIuv6udr4tV25GKuMmIEY+TZifedgvBw0X0cksB+r/ /OF1v6VIwcMVgysJqiPyvfC83gOBBHiZv6FFPKu9tWNbuSBQR0vHFxqDhgRfz06olGaMKTYHWEki NmeveUZBgGENuYlXf8UUSlKLZpK9fbOnGpVdAe5snmZVurSDI+n6ZySQFgfSSMdt2jbvECLoJxST JLUPEYqSZ0mfXtoYtmWrrIyFIfTPstKQ6yVv9BUeimi6cNBSs1uguT49SgpgODtPLByVJMiy9Vra stVoi5PmlBDPEbWhW2OBDHej/47Evb2l6WqO1cs8NudQc5CYiJFDySrd8MKoRIAmND+KMTJEVYYk /DW7VP6sSc6iqCxx8Qi8FZ/9sAx3ow4ckIpCJtBTK0MglMNWrCkxG1gcb6+mKHZS7fubjeVTTRgo qgKyG2950No6ZA82oaD0X/+5Jn1aYYakXaaXNdq9o0WOa0Vtsuxf+gR/bChFOI1gThgX+bqcvEtV qhlge0QPkjE5YUWkdNUs8p4tJbDfIQi4uHzauYq9Ot/u6M9t220oJ7TklBcNmRGH8EkfRPZxuUsZ xHMbkK+Emo4TI/nTUPHsLwYDSVv32uMN3Ltztl/zl0ZoBULo3jclxeUHQKTWG5s506W3nL2RZ5ZU dF2q207N2Rpr2XKhU00T/GKptu/vbEKMVFlU+mambcaLV6Ww3FuuNfa9m3/07f97FswqhRQXBZte +my16qu0QJCT97OokCx1cSWGk8iktptRmQPbl4SE3bo+HNmbmoLbOnqZbYYL0vkynA1Y5PclNVEQ dXPLmyU+2cbLy3/IakozJSdFIXKxLStJkzW/bZ+o9mS221Ei6sbNOFgBoMOh2PB80nY/LzZiuZyh 7qKobeIkUKenAugzAlNA2AeBgRU4PB/8o/k8Pur1prlxvedn/ftWm7hZ1EdsepE2EigaBhIEgGUD zcZENLngbo9zin3UbTGxeZiK3ktcG9stZ29tvbVxSO1d+n/u7bbat22knQcSvFxcXKW4siOpITtX tyrH1nmpZwq7ZTeoxcKEJ7kvSYolVes1TcyobbIMLQoXYaHyWUQLG87O6Sw1Xtd4jo15K98UDoHg oCH7CfkQqeJ02bTQcf5FrD1K+Tf5OlFQBEKGh/yFzUylE1udsGGW45X6hJdoY2nrOI4/EzZkDV9Z 7+cLM4DCcZY1e7yIo9H8nVhmhOy1zy/EcfD96fPjv/RCMHpNzy/dwHUKkfZy5bINHm9tI+GEyabW 57+5/cUcq1RvLeEtXLFKj6wixcYw8lVXGlHUdOrllnVxUp9m0+pG4VquauvhsYhK8SJNWD/fWobi wxj052OmbVuwU9joueblpIPVVU+LGciH1lthLiM62x/+fqlMWWrcXklJD5VVtn8vu+vZZYtT4V0z JcP2oCnYav9G+5OdpuSQXk7ac7RU+k0Ph/G/ZrCwMG8yB6iQZRWSZt3GJKsS7ckdwbEjLae2xnl6 beMgOCSrL2b9j3UZpGhIurE3ZSYs/+Lc5xc+ogiy/BSOC8GaHeXqORCiGJ0+2mHqazNatWQHdJsp CWvm8i85yE5tjYplRogd0jsQdyc3LDfY8umL2rZO87YR6864tEvTyt0pnOGuHYaHv/dUfsNLkSQl wGXsti8hJzsRgnrRpvIVWbxDa6XgqLLeAP1af97Yb5eimIPR9+7NaUKYvSerieUbXiA5lOyryzi3 H/egsHljvzRcDIGb7qC0/LYjfblUMzSW1ejEaSOdhsUo+L/4Q6IiB9L+4ELxfVihRbDqxfkmVT2C 4FyWSlUWGDhdkoH+6uMlMou4eVEC4aLwFgfbiZZV85ERKuKtcxecWlCZOD8ubhW1BlyBNuDpnFEK u1GSivPcvRM/d/ZsvViTYu4zJMsWBgyXruIydndhZzlWXqjgUVg/akkR2AqFjlfBiKj47WlpRmcm B6VwsNTjlk5Z/25OxDiL8l6KV0+Vlr+f6S9q1gLrsByM6mJQ/xFxYlgSvVcskW7IsiWKHLt3sUzn JDy2rcQEr+4fd9cQQ8l9yFHXwl30attnRQ0Vs6MSQoe7llxEUXlXGt5BV9I399NO6pLdQYK5aYLc K7ZF7RusMH1iOzZSmgsXVPz950pWjrQ8uA4K5YMnPuKtaW/J5FVnyPEzdbRe73lWp1TIpqI7dtsF Uu2Gz3F6gte/hIu633FDKBd9jpPl/L67/L3nehPvqLMBNv+1a821aRc/2iizobnH11SVr9sgf+sK 852uFwk+oIQ8BWyyrbETehm7N7/0WiwULKtqf7O5STsb39ixIflKugOPv0QSxEDDFQEr8+3ZVyzs FNt5bkRThs0CfuKYtaeq8wl6KOyOKmThO2f38/OC8VFh9OoAXifmisXH0vAYWsWPTascmdRvTqbx Gi4jQCgtfRlV0ReC6OfsLbJF5adU7VVuIIFHQr0zCbS3rVRw/6tbiIF4tfiAyOYvlq4J5b8myM4i f2EO/qvm3hKvCZGY3LzeSChAQFDM7BiSCj4xbFpaDgyAdT17bQiyJ+RG3RzZ5dDDqA5bVYCs9dqM 2RQPt9NG+gnFWNgH2h3tGOB/wGCazoO4e0XHvk2N8q1HDTzDYPBf5+iPwXJZ+BITSNpffKvKm5Sr eQHdBYbKQDTep1Y9/1GaV63sBgzP02+9PloTFDVh+EsDwfd7etXQrhtbNE0F8g5Tes5MYnRmuagZ LivyBuWsv/rESWTswpMka17MWQw7bUKukhmdFVI05kl8aD2ic4ITI4/nSL+RSGz5ljuIougW6uUE O7fzTEUlc/6Dfs4aBwZCpZO2OrOXftwREbsB4SBDjPNVD4uV9wP6uNi29kX6iNRZbvDzbzOAwiwM KCwDE+sK7gDz1pE/P5Ktg2GUO3lmbbOwosB0I9PzNhsNCcpOKudkoyi9DPrispZX2wti41bQ+1Is g6jKAyOHgZu59sA4IBVLyiWPyTKV5NRycyTk3JzpGgw0OVbXsXne6jG0X28ktRdRSvO/L/CSXgw/ APUzPeLtHQkIFP/2MejS4cdtLPziPiNxOe49uqTVcWYSq6zrKugyH+6h5JRtEdRZIhKDg2Yb3Eze Ra/RlDlm289mKkHoo0N95ILlwivqjOCrLIH9MRP2ArJLAzUwIvUADnoTjHICxAccjtEefTBlpLe3 Ni/SUIgstA3gUYkNZUo9SsNwqa1PKv5jAMWrBqjRc6gri6ovTeZkav8l7EVWXhIgDJRtRPFytKEK q75ptlXl7mYgliOGkZspclDzoJj2jm5wJWwyNtB5vsX3mySI714XB4PAVTFUwFb8bhtA4CUSxU0k u8kv6j01aaeZbbX6FZ6v/OyBQnl+BQ2eEcfYzmzc7HhgabVhCV5aW/SWlclXkGfSIttm9IRElTY3 ECJFwE0MM/cpGK3JXNhUHTI6H7UZYo5tzvG6puLisjrHr5RZF4gnOjImH4KZkfMxOXW5ZzuQbUTC UfCHFfpnypvEcqx0SYSzVqs8abVWLubfvRq23nJJSiOfi4FPd+vybstnbcciXsqQNJMvNT/iJGWe K9JCnvMFZcdDlhnf5Vqp3nBgKitXhxmovXtgs2RGaZsHmW3377W7ZzmNTpWCxWeGEG34N1OHlAw0 BhrEEzJyIeDRcSQgpSwsi2/wr2SqdJLTRITZpNWdRGwd0/MhPTzZHyTk5HQy2DKGKowtS/WVMIba sp01jlBHBQsJv0fCR4G6P0CjmtNL8u/l4p4jkQ1YiFwMwCgSqt0RxH0EUvTleygUko29BE5EUhw5 luZBWignbREYGVD8D+58Q9UteKxAxbFNNyI+CsRMgzHmEyj3owxJJLFpFik+FYfgdA4CAOtEkes/ Y4Veaa8OVf7VpxiVTcU8y7J22nA0wIYQQZLfpcUj4ef2DhjZxuYgU3153svUMiM6NWKV9tGKzl7k vIGQZPbNq8HDUlvb7JO1DSJRM1JZ2IFxOkDCAJKb1Utjlro2tgZc6DjbySYPfaokLci+QKSWm8km HW2d68tTb3dKRg7iIJ16mud7KK17OXRSSZOUifW6Wy1yNwcVd12qa6ALR+eXtOFpN7FEPK96C7O1 m7eV8zRXKefnnYCwJt3nUQSROcBNkOp3pTJ2BLaQQmfcppcZHBm23G4imhxyVaVGRr31/LKKBil3 /5eW4hoO6RuCTSNtBof9/mTVJZi9N0ZHy6oILOttB7Ln9uXxqRCcSTAy2a3sXIE03y2zmTtXUkL3 52Uw+FvWKPerlHYaCoayW1dCJ3/PiXM9FxlJ0p64a9EG1ENS8BgEW2cw4/Q8VNVnu3OIqvOvWHyb u3eXpRHvbzJwHUafZKCYXCO0+2uPRC1Xog4ni05PWLciJDQoU+OhLaX5NwNrKLodgEUlExKD+zF6 scih07SZvxtKxJ2bEaPoT8EW/3u3tqF6UHqnkvNnUWyWQ2R+4XN86q9hLlCa0xJoqbLy99PdnNK+ oXGNzlsWvKe1HirYo9+xZFY5f4hfkDzVJR2g4VXlJopyiksYKYe3Z15n6ZLlludiK8X5wVKaruau uf4tSY+N5SycGdycCdqbIt0KfvrlsoDiJPOy8nAp7Hnp/vJSIun25nVyRCRx6wlCqOx0yU6egrDy I4Sojgtaagkq1TaI132y8gJzwF5GnOoxMfwDk21OoLKa7TYTKiElZb3J6FK1GRC73hCh/bnEVJOB LubBYuPOQetf9L78JLb3lgMKDg/rVl7LDREgn2e9EcKcxAFInkBg/t1GBLgDj3LOE5azbXw41ZH0 gUn5EfCQgYN1V8btS2w9X1QjMzhZMXRwgsmwhPnKOb2DRK8164Hk6utgYGO1flFBvwkxXxRssDI/ IQn1Z2oQjnebxEUOOj9tUyx3uyoOUJToksX/iubDYo+EL6neyBnQiMe/Nt5ZXKttftRZRNeVcng2 6Ekjn1Ky0pqjvSdIc1i1TKGnqiuo0Lp903hIcL4xnecgwIrvK6ellRVzaGXkkNGkNfbdssmnEfMd 2VALxoul50Jm716ubofM1j+ajnSvDcGhUdpJrAKdUvlG8gidJ102rcCmghF+e2pmQZEzLKSVA+fg 1yNsZtTGbfdX6tDbzHfj7rX+lmwHBTwgl3xIHvO1RbN9vOLBWLlX2BH9jCvk/ckz5spRHtB0a0KX +z4smxYZXT0spZfFX8hRQcfGQ8SwvTfY3pT2HlaqltqhdBLTQOIPneV0In4rTPuzgyW4eJKwONW3 bPoO96QE03vtbe5kQxark3Az+zk9vER9unbSBssDNZGmwPl6BMJTejPcWCmFWFXUIDwTYH2ApgUQ Nu3ilvRGSZUIGSvZBkRpNQqWiKdF74ez7+EFgtKt/KtwJqSqx3ssUM5EWR6aQvYY3Udi8vBTbPgR fp/hklHNDF3SHJk3N7l6j4CbxEes1e9E6dIs9vzNkvVoGZ7fzY/SblQuTlmLdPx9I20ADlAQx0rE ha1OOqqkDeNd8aQ4TsD02q2pxctkpJYVWDFw1Bmh/UwQ2p2ybnhjkWQCkWF6qJAQ2Zznqlm+6BD9 7EfbzqLs4TLzrraVufKtZUktKuorF0YmLN5V+9GDxbsjHF6Jyn7M2QXUrycOC3CyBK4dvbMiOn0D wBwliWW2J/+BTD6RHfp1rZyzSrEai9OjcS/UfYmEbvBAYabVhunZxTeol8xadkePAZXcLwDwOAop /ImHgMHo9tpV7+leqavCr04V5LLTzBqPfD8Do7L2ulitP1qIg8UT3ijkhQ5VHHzy5AmsOIOS22rS 3gr00qU1C/MlWlnYh6Unqt5c9BVkNb8vaUHlObfzIhWfmvaW2WLVfooLNB5rTKibnl7KtOBPuh99 EDwltxXL7C5L5bNm3nOo5eA5Zbh1PE6TGJmB9snC1fnaIo3KAnU2qxHazM/67FNk4o6puIu8q8CS KxLcHNLvfvLSobhRaSLie9i4SP2nX70XVxixT2HfvCW1EdzG8qx4zLHSwHLvbWb2hKnn1jfXQy1b veXiAUqxiw81dJSdsUVqb1aLQKTVLpb3hQ9KNLFXVrCkJCl7zgUj8OCi1I20fAYT+ZvbWvb6KV+T UdcKi5OxzV+W+2QpOeyaSE9JhCupANt0szYHhLEXVgqIaV/t4RmbmSdguPttPJ/Z3nORejaSRe2o Dx4DoQ/j3zI+CB7ZmaWMpUQg2I/NAqA51HXjkQxJb3zYQgVfVXrNbsWv9g2amxHIIsJ0i64wOPYt 3qJFISgukVp1GKICTfZ29IGygN4ELw89WdkqfUbaETCLB/VWAZYm8RcqMpcJRCrWfHEs2bRv1CMz pdOmnt63Vhl1daTiPtRQ28YzulaN8t4sDoNWwxNj5MDfEn2j1VvWJogZQLelDiIu1CThRHQQmh0t GoOOc2LLRBYSuFrP9uZRCA8PRJZqLVbXy5JhLG8n7yr3tk5nv3hEmOvA261xWPEyq8Drap3iNH20 oQqL6oXlY02hl5SiBnXGX/oj3Oml7RdDzaDeDpL77Cpn2/nViU0UicMtabHw99Szk6WbpTeLmz30 uEvMUUSs9IVz7GjPpShq6164Ssh/fzGfbuc5LsvcoOIvVW9Wlh64znLLYLwxPNiffNXNiHqEJjTY 89y3kvaQK1qVCoFKGsbUXLOkHJeQ+6FZ75mbrNxRKMwTFG/zMxTwk7HFM0q0XrLg4aXuCu2dPrbJ w62Y2XNsXWfJh1pj6Oc6Q3EjWjauz8mk76WrS0pBdxA84A5+8rmyXtGT1VfJCGilOce2pj3Ipz31 ujhCGyywOIao24boVMSG/fggfWQ5sR4SVDZTRA+0VrUXYu9uZC1huSrB4Nw5Q8BxE4oLmLRF0KEG Y0xl37c/xFkXXQEoLwbF6et7RWZw+0h9scJU9/ur15qtnTW3tBfLWr2k5HocR57h26uf635ATFF3 tXfVvYhF73Kb4JqqEE1n5X55Y+NWiIYnp5wi9IY+ufTZKuhGhZOBRoiE2qwRQEmw6+UVdEucBgxP pNNMCCHv2Mi3Vjb9Vu8gTp9slCaQjYibUo8EhkClavQKXsCtXQDM5awrxdBqz04l3F5aESAMpom1 n9PtmPhAH/qpylsJKfV6ywt/2ojTy7QlrSdsOlsHcsQUpdqDT9TRo3sTyozicT5YjOuwfMgXYwpw 4toQEm9LG992ouSwa1Q+KY9/Kt7+BIkXT6mWTpTOEa+CWp8Hn2rV+cOmLa15LZ2lEtCSv3P/5f7h VvBQonz2xdGgILEdoFZejDkCKGcrVo24hnQTeukooL+N1bvY+Ir02Q3qXG7bbOntNlkOrT3w2VZb y9CdLbvobgrfcPud4FHXxQm4B8chn29OJsD5i/g53IE/tsdX+WbD+ehO/wQh9cHYddQLhEKRCH7I MPh8CjStDkoA1ibFgeJ/8dagTTvZOwUBc//QYA7QUrVtpJiapqLwU8YCSd50Bx96BksBgHqAlfLJ vfa2dmyCtO7+cslGcCUum9/2orI9q/5PWatwmftpElycNiZ8o16yqcee8DwX/P5YKlWbLeWcISmM KPzsGb3IJrm1C7Zs4aXJjI4EHxUjiIJBsxSz/LOEDVfUWbF4GZ5Pm3WPbFm3wjjyjpPeK2AZFtRr RFUQTjhVda/Uzfc/6rDIiUElNa1B6qRylcNWjAMRWgrUDtiNolfl+mwc9oLkIq0IrbEvtwDqoPvr D9rA8vF28iBBJXGAgFpcX77exHmwE4bpE6lQVlidq9mksIgvsKBJ9P84X+DuARiO/4tIMVxT2cFE RnTxckYEtj8LWGmLSvZIjoUjVPtENu+gvbLeDHlsCaKXN1iz9HCH1nKjBwTC8GHgIKQIQH9wu2bK WsN/neca2dGYuWshHKC8LkFDofFypNzlVt4l/kNNMT3ulL0pFColesCjT4XhBTlizGfvmIsHU4aW RjMnTZKmFHFpBpG6u9NFVvU/2+rKmt1AjsPHG7SyrL6E9YVJFf0KtuehRhGqr2389gJlIVbyaH51 bXFWGizJCF87op39Iz0rLIbFKfJKgcnvMiAaRFieWrnyxk1/WmVTOXly+o0C4Ab6foHh/iJWqnra v3WvyxYFgNa4SEHY2sggDqoVQ7TNEvN+Mgz2Gpj/e2Szyy8kB0nJAkLplCqNj9XwQEntZ00VRaL8 lu7ySWw+T+wppZk7yyLI7eRY8GEGEMENpMqoBiSys3lH+5ez1i8YUxam9yoqRlHm1e8hC2GgIY9b +Xp2f6pZL/1tXsqHb0cd73ns5LEFODNlnu5UUv0KyI0bEwzVt7v6j5CEs0q+2I30vvT4IieS5sXz Ni+w3SSFPSBnlZnHF/Wt3Z9Qt2zu3iwoS3zUX/d/VhtFhQNPsqdilvs/O0NjUgqKj663pZlU8i9R uvTxZRq4oylkhSd0brd/O89mFkJbSNTd1r0k4pqzt7CzFCGIyXaQSrPfNXzRdJ5QzJbJ9HO8QLym njH4NUwj5oOBC0SJoeA3dLVEazGrS3n9QLI0d5OEYpEgSmQQG09S7mVGWfyWyNaV2LoZwkXstIL+ IbIlFsEuJ2s79gSg/Lrb/GJV1pRtzbyrTskq1esly2LutpbMoTvpLtQ0C7R4H0BYPIe/c1htrOxe 9/qotgwiEJ1B9qtSHmpvxec4bBOIwFYpCRl9slBwpbLfYvRPxA6seWbEhuIOkuWaFC1SbLFr0UPQ uNUit9MOgWByu1uIxgQSzhYafDS9BMpNnHxptoj+vVJqQssDKx49bVh/qu5CSSKxBUSRZBveHgsg e1sAwIfE3mtqL8/ybVA26vYusKjY8StJ038vYhlqOU2s8yfUrzpIeliOHG1KJU5dyd2rrrrk6iph nf61iOXiyB9NhC+mVW/WvOQ3erEVAcEJut+TNe6yr+tTUQ7ViB61u2d6fhbJLwibLAcA4y3fJFUU s3l3ai8hltJCETfwdCRq6gRx77F29K2PXnOZEV4UCkQD9nwQmIJBcBfoMHqsRVKK5lW3OxHYsgcN FTSnaj7wFyK+ggYi7tCo6gZ1HZDRO3XxHSl/s6zrEk5fNFUympIiGXHGrNSMxXG9/EWqbtt6jRvL 5lm9q+atQTEGx5v/c700KLd3SdZkxaSHm0fgfVZ7WNxv3/ziptq25Nqy8RuP/BBEMeJ8Y3Y3L9Ro 5inuXec6gWRdP/wB1/uL2SZOBKXBBz7BZfzFM8tUJVUJG2lvEdw9zimzkp9sKw9AM93qpFzKWGrc lWteNoJCst2NTuhx3miY2CgA+2Oy4tZ5PsbPW4VFXO9knUSGrvKsgf82PyzGrPNdyl8lU7qPNxBZ URKejWz/p29f7hZaETajLCti8ZY3A1nSJb7TVnVHLRMQoQ2VV9UrXk6qTm1R3ZODfq9JbxEQwnTC En9n5k2t8mFmrlYbS9g0lyCds0+2tVUveV5n6pvO2dvSY0yDTwMBRPEXVGySQk70JhgrCAlYoddi PuVSFFuHFlXoSNuK2/STqE+W8P6IsllpEeZa52bESLskoUL1gw99SBooFTc7qZtF6+vRT1TWeqmU JWIEkWqFdyql7fmk0Qcle2Mi+f29IDbds6tY///sRU4mBvt5uSyClcMJKKm/sOPh8s3U2yS5cpvv YfVibNDr8sGD5HULT/00fo0csctNyIxgRm25af5Jx6f6FTr/cp72IygmY/lqIXPq5Pz0WznoanBr Onrb/1Y0fU2c7O9c+FKIh7+q8dKIEz9OKWoyHj3pREO4fb4dZz+qIJY1bLQcKXpAzHT3wjPS/bhu iZHVoggol829iwOFe0p99CxROw6LmgYFbe94M65oikTxtsxEsFSvxU+iqVMVmT+5ISLE5gISQtbo eN7V1FooTZWcn+Tlf5DrooCxPvmRIHolt/lVSYijc7QkMpxDHjbEUNzUOaaPIqCyzoOcTLtBi2KK Dg7yu4fm3hM2a0FOxQ9a1Ykf8L+0PcpxGDuVGWaUyWiu/4XM9UsZLSbUPiknfmZ9TpFmOdOLhC8l 38403Ig70HBKaLghtt81M2q/V8sKXV/Jx7/zZec4MwXhphvKaMmxDTj5tUV1nELlmLaW/gvk3gUY 0lhE/Wzs4FMVpSTW3ywVqMQrO6JGci1JkzDRVbLVj5XLLL5BRT9WkorNT9QOWw/W0i9q5bYgeaHi uXxZ1eBSVoGcXNEZyyqm+xEf4vOPvePfEuWCNYxtGWf2dF59Jsd6JQ+3C0l410gMqWLe20oxFsqJ FScWAqqW9ktBXoKMH21Z8h1+R1u/ZVJ2KUKeHxuPh/he1/Z6oJKzPVc2Jk0/2gZJpePL3KhuW95K M3EgQC74KVvf41LLEbMaRyRGMxgK151HRgfarw62E4ISpvRISl9ySD9OogbxVCujEmIAHCUnBCHQ hgzf7GMLy5sShG9aHrbasqZbkl7MaxChpEEsDwNGoCEB5Ir1RxJjbKKWazb/6Pi/Iv3gmDODBDBB aH6WKmNzwlDrwGi7IhQbsyW9u1GenDj/q6xC2GicLUfV0ZIiF5HI//K1zq9WjjLKvFM52YoU9sWm IptNLk+BE/8sZLZ/2LqcXX6tLEcE7PWQ5eVzmNMQCktAnQpK4k5qPtpG25uLobvbatRkTlmlHVrb tDao4jnQXfWy5ZxEimdJCZRjl700E8NNN31nOKVu7eLLka+h8x6RtWovJLjXKhW6uuSm+npDuRv5 nezLzhRszejPsWOut4yIGNaUTd/ZyI0VzvYFR3IDAp/NMTtB4iALsboxD2LEBaD/S5Ol9/PSxbBw kbbzbSmzkhFHVx6dsziMkFHCEXiO1+6xu+sG+BxxGhNjLlmkCUt9O8vUXY5MHAoWm/+lwuTtWawy WIJ6kl5EaNFM3L0jnnSNs2DJwP0DjCtpiqC9lSooitS2c3JLOaatWhAHZXSttvbb/d7bV7vUd202 jeHUG0D9EcS2U9Rf/bxBIgkJODB5hP+2qM7bQoj1yIaRttX8t3nZ0VBdBh8qwubzVeFrDO8T+Nsf KrhTZUC6xwomH2MSNtzu2LQMiMuPM572WTq26gXGA0knX/VjzYbAghC8XBDENI1LGlQ/T+YNRUN/ TvdES8XtpOqPM+w3hZeqdUIjZwLgNo6BuCH5luaIAjtCCbK/FSmI7yokEQOGkz01oPsLdU5uZJKi q05SUn+HbKcbTT+jCf6nZuMKIpDm87ZCirE4tAMBAbZZg/HeFjEvfMUbt2ors4tkWWIReqCFRzUo /kU392MSlWbb0XUaEdH+y3VPavJ1ASQKFz1fd/CB8Iw7SMpFV1O235BPWSLeGXIsgqEiPiX+CXgK XZd7KvrQjVQzJIgxTucQkIZwg4kBghqm/qsgbcVbMptDyIzZGYSMRK3aV2wOV+DGkBOzkcdlubve BW+aCFNBhHqYQ2LL1BE2AaSrclnf960siqxOGidTzVgycfSD0vH4/81cN3PenatF0PFu0amKjf06 XYWSH30C9W201SzG7SAoX77w3+xmI94KUmgMacNcibM+GJyoTq7O9Cp8l4dJk3w9luglEmlBez7w ML417towrz7PNmQMOBkRFk93MXhQJrMgq829ImxWJU8H8bY3C2ZuFcRyiJ02KyaUtZ/Oqta32KLa vm4byzsGRGKwhaynb41yc5vdvFkPIheF3B3WONbs2yI1hgR/JyznD7f72WXtgL1s4yJUTqFM7Zaj CNIdDzBID8vklbmKGiQHEQuqf2xFOg4mn/utZ5CvRq0YnSdrtQoSN8dpd+nv7t0lt7u7b0ObbaFC FUTsGCKvEjWAwKrZKokDVAgNAmpNsRpjN/e8QrR7z/dpCn85I5sgkHX2UUp4VtCFnvFnaUzsUU8g 02p2e9JJDUQI13pNq1E5BvxACYmNZiNd7b+6SObWglF/vxQn5TdnZSk6OwZsEAdpf+V+D28K1EUS oKtRUtE93lqBEfCtitTV4tHL/2fyubLuXsIn0x2oAMVbGr6od2KLF0UXq8o14/92l6ZqeULzkvlX +Q3IpyFZOmqilRcmDGw8OlUnQPtW6URI2xbYjBjedd2qMyQJu4p29PtjHG6Pr6K/lrG/US9U3Nqy 9Djhw4lErRIEsGUqt0ET9DrtKrxF22rRHHi5KIQ+L2LmNZ5CshFY6D7/m0olJ4piTM2Eqr4dVZD6 jMn7D8z5M2KUw9xXO5vbyW5e9KRWJsL99Vt2LcB1BOO/Ejca+35u5c6o4jlKAXSvhHZas8X53MAr F/2Es7HUgWXopL1TtMrNte3qO8koUGGQPCQz25L7bFqpqxRIeRwejzYpieYSW84ScPxFaNR/Pxbl mwMj5X3hO2fVg2MxdUrxuxBSoKz6seD9UDI2NwlhXODIEwrg/2L9IBE0I9iOzhqyWAwvPipGvaeb XuZVqjGAyIktVLrLCqNg8T9HKb07EeRfpsmNNgGD5vofM3AV4OhPVAoWbxYhbMMqrdlRTnK56xZE QnONghJcG3FeRDk4uUvGLaptVqj7W4vxEEWe1Momb91uIrYFBep9WU5NEyta9REnSFdsfei8WhKf p5TjbogbUJiqq6tmyi6hWtpdedWonWrFiOWHoeguFRauqtwb5XKilOs/xaL8E5ebP0ryCa50v2kh /dWKBq9a91HXUBraNuGZqYQl8/KCCdXWvzkssGT/ZYe17DbvZD5FNk4UEW5w40NsrrLtDUJ7dnF+ jXLHfzrvLmTLQ74SUie9xe8Xiy61FdqJzpon9y95Ivx2iEjL/YcdelnuU69ahA8PW+kfu8ChbtO1 tO9f9XkId/bJEBKeoj9iIJo/MfKJ0K6oj/2rHL7HSro7nJD6aiZ0KdV4Ca7yEURH6+K0lBhzllB4 v/57YMD4qEdUBtnLO4GvhxNBH4RxbcgJo5EJLivbcs/ERGvOdIrKo6Ez+nZSCM2+Ir2z+E9Xn7na jBbxedQuvT6tHAXOw4+ymgj1dtzPGgiFcH2MxRVj+zbKAiWm+oLLDtOw43Qkeo6ZnvlbG1GFUjtj nNlU4IhsF8UVXPrfQkJMeD4EUelyTOc+z4oUS93svUEIdHTt6cbCsCAB4FUPPM/9xn/lO2o+VE6M EjAPgHiUXAUrcbTmhx4r3qDl4eE47bkt96IrzJF1otCJAIBcDFjTaVmcZbGPvBwh4pNyrkMjntXX Im0QZkdwFM2maDzWZeFi1aa9OrcDaFDg3KlY6auK2M+3db/S1nts73kkoVDkP9HY9/vUeNtYhkU+ ud52IgoGO+Z9Nn7N43/M4i579kon9Jr4b9J21koQ1flV/PNblzGlDeTu53tOkJR4yx5P6NptbvlJ Yismc4SrrkQrHZdnxCSbJ3Zm94C7Gg+HeMJhAblta23Jw3CLCleQibWL2Wh9BBzqdXZFGq+XMvV7 MIjlBSsqbRx5e6vJEJojNJ0v1e3aVSIogjjFW7wjSQVZEmsnHo/Vo/3Ms6RnvqOZcttspb0OT/7t 53qMIkVRdv6iWtWFEkPb6TH8VWrwZqYFBBiApgN1TVgeGgD4zeQGGEPiv/hA9L0YvF0oMIGs/ouj QMGJ26RtTtw3O3vRvUAOIBi038eJvoG1eKCWeNEnQoJDpr1uj9XOtMFWeRlrYid7wPMR7Z29IDSf dSs2r9Pypn/7e03aiFZUuLiwPfxT+jM8VaamICuo1hs4sk+1Ucqxs5nlbQntbrfudpUomTtKI4RB CAOxMqD8R8nZmXMqxYisn4hJYJkcabhe02kbUbLNnIpXiJGcPj0fpS/Jolj3bIuo7iMoWQi44XkX IWveLWEoLls2CjVqgDcYSRpT4u3dzUSjq14gUAnDbypMPA694t5ztXuFFJxorCHnoOFS2QpnSWkp AMNL920lXPoolvXsinHFrq0/O96uiJRmEYx1s+r9Xuyd23iwRXbyd1aG6Ekkhs8WGu70gdlR1aG3 p5xQstA51Zyv0rWXOAy665atkDTguP5KMlKCIvezf4pa9uzvFNijFjW2HYy40u39StSryMZ0JG2J LLeTNb1Rg2lWySmhUd+P53mW7TU4fqzLUITFrYO+LeyeiLqGlLxjRHz151TTUX69NguL06+gYw1E MFYsSCQ0xUU2m0b6skji0GladPVoolJybHsy9pXeo6ExT2WdW4sFCSZjW9k9LRT2vPOq8aStc2Up 7LFhSPC37av8/dtQ8nbVikjF8a+I3mm7yhrTcKCAjPYXb/lkiHiicBhiiIYfq/Tz4vYmppZshRZb AwPi/+Ab4owkvVFnYSLU7LX243mDjbEWKPd3/9QLSrdgmWjfP+/mG7eNy8oZwJSz1y2ozjaI8L9b 6WxFtmBkUEBZn2b6Xdki9sRdgpWbTseqrzEXu3dDRBLYMSIYq06m+at5LLu1eLQRCXtILd5Hm8te 2bEG7FCrJ7A5o3oaLkSrbCmjf+1D1/YSsWyd5TSDgLrNl5Woa7b0F+aolnfrhkNFi1Jm/E0lWv4s HKxSKrV+4o0c/ki3M3lNdfcLdnbbF0UJi2MZ70Wim9Rrg4j5ko29wlvYLiNbed717ZdUrLJrWCD/ eCLvedXRHI//olpG53NxTkU84vnKCwIpYaU236y8UWLUMglipGGdieW7z+tQ3VCOwIkmTHP296eL 8H8hVvtmxbd9zkQLzvVxQLh7zUo+S3Zvvz6QtxDmopSh5tWJEZ//ff/l1BhQiIVdCE35Upv7VH8/ ztK5lNXkl4SxyVbvQkbX9M8lqZKt6lV/0bagQIqaOYfggFvZ7I3cQYvYGIpTHcaS+WBhFi3UdQzi 5ANwhhCCGI7RaPktY/nlizeVTi0R9kqyGWcIGq07yvWL7y2QUthhEcAzWFMUX2oFOc6Kxym/Yn+m /Pz7UUjnA6s7yZOLBaOmQUoMB0EL9aEdrB6kWAwXsY3FoDBz7tnUcXnBUukBh+JVTz4/SVNti+em 7hWvwrsqyBGiITL+ExQgagsoOGATviO9TfmaWATsgZHpaX4hE5pngQ04QEzctB4j/pzPwZ21rNnO RD1c9GJVTTK89ukst7ygvpimIXbaiTlUictPNvIvURQJksrN5Zl4SWBKL0kSbBzUrCiS3haapRwK 7ohpMZ75WxM6DG8RDWNeoJQccfKMUFX7+5AoC2qwGLf5s4Mp/NgwXdvhAHYhsJvtjjsXzzPJapi1 4iXCoPKfQeB/owVQleoI6pK38XT2f8iJe09bOyU4uaWavJ1Cu5u9EodF9oKy+2gxrtgZV63wYuZ2 AyzPuLyTdiko4cWBhyDDsRw68HzVRSWtQB6yNdcnJFwKAD+0GKxD/7/ZVCllaSdsG9KVkfX0t6il fbkxH+ShU2NS8Dw9Tb3UynJObublBhdL0YOMZPbKWy8RVTOUkRubQMIPy9phUP27t3eapWyeEWlC KUXkYnEEEH3tBupEg7yVG3vKU8nKS87VliaW8QP+xYrXCltZsSmN5cvOoYu64ED9hVuBLcHoBgdJ 2EohN9EWX6YEfnUS64UkWBKa3J9MXqmZUUHPotzsqNFYuKIpnAl7NXIizSsfJ8KtatX4su402xvk FgVKpy5OwDI2NNzYVwYzrj/2M1HkvUFjuSrCt9NrKz5kM5+3YGLtUybvfqOiJXmB5l1vYotpvtea YT/ZzssNVc2Kc86GAnN1Yxs7P3AYU8QLuc9Z+dQU8cbHjOZe+vEFgYnlmsycUyzRhCPI8oPtxff9 F5elHRN5zt6aB3T01P/NszeyUFxIG/WAZYhTlO57lp4ucmKOdXtCqmst/3e8gZII7NNFzO5Mbvu0 CqATldEj/AMbn5xBruSk7achWdd7OkVgifalLcsFK35UHSCilTnz/ZIC6UR9DFYJY2cQx3Q8XdJf XOq6RSotqCClP7CmySus/DeOqXoOIZR8Xo0v/F8f26IpRdXWoUe+4Z/Fjvv6ydcY8yaUPtEShXPF EX65RsfLsomf0ofN7OC59baXRsMXF0may1m9pgkunvpEAovZVMQijs4Tp3nv53ri7XrTUvBPUZnZ 2nJBVpov0Xhge6ppBXyyaKL1caJ85LaFBj/QDcawB/AcKEkg7VJk/PATrsbdCS8FDZZhV7nCYTAy YSqyP06fsmFzUybURb80SnkUiZXuS7IMCEkECweJoxKV/1T8l0B0gJ65Dt28pO2VxpUxVI3+HOo4 gWBPOhBEull9KRjOl4K1vLQ6zLwUjBnay320TL0maTtPtmi5X4dJlZf8HhIA9U39fnC25ZKLxTO/ tmZedt7eG9tMoJx9qUIQ7TZAM/VaWTo32L8QGkR+h9N+P4w3FGz8lw0SQ+1XemI45uGWb5UkYNGE E4+xmqci40yXwMVlfSpaDI4L2m89eclt6+HrXrlVTUEZSeTrWNctov9mhkQT7tbU3AzJl5m/9V+m uAPO2gv9usEqd3eHifmJkiGnr9d/bPNXV1urTps+WaEhOzOfsahqVEEsPWvbR81f6onLxekho+LR 8klsamz3vL/+aNyBvSAXph1JxpjLZF9/V1w5oYQTE616Zng6aydtEX+obcJSJMzopa0+nd1se/8k LoHnooyBxEO7TdIRW0JBck4CnTyBzjC7dDB16PZ6FibI14NkYzpGPG1dt7babOpPE9fSBmxIEIPp mNpdkW29Noyc+DdjfdYD7byX/bVpHKtI0cdUk7QH9ctyDXPlngYDbPLznoajg26l+3e/220VzF4Q JTOztvIC+lorLtT2EeR87RPVZzFslorUu7YA5/o0UPv02o4tkBU6Mip9/XG3QVO0lk46yy6jGdjl //8p2Nf3KtyaSVcF5XwbLhi9uru7LbvQc5ep8n1DWFuyzkydXJYRFS4Qko/oMvbknQ88GLxEPhGY TSKPSatbeBO1onTkjiygMoLx7s1Pa1KjyEwmTCEmTDbJaHOr0akp63pxTVtLFz9teWVjXexyUzGp JO395yBKk17d1RiN4tTJGknP/ndqPq9GQqhl0atkS4RlMjaeziNQgE4tSZJeeySSr7zkkJAlT/s2 5286vMiOkkgTyqZVSck/zJbs3Ob1BJFu9exb6VRdnSYy3agPNp63FQe9md7e6ghspqAiGyoFCBtW 2xksn5yt21TyI5JFjo/S6PRJSt7Gr5j0ulmlWLLSQ+XEIdbv+KYIJZdtX5IhlKUCF/dneOSYVde2 LS5PcbTeuqPT+czoJyAk6oL2cKAoG/m6x/N/YBhvO9DamqjWFJEdgHtD8v3S5i/l5LuyxaI+SdKA kUgdDK5tTyrMhbVtULEjr3Lt7V1jwuxWm1qXfjjVireoxk6PsFnEPRtzl6SrH5yHmtvSBsw21Wrb cqJGC6ULbNlzs6joTaTbVsqNDBMunLlGXaHnRFsWRdNDUrgnfse+TbAxvOzpuWYfWb6z71u8QxeW oyQFwMwDUw9+OqW0fJWNsvPL9U5shqGojGT7BDA5R7WmrRLEhXcUtdnFMl5KDkT5NzKhQka5toYn ny24OR8qb9uLzpXJka5O1GgccTCUqHpdisDSdHd/rf+TPzeSrzV5V1g1qNxj//MW+LMZksLbk5Fx csbgwIiwMqbqRWq/U6pmcs0cp2/iBn5uDeIotUcXQH5LdPLID0P//wKWxYOle61W2fFmt/uzyHM6 VSw3Zyo6KUtbHNsRyThMswIMmYyN1DF3i6LwOiM8kxsmN/qKbCkoBxC0IrYuTNjkSRyPNazStr23 coi91H5GRE22VFLc5ksWKRRAl6Crxa8D3Nk4vAjv+ckzUMh6EP3khO2ERgSy3ObzZq2z87DSEgGg kgzAKAR43rI8k+g+q0svUNDh5xtocN4WItnSSi8jIMRTt4tOHUs6jOmTb3stgUPjkGEgSQap0uNi Uq+qvZEvrl6oUo+SUVjegodTtdUjpPEFyoSEIg8a2yXFkKIHBQuk4n/O1YpnRUzWLoqJ0b/eI3Pm Qht57LkLf3Vkd4tDqYkdaZ3syKL2TllgwWXPjEdS5u7ZJUHJb2C+nDjI7rY6/fftX73Jq2DI+wMi 4A8+tUEz4tTA2VIkEEQ/pVSibVXplmzW0QiCsLojegMqHwkCNzhuYkVYrZ1CDDeyyWIEUOFlaoFV MZrO97aHt26okJJKVol0ax+QOtAitWS+sJeLhT2SI3u3xvfgwDwibFSYuxJ1S2pve012kjyzSrG1 Ie1RbzbEclNLAnHYy2zq+rFIrFKabFWy5sR86hKluWCsuGoRNcki6M2Cc2NGgQlQ6HrQlpqOfsNt 3PaNrjeWW3qGIAzcJ4Hyvyj4cINXRcOKssp8vNLYg4ueHjTf4vOrFJF28fCzLJ2n21fhCy5o4/5n 1RsK/Z/Kshl6NRk2DYI272qlYkMyLNjr9rRJb6rwZbRQSVD+5Yjh4SMJfK87ZOojR7KqjgwPdm4N qsgPtoNCUCjHk6OhDaENqwGRN3jchrZq58krBBjFUAGgGaqsvKy0aNzhz6qim/yzsQ4tsGbvGW5l 9/ivEVn522IZVKM0ftaiN3jKDYfbRTUA4S+0fCXPVB5OoyojaEmasEAfr1qYzkEVrcsCkcCSDNAH D3v8ao6Zq81NintQrbeRfnEUi61PjSgGA1EKA8FAMj2pWsXUDmYM1EnV528iKCh72I3FzlRU82NP +ba2+bzcQFcoT8ERpuWbnqsUlIrSoMJIkpNBECGOu5AI+8aR5vab7LOGycp4Rwbw752tjxu4DIPK ZaU7vZ2GkPbFn8sFcvQdAXLZxsIDGzuW+RolzBr4Qv+RWbHI6DTWcLR0P1RfneyZ+ZZ2Gu96SEB9 OEIepJRyq2doygVqUPqk3RkuE5Zz5c3EeWIyA60z9qzm2Uk649+WSKcsKXGPsMftDx2h1ckXtxVJ L/JiP+Z1G4jAYrZH30YasNX20CS/ZAXS7StvRtNFx47+AqsZgvX5QzfurZsvaavwMfn84M4SPNVJ pXecChee2Teyowomf/7vLQpzzChtWtWG+ky1lm3nTR1HE/Q790lc6002vm8JKEtPTptz8e2CpSgy 87Be5QQfFiMZkz7ctCLenK4/ItxAb6e8D2xCJvi8U8P30tBM4ie/fooqMJ4/OQVOTnFgxIayozYq pyPfPCTrRXFtsE47twDMRlICQpAwQGh2qbEYd8bY82BQQG0FsDeVwK1RR8DgDGAzSe9QHhG+0Dfo oWE2HV2UJW0sLi9uyTP3pI8imBmhLVr31kDcqgV5ouH3OjmNGpnsDN64h55hMDFU1Wzve63eyEnI +gb6hjmvrEconbEglAxcka5S8SR0wGw5m6MHCdpUAcXTFCcDdUqJvkXUCwrDYnLqP2bgGsn+o52K aggoH4lN6q2plbQfNsVQos5yoUaPkX7CdZVKO9GmSHi02S/2LTkyIohKTw7TCT1nJ1friTbfZb1E 49iexnsthErQjPjAeC/60gh3aCNiv0oJhdNLd3mQZ5ZQTklAMBtn+ZsNwciRfy9hJyHBG01E361o z1tQGKPoVVLh5sWDwvs5NRwhCMAaDD7BJL4I4kFjSWqNbatUZuwCuW3naaIj8pqrR5XB/uRGNZzo S6MTPn9BDzaypLbkNWt3kq6KW4FKSQdF7G2q2mlK2zkk70pq7xG0xB3dAtNKT8sYp4iGT5nXNFwX L5JOAZfNSt/TtIEam3gx4fUA+0OvsRRufN2yCdZhnIruetNWlFREaaYu/FSlvYUfs7wwqzms7EAn bjw87O+azMgi0qg1tupGKV/EHTWLZBmjowcMB6P7tsLbcQEhJBUMd+K0npHWW2H216ENmB57mZxB CAZtj3be//O03VxobLy8cZVA34iNQ28cJ0tl7bf2ztXIjGU8aWk7SYvzRajWc+v5rtvAl7G5bQdw HPNs31/s9ZCnJk6M16cSLtbnpPUEfq8EwxYCrLQYBygE0r2aSnn3YMhN9YbUFfDcXi4UNP6fk8MO 8CO2A8V1rlGfat0ow7y0YkOcflXfFmzJSWcRG0Lk0zfGVPaSDJxfJNzYsU2Ggqsft6lVfLJaai9R DRqVWztkRQ9ahNkb9Zz/otCXhw0r+0IO+TM/hq6Gzy1aaSJa0zZChcJgu1U0JSQcb7070s/71zik Z8XiFxUVVFs28R96gfd/LFqYbIJAUStKHo9/ZAY1nZCi08FVIISZN7MY9JZEEXpS8LyqCDJuDaxa o5XEFSqWzatBUinpCZagImxekSTIik6jJRUVxJF+xZQsUisn6cnJD8VbOmj/IfNv3tyBrIineI4b NC8KhsJfk7Q9ittNfck1QIi85L0lhFCrff8W3LzFt6tzqKwnC6wzf3Wp7PsJcia1te83eZvoSI5U R67Zi9vDSM+0296RtkRCVsfn7y5+SczYuG9KBedRYmp04481qVnZOeydyWxH+wbeiPScMTAlJUwk /9d/QNK/+3/KWbmUb9si253iBar0jCgmEkeCUq2VWJQ8xulf2x6w19RFpii/X3eqJl53bju3+yTL O1DQmW5aVw6+LBKxWEIFW0zrVk7Y2z6Z9uThZEW4okxfozeRCGXeEti2VfQK7si0RL0VjoGLwUg/ L0icQB+I4+Z9PwfdrTHrz8GyArRbF1C3eFrg3AzYBoMPBHBT6XK27bwP8wsAwo5tqOI1u9K1uRaP RN6NZO2ktpC1NhjOhjOufGPi+eS25v4oRqOLc4aOkgPMsSzZNlq3V4ieNE4MJIQRJ/xUJQhFq+tT 14oxuLd21HJeEiNbjgygyqAfSj/9ZoB7eWea9y7y8hSS29qNe2rvRuUhPU9vAxWB1oTNjoA1oSFR bB+naY/lG0V5PqSXOnw1eBmQDggFuAw5D+lVkVRTJyrxTeIFllj5jBDiddlnbtqxbV6gnaSRbozF ZXO7OTnDcXg1TzXtArShEGZ9d+WRb1pTewGCp9AGH+Ayoe7mF3//UzBBtyVedW6dGegwljtst1M0 PmuFe5gGPRRFhsaleg0HkR0Zg7rkPxQDoRkwcRDBWbd/UUyIyd8ZiMOwhj0e21UnvKWKuRZCQDQG LhK+nH4MVsl6v9X/Je945NaI+BTNmisrbyLRzr9BLbNo6Hq5LT8KYQbsqBzyOgnvT7cThye3L3Fq siI7RVYXvUbbQhbkeRNiMDgMB8IYQG/dZ1O1Fr5XboeIrJbekQL4A4FCXApWOj7s2RSymtK/EsN+ ouIQ5fV8qN4OUEAFClA8O1Q9SfufY3vF+bnSv28ESwjb6TNhKbCVcV2XlXlJ2xdPSWG+A48sP256 NX8sU6WZpq87zSQVgkQPCS0CCOkglsIk87/3ODj/Q6sRxDyoqQC0fqspdZeLcpTw2UEA7uKLZSMu XtWe3A72TS6SLjit6oQKYtKS00ehNzGPbyTdhWuFR/2+jE6verjI0GJ1ftvVEXgwgme9PlyHCzgg qeQ0Dl3xqvOKK3jrv9pVEdWfyz0vW/87ETlsc2SjP5Oo8oi4vBOpR+WFdsvJylArS9WuQcM2UN0T 4/l3zMbjCAs/64iKAT/sNhWwmbPpxD/pVOFnYtFoMXH2/3d6j69X7UyavJ1FO9oOIC8VWzP76yG0 UWe9b9EewUSW94ebIJMxN722RTtUlDqYS1Xsa6N83IU87Dxgf7v7CycnJyBMMxKZHfm5uCUH6i96 p5wY8caBv0DnhssoSJzlXIWyMqWQGXzN9KiQkt6fr7XhwIKpfJ1TnEUqGG4Ti+JdZVxpW15NLNt5 qlANu953q3FofVtirc1qB5ziglQjJ6ebxuW50Z5YFL272d5YgXImztt29cOvM3EJyE+RhnEDTMU+ NTiPAcsJ1Ozi1d1yd7AkbKJh7vrLKioyeQxWwryTUchGMJ80TI+V84vw0EnLwntkqOHXxKOpGuwZ lRbAzBzzbTf9l+mltRKNQqSUTFFeiBnelPHFQ+zPr4jRdyHi4VnTbSyVzazY7/MrA/Y8zKtsbzt4 M3jIvAMBRCXLca0fN1F9hBTXLt6LjiO1hPijVH5YhW1YllPDJKB7BuqbuWy998M5YR99NXdBBuI3 Njv4MwEEedZCEPcS8XzJt8zBkt0ZH34GEkFKEDRwPWG/1ECt9u8pT1EFAmbHyVVJVPLgizvRVdVs qOMteZNqcyi+wZiky+FZUbzYuL4fbFqoGCGAcI84JIlZ2lV/7s5ShS5DBIBRCXyjwSSy0GQNrWGi EYJxGAOH+Ucpox/b2axnLBlaUVFVuxE8YNgw+snRCCDltgFksLFw2/OoTfOQ5lbtRlXloyoTNqpw ZpKminIOcNtVSFA3TsNtdU+vrFl1jv8XgysEBcsT611ffW/aqi8DnnOi46QVAwKEfD+RMI4+zdXL ZMUfRrI70i4Ztlj2zXe5VpTqmqstNdgLkQYmBCENdIrqT9nSzZmQ3zu1Hxbps6ZH4M0JaqKWpGcQ Fi94jROXsJ+EsPFr1NuKeSUVrb7iNZ5rzH6Hn2LmolOyyQTpl4keYnt2xvKtSk0sgFcqx8/RbNgY ny/oupBgw3nBOt7wIv/MqsvUdzlXNIygIholHuN4tVkCI7m2nS1Cxqrd5TRn6whCgx/14vlGlr4i r9eit+/3p+NxQRoZC3uhlK5D/rLkvYJ4NuhI94yOFxmpUBK+dHdaJLwjGmAZ71YT/YpiB6tk/eU6 Op29GThZV4oPvyu6LJAcNPFuhnbrvV52gwZQhGLTwtHNhbjeTZ+5Juc4tEZBx3jAQ5KrnE/oHicR SjTbmpu28Q8E0ze3kq8opXGdgmtayxFDrYy+Pm/ZspXA5iKiYuDDi/zsR8Rnha03Ocq51BgcXaty QZQUCjQ/6to1P+msGx1vD4QqqL/J2e3cnYt1R2FXApX1VRBxn1WqNAfR4vtWvQdHfk3mOFsuVFXH crm1VWbOr0nMa1tgmFBdgjF3pqfa3+wbTnOmu9Bx20oKMSvdiYfeWQ72i4UlTx9rUHHtywkb28yc 4hs5yCkrGi5Mu3og6UlUGRCOU4B7f6ssSSSOPanZbtqm8Bzy56Qjva9vpwO+yKPSZDWLSikdKxL+ 32IH321cjSaVf28kfrQVZ5s5+6ZUV0QM7tneLYaJXlU9aEpi7Sts0aIAyjsv1lu6ptU3nDThhlLI VYvUNJisYQ0ibGqtst2xT27O9hAurzsgrWaXhVO9owGpdn3BvBE6KRvVqvTpHrDza4dXvLOIqSk5 dMxVf7od6j2dXF4TRZgc3IvScyW1pR+ajiyCnli8FaHHyQkK0zSeqL/1NXsXPlghF443dYm8R82Z bb1dEeGF4B1ovxcoEHPxQFcfTt5NLMZ3atOqSFvN1BJHtZUPRO+VTquyVnGvxeaivQxPWPNbgl36 pvLZY2xmb6Kc2LorxBSKy5U1Vf4zfI1+yXvVquSjUVcoIQ8HbaZrknJ7a1++7tocS3lFbSbctQP5 y3sIH1xJzGh1+/n2qupl5wMyYfA1bSF0L2r5jfwrLcXijbFlts1CUrSkIR2mkyb/i1Kqzq6u8vOW lCI8gCkEqDmsttB55aqOy1QLgrSWdLVMvOkBv6pig2K2+DSfBgRB8pzS3n5FMXUT5UjXRIkHCIox 6knAqRbBRgcCF7t275qcUNYtCiSol5eGiAMw9BgPxtVwfKt9s1Qp+iiyPiI+JKlX7nSc1tuWoFid svjVs7l9mWqC3+zJLwlf2qEBM1tEMDqpie1TjCr8//ZEFo2XFI5SgzKf/lELdbQ/3e+6G3gYXike N/+ztv9u29q7xbySis+/iHr3wxAwH8AOHcV80v9bZMaTfwPNo3QKLzho6NhJBQl2qro+1Mp5gf// eZmTFurr2TmOVVMYax2Ulc2FPYtRd13iqz1/t6sV20o5CKbuSqMmG4J2w1AHgw9Bmwg//qcDqdj2 qYIA6oGpykvubw2dDA35T+/b/9mr2/St39tN2688P5uYpzlWGc200E66Vj/Gp2Nr3q/F6bN2InNv 2pSpcoIkvmbCu2Ql6FDajYj+Ya97NxRZYoVSZAJk55WX1lb3YGKwuPHbnpdm1RZvATbLOdNWoxVV PRU9kgrbWt7S3/LVptkNLQ9Hv+y8uX/b2cRykE+y7a01LtWkWWnajPitoAzVAGUGyxREER9Nn9Gt w/eihtG+/b0cLbA1XIhMIzSf13LSxjV5NXq2IDXXkGve9Jns5k6DhmJi+bxEu+Ymuje8CmB+oRcv Rm5sXxTOVEsLz1S3hHSmo3lggCRo9/LSr2c7TZQFCcnsJHGKevb8tNWrGgHEUaXNylfPXudXRTUS IXkyDYl1rdYaaazMl91DvDYLg0INQ3vFpAwc2W7O85EB2FNGjd1os/uXluWzsRU1XPi3TR26z21E KKbH7QIggYx/UutxRsXWqLMwnLmUpfTjZltPIt1cmOtt7bV1gXRRIDCQB0v332/RV7Zb3/VMJLh4 Qsg2VphWmvL/N7G5yop3hJ0a2s+y87OkPO6s5te7ahOjmWzeoDw5SBAVj2iWWB2PE2q99Ivcy8th QQnMzqji/VoS9Iips1E86ywnbDkDwEFeEParEcD39KvsAp2IgLWltQAtAgjsv6zjGLy7yrmzocwZ M2B0SghwGBEmQSZNzFNmeLNnWVO2WeihYtvOPBgNAwKMdjoR2B4DCWEKCVf30aEsuXTbLZJ+2Wyy zi+cne3h0WS+U3uWdqDq5wlVuRbbIalPtmqotu3eZLVyi8OTWbcvKOGjdW3XBVT6x7v2txlr93WP 4HX/XlnyjlNEZz5aztK6sULQkCQc3svK4WxEjIW7pfknPWLoajGVI1i3tvQH15dgfb+QRIHNR96a FazKcDSexqTY1L5u3m9bq5USSI0S5C3/z07eo+OkBPbKsNdK7Jk50rWFx0rMaEDd4W7LISFJEMAb tbR29qIhLJk7ObzN5e5LAcQsWeq9nSk7KiRrg48+R+1/WuWRbnaH0zsiFdCuLjqjWD2K2o1AV7Vl l4S9cLIwwyy0w2UTa3ebUNRydWOHAROK/+vudG27ZyVChowgTpbyTkyIjzdXpL0jbX+0ra5P5zl7 LF5ehVMbD5hS33ltxZYTErNTFmiCOcqLOdtNSShNeTzf9BVh4W4Hnp3FBq1deyouWWnVk6vx3f2T nVwrbNMJtV3/J32TPxSjXW7CdH8nkhXJNlKjfCF0dKZPtM1ZaREE96x+dLdUjF+fZRzltvQXraN8 CrLiyXrfgMtEtiODQaFu8XRmqGQprmqqHmaC/KMtRn93Zc200sfvOnHLZEJSRPpb5RZ0XkelunjD H63JcspR07auFnLRgiONF3F4tVkYwI357M4/NrRcJkPh5xynoOZ1zkUnJRW+SoMHlqIHCcXqCy8t pKePq2oos0Y08PtB4L/n9bgzFcf5V6TPiVdm+ixTyyuWTNdvJIJ8ot3/IbROqap9YfLwrXAe59og cnQye2fH4QrdU5kt3t6tFAzIRonH3y7Q9U4i52dGDy6YD63LYiWlIhNAD2tyYran4gUyWYUIYMed INaoD1UfxFeubtofj9NQ8tudRIKsQ9LBKEfej0SvFsk42xijem7YeLMNDofyh9GNocDbYUKUb1k4 QmuB4pzYtzZydNH9R1Hx+IP4txYUNjovBmNZBisRh/JtpUmZnCSc+fONAowUoKT4gD/zMyXkLZv2 qGmxbgJx7RGV0bT1JJUEXQOocJWooZTYy1YvNybCSy7l5c72VBRU18TLFZtzYiLgYIIjD3jRexzq 1bqiI4j44hg6EoSc6Pi/P9732/5ZQ0QisbjsGHgjD0rVTR8r1fmZJ6dNWxDzi63SR4ci8GYBQhCp aXWK/e7o5Y/C032enbUNWESVzFeEZffahgyRg4ibUbA8namzJNhqEY0/7fXmzlNHigBgMrBR3160 IMy83GYoZ5EEU8QLwkeJmAYeiQro4EtJWriO3NvKULIVqvRpqY/4jUb0kIm7D72xeTRMY+JHr1RO GkYSk2h4B4IbSkSh37PgQ/pZAYXrkajIIQ/VZ2+u5EORYYogWB2ENtsRufM1Xf8UbyRBHbaHzW1C USvNBBH13Nm4GJ8U6WgwlYCjvZShMHwPG/94gBItKuhI0tPvqs8JRUpLJeECbU32runVpLylJS6H uni3e8NTvH3bbps1CCsXukO1GUv9xceRolyGOIYC5T96yyi8mSUTvdspoTNHprZiKEZjLPb2qe8E 0zZine8qCEK453svbynx0Vi76avezsUC87N5NxAUur2RZaDM6ju8k4DgyIV/eRYTeRz47H+2jjba LwTlixSpq/UHV+rCoztEHvRcagou4N+BmQlt7six9vZ06/fpV6iJOhGWVRRWJRdDu9339xcYEbZl bkxZBymnruyE1l69+dxbe2Bsg4bIaElkDaqTCTi8kCmrZOy9GWVaA4anE1idn+ZwplgRz07/lP34 2PthgHpfW7u7qPpLIFa/mqn7k2zlXvEdqM9YKqVRf71dFwgFMVRU1LF5eo1ukpPz8yG3tZ2khM2T 8mmfjXkUnOC+nbS2ZllnelWIwmlhNxT/VqSkoL02O25mdvFuyClrt2u+Hm4bkm6tbJyGkcIYxrs5 whZbP8qOHynvtdnIigxComSyERkc+9lEq2DE49gNzaVQYS9GotHapIXeBivVNQbwkKSgJhaPUyZV nPb7LeX/Mi64RLCu/gTfOzqxqvfSalCFVZbwostRicsP2PCVjbbbVxBtzPZaDoFBZKPcVh95UqLo pt2N7UH+SQoFQ9AOH4H2WbaDKbmEqN5AkfrSfu+iAbQ24YH+Vvy20k6KXxinlBBHxdJLajs/G1rQ 03llNI3DUGA38fl6+BpmIJkFQacZU97ZIMwTZyQiEIOsYa7f1CpuyGpxw3Fcb/ViiR7YyZ27my3v eEJWNqR43LOKNxc2QVYpl5EHXrNUGKk8X4VPF94o4RHZ0LWzlO/TrydPpzECEF+vTlsOto5FWjiN +76jdH1SgtgcCoTbQDlQ85GP/bmLWQqu2GoiMO1FnCEaxfcK7lw1zmlMJhwvTb+lstobdvBMKpFf sijcgaxGJ2wzMqqzxR2KdKskKxiC0kdpizdla5uWcUbb0N6SuJsp/zA8k9+5c3YvoEnipoua83Pt 3q6PUYyccw03aNnlMt5xfZwatosD5Wr25mVZRe71fqMlPkGgDMDtX9bq6/JQnlO2qYut5z2LlerS 0NoaJxh8vZV0sY8W1fv2e+yLI8N3UWd5yzvK4WiqZO/oycOb/qIatlPRMPvB5mexcPfyREj5Kvr1 tEtKzn/D6Xv8UVL+WZmVGOEKk1QpMtD6QPVf9Ts2Df97mArsQA5aOLSLckIipFiqKIbITLajRvbb GFnvNS3bkku0RahoJ1rx7zZKbWFVlt2jMjKyLHmFLbplcdBDTl2faa5ZsWtR5TeFJN7SUIz0vCaW Szl4/l4u5u9/39tR29on9/w/Bb0hvW1FFa5nFo6V76w3gvRvN7t2f/6G73Zm7kAnyWuXX/ajEyzX F0Qv6Ek+frmwWyYGqcdgzAMBthYe5J5tTOqbl5tyLDfF1hkfUCAy0P882BmtslVihFe85ewE0NII Re22EBOPrZnvXzKkbcYYX+VooS28KXhCBh8XDnEmyZs2QsbRbubey1aRFYiIBtnktRHSfUqc+VBR RvADAUoQ+MWdtwfAqktYxXsQT2fbzFajV4tT/BoJSpku+X+EHe1Tpdud/64jRzYtArKfikeg1ElW pXtnFQlgeo+HXJbJONqfVu7/MU5NkRLnRQ3KIOf6LucCcYbb2y8Ui5AJlaxTb2hG2eBmEg/EoG/B JH6pQWMF7OKV/dHFUYuiWWRymjIm/R8DNgcHQ8H7EqQv9kks5VTbdsLcq1UZTYnuFzV72S9nOVdG QV4SvNKJ6TMyWTJJxc1CSnZrd3nZOxFXfsUWrdj2w3gyZofiUrEMGVJfqQcAYzuprVupm6vOoZFr O2vC3UrSa8kn/oA4gweLR6CEJeAhwQ/Wf99Jvt4tZpur87qGyZQ5tODS3c25aHqJdFAWPBNErecn 6a5RTWJF4NG1WxLKi1SWt2KGvdRWobO9mOM9t9Jb297qNfatdpKEyl/MtxGG4iidFN+3YGR82S/0 t2ckRYGL1UcRPLrAZaiD+LS0siy9PdoSyzbv51TeigsnYrPpV6OO7wVHW2r/VMMFeLo3tihgR4ry SflnOctXh5PWGJIzsD20PMwb6UQ0KxqJA62XPtrd4WNSyd6h01htE8WaljW0RdWKzSyLA2QHpIsu Re87zF3tr/EH1n/9rNG3L2NZxFiNc29BV9XvrjPNlRKcl2FF52DUmJH9L5b+UqDlCNUl905xcUPa oi6NDQmLLFnZEXOIFhdAiSxiUlKAxPvVY4nedsByM8MKEOxA6TMumoKz5a4piLgORnKaK7i97TYO PpFbFsX4KiaaFl6hNcf2gY6A+ufGHazKoQLctcdVgZzmwZ9E4oaya369GMi/BOYHm6r/JLOkiEKb YdPpViEKm1rFFXnYKitmah4st3jhunSX1XixRVgkVVN4xL5tqNtU33vjVziMopHVBCkbpht84pyy c2YS8KHmkqSxRTfSg8W0eMM+LR8zJbwPP9qJGgRgmH06pW1/c/l5xbZO4NWPFxuU3AcMnFn75Rq9 QhQtdpbe0+XT+7zmFNFJ37ShGjGASsVLKQn1q8p5LbGlrSnksDM/d5YuLunDLZXCvsKOcOyZXNxE 8nLLZZECwTicSgOj3GNut+T+xH5WvshJvOlHHubIjX6S8CsMmN3EVq5HnWslWONk2APiMrsjeMlz ZuW7nSmOF8an8lYVtK84bnQlT8nXikX9CQqqHtYvfbc4avAoQ++tLrH2zTKTzNue2e+a1ENTAMID Pos3ZerWWhMK2gQ7+TE+YnxEVrfGWwXHyipKq+ojCdtVb0PG5Bxw0pQmkUXOwajFa4bEzaqsSrto 5rX7by3eFpSpIxwEMGEjw79fsJW2v8kk298siqx1H4Kvq7WJ/WrVpayGu9NoxQKPtsRbarY00WUZ dDEV0sgxNOkUxFXthyTgw8BqJEU+4llvJfKZRk/Jgb4NQOXPfBTsTvFH+/xdHxcJgXrDds5if38q JflGFFebTY3ljarLKvA8yhm560TJG9IXxEB0GYSKmZ4esiNzLMy3BuWg4XEZWptH49CAXN9zTX75 v7XKiRRHUImGANgQsLxLAy1f7SpV/+ci+ToVGgVcBh8IQgF+Zs5m5WEv2/+WRIJICxJ9FKEjLfsD Fz6KqbKaCpOqfRGL13x68qE6W3iqy3nUJQQSLCeritNTPFK1BP3/beRCjoJyk7OxaZIssQ6TtvUQ Vw9W0uc5LX3bF+9WBOvbLyxbi4RRcvO1fva/4fz7dc5berUZ3pA5atLxaFAmv3JNQoBPe4VLI3Z7 P37bNk+sdWm3tmL8tBx2VGWqeXbwXk6ii5bkWllRoX2Jqbd3e3LYc6hQV8WlWIUl7yRFx1Fim2ds 5xaoiMxyn+9aK4Dg7W4DBS/LY12jMsv6MeC2gLsbJwZKbaSI5FhWhvp7dzpTZZxEG/K6VG9NSqtt v71GiiGEhMjnrmbUXVzYVu3kqyKnDjN0bZ66utwF2sJmb8Zu/jU5yWaiQQ0catWVlcRIjVFC1n/e vhxa3/k6SdNniioSLbmq7A8yqM6tCmk68cvSZ9POeSq+8NVRJLYMATtVI+3iINbvevLBDk9J5Fw0 8XNZmsD69BgR7qjJSi9XgVyfmbSy0kPsvsXCptFoumS5V6jWQdRu8a5znIFIx+rarTeZ7PXZxSje a1U1ZCz8Je9Rk4qqHTO8rduQ0joVDPy+Z2eK6UrBkdbP4q9L39t4igYPHxbZYo5IKFdVbO1GSy9P 3P7OI+IzogwmVNQqXpvSMbbVt/G9shogbciHo0S8oXtRSSQ2fQz/p6Xtu2IEUJCUUr5cuKeycRny YdNPN6fq8w2TcttX6iIS+MWIv5q62xFbUEFdW7AMct3qIVyHpZXPx5st/LeUksu4GZ6peoGLRFPF U1BlDP4okQbmjbs71Ejjy4lfKx6Psk01uK6tyrB0v0Mo525dnLJROtzle2VwdJQZbjXar9dycvbk nSJetNqLvKtvATQrtNT2NRRnVXhxl5BtYvLJOUVnvBAwc/U7flu3nVlHQchpAMAymd53rlA1pG21 arVRZNvb/0+sjnREvSE5rOMdu6MiEMoQ6lH49bVJlRY01+tboc3IN+k30RsTB3o5b7yr1RKS9RhW L+blnav0gGbOXi4TNr1Oy3bGsmRDtAe+/+b7Oc34Efr+wlyCKSH07ydl4i5IQdvggNS87JUSOy3k PraanHVQTtqgiepW3uq/o+/vZ0kcW29WFzjWlW8sRA4KaR8QH25OolxrOHG/070TmRO6fSCuvTs+ y1A/2riucnF0dpHOkG3PeIyNWWmb7a+JSyCtZ1+cf1ncWF5OtStH0KV9t+9QxLDjOTrvSFyS2H+F qeS3nCeke/Y8BRl0/lLm4rgdtXKv2IgyQkAXBJ/8eF3PelaWy9huLIpORYYECitWXKvt+9Uqb8WK 5bO5SU1QHkwXBDrKrGp/bNKuLcqMMuDAijaiOaW9Wc/9kA5QPFuy2hsl/v6jXvU+soeoOuRqmNZM 6MpOOO++DFjTA+RRacv1TMyjKt7bEPXxap71T1ER8nKEpcvekL9K9LclB1IaZg4sBNNLt7xGUPXv JJOOudd6SHGwth/J3qInOjsfKh/EGNoPzi/EGrohWYTtXlscdZL9Y1dEQzksXcZKhX6DnNjtOk+q 2+/A9GM50gLlyRQxP3in9s5UbhTFbQ/zJvLwbbUcBzqk5t9F9DAJCd8eMxlTOELZFiexrmr9nLxG duJmlWqbuWxcr4WNGlJvYghDW7E3o3qLvFNRlDQcymyC2rB7vWypjAKS2qajD3tQIbKfkxC/7UA1 bRa/9nJEzV2fod/G+8DA04qmBAT//BBxRCVZYoOlFQ7mcYYzMzFsWneI0ZGL0ytvc7b1HedRnJw/ zsRU82XZuKg8xYHCpX+txi3yit2VRKitJSIYNt1tmd6uTo/TMF+ekS/VM+vJxfOoOwHIiCLR17dM tjX4lp2NUJfXKgsXym0RMndaZxfktRVYXnSadMPfB4raiVq8K8t/KjkqwzQhQM0482KWy79WXrHy q5Ea0R7IjthuPY+VzpE2oOP5SqzYKSKZXasZsuHu9sZ7li1lvAiNYnyoZYaWCm9P/KTFi7NiFahN OzZlvre8GQnGTTPec27FkaAKBW1b/Ecl4saWI+jRsVLs4oZk7UMQlNIhoXl24vxaGiDXnF1peEQs tm5cvKafJbEZFbOils0mV1I2puFvqN8RdhTF5YbOCSa0zmVU2t+Xvm6NqHF7FwqGZeXb6qZOw+Nf fjWyqOzs7KiCYvnTpyKg4avmBI0eJbK3nJQLfXKDw1YBVq/0QProrJUH0JEL9hflUqvAwatWI5m8 JhfeW4lRklTe1UrNkTEZdWDLp1sZJxGZ8tYMUawSHdY/BusE4j1hu5b5uM4a/ZPxZFxGiXPmftMb IOVV9Q0tCnPLP2I+DMIi1uXlJnvcs6ssTGfgea2dYsq85IjGh9WJDc1ft4R1Z/qNz9avLen41e4e Mp5n5MUhmTPNk5Aw6QUUl5JeAmPhj0FbnbIJ0E+yWGzUyDIjWV5qdrmydJJRkKj2TbVuijJuFL3y bOtqvSZlsQRYiJpQ+9sxWrY9AKqClY8j69nYC7zfcB1PSCtj5aHk4hK0bWpt6DIF4MK9GJtq6Yf9 NZtXKCAkxtmKZVyYr5L2I+FFQwUI1wjfJDzrbQ7bXGTX5Lwpk64Ul4kaCkZEdjn7EKlqsXnaSM5g SIK2da9LlpLIdMtfg7VqZexEVtKJ8lneOVEfZadRuZhKDAggzAlgoWRK0fTLFTSvNU6o5ftsbBdj wl6DwED2CGvzGBn+EoLoJ7+Itj5pvb/e9pqhEPtD1tjJ7OchtzosxSi0UMO6t3gqzZrBSjelHX6V hXSWEh2W+UTt/oo1VNWk4FdRa20XLHvvdNbVpEbnVCFFRkefwozjpebc7TKmAZsudpTtoUb4U9Pm j6HuZ9ZD1FDsqBxiAY9XCZv1iQ86Jxhft6Uc7aeRT3MyckWFDcr9zopG9U27ISLkW8xZJ2/QrIbR hRW30TWdJT7oNGhJ8Xs6OGvb1B6ouka5dFskWJV1z7YuPf4wxJhZOoRScmy/bqlTZAmdL9aSPcym 67clO3ordU050T/CyXspJZBUk35hjP1lnCXPZIuhNkTbq6INtDA9LTjp2FU+3ONW0RLd7YLq8yqS pbzinMRlJoKGxqh7LAHA7oS9godE2/7jSjFHSS5dxZEu8XiSmSCM1YlsWXD/cxTLqMbqXty3tkQO sK5QjdCogJ/Yz8PVyW2vIpWL7JpX0N6ivShAebOSett6fRm8i0c6WnL4klrKgZt9UGyJH7WWZwGF /9kkF9OvcjsGAuWgmOg3EJWIN95iZxDvavdp0Yj5mK2297agW72rEpB2M976ulg53QTHRdVz9tnC h1d6SoUPKNGy2avETm9gpNL9vagd47Ot0+6eSv4Wt4VyEbpNkkXOtHbw43KRVzpNnMiMTqT6mrHe 128i3HZ5UU9ek3c9YJ90lRxxVtqpM3W7YGy0DNAeb0TuPdgqgdA82DNAHD8fstt+53k1Ixl1R1Qt qnYsSCmVIMBqj1vl2hw1M7IBO7ZFig7yZmMQt/bevu1TnAw4fJBZoHkvqnVtcrKiiBLVlPOS0E5V IXAdlUJVTDfZLuz8nd4vwkFOcMHNFWhcuEJtSNm/Egnv221BXt8NF2KIOyZBqPAOJaIaeVhRUFlp 5vbBO6DrQDWC4uL+/z8NFymqc0hC6Xggaxy/HOVaTsR6hRDJz5MI5VnOi2KwZSlbLJiPihjGpGuR cRUPaE0RqsNexEMoCbm2ORuxaFTjRHcrGft6Mq8n+UAzB/ZyU1YoAee7n2kr3gXKi0GwGLbtGUhY bBhStjfVO8q4KnbVhiRNuj7k5K92FIkUGBVKgD4j4BLgMGfOBQWYA8kbL4BvIHDH9hspfnuum2Wr nHxiEBOPy/QMNzL2ebzFxvsOmBzmS7Jv+rqOGnt/dXa4pdCg/kayInTvwcCFghztGRUDBK3kOeVC zLGTkpE/ZeyInvY13QL5dgOAMpfucGWXAYJTo6tV7b7kJI9+VYms5addDHma3+d7SkF8VHgPBQHK oEORYNLvrBgW2Pbz8tsc6IAw4TCDa369GzH/krpEFXZIH/vSLNzKuV0jbz3yWoIKTRRIkzW1OJmd 6vhasNhTTaWZJn2WOr9stBLz/tJXukJhKvlLY4ZkG9zVkVJT57BHvN2Vq0ktr27BP2CZ0/morTtT 9oz4s4Yj5P3NLLLEIWN9E0t5Cc0hnZJOHrxddcZkLcleaF2ZWPSUKZsi6J33ZBM8RYWTl7aKUP+o N4SBJVp8sq2y+hZF4BOw82T5PYvslXGddK6GD5dBxMxcYz7b/NvP882/ze7/PNv8+2/zez/Nv78/ m/z+zN823/zez/Ptv423kNzz7+Ptu8bz5vn23+bbf5tt8zzb/Pdv822/jz37m29+b3f59t/m838e bam59vfm39+b388/nvzzb/Ptv83m/zef/N/P83s/z7e/N7v8+9/zzz/G2T9/kbYvP/822/z7b/Nt v823vz77/Ntv8+3vzb//Ntv822/ze7/Ntv898/zf3/Ntv83n/zfb/Nvf83m/zb7/NvP8+3vzz7/P tv89+/zfe/Nt/83n/z7b/N97822/zbb/Pfv88+/z32/N5v8+2/ze7/Pvf832/zf3/NvP82/v33Ng 4TthV8R50HEz/N9782/vzb7/N97892/zbb/NvP822/zfb/NvP83v/z7b/Pt78/v/zbb/NvP8+8/z 77/Ntv829/z7b/Ntv829/zb3/Nt782+/z7z/Pfv828/zzb/P7P822/zeb/P5v8+2/zbe/N7v8+3v zbb/NvP8+/vzb+/N97482/cAAAG2U+BE+rnQeA/owYIIPAQMoMJYMAYDwEBuDFwPAf5IQxLBAVgG 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 Eqs3yraDEAQxJ+JQ/VSAeHe7bfeWeX38HnvRjCxyf///////////////////////////+RM9//// /KHa4mb3//////+nS2nT6dPT////////do///////ypuMGDMGDx3//////5U3OzBkv//////kTud ROJGf/kTf////Tp/88ZNQWbzRwzDPkjflDOmDjv///wiMIVEnLYoLRUGhj7xfv77DQlKlXR7ojxp Kd/yhuPnTOtg5sY2NglayDhu/RzBhnJGd//////InUeEU6eAsrWwS3lDJihvOG988boeOmjh5/// ///yhjIwZ38of9BP//////////////+TManP///////////5ExZ////////+YNsk//////////// ////////////yRoH//////////////////////////////////////////////////////////// /////////////////////////////gAAAbZU8FT5Lu+7g1BlQMqAPBhLAPLgQAQC4FCEMfqR4qUq lSkeKvl/x2X/96Z71vaRAgCSDwH9uDAGAwlgwBisGHwPAQKoIIB4MAcDwH8SDAHAHiSXl4IJf8Go lCVRKEoGo/BlQkqlXxKBtCErHoQgh+voXiVJkU1QJfo5GsSrQDR8DfANBvBBBi4A8ICsA4vEsfKx +Xl4NFYlK1YlD8D34qBsANEsv7dvr8u9MnbLjgYSAeAgj6DAH/B4D+3Bi+g8B+8iWDD0GCBQZUEG iUJO+oKEGEugggHDwf6DF3vA1oHxIBgPq9Ev090FHB6eBqDF4MB4Hgf+UEEHgYBsHg4BkGHokgwH gNg8HAIgh/BQAzYKMGawDY7XOvvV9999PB4CA5B4D/HB4D/FAOB4CA/AMVAGgGqhJLy4vEnwQpAh eVfVj36ovL5aB8vLoowurO7hwIAIAB5cDUA4IABpdFcLggiQPghqorkHsVD9VFcn5LYpy9y2EoPA QPINAeAgRwYS/g8B/ngxeEMHgP88IYkAwlgwQBL+AerBABvBDH4lgGqhIVqwhxWJH4EIIY+BsLvl wkD0u0utvp+qvDqvCCDwH8XQDgYA0HgIF8HgIDMHgIDMHgIFMSPA8BAagwQQbwkgyqhBBBVFyoGL lQ/CAEAGLghhCEsSvCSDeHokq/KxJViUXxUrVeVWKlP8/7zmMGgMXD4SRIBvAgCUEEvBDCGPgDhI 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 73vez8zbk7zvSM+dBqr94uiv0zVbHG59/lV33qv6DC+zJB/B7JGqO+rnWmORh3w+MShL8rV+xV9R dXs4QBDBp7uK8/hcz3o6JwhKlRfC////313Jt504XF4IeA3FdVf1ufvuLHASH72z3pW8h/8ERiWJ X1Xv6r8pmLSjEHxhDVqy6l3ve9n5m3J3h0G8JX/0IY/l/cA7zQYlv8v/2NbTwl/okDzw8Lp4v4p+ o9N53s7df////////////////////8HxytPTJHSmq////////PGeTpX3wjwj//////+TN2eoJmSF sN//////8icoLA0bvOKGdNHOhi+DI84/zRF//////kTPlzLmwSvdoJUkwEoMDkgJ0kYLSCo4fjzp g5LejRMRAuf/////587AcndvQTawDui6Asjx30BOtBZ/BaEjf0c6fqbs648aNPCa/J//////z514 LQFrD8wb5c3vebN4Zvmje86YZ8yntBYkz9+gwJ89tB56AFF//////z5qYd4CcuCWfJHHETDMFRgt ICzPmGdBZ78GBP8fNmddQWRI3lTcGR4zzwzDg/AtYe////kTCFRJy2KC0VGjLvF+/vsNCUqVdHui PGkp3+XMNygM3/+VhOfPDgH2wYEmH27BSfP3gWD1QZfcCYx2CfKCxPmAXtBP6Cf4FmHxgtQyDJxk 3UOBYHx3QvO3A8FmuMG7/////8qfAcnGALU+dUAnK/DoEzp3QWJk5eUHNvOHzr3hm8wbiJuNn8Kz yvgfC0+dBaTQT4pBgT1RsJTswE53/////zhhzRaM3Z0+A5Z9V8wHOHrAOcVOvr80b3kzc46ao8GU ebM8oBYV/////5EwWpQw7FPyhn/OmGUc4sfnvOnICwr3/////JGDkj//kTOnzNmzp08cOv20//// /8sYaIengXH/88cdcc7////5UwcSg4af8of3+YM1///////////////////////////7t3////// /u3f//////////////////////////////////////////////////////////////////////// /////////////78AAAG2VeBi+rgwBwMCCDAghAB4CAzCAqCCEFUJatUrEuCVIJUVf+p+qVq9A6rL pmF1ZbMA8BAqgwkBBBAB4CBPBgQQb4MAeDwH8+JAPA/4oPAQHIB4MPRIBvAw+A8XAwlgygIIlhD8 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 jLy8KCZn7UzzrPdP3grZ1V8z69ZJiZvwma4RNZxztHujNvPvt559nbI3M6Aartnmfbsmk599vONl OPrbn2Nz9jc+1ua3LbtTc6+5X333399jc+1uffY3Pvtbn1juvvt7mN1Xc59999/W3b777G732tze 5999bctufv79bctucr7625rc++xu3329z9bd7l7799rc1uffa3P7+/fs7nNbn333/vvvvgAAAbaV Y+TCox94S/fV/VTd9pZT3lHpdUTVzyf4PjLy4upfcmNadtii2LU94fhBg/9BKCEpHwlqqB1WBrZ4 dfHaqqbv8p1UCBPj4f/+EOgh+vrM0ejvZdHZCkX8qZcXl8H0263hwuL1Q9mcbMhgDyVTJV4f//hQ YQ1asupd73vZ+Ztyd4dT+fMIReDQA9UDDvw/kiu8xWrlz47JgDAaeH4/ElWXVXt974j/uc/5wQx8 P5KCj1X7OebkRPvPF6tWXQeKbRGHVy3cOGDtii2LU98KDEsSvqvf1X5TMWlGIYH/+X9xrae///// /////////////4RAqyN3//////+kX//////kT9XlzO+ktEEcPo8BOJHAqyprOWhF//////z5yvUe BO+PATgCzxl5z58MzBgtZI3nz99p/y8DYMiVFQc/IzO/1WrRA5//////9HPnpweQHLP9apoPPf/r i+QE4+Yk3gObd0E8f2gn+ByV5c3OdJG4+bz79BYnzDLfb5TGA5sgyAKqrgJRo5KfHs7sAb/////+ 5nz8qXAUDPkBZfBaHz34MCf4FmqtBgTwZx4/OccKG+dN4ZhmeOPwFg8+asHJXO+71BZ//////uZ8 4qBYffVQeCovedM4OgYE5587gJwZ3QT4pBPNm86+RNxI3HTUGz7wwNxI3/////+VKP6CxPn/wOTO V0FjYDAsB+8uYZv6CeGxl9BY9BPVaCeePwLLgJwZHz4F7gz+cNnAWUCpx8wywFhAr9AcmefP55Xb JBvByGReGUbBzbw0NUPQ+G4ZzHf///5EwhUSctigtFRoy7xfv77GtGQlKlXR7ojxpKd/nzHtYB1F 0PSw7fBkfNYEovBaWnFbj5zaDmXhloOTvcFBnDp2SB8DCz9866CefOgsq/oJ9AJPmq0E8MpQWOYD AmHzBaPp55g/+oOM//////JmWIXBsLTxgtZAqDv3Cx54/DtSmRit8vMBzg8P9oJ4LXQWJg3Hzc6U FiAUcNzk58+g5dx1xz/////InceTMOsovDrYLyxh1lF/SM4ZYWyjFteoX3Z84Xg/dAC3wLDxe0Dj 18CwDQ9Byd4BMHxhkGTnHzwGBYBngMCwVnjZvp5x83Pjgz/////kjCc4YhJ4WPDl/zR4DGh40/BE dBZFz+fHQXjqh+LD5q9BPgLM3a48cDJ+QE7////5Ew2KnljByR4aFh/5UwcQLwHPNG5wNBdNPmjc fOm47AWR8ztUgn09wLg4O6CfT/////5owcu4NRX+RMHEMwbsobjBuT//////3NzJGBzBFlBiH/// ///+7MGs///////////////////////////////////////////////////////////MGFf///// ///5EzZQ3///////////////////////////////////////////7wAAAbZW8GL62DwH+GDKweAg QQQQZUDCUAcDCSJZeEKiQAaCgA95V8vpfAbRK+JflMo+94RpZc/etH08GBBB4CAzBgQAgg8B/mhB VgHBAViUqVqhKol2iX//vKIrVKuDxUru6rjBOEEA8IXwDggiSEAvvqrCEJZeJSu+Ea/Hyuqqo2S5 s5shEDAGAwIJcDwH+WPwhe8DwEB2DCWJYMEIA0FD6qxJEoA8IIIH1YkDxWpH1H4BwHbKrA98eUdA clvY4SggQIPggCRAQRL+EMA+CUXQIIkq1asf/EsSVEBDH/1ZeB1XVavbVasd/3adfvvvvp50GANB gQAYAwIIPAf5oQVYQAgKx8qVqhKol2iTf+8o8rVKrAOKi+7quMZhkHgP0EIYPAQJqoGCGDwECGDA HQGVCQDeCEAfRKBoJY/ElWXQu+X+BgQqPVJePh99X+/Vq/fut5tOiQDwH7aDBCB4D+/B4CBfB4CA 3CADD8A4GCH8GisSwYSxKBApeDBCBBANCEJN8rCAAaJY8+rVeEjR9QbJbFIj+VcptgCEGEgGBAVq y8GCADCUXl//q1asG8AZ9Wr/b////EhVb/9vbbe2vfcCN9999bBgQQYEAGBACCDwH+aEP4QAgKx8 qVqhKol2iX9XPKJ9UqBSKld3VcbmJzSedB4D/DBvg8BAggggyoGEoA4GEkfl4QqJABoKAD3lXy+l 8BQiVRL8PZ8fTwje7n70nEkA8SPgGBBEkICtRS8IQll4lK74Rr8fK6q+otkubFpV3A8BAeg3h8Dw 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 8BUoCtUr7JF6VPXPp881F+tpTpzRuNTL76P1N0lC4+xoBU3900rm+GVNsQiJEgZCtvc++1ojyeQu MaBfw0T3OLKMWCRbcwciVzLltzOa0jSH79kWtEwvZyY8z0mDNmf7Zh759mfwCS8GPineP/fgigMe FnVjo61674YPOBZx/bKwYL1MGTzjIIS/PyMGRLHoZMhILCTVbldL/mhTw8eNtbxVxvsHD3ik8GtM jIUnu9ezu60ccz6/Fnt8RNw0zpyk01Rozw6cfffffa4xwgZ5mtsDWdMt6dnRe3w613TjOpYwUnn2 siffZ4F8C99999nNG2sYt/CZzvt7m8/333333337762599+/vvv339bctufffffffffcr7777999 +/W3PvvuVjdffvvvvt7t+/fa3P319zltz779zvvvvv33333L33999yvrbt9rc++1ufvv33333377 77777wAAAbaWY+TCox94S/fV/VTd9pZTwB8VD4fyeHxd7xfJv1aiTV+zt2nQmNWEFVQDlUVq+y/U DpJazhNPVTJV4f+DQxL+JX/KvK7mfwth+qf2Zf3Fj6P+FRlxeXwfTbreHC8uBC0G6qiv2NX0/0hD Y5Kpkq8PgggwHv/HaoeT176NZK1MkPFwH4CGrH3VKq/lWHVPf5UwYvH46CEPr4dUDnZwGMBDHw/k oKPVfs55uRFSQ8fgb36JIBo/VCXaP1UiuzxeB30sV+ksn9m5a5Wrkiv8kyT9kkYO3ni/6sug8U2i MOrlu4c4MDCEqVF8L1f//313Jt51YiR/lTANAM6X0GSFLrP3zVsIj5qgZWJY/VaPC9X4G7YOv2cH fDgQaqVAwHhILx54D6vxdfq8in6lVtU/bu3rxJEv4+Ly73h4O+W2+neHapuT21RGoxEjv/////// ////////91/+RHBxCYPTf//////9v//////y5uz1oJVt9BAKK4kfgWvb//////5k3w+fNX/6iCAU uHzYgisAr3vAwJxY3vJm5+Ex//DwhA53/////8mf3e3aCWXMfMglw+PgWp85gJ1gLCwFg88b3POm C0e82b3n5058YAYd5XdkhN//////PmrjVB3Bj4AoD/PAlDycB2uPmqZBLsgOWd7NoPvf/f5gYHzD MAtW86aN7ipnnmzr3ulTP0x//////PmPe+EAVfVCMCVoGqDuDH/gZoH3oAc+c3oJYLdUyCXWgTD5 kxcC19aCf6AsD5udTl4GBY304VNwZTpu+wCUGZswyn0Q1M//////IneTtAeSJwyfNTx/lIJ4H90H NjAAo8arATooBOwFkbOgEf9QcZ2g5d5c3fh2UFifMMpgJwZHDZ0Ah+vPm+uUA4neHh62yA/09gmU t0HbSt3////ImEKiTlsUFoqNGPvF+/vsaFwlKlXR7ojxpKd/dlDFh8wPg5OLvAtAPg4mDI2YBGAs AzKG48eAsNBYvOGGSuUFgfO6Dl3nz/sPnje/DJg3f////+TMsGocwWkzDgGFYdKYLz5tJizRmDkh 9CWjnLBmvAEHzHrYJMcpbBJPFDeeN2AsAyNmGYZzQT583YccTJ/////8iYdKKLy5liFwdbBeCzOG HEsLAzKkl+VH3bs6YOIiQHEOXOuOnT5gF3HXQTzp86FR9wZHzc9wZ/////yJgszxjg2G34MQ0F5g ypJot5QybJmGTzxnv2QMHHzHQY0eAnQ+dDwzgLcdvOHTj/////yJgior4MzhhtYV64Kflz0RAcNS bRESAsuUM0dOjoMGgw8eOGcf/////MGDlrLn3f/KG//////MGCz/lCi1A//////5gwcWIXf///// /////////91///////dOv///////91////////////////////////////////////////////// ////////////////////////////////////9wAAAbZX4HKmDBCBgggwQRIBgDhI8EMIfh/9UrH8 H0g+nr9TfK/iKrVcA5TIPAf2IMPgeAgVQZWDCWDKgaAxeJQ/AO8Pgb4BwQgDR94vVj+F8Lghj7w/ VRXPCV+T8n4pz9mtV6mDBCLgYIIkKwYA0GLwYECeH4MPQYuH4QR8JauzwKD/wDghgyhWB6j0e2VW IylV7fN5TglA8BAhiT4HgP7sGANBBBgQAQJS4IYIA+Ekfl6sIeeEqwSAhj4IXx5S6j/+j0v9ZqqD rdPKYNAeA/xQb4+B4CA/HoMCHFasDwB/wDKDKJPgo/Af2wD9Lh0Ciqdo4JQQBJ8EESBICGqlnhLH xcP/T4jqFaqfm5vSfffffXweA/ywQQeAgOQDwaAyoIAMXl6sSqJQQQQh55V9XS+AoR9R/FMqqeEb 3c/ToPAQNYMCADAGgwQwDweA/wwYSQaBBBh+DfCGCAEIGBDBsAOEsA8SR+EISgPAHqh8XAhCUrV/ Li4DxdaqVKPRR630OMb777762JAPAQIYk+B4D+7BgDQQQYEAGmlwQQaD4SR+XqwgjoSr4IQQx8EL 48+XUfq7arH/r7VXh1u5TimDUHgP60G8Xg8BAsgyofAxeDF9VD8fD8A9UAZ7wBmqy8D6sfCWP5bB /BK8owSviLbthwHgIDUGoPAf5IBwNAYuCADF5eqEuj4IIKAeeVeVAfBuj74/inS+eanc/TqLeDBD VgwQBJLgYAwGLgYEG/HwMPAYfj4IA/EpVL8FD7wB4QgZSXAf8PB5o8EfFfx21psHgIDcGgPAf5IB wNQZWEEGLi5UJMH4BwIY9quKgPUFAP4PqosV34j3m+hz//+/+RTykRg8B/ng8BAfg3gaAxeDAGgg BCBvgGBCBBEi0S/goAgiUXCSPlPggCXlHg/9/2xingeAgXweA/wQeAgQQeA/vaDwH+SDAg0A4GCH BICBQYSQb9EgSvAggGl3h8JQMPS8DxdFSouHiqKlWenvDr2ZDgPAQGoPAf5IIAMrBqAcqLgYuCCD AeEuCT5X9WCGPxK0uiovl8pH3v/Ee+uNHCmUpzCAAYXD8fAHBCHwlqwPiWXCQPlQ/V7fj0v8qkV/ U/HdU/lu3tMg8BAbg8B/kggAysGoQFRcDFwQQYeCXBJ8r+rBDH4laXDwvl8pH0/8R7640cZwaQA4 G0A4IRcDCXFQN8S/Ki6iSXiSDAowPhDirC8S78S5f/V//fgd+O6pum4qVeVKvKlXp5Uq9Pe96KPe 9OT3pOSRqO799PB4CBJBgQQYEAfiSPlIMEAGwG8CD8SR6PwgqtCEXl5dYrHvvj8SFVL/qS+qldn+ W+29jgeAgOweA/nQYAwGANB4CA3B4CBZBgQAZWrBvyfEkfgyoSvl4QAhhDBQ/+Xg3hJH9U/qou2U D23f3p4HgIH8A0HgIDsHgP7kfgHhDLxKBgDwPCUXiSP1Y+VA8D/zgg+Hhd9Xaq8o8XKPZ7Jk5DAl YEMIIMJQIAN4GCGP6DK1QQB8JAKIIav4QRKglj4SgQgPqvCXs3L+e+on8/nNevMEAGHw/ViSDKga CWX3S8fgHBCL1f8k1WrH3v/vOTaTe97yr3lSr08q9J73vTPe9OSSTkknI6++++rg8B/fg8B/Sg8B Ab/EgHgIE8GCACCDwECLAgA8BAZgwQRJH4IFAPBh+CBAeBgHwDwhiUXg0EsvEsuH4B4BiqCSP4Px JBCH6vyu3ytWqiv4784HgIDUEAfA8B/h+BlYQfg3wYIIkgHgwlUEMGBCBAVg1APH5cJGj+USlAkD 8GHRcB4SlJdB4BqVR4dPKZSnMHgIFsHgIDcGCADwH+aDQA9WXgxeDKwYeiVRI+q8qBh6EMS8L6rL rPqB+q94RvfmtnSZnB4CA7BlQQgeA/yR8DUSwYEMGEkfiSDBAni/wNAZUDAhhBLxKCBAP+BlELgg K4DYPoPhIUl3oXAa9R54GOBALgDADh8JasSR8EISC4fq1I9H6ofKvF6tT9T9Srk36m9q77////// //////fffU7eID6jsidzGfW7qtMgc++++t9uiNGGXqYONEb776336YGGjGFjHWInpUbffWzb7777 77GSMZK+xjJ99bCp99999bGT77776HjkZaKXK5UyKFwOBTi//26RqgMpQ3Ci/bqUXORIsVnyRLrj IiXS9Fz62Tt55jG71CiwnRlFNk1CNMYJVirOaxYwUlWLwmR93Z4C11NlMLfqY5osffeT74/c+++1 uUzjlsgQ88N3MYhA4+8n333328mffffffWzq2LH05eBTjVWrEdKLPRtWkd/5WoQ4eVMxgTvrkQrw XPvpNhEe0oPn28UpcPCRes6expI0L08Ed0pMnIJSdH93QK4gdczGM6DDUmR5PDJMxkCTJvN/LvLq 4iZ7xQhvoBd0gPB/+YkLKbbWRGuAYzrIHy7F609PEoIUwSC6LCUqBioHNm6sRKOTALFDkxE+8n33 3333332N777777GYfffYzz77776mAteOVxMSK+NUgGw0TP8FInUtEEzqvWflB61pPeojU/FCXmpu 9cn1EYjlyoJMGCLeOTNaKj6+N3SwKX32Sn86MxnwnNjYXqvl+MKaTQ0BsO9ilfsWvOUjV/oEKtUA OlDOONYp0qktpRehUSYEhttDymqpgOAocp8Rv7qJwzA4CwjDBUIuj2zOgw0HVHLeIM2AwzLtilR1 NlnwcCkaRujxmCAFvCP/9tEe7aR55RgKbozVqJyNda7pUMbRCP4cGn+e1NrUXI6LzimKBWi5AYDf qBhUr+hmZvCwv9Uys0ZHnaJa/vekoFf9xrQJKcZh5PAum0ZDYXpwr1uJHPvvvvvvvvtb0WewB4nY 3vvvvvvJ5NZO+++++++rxHeEVekPAv9N3/q3JLEYtH3QUKUfQGGKZT093UZ4MmPfAo9P+BiLDqjH RjVq0ZWClPzbElR8Mydi71nLlY1SlhQYI92VOyMU8B+FODJ0nGxuTK9BwKiOJE+UGb9gKUurZHFk xXp3zKqgporlR9lENETyt1OpRE6x5bJAd2UaAbD836TVDVurIOUGDK0XunGM5Lu9KNXGG4fjKspW tN0GAetuDPrkS5ip2V+2DNcY+byi4+9eLw6mBQFh50R9ie7iEdWITwHJ2iPoMkLy02X/qgdKs8n3 5dUCn4ZKv/xrf/XmKy1V+BmIyxTBEwg9ZKOx3qcPBr4fe3v2weV/+5PjPW8QB/RjT4j6xm3I0FXl PxF6tt7CByptNSNwzA4Cw8+2WRdM00lfd2B+NPZcXTzQtVKuMFhRJqU68h+GPKHleErAySaYX+Lu qwg0GAsXRLv9TaklVgySQ6CEDwn/iCpVj6AQmptBi0GIFMVV777zffffffYz6+ePvosEdwSCCLX3 3333333333331evr0Wqvgbvq0Ciso1CpU0r/dxpJYTJ5Oy11516ePWqliE1+sJp6DTaWXSGn08DH t7d/ouxOicaNM5kWpenp8xMBPZ3vT4z5f1+ko9gYTMiE3LNaXmp/HvAMAjBgd5BNfQdCOtQQ0GAO NuhrM/vOyGuoujB7FkIUwIAsPrxOpKkc+MleKvSbLQLXP+Aj78sGlVeiqqfge/GF0aj/vkWq//Yi K0pr3uTLFf/tMMNgwwH08Iv5EHhx56qh4Ksmh8AxMtBywBO3UQztyA7iuwZej0/z1WbA/IFKYhLt YywXp/pLJzsWrcGrMzByjfiKpzPx0KBmCQLZutavwtvGCUdSf9jJQSf7z8st9iAtKiC4O5U9w2ZT zIKAGA0XgXAPpZGxEBir4MlMYyiPQfAwGp8FPVanmWX1yJ7MZ+imHVcUV77777777762RPsYXrYq ffcr7Wceb62cffeb777O2YLBq+3uW9F7776uvEpYTjQZMIhKVj/yqW1hhT7S2wXg8BAhgwBqsIYl Uusvs+hqID4OBTYDEsuniMCgLfpTfF8iVoXF31Pu7ZwO8dZdjFlXEcGGKeovIVS8gMM3sv9/4fPT /fEYcDg9fDr2soCwdPErVPKVDYVbdBOThvHdycHBQ88ZQyDeBZKquIQwTINTnSEJ5ofPT2RBFo/E ovHkV7GgO+a4lHXdXv88x6vrHNLCh/cspMFPBgDAYA4EEGA+EDGR8Bz/OcaaLi5UBKX9jLwQgeDg FwgQCyv+AV+tzAZB61ObB4CBZEgSC8A4A8vLy4IStQrHSnNbvM+DAd+2Bj9oGQzL/yFxcXD6QGaH vInst5B0lz0T0Au7CXlic+lyTQcTY21Z3RM+++8n333332cBSMlfUxezj332N629fe9999je++++ ++++rk3WwvffffTAwC2d5m6RiSJav08PPe6nbRga1J+bCfx+j/v9l3kaa4gKiAKePqUB2osRv9/4 8Lp8FPzzdStUqOl2KIzocZ4reJAM3S732oBnCv8gOBSwje5P2fVSbLbU1+UHx8p9eZ1JKLv/u3cK WEmjMSPwdrpcKRUI8ui+AOVGhKlwEgu5TLk+H+LdQjg80/2QTp5dsjZaK574Jg+sS4l4MC73lvoX o/7YO6dBjbkyDcI9YbGR7QWIH5lpfLO7e/6on7+W8qHjV+GyDhEX+DAZheokRznE5aaKZJECJYVF WmS7LKp/Mo2XpVaL+wGDHDR+r1nWdWq4MHNbJQVIWmkQmTp+i9caZB35P+B1SyUii4FflaWgOcr7 777G5999FkrxWrngsaxSxi9999be3vffffffffffffV1nrPffffSGHcrVemjv9nrv/+v8iatfiPk XoZdoHEKRON9mGkzqsxvErZbAyojZ8sBg9F0zmstp0+8GcV6rydBFgsT4rzOArfBSPlRd9v/EJQ9 VOgmfg7qhsXCPBRSs4lO6AYrbnxiJcBQf0d3Vx1fIZrghjsua/PytWWXRo9MoQB4Xl1ygMBnCWpU wdgMqhwjxIp8ISn0ZLXAc0EwHgoB2j8FLgEwzenqh6tQHw+AZ8GVAHhCu6p8lHMeED1/G9Gaf09D aqf3+LwOSghDID67LX/5O403EWy7LeVGiLeLIQ5PH05Y0r/F/c3N7d7bZUK9r0fgYzLb7SXOhjFr AYM1BOlfYxGJ/khL6Z0YlkwM1DmenCJPFC7wYfiWPi6FwIY9VAckvwOl1ZBUqGEz6zUoc0Yvvvvv j9z77625bex0w+3uU3vV3vZ3vS73va3t73333333k++tihXFRK++++n423gIjxG8r1Xij292MrVq IvwmL+KKvc3WUYhp3bFIKVL2z81cQvwkTy8u5PyRT1vnx1Fr7UMVqV/PgLAELt722W7R3Wm+yq7U 7a4ZuEU89diROK1QKNTzJWW8QWflRuVeb/F04MNz70z+9iq/vve392jydqXslGhd0D+zfRqyqfFc UILpHzSfJYCUnD2ZVhaq3gJH89IwWDnBlL5ICML0/FMBzblY7Bl1CRX+FZpXf4YpSFojwg6JMaH4 HwVH/23Ccv1UrbLh59nILQM7mSBpKSK/0HLHnpnnpn0zAfwsGq71E1XAcNq8GBDVwSIXSd+Xl8kn KnrPqjkVp45MDgIC4vjT7GvIisOHfVKqP1Reo6PJtHCxaQKhKHv1XF5AVbk9Wrt7NucEJkY6bBQ0 dD/rXm1k4jlqnyVy4OE77777kT7777629jJH1d70m972d72t77777e99ve+1vfb4yEyLPvImsVNY pbzz774zPwsBP9//vZ75cX1P7PwsF7TJbNiA2rihm8zuqEII5ObIz+Wd9VG7YCl5Zci/j0BwbkML 5VX8qlT6tMoM1lY8eT10zHRuLnynMNIuuDP7V6N0GwYI4Y7D0eh4XUFqkOyLCYFqBtZVijFNNFAZ yBSrSvtU9GfQHhSZZTjj35LDWIouSc/7oy2Ukf0ndaU2WbUfZYGeS0Kx9ojC0yFPVFxd4SBKL8gM Bulyq8m43WFVRd8DEiouLoXaoStQcR9LxG9GwYDq81oPOkRm2nTyfpS7WyE2ZY3Pvsbn33K+++rv PN5I+h73rb1t77e9999999bexvfayRyqbiRrexgLW6nYAzRGGqgIA387lyJbhWuYubLtqQHYRplK yLeTaW83GInJJgHFF4Bf2z6J8VD4dKL///aDM20ajMPEqiX5TPRUX7RFk0fATsNKtH/7ZZPeES9A n1rRmJflQ+VeURqMezE+ccX23GEDDLODK4ShT4EES1YQy+q/t1r0Hv4ilBDuAyKu/5r6UEVFfkYB 0a9sBSyY31ZQo/qIfF9Xw3gjiWBUQ2fzQZGroGQCHuS+hVXawDuFJGihh6psVYw3F0vQpUNP/oJ6 fMUYrvY1ZGFrzcGvvtk2rME3JwBCf9mM6E7BxX/6ENNGYvRH+4Fr7+sAwK+PA2qzJZe1SpNVSsUX tpQVuItZCyTnFkXOC7kCgWwuzGl+29g35aL/SjWI4r2Hm16+PegeWHquo0fSsjUtqgKVriUPiFjD Fvc+++++++++1va3sZ5Xe9ve3vfY3vvvvvvvvvvt599CyYShLCGJAB0Holl/vYIg99C+pJ+uTBYM nCosrCS0DJN5ner+/P3yv1RbPrXRpZkZxIJky//J2Qc+RMkXhF3t4I07EDGsk8t1IEp5P3WdpHgJ +Oen0+8waTP+jVWqEddfRBKCP4JFBwoEZQDAUolxiNNLsZa2Bazy9DNS374GfenF5zGoHThKoMBs vBkqXdT7/oE78GIpOyeZm4IGvPozujBmOT5qhvHQexgZVR0HHlf5IOYaT96QTnBUXxrR6qxIf+O1 fwOTe5cVfpUOKRItyv/lH7CvRZHpld73fg5uDCqm0i1G3+pYeioELQOfvOUD+KZQYJwNkvyUwoog rnVkbos6fIcY9f1vwPjwA+iODED7eMH33333333331t6Xe96m96Le97W9ve+++++++3jJ99yiMID F4/g7ffKNUK/jyWwd6aH4k5769wRo3FrSTIuzm92QVH0y/Ue8nrLKog/2pLWmD55Slh9KXifxI5y 29jekO/9OXdiQJk976u2UDV6YcPrY3AYFcVtJA3csCUnj1rWP9nELAqw0o77/kfq3lLaLoF6Qu0n gHwy45Pg9HzFxNPxwHVIjNItQuBRKgMloMKmvNdCRM/a1tqU14k8NJmRTS0bnE9gjLlHlN/kuiOD Eu7osj0+DuZ2/kbZ+ISQ8ynHBJJTysu9Ff85LWtauMJE5Ov6Bupsd3f/Smn1sPcFj77777WNFsjf fc6FgPc3vfa3vvJje++tvffffb3vreTRyxIvaxHJhgxP7u5OAXBwKhXLliYhEfeb4HaylNyZGD6Z S9WrVl936JviRY83RPpYNG07n1t6e9516u84ye8I6Eqflg7a9lByBmOf6ApWgN4WTI2wBPFi4zYM kR9fp4UIjpY2sUtPc5MslPk0pJ7r086qtBP9lNKvF36pTSVusgmpnztXCUf2STKkCwIck2ejeRSy VFJ0Swh/A7kBeJh4GKebOT/PR7kpE7wpcmVXe4mLvIudGccoEVrW6SQMmsbm1cVEre59rJH31973 18hev9MPb3o9giMPffU3jRjGCFve3vfffffffffGYQGBBAPEYSAYCgPmwA8bSIdQaOqaCGCDR0JC oDKpRe9nvz23MLbnie+9xbiQQj7ky92h2FqhOCVW6mYMH0vtXYaJDLkcglPPaMM9ve0cM1d7AOEB 6Z5zfXvJ/s6yGxCXmFAjogcIRkvenn4ykCkIaoA4IZeBoSBJVgULv/iE978vi//vz8/5tV+ZYi3g MMk9zjh9Phw1Dfx14TIgnVdHSODHyk7MU5AMq4FwG9jdrNBijKMLYDkBRSNf6+2vWwGDv0BUWA8/ //unZxakY/hEFz05lxfR346p7n13D7/j99LeYnRjRvclPlnYv7xfEXBgwQcA75N7/kLn32MkfYzr 77OC1PPvqbxk1vfQ970LC96vTpO1vfa3rZ1rbEyFhUdffUO/rXOFoxUOgfRq++I8SR/4GEYf3cz/ vLDoELy1gigZSyGVdrOEAPAf4YMEEEAGBCBABhInB6PxIH4l/xdXRIvugeLviMx9TjH64BNeM87C V3nuEXDL0Nhk9rOocj5EkhjFKnxo++rrwglByalT0zDAhWD1VLwG5++R3oMHgFfmB/MbEdprqEnV NxUBaXExYMFTIJCfv1bBer9AVFrqEO/Uqv7bvm/t3ZEgwLhePR2JUoKaNguAH0DLITGZm1euRxY8 HA3lcFYzPjvK6wMJXiU94DZfk4berTtyWoQiRz3Aeq//64OSMLEw0eCOXrbPIICV7d6tc+QQfd8p Ayp+BFCw10hEZSiBVwc6mIQ2bb2aq1Ep9ZKSyg4/syKOSSFDjXd0q5ZEN5Z3hKvKJygsHAtZKTOU mNhiU5AtfW6Srba71Mc0EwKGM61jNre1mH333331Onnvoe97777777GNHK51s0+mEgt+NkG/hPsv wv8PDgEYcZEL4ix13e3hBOYpecJOQpKnHGMhTwWxMC2JlcHBu7Gwc5blaPNHWergxO5MvsFzWQOS cGDLeqvgVWD8LBGf170yAUPrCt0Pn05gzgCgycmWYcKICzdJ8tmIKHQ1Tk1nESIgk9Pqv23ikOfl h5YHcFqphN2o0NK6iNLw0TdUEzlSrjXOvTmnIG7GmtZIVoSjyb9WtZkTfjScaPtdJFcw5vEyLHAX Ujgd7ROzjM23wKlsL32MavvvvvsZ19vurlTn33328ZvqaFxxjp1rGT6SC33Sv8ZGMNDI9XHmzuWh nJ+tAlHicFmi5G0IOe1TXoI4JKfjpWqRZyAleML6/SZd4h7oTOei/fA35NfxDCxHEbnTQYrDcsPD PHLph3zBCGT0zudDzkkoNfQrBaEqesjpyQGNExMnngyPEyM98ykewLqoHX0yi/TT5pPMeESMVTQz I4wA5Ms1MKDyIxNMN+jNjF6uRg5MkZzplvI1d0YI28Br777762Fb7777Wdc762aYxm+1jV9r69k5 s6zjuCbsIE90fHz06mJ0ZTziZPZBMjIJbjLEjKLdGq7TaTmHi7gBMZShajMMfdgOFaXjnYdV3OT3 e7iOFZEGUKtFwznCeDSMA7hUNFQMCyermoWjlA9Lo2gcWPXfqJPQ3MoXopw00emCLmUjMQhbNrZK 1sh1jc0XYiCZC/kT0uLRknBYoWMidFujIGCyjhEQi9PGX9mVzaUNhNh1HuuSpnxMQvvvvvvvvvsY tfYzj777WQt5lTNnXOpuc+nnFcNO+Sr7nNc6iPpZE7KcOO44ynqcJM3URSFGcwDFBVFUdcz/kl6l DQhR8raW8BzL1y1IUdTnNMp7k6BGCYcFq25Juc5Uw+Nwicjn5VOYtwZwbDXZ0MU8gsXYK6mYGY1r BbYA9H92Zdb+VMDc+mIcF6mVkM6fU3EgKP8w+9QbaNVP74uLwKfgykFR9Fuc599Tgz7E5C1pWTCL 4QQlC9HoTlS2JIwmE8HQFyxALk9hucJFMaehF8GT77777GdfffffffY3Od9LmhqcfcrnS5065JCY 89DSXc5yu44ilGQdx7vfydTLU6mcn0RktKhDFQZLMt6IfCs+j1MwDl71T/gGO9hRQYglbv6yysmS JmnMMDRD9PUsFyp3Gkeb6mpBR2BYhY5qonTwHKTKmJmwnjdAs1o3aGqfY3tYYXFVO2osPm0z1ciQ JukVKxdraLSg+hZPvUYXI88LNWGpH5nMfCTKCErxsD1PMoQpA/9X/+w9jQfQavsZh9Hvoq+3pxfe 9rkWFDOL5e4xXDP7nW+EI9EYdJRuyMCfkKTjl/vETs3F8uJwFqYRnX333333333333333O++ptVp /HoW+PEm5z1ZERtPDKVqODIfN/omT/FBPFWjz10R4pavOjUfD/VA8VAzf7kznF9jXDNuS+ka9ySZ xq4OvFTb09tmoGhmOlQF410rIOiCbJk5rLgVALStJFH9RPwMKCzZn1ODFngYW2ogIDgM2ZfU1hZg xdRkaF8TDC1t6eUtQTq2ilKMR4I86noMIbZSTV7nRaarC/aM6l7DyfRbRP/SJKWBen/VF31E+BmW 9wwB/feqgd2Op+7Y1TzE40F7eApbGK+86l0Y1OHGPosYzT7X8RE7n0mYMgjufazr6mY6TqYzIH2s YPvud99vGj777lc7e5SEH3K5wZJw5x8PuGfI2RF1VzwF7Vu9Qny7/WcIi6Kpu3r3p8LlWAdL+q7O LeSMx9idKDmz3wzqyU+l9dQYwM1saLcci3GsbwGK5YguWDVFz46S1qJxjaWIBhjY9WaKtIEh9LAk dB740i35VLXlY0oHi8GW/EseR/M6dtjBe3bzkT8dSsLXt9yRk+hTGhCrmmz6TOdxOMBc3rhg1uWw kfffZxqjxzXwOjKXCZMSHU8Eo7UxIFaPMjqGG3KfBAFIzW4CzU21hryhcnoRh13HYoAxBejwtmBj yESPeI6VIbGDW9c50mc777777774xS6GDS8d9R9YtjziIJLCAZc1igxAnP6FCDCoOAYVeHXGwZBI Uu8vg3Bhinl1mEeRlECbAWo8EML099Pfqwzen+2qmKoYG5jwIft7xomt6wMgOKtA14aJ9UfTsgzC scP5BAH8Big00wc+fT/5F0NL4Vlx4vAnKBT4PnQBPyGayfDZkPmsRZKS2OnqjLySdJo5XxmNAVbw om50Zw+eIiP6AqyfsAwnrKSE05GRYOwT3BTmVIKWuoLP2h4LVV+Cf4ehlTwU9SrzrSAGHLp4Sb8R dBFeAYp/d8ulFo+EgSh3lLRv6DESB7bTis8IU3K1cHjYD/KYz+JD7BtgzctjB9999rcpwLxq+hfH 4NVdza8LTin0C3hn7rJYCSx5lWF6TPvJWuy4K2exOLP8AwWipnuxZ93ywDkn1M57n0mCWKzzOL+1 NU1OpDm4QG2OQtBZqYOG+oiMKljhO53O+++++FOcvlK6LhQ8u+r+PgeP/+weOgB3HleqU5G8+mCx lwKJiIYKhGWgw8ow/5hZENjqc5crVJFUbI5Zt317UA0VYWNwXpn9ACx43uNawKS7OiEK/SZoqTPV N7aZuuITChm4MkwkzoZR0/fLlR4KfBBTEZd8eeEeoLBaPqrzk/EPgYWg3qXpysoBn+P1wG12x/at hVCRGMYLT1Z3vbtGe6GNeNg/B+D/945BwUn3a8iGAH9uRZEWP3g8tRxQ95Od6tJT6e5JhrxwzBOE 4U5RQjGoNxLqMWeqtYGKhu4SlJf+Jl5vgYXlwITvnwp8VD72jv/kfCtwB9EsfD72xtLAYo+LgDr5 XG1auo6LQaDzU4S56OoBIHx8r2/pV23eOMdtmy9W7UJqnDBcttB5///AcfJF0D3t7JLREhJATQwt IwrJgo9UXe/PDvUzejQHgP8kfCQJUHw9/36fMiLAyEsIdlH9/Geowk+PFEM9e++rhiEimkZdz4Mk ArC0pIkeJsFYCl8K0xKnnXQ7IVDVvhI+++k/U77e59FV8F8w4h4mnv6i4K333xeNVs6++0U60U81 8RBYzjgnGae0gCk45yPNpeE9cp9JxG+0Gb7776Fn/H05PIemXJw8vib/ks7OiiAEqlIeC0KeJUEv 37zidqDPsTYneAcB70/sKHBAzBFAfX4SgfM7LSZwqtQy9jzUAyDqDqCbUtQdrxwLwsFgU8SgP1WI yiAyNUUBnnvN//QYZBCIRIHuDgGE5cpVgxN84B80JcjK3vZz8kgpGLG7+gVtqLrxti9BYg5cGCUz SslcN/IwrwiAjOfV2oRfQeN/+XmLttR0Y0B7173Qd0B70/NA89AB0xt16YGAW8adLFBNIfTBAGYb hEBwhv/W5sBWR8s/BG0Ik5S+aP/ipMeUxXEwEQYWAwHS6ct1JulR4BsMlxBwHEX8XW0rswk3sF9y uLM6w1eZzSXBw3BdseZEHbVu5Kgl0MraFQZQ+FQGxWmVNS8iNDws2DFQfJ3mLSCaEzS80MwWOShR Khc6V6ELGQpMv+P1f97m3WXAsTH6/x5TT43jOPPMbBpvgLhFhg6C1TTmhapgLMpcTaGPRets0Ys4 cngS0LJ95tYMoulRpN0WWHFPANjy8U8iVs8K0eq1R/t5+M8mwW9z85LvGgyA5g7Lh2D40AOx94hE J77WCct3RO++tvffcrlbziHi16Q8SC4KTqZ6cOMkiNotSkCM7r/BT1EiBMUPoWdNsdOp7gCpXOCn uBnPDJ7g+NquSn/BgegGImTBwEwf9GJ+xcRch8XE0oDBZnme+fgDY7XBc2+J6g7lCSqLA2PhMB+s Qg6g6hLMBWboOoOoRqcCp3kGZ4unGcmBANz04NgcCmF/UxWD5sAPvWjf8TOT8mwHccAWGc3reUiE cx+PUiObCx5eB+AwGC5B8WzYy/1o7aQOODMpeB+rYkUi2jugZLRWr9OCMWUGFgl2lzVs1F4GK1R5 4U4LXUdRjh4Q7LYO5mpSmOCHnp2g8ZAFl8LPx4QwPyNTEmwsU1yqq4Rq1DxOCQcIY/U+55OIOO/9 XfsoIe69vCVXwXL0iY3CnMnnp8GbjxItlAzfbzDnffTx41YwwmlDCd51tknmTawOqhYQimNptLD6 XU0Rtb3YmkCP+kNbV/qKLYN3s/Oy6uWukt8O1m05Oj95+p+ut7lq2aKuBU++tkD77762QMYWPuVo sGTe9bzoJaXGj+A57XHEZ/Kc7WcGHD392NOEeeOV3zDwpyVtuIadALe4RmCTwWnYaNPCnBIM7ZWB oX5CR73CMgS55YB25BcJfK6WQEx4Hzc5hIejO7Zxc+jaWZ2A/XABoc48NXBQ8RgUBZWnAV+gwLAA tXCN4j28B2BlnlIPPQArlf5wTj848RmHVndkDMveP1QQlY/a5Fx0OXHwpw4LSrNAwRCSCF4u6X3o bPH9/ojTCUupesd/HBT9U1Tsz0ixSqALUfgKegR+U16veUzaorfhoXZ+iO0SK+Q0JzCfRV70440e c6mKCsiTz2C0/qY+nsyJ3sH2nVup6J0fRBJrbrTD2ApW0hG+++533xn+/zo1/6DuDNV9rCfK0mFz kfIU3RqxaTDFve0fh9fpL0Vvt4zW+iZTaFPF9icnfffayFJkD0T1sYrb3K+++yU0bFUOr1zxTCVa lxepDJ4pgmX64vUwEynxTBMSZ/wJg/UhlT4WcSYXxxffrANOw8FnH49Jwhz8ZAYdcFkFwXL9Iy/m NgOOuFJh1Zov3TbxSB0xJVVVG9RCgfqwQvyiOLafbDm059oPNvtZA+yfDWnW97777777WUnWsQz7 OnSY6Z3gnfa7CVnUzUrodfffffffffbzbWMH3K++/37777/9//fvv99+/ffW3blfv/fff3/ffffb 3Pv/f779++/3377/39999999fc59+/ffv333333339999999998AAAG2l2Pko4SGXgeoISof8UK5 6xcdw+EhiX8SvqlXlfM/iXsP+Ex0SYDKB94fq++/ZIob7LWcJlQQFcAPV1Uq5Z5SO1tkY0nJHbFF sWuDT0cERlw/L4Ppt1vDgTGXlxdS+5Ma07bFFsWtdRw6NX/+8mjzR15j0YyNTHA3xL96BCLrJJR1 3AYkEr0Eke/Hpffl3VHh7+yd5y8mQ4GBiV6CSPfj0vvy7qjyn9zvOXnHYeGJABwl6EMv8JKkfl0n 1Cr4HfSz8zPf5MmuCGrViVIDAcLgQvr+95VcW33Wzwl/BsHnh4XTxfxT9R6bzvZ269P6OCowghAV Ki9XYrVeVxRufkrMJy4vBDwG4rqr+tz99wgDwwYewvU/glKwPUD9at9zvAY5PbkU3f52r1l8m5FN 3+dre1l//////////////////0f//////kTh/ypronpyL//////Jmf24CZ9Gv/////9r9H////// InWH2t07z5yMwmWcPWKyC0FX/////+y7p26NGpNaa//////c7LuRIzjsyb1WayMyR8BYf/////KE n+5GjN6iAc5kSZ7////yJhCok5bFBaKjRl3i9T++xrRkJSpV0e6I8aSnf3XdO583V9jtu/wBP/// //yZlRGHWC0mYcCtBAVcF58wtDqyi9tOheDksgMMTBhLcrpyPm+eXBfmzH////+RM4TMNrBiHWwX nDDqwWlaWDgMzBoahtF7tyNGSEkiYLR07dGDf/////ImDk/gzOGHvKWHw60W+7d7owUC1df////y 5htsRWuDVD2fcWjMwYdbCzX/c3PdOX////86ZIDl5sqNwbjn4xdfuTnzRpiEk/////nj6Dl4UkoL iVuIwTv///////////////uX///////+6///////3f//////7v///////d///////////////kT1 ///////kTeaN7yJhTLnjn0+YN5I5ICd/////8mb3yxvedN9PhlkTcTO4FjSUaGjmPM//////9zlD NHTpy6mc42YMd48Fp//////+SM4cM5Tn////////////////////////vwAAAbZY8GLGfRbycHgP 8MGoPAQIYIIMqBh8AcDCWPy8IXxIANBQAeVKvl4IcBQj74l+Hs+PveEb1lxXR20fUwYA0GBABgQA hg8B/mhBVhAAO+JSpWqEr4l2iX//vKPK1SrIPFSu7quMSYfCCEEIXwDghiSEAvvqrCEPy8Sld8Iw 9LldVfzVFwmfvvvvpguCElB4CA/BoDwH9+CADKwYSQQQYSB8XBD8JIBgNoH/q/F0H1BsEvwlfHlh f/93/9m+nFjQQwhAHBBAPV0uCAJAlhDVzymqhKLlY//PSybfKpbm2TU7ghA8BAxg8BAkg8BAn/B4 D+xBgg0A0GAP+EIA+iUDWhBEj4NQaF3xKEkHgf+cSAQx98uLx8PS6qle+vlY79ZlOqkYMCADwH+e DwH+eEAHgIDUICoIIQVQlq1SsS/CVIJUVf+p+qVqwUqtVMxVWVjgPAQP4PAfvoPBwGIQgeH/4R8D xcAiD4H/evhCAOCGqAPCAJAQS6fioIYlFwlqp/FM8P1UVxTls3L3LSMGCADwEBuDwcBiDBCB4eAh BAB4uARBnPhzBVtv0WDAGg8BAZgwIAQQeA/zQgqwgBAVj5UrVCV8S7RL+r95RFapVYBxUX3dL4xh sHgIIMfj8G+DwECODKwDQYIIMEEA0SwDwYfAHiWJIlAHAHCUJZeJfx98Sx+ChEqgoBJBCEpVFQlD 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 4/BkYOBSuAOLhK/4fq1dzPqS359i//////////////////KmTa1AYj//////yJu+VMkTEP////// +VNMRCr/////8ib/5UycQwWH/////5I2ib+VNd6cj//////+YMFrczRkljv//////7s8frfsQrKH 5Lh0Hxf/v/////9y8oYVO3MwcojwEn////yJhCok5bFBaKjRl3i9T++xoXCUqVdHuiPGkp39190b M/67bBuNxg//////5Mw2ovDcWlihkMypQbx4OICRir3Ro80+//////ImVpOwhLGHWC0N8GJww38V PCd1cv/////5E2TRcw20ZhrBiFJgw3gv//////+RMoAaeMJg0pZ88Dk213//////8sYOXy5SMQQ+ ujH9y///////3P//////////////+7///////7r/////////////////////////////5E6eJHLY GH//////yZ9BPOkj686b6fcbNU2CbVAJwZkTh///////Lm+nB2CeYNxg4eOnwL6ebDE8f+Bh/YGE OnzqkE+H3eOnzdI44//////5Izs4Z3tD8W+TM48+Zzrp2ieRxg+v//////kjf82dPe39E8d///// +UN/mze/XnzfvwT3Q8cNVnwzih3//////5g3/////////////////////////gAAAbZZ4HL6c563 /vfvqq2S1V9Qp9bBGqi/9sZUfsWrwb4NAZUAeDF4/+JQBg+BDV+VAfsHqpUByWe3S//o3+CwSoJC qBDH4Q9H49H9V38okiXRKg9+poHghVWDYPpKI0Li73lXgOezxwuBhLB4D/DBoEEA4uBvA8BAugHi SDD4HgP70ICtUDwP+6JKsGUlxcrEgfKvj4A8u9+goVV0A2iR+YXe2e2WNPR6q0SVQB4kgHCWCAJI kfEhWXl3y9WrCBS7/x8rHlngQghl6vrc1VOQwDeB4CBnoMX0HgP80EGg8B/Ql4KEGVAwHhJA8P9l BDBqDKRIUF4PBQC8gQR2Pgbfgo5JRFik8EEA0GwGA+EMGHgPBwCINo/BsbBgND2geEcdiNjfSd++ +++h73osHgIDUEAHgP8kA4EEGVhBBi4uVCTBLCACGPfq/KoXUFAP4PqosL78R7wdQ4DwEBuDwH+S CADF4NQDlRcDFwQQYeCXBJ8r+rBDH4laXRUX+vlI+l+I99caOBDB4CBZVAwQAYEAf+EsGEsGVCQA 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 3333377777777777/3377+++++++++++++++++++++/fffffff0AAAG2mWPk0dH/Tp/0dHwVGJYl fVe/qvymYtKMQhq1ZdS73vez8zbk7zp0+dBr/youiv0zVbHG59/lV33qv519mSD+D2SNUd9IWmOR h3hcYkKlRfC////313Jt504PhL8rV+xV9RdXsGHvSz0lbyHwaGrLwZtWBX4xEhUqH8H6v6tWp9dy KbW7pn+D4xLEr6r39V+UzFpekIQga/5qrfaXsc53hwIatWXUu973s/M25O8Ol5cCFoN1VFfsavp/ q50MDnqpkq8P/////////////////+VNMRpgcIZB//////3Ukb9P/////+RMwCo6atBauTl6f/// //80dYyEYjdNuTryR7ykZU16RpyP/////6OSJGP5wzw3f/////+5NflTGoLU0dFc39YLKK////// yxJxJImKiRu7kEhrO/////+RMHIxdNGSxmkfazB6/////5EwhUSctihpOKjRl3i/f32NaMhKVKuj 3RHjSU7/+VPTR8NDkNSGv////7lkTCgkYLUoYLWSMk//////yJhoLzhhy4EUsfunL/////+RMEUZ ljByePCb/3X////+YMHIz/3O591/////uvubokYUf/////////////3Lu///////uW7//////+5f /////////////8+eAswcHD8ZB3RcC1///////3X///////+RMNxYSO13/////7vyZnQWkucPOOkz c4kcd//////In4+WOHwyOG45KmcefM45/8IC5098dE/z5gzn/////yhuOG5xw/HnETeaN7zpnR26 Hg4K646HBnYeNGDHH//////5E3kTfnzeGfjqo8fPvicDqzoAQcNGcf//////5c9BYvrzJu7HFzVn gOrAMNnD+Czf//////+UOHv//////////////////////QAAAbZa8HL6clfx5vx5f/9tUf/6e/fM W+n/qLWZP3F3gwkAwQQYIIQgYA4IXghhD8P/+Vj+D6QfT1/t8rVgpVaqZip4lgykSaJA+AOolj+h AEqKvCUJFL/goB9C7w8LoXF2jxVFSodenpz3HA8BAbggAxePgeAgWwYvCCDAggwQaJIPAf5oIABo KEIAlAw+VyUuCAXiWP4ENUX+BtLy8uBuFwlKx9FBd64r5k1yeDD4GLweA/ywYIAN4GCEAYDD9SDK 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 vvvvvvvvvvvvvvvvvv0AAAG2mmPkwqMfeEv31f1U3fak5cJ/KPS7JNXw6n/BcYl/Er/lXldzP4l7 D9gkj4SB2P/X/hGySXrbNhMAYXwIY/t/4S/wu/+/VKqrVjr1EaY1MhMaP99ZNJ1Y9oIRcqoiTxZD 3w0MfeEv31f1U3fak5T3p70uyTVzxg87D8KDCGrVl1Lve97PzNuRbvTafz5++EIvCCBwus9YO+2z jTEpODCUJaoIIlTPj+2T6jitWnFln75q2EQkiX8fF5d7w8HfLbfe7zp00f4PlfhIHxfbKp8qX3vt O1TcntqiNRiYSfwwMIatWXUu973s/M25Fu9bNmDzrv/////////////////KnjVIz3/////8iYLQ kaAFYLyhgtPKngjRK/Ggy//////Pmcn3/amGfRvWHGzEQCoRmcM/lzW8kByaEWmUySA5MRf///// KnWjtt4CUeP070F/DHvHDxsOuHj3kTPz5ymq+Vp9rb//////yxpTCx8kb/mDhO3/////+RM8cMRN JTxg9BxP86ekYc6L0JZClxo0xCKf/////z5qWAcNnOxoHNDAWyJnTRnAW8qfXDQkZ8+b55pI/r1D JKYMVf/////Lnl2fiYNhidmGTxgYVJAWGi7FhoRN3kTfJGnIP////ImEKiTlsUFoqNGXeL9/fYaE pUq6PdEeNJTvzpg5G7oOYP9ogis0dHS4x4eMG6VPDdjQJZs68zriRnipvf//////KGbmDP8wZ3// ///2v+5GDHcWGH////+1a/8oZ3/////tftf/////9r+ROnyRk//////+1///////2tr//////+1a tWv//////7Vr///////atf//////5Q0zv/////////////////////////////5M/nto0PnTwZuc bN5w4cM6dLm9zjpux6o8YN//////yZ9BOugnEjp86YZ/PhkYMyXN7ofPm91UgnfHsD8WFzHVom+B 8GBOA7aIAsPn8eLjD+eEAM3ewE80ZeOgYMQy/////+SN0mbnGzc6G5g3AiOgEHzh6O+AQrzwgPLn cr/7IDCffhcaOmnf/////yJvPGce+SMMjhnfaFx41QVBkcMG7//////nDh5xQ6fMGfKGX7Ax//// ///////////////////3AAABtlvgcvrYPAf5oIIPAQG4B4NAZUEAGLx+XiVRKAPBCHnlX1dL4ChH 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 7777799999z33377nfffff+/fffcu++++/vvvvvvv33337999++/fQ== ------=_NextPart_000_0008_01C2B35E.4CCA0180-- From xvid-devel@xvid.org Sat Jan 4 12:08:39 2003 From: xvid-devel@xvid.org (Jim Hauxwell) Date: Sat, 4 Jan 2003 12:08:39 -0000 Subject: [XviD-devel] overflow being reported incorrectly In-Reply-To: <3E16C387.7000406@gwdg.de> Message-ID: Hi, I came across the femms problem this morning also. seems like intel and microsoft compilers cant build for it. Even the intrinsics version _m_femms() dosn't work so I've just commented it out. As a matter of interest, why has someone added this? According to AMD doc I read this morning, the instructions femms and emms have zero latency and dont do anything. http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/2262 1.pdf Maybe someone can shed some light on it. Jim > -----Original Message----- > From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On > Behalf Of Dirk Knop > Sent: 04 January 2003 11:21 > To: xvid-devel@xvid.org > Subject: Re: [XviD-devel] overflow being reported incorrectly > > > Hi, > > suxen_drol wrote: > > >fix commited (stable & dev). > > > >a potential problem: our dequant functions are only good for coeff > >levels in the [-256,255] range. > > > > Uhm, we should definatly fix that ;) > > Another problem with the latest commit: > D:\data\PROGTEMP\XviD-dev-api-3\xvidcore\src\utils\emms.c(79): error: > __asm unknown opcode 'FEMMS' > > .... is there a way to explicit call nasm for instructions in c-files? > masm doesn't seem to understand that instruction (processor pack is > installed). (Or does intel install an assembler as well? I wonder why it > doesn't understand that then). > > Best regards > Dirk > > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Sat Jan 4 12:12:22 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 4 Jan 2003 13:12:22 +0100 (CET) Subject: [XviD-devel] log2 hacking... Message-ID: Hi, not really XVID related, although I'll use it in GMC: I'm need a quick way to calculate the next higher (or equal) power of two than a given value X: So for X=320 is should be 512 and for X=720 it should be 1024. For X=1024 it should be 1024 as well, etc. I also need the log2() of this value, so the routine should be something like { exponent = log2(X); value = 1<< exponent; } * I can either use float log() for that (boooh!), but there is no direct log2() function, so this sucks... exponent = round(log(X)/log(2)) ; value = 1 << exponent; * Or I can use a loop: value=16; // lower than 16 won't happen exponent=4; while (value Message-ID: On Sat, 4 Jan 2003, Jim Hauxwell wrote: > Hi, > > I came across the femms problem this morning also. seems like intel and > microsoft compilers cant build for it. Even the intrinsics version > _m_femms() dosn't work so I've just commented it out. > > As a matter of interest, why has someone added this? According to AMD doc I > read this morning, the instructions femms and emms have zero latency and > dont do anything. On Athlon it has zero latency, on K6-2 it doesn't. And it surely does do something: It switches registers back from MMX/3Dnow to floating point mode. If you don't switch before using floats, you end up with garbled float results. I think FEMMS is AMDs "faster" version of EMMS, maybe we should switch back to EMMS, and if it's slower on Pete's AMD K6, we can make a special macro for him to avoid problems. :-) gruel > > http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/2262 > 1.pdf > > Maybe someone can shed some light on it. > > Jim > > > -----Original Message----- > > From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On > > Behalf Of Dirk Knop > > Sent: 04 January 2003 11:21 > > To: xvid-devel@xvid.org > > Subject: Re: [XviD-devel] overflow being reported incorrectly > > > > > > Hi, > > > > suxen_drol wrote: > > > > >fix commited (stable & dev). > > > > > >a potential problem: our dequant functions are only good for coeff > > >levels in the [-256,255] range. > > > > > > > Uhm, we should definatly fix that ;) > > > > Another problem with the latest commit: > > D:\data\PROGTEMP\XviD-dev-api-3\xvidcore\src\utils\emms.c(79): error: > > __asm unknown opcode 'FEMMS' > > > > .... is there a way to explicit call nasm for instructions in c-files? > > masm doesn't seem to understand that instruction (processor pack is > > installed). (Or does intel install an assembler as well? I wonder why it > > doesn't understand that then). > > > > Best regards > > Dirk > > > > > > _______________________________________________ > > XviD-devel mailing list > > XviD-devel@xvid.org > > http://list.xvid.org/mailman/listinfo/xvid-devel > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel > From xvid-devel@xvid.org Sat Jan 4 12:41:59 2003 From: xvid-devel@xvid.org (Jim Hauxwell) Date: Sat, 4 Jan 2003 12:41:59 -0000 Subject: [XviD-devel] log2 hacking... In-Reply-To: Message-ID: theres a similar function in bitstream.c log2bin(uint32_t value) I would probably set it out in that format for consistancy Jim > -----Original Message----- > From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On > Behalf Of Christoph Lampert > Sent: 04 January 2003 12:12 > To: xvid-devel@xvid.org > Subject: [XviD-devel] log2 hacking... > > > > Hi, > > not really XVID related, although I'll use it in GMC: > > > I'm need a quick way to calculate the next higher (or equal) power > of two than a given value X: > > So for X=320 is should be 512 and for X=720 it should be 1024. For X=1024 > it should be 1024 as well, etc. > I also need the log2() of this value, so the routine should be something > like > > { > exponent = log2(X); > value = 1<< exponent; > } > > > * I can either use float log() for that (boooh!), but there is no > direct log2() function, so this sucks... > > exponent = round(log(X)/log(2)) ; > value = 1 << exponent; > > * Or I can use a loop: > > value=16; // lower than 16 won't happen > exponent=4; > > while (value > > > * Or I can use Intel "bitsearch" instruction: > > function IntLog2( Value: integer ): integer; > asm > BSR EAX, EAX > end; > > > which is of course very clever, but only possible on i386, and > also I don't want to use inline assembler. > Do you know any way to let the compiler "know" what I want and > make him call 'BSR' or an equivalent on another plattform directly? > > gruel > > > > > > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Sat Jan 4 12:42:00 2003 From: xvid-devel@xvid.org (Jim Hauxwell) Date: Sat, 4 Jan 2003 12:42:00 -0000 Subject: [XviD-devel] overflow being reported incorrectly In-Reply-To: Message-ID: yes you're correct in that it does something. I scan read it, and the implication is that on athlon its zero latency and zero switch cost (which is not the same as doing nothing). If they are both equal then I would switch back to emms Jim > -----Original Message----- > From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On > Behalf Of Christoph Lampert > Sent: 04 January 2003 12:18 > To: xvid-devel@xvid.org > Subject: RE: [XviD-devel] overflow being reported incorrectly > > > On Sat, 4 Jan 2003, Jim Hauxwell wrote: > > > Hi, > > > > I came across the femms problem this morning also. seems like intel and > > microsoft compilers cant build for it. Even the intrinsics version > > _m_femms() dosn't work so I've just commented it out. > > > > As a matter of interest, why has someone added this? According > to AMD doc I > > read this morning, the instructions femms and emms have zero latency and > > dont do anything. > > On Athlon it has zero latency, on K6-2 it doesn't. > And it surely does do something: It switches registers back from MMX/3Dnow > to floating point mode. If you don't switch before using floats, you end > up with garbled float results. > > I think FEMMS is AMDs "faster" version of EMMS, maybe we should switch > back to EMMS, and if it's slower on Pete's AMD K6, we can make a > special macro for him to avoid problems. > > :-) > > gruel > > > > > > > http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/2262 > 1.pdf > > Maybe someone can shed some light on it. > > Jim > > > -----Original Message----- > > From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On > > Behalf Of Dirk Knop > > Sent: 04 January 2003 11:21 > > To: xvid-devel@xvid.org > > Subject: Re: [XviD-devel] overflow being reported incorrectly > > > > > > Hi, > > > > suxen_drol wrote: > > > > >fix commited (stable & dev). > > > > > >a potential problem: our dequant functions are only good for coeff > > >levels in the [-256,255] range. > > > > > > > Uhm, we should definatly fix that ;) > > > > Another problem with the latest commit: > > D:\data\PROGTEMP\XviD-dev-api-3\xvidcore\src\utils\emms.c(79): error: > > __asm unknown opcode 'FEMMS' > > > > .... is there a way to explicit call nasm for instructions in c-files? > > masm doesn't seem to understand that instruction (processor pack is > > installed). (Or does intel install an assembler as well? I wonder why it > > doesn't understand that then). > > > > Best regards > > Dirk > > > > > > _______________________________________________ > > XviD-devel mailing list > > XviD-devel@xvid.org > > http://list.xvid.org/mailman/listinfo/xvid-devel > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel > _______________________________________________ XviD-devel mailing list XviD-devel@xvid.org http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Sat Jan 4 13:15:08 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 4 Jan 2003 14:15:08 +0100 (CET) Subject: [XviD-devel] status of bframes? In-Reply-To: Message-ID: On Fri, 3 Jan 2003, Jim Hauxwell wrote: > Hi, > > I've been doing some tests with xvid_encraw / xvid_decraw. Looks like all > the bframes have corruption on them. Before I start digging, is there any > know problems with bframes? I have attached the 100 frames I have > encoded/decoding. please don't send so big attachements to the list! There are people with modem dial-up out there. Btw. what happended to the 50K max mailsize that this list used to have? gruel From xvid-devel@xvid.org Sat Jan 4 13:33:43 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 4 Jan 2003 14:33:43 +0100 (CET) Subject: [XviD-devel] status of bframes? In-Reply-To: Message-ID: On Fri, 3 Jan 2003, Jim Hauxwell wrote: > Hi, > > I've been doing some tests with xvid_encraw / xvid_decraw. Looks like all > the bframes have corruption on them. Before I start digging, is there any > know problems with bframes? I have attached the 100 frames I have > encoded/decoding. You mean distorsions at the snake's head? I guess this is because B-frames have quant 31 and the material is interlaced!!! What were your input parameters? Did you notice that you have to modify xvid_encraw.c a little, because it does not set bquant_offset (old version of API). Sorry for that, I was busy for the last weeks and didn't follow the changes in API, and I don't use xvid_encraw myself. Maybe set this value to 0, next to line 281 xparam.bquant_ratio = ARG_BQUANTRATIO; xparam.bquant_offset=0; and retry. gruel From xvid-devel@xvid.org Sat Jan 4 13:40:00 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sun, 05 Jan 2003 00:40:00 +1100 Subject: [XviD-devel] overflow being reported incorrectly In-Reply-To: References: <3E16C387.7000406@gwdg.de> Message-ID: <20030105002920.13F1.SUXEN_DROL@hotmail.com> On Sat, 4 Jan 2003 12:08:39 -0000 "Jim Hauxwell" wrote: > Hi, > > I came across the femms problem this morning also. seems like intel and > microsoft compilers cant build for it. Even the intrinsics version > _m_femms() dosn't work so I've just commented it out. bleh. my msvc6 + sp5 + pp setup compiles it, as does gcc. ( i guess i should've test icc also...) > > As a matter of interest, why has someone added this? According to AMD doc I > read this morning, the instructions femms and emms have zero latency and > dont do anything. > > http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/2262 > 1.pdf > > Maybe someone can shed some light on it. on the k6-2(3) series, femms is faster. the speed increase is not noticible, but ive included it for "completeness". the emms_mmx and emms_3dn functions could be moved to nasm to avoid compiler problems... and avoid having to defined EMMS() macros in portab.h. or, would y'all rather switch intrinsics? -- pete From xvid-devel@xvid.org Sat Jan 4 13:52:58 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 4 Jan 2003 14:52:58 +0100 (CET) Subject: [XviD-devel] [f]emms / intrisics In-Reply-To: <20030105002920.13F1.SUXEN_DROL@hotmail.com> Message-ID: On Sun, 5 Jan 2003, suxen_drol wrote: > > the emms_mmx and emms_3dn functions could be moved to nasm to avoid > compiler problems... and avoid having to defined EMMS() macros in > portab.h. They are only 1 instruction, aren't they? So nasming them would be kind of overhead... > > or, would y'all rather switch intrinsics? Your decision... I don't care, I don't speak ASM (except for 68K & MIPS). Would we get all our current NASM code transformed into intrisitrics? Or should we run both in parallel then? Let's cast a vote: -------- * Should we change from NASM to intrisics? Please make your cross here (no dimpled chats, please) O yes O no O don't care O don't know what it means -------- From xvid-devel@xvid.org Sat Jan 4 14:48:42 2003 From: xvid-devel@xvid.org (Marco Al) Date: Sat, 4 Jan 2003 15:48:42 +0100 Subject: [XviD-devel] [f]emms / intrisics References: Message-ID: <00b201c2b400$606a8af0$bca45982@student.utwente.nl> Christoph Lampert wrote: > Would we get all our current NASM code transformed into intrisitrics? No compiler has intrinsics for things like BSR right? So would you have to roll your own "intrinsics"/macros for those to translate to inline assembly for a given compiler instead? > Let's cast a vote: > > -------- > > * Should we change from NASM to intrisics? > > Please make your cross here (no dimpled chats, please) > > O yes O no O don't care O don't know what it means > > -------- Dunno about change, but it would be nice if XviD allowed GCC/ICC intrinsics. Marco From xvid-devel@xvid.org Sat Jan 4 17:02:14 2003 From: xvid-devel@xvid.org (Jim Hauxwell) Date: Sat, 4 Jan 2003 17:02:14 -0000 Subject: [XviD-devel] status of bframes? In-Reply-To: Message-ID: sorry about the size, I forget that it could be a problem. The list has a 50k max post size, for posts bigger than that a moderator has to OK them. I guess someone cleared it for posting. Jim > -----Original Message----- > From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On > Behalf Of Christoph Lampert > Sent: 04 January 2003 13:15 > To: xvid-devel@xvid.org > Subject: Re: [XviD-devel] status of bframes? > > > On Fri, 3 Jan 2003, Jim Hauxwell wrote: > > > Hi, > > > > I've been doing some tests with xvid_encraw / xvid_decraw. > Looks like all > > the bframes have corruption on them. Before I start digging, > is there any > > know problems with bframes? I have attached the 100 frames I have > > encoded/decoding. > > please don't send so big attachements to the list! There are people with > modem dial-up out there. > > Btw. what happended to the 50K max mailsize that this list used to have? > > gruel > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Sat Jan 4 21:38:53 2003 From: xvid-devel@xvid.org (Jim Hauxwell) Date: Sat, 4 Jan 2003 21:38:53 -0000 Subject: [XviD-devel] fix required or SSE2 does a missaligned movdqa Message-ID: Hi, In the encoder, there are two arrays in the function FrameCodeB() These need aligning or the sse2 crashes was (line 1929, or there abouts) int16_t dct_codes[6 * 64]; int16_t qcoeff[6 * 64]; needs changing to DECLARE_ALIGNED_MATRIX(dct_codes, 6, 64, int16_t, CACHE_LINE); DECLARE_ALIGNED_MATRIX(qcoeff, 6, 64, int16_t, CACHE_LINE); will provide working sse2 again Jim From xvid-devel@xvid.org Sat Jan 4 23:07:45 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 5 Jan 2003 00:07:45 +0100 (CET) Subject: [XviD-devel] Non-Multiples of 8 still nonworking? Message-ID: Hi, is it possible that xvid still cannot handle input dimensions not multiples of 16 in width? When I just tested to encode a clip from http://bs.hhi.de/~wiegand/Gar_ef.zip with stable in RGB mode, I got the famous pink smear effect... and it happens with other files, too, whenever width is not a multiple of 16! And in YUV is was even worse, the image completely broken. :( gruel From xvid-devel@xvid.org Sun Jan 5 03:33:44 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sun, 05 Jan 2003 14:33:44 +1100 Subject: [XviD-devel] fix required or SSE2 does a missaligned movdqa In-Reply-To: References: Message-ID: <20030105143232.158F.SUXEN_DROL@hotmail.com> hello, On Sat, 4 Jan 2003 21:38:53 -0000 "Jim Hauxwell" wrote: > needs changing to > > DECLARE_ALIGNED_MATRIX(dct_codes, 6, 64, int16_t, CACHE_LINE); > DECLARE_ALIGNED_MATRIX(qcoeff, 6, 64, int16_t, CACHE_LINE); > > will provide working sse2 again fix applied. -- pete From xvid-devel@xvid.org Sun Jan 5 03:38:46 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sun, 05 Jan 2003 14:38:46 +1100 Subject: [XviD-devel] Non-Multiples of 8 still nonworking? In-Reply-To: References: Message-ID: <20030105143441.1592.SUXEN_DROL@hotmail.com> On Sun, 5 Jan 2003 00:07:45 +0100 (CET) Christoph Lampert wrote: > > Hi, > > is it possible that xvid still cannot handle input dimensions > not multiples of 16 in width? > > When I just tested to encode a clip from > > http://bs.hhi.de/~wiegand/Gar_ef.zip > > with stable in RGB mode, I got the famous pink smear effect... and it > happens with other files, too, whenever width is not a multiple of 16! > > And in YUV is was even worse, the image completely broken. :( not-mod-16 dimensions are supported in the development branch. -- pete From xvid-devel@xvid.org Sun Jan 5 06:34:00 2003 From: xvid-devel@xvid.org (Yue-Meng Chen) Date: Sun, 5 Jan 2003 14:34:00 +0800 Subject: [XviD-devel] Performance for Xvid MPEG-4 codec. References: Message-ID: <003201c2b484$6f04bf20$7d01a8c0@ymnotebook> Hi, I want to implement MPEG-4 video encoder and decoder on ARM-9 platform, before doing it, I wanna to get some prelimiary information for its performance. If porting XviD MPEG-4 video codec on ARM-9, with following test condition: 1. 200MHz ARM-9 processor 2. set 128kbps for base layer 3. Raw Picture Resolution: QCIF -- 176x144 As your evaluation, how many frames could "EncRaw" encode per second? and "DecRaw"? Thanks, Yue-Meng Chen From xvid-devel@xvid.org Sun Jan 5 09:11:19 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 5 Jan 2003 10:11:19 +0100 (CET) Subject: [XviD-devel] Non-Multiples of 8 still nonworking? In-Reply-To: <20030105143441.1592.SUXEN_DROL@hotmail.com> Message-ID: On Sun, 5 Jan 2003, suxen_drol wrote: > > is it possible that xvid still cannot handle input dimensions > > not multiples of 16 in width? > > > not-mod-16 dimensions are supported in the development branch. Ah, okay. Then maybe should add a check of dimensions to stable and exit with a failure code if they are not multiples of 16. Or maybe port the patch back to stable (because it would make things more stable)? gruel From xvid-devel@xvid.org Sun Jan 5 11:37:24 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sun, 05 Jan 2003 22:37:24 +1100 Subject: [XviD-devel] Non-Multiples of 8 still nonworking? In-Reply-To: References: <20030105143441.1592.SUXEN_DROL@hotmail.com> Message-ID: <20030105221820.9397.SUXEN_DROL@hotmail.com> On Sun, 5 Jan 2003 10:11:19 +0100 (CET) Christoph Lampert wrote: hi christoph, > Ah, okay. Then maybe should add a check of dimensions to stable > and exit with a failure code if they are not multiples of 16. > > Or maybe port the patch back to stable (because it would make things more > stable)? > > gruel actually i'd like to merge the whole dev-api-3 branch back into the trunk soon: the new api is ready to commit, internal ratecontrol is almost done. i think working in the dev-api-3 branch is awkward; in future the CVS HEAD should be used for development, and we branch only for stable releases (and highly-exprimental stuff). -- pete From xvid-devel@xvid.org Sun Jan 5 13:08:12 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Mon, 06 Jan 2003 00:08:12 +1100 Subject: [XviD-devel] Performance for Xvid MPEG-4 codec. In-Reply-To: <003201c2b484$6f04bf20$7d01a8c0@ymnotebook> References: <003201c2b484$6f04bf20$7d01a8c0@ymnotebook> Message-ID: <20030105231659.939D.SUXEN_DROL@hotmail.com> On Sun, 5 Jan 2003 14:34:00 +0800 "Yue-Meng Chen" wrote: > Hi, > I want to implement MPEG-4 video encoder and decoder on ARM-9 platform, before doing it, I wanna to get some prelimiary information for its performance. > If porting XviD MPEG-4 video codec on ARM-9, with following test condition: > 1. 200MHz ARM-9 processor > 2. set 128kbps for base layer > 3. Raw Picture Resolution: QCIF -- 176x144 > As your evaluation, how many frames could "EncRaw" encode per second? and "DecRaw"? > xvid currently has no optimizations for the arm cpu, so the decoder/encoder will run quite slow. try asking the folk at the pocket-divx-player project (http://forums.projectmayo.com/viewforum.php?forum=23). they're optimized mpeg-4 decoder handles QCIF+audio @ 25fps on ~200mhz handhelds. -- pete; life is like a box of ammo From xvid-devel@xvid.org Sun Jan 5 15:06:43 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 5 Jan 2003 16:06:43 +0100 (CET) Subject: [XviD-devel] GMC update In-Reply-To: <000f01c2b28e$c0c1ed30$bca45982@student.utwente.nl> Message-ID: Hi, okay, GMC encoding and decoding (2 warp points) is done, but I had a few occasional crashes :( When I tracked these down, I'll commit to branch. gruel From xvid-devel@xvid.org Sun Jan 5 16:05:07 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 5 Jan 2003 17:05:07 +0100 (CET) Subject: [XviD-devel] GMC! It's there (well... it's HERE) Message-ID: Hooray, this is my very first (bugfree) GMC result, and it's positive!!! I tested foreman.cif (352x288) with 800kbps (-> low quant ) Reference: only halfpel br 0800 ( 0.316 bpp) size 4042 ( 808 kbps / 0.319 bpp) enc: 126.3 fps, dec: 281.7 fps, PSNR P(298): 25.75 ( 1798 , 4009 ; 9006 ) New: halfpel + GMC with 2 warp points and 16th-pel resolution br 0800 (0.316 bpp) size 4043 ( 808 kbps / 0.319 bpp) enc: 60.8 fps, dec: 87.5 fps, PSNR P(298): 25.88 ( 1317 , 4005 ; 9082 ) So GMC has an advantage of 0.13 dB at same bitrate. For fixed quant, filesize is much larger... :( However, for low bitrate / high quant PSNR is vice versa, worse for GMC, and also, maybe it's all completely wrong, because it's my first test. But with this triumph I'll close the case for today and continue tomorrow... gruel From xvid-devel@xvid.org Sun Jan 5 21:20:03 2003 From: xvid-devel@xvid.org (Jim Hauxwell) Date: Sun, 5 Jan 2003 21:20:03 -0000 Subject: [XviD-devel] status of bframes? In-Reply-To: Message-ID: The only way to get this encode working anywhere reasonable was to turn interlacing off. Even lowering the max quantizer didn't work. I guess bframes don't work with interlacing at the moment? Jim > -----Original Message----- > From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On > Behalf Of Christoph Lampert > Sent: 04 January 2003 13:34 > To: xvid-devel@xvid.org > Subject: Re: [XviD-devel] status of bframes? > > > On Fri, 3 Jan 2003, Jim Hauxwell wrote: > > > Hi, > > > > I've been doing some tests with xvid_encraw / xvid_decraw. > Looks like all > > the bframes have corruption on them. Before I start digging, > is there any > > know problems with bframes? I have attached the 100 frames I have > > encoded/decoding. > > You mean distorsions at the snake's head? > I guess this is because B-frames have quant 31 and the material is > interlaced!!! > > What were your input parameters? > Did you notice that you have to modify xvid_encraw.c a little, because > it does not set bquant_offset (old version of API). Sorry for that, I was > busy for the last weeks and didn't follow the changes in API, and I don't > use xvid_encraw myself. > > Maybe set this value to 0, next to line 281 > > xparam.bquant_ratio = ARG_BQUANTRATIO; > xparam.bquant_offset=0; > > and retry. > > gruel > > > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Sun Jan 5 21:18:44 2003 From: xvid-devel@xvid.org (Christian HJ Wiesner) Date: Sun, 5 Jan 2003 22:18:44 +0100 Subject: [XviD-devel] Re: Hi! Message-ID: <"David Jansson" schrieb im Newsbeitrag news:<20030103045806.52516.qmail@web14305.mail.yahoo.com>... A while ago, i asked if you are interested in making XviD work on SGI Irix. Someone from this mailing list answered positively, but after that we've kinda lost contact. Well, if meanwhile XviD still hasn't been ported to SGI Irix (i didn't watched the mailing list, sorry if this is old news), and if you are still willing to do the work, please let me know. I'll reinstall soon my small SGI development machine, together with a full set of development tools (including recent versions of GNU tools and SGI's commercial compiler, MIPSPro) and i could give SSH access to it to one of the members of the XviD team. Just let me know. -- Florin Andrei http://florin.myip.org/ From xvid-devel@xvid.org Mon Jan 6 08:27:51 2003 From: xvid-devel@xvid.org (Christian HJ Wiesner) Date: Mon, 06 Jan 2003 09:27:51 +0100 Subject: [XviD-devel] Conversion Tool from DivX3/4 to MPEG4 ISO, both based on Windows and Linux - paid job offer from Neuston !!! Message-ID: <3E193E07.9030301@users.sf.net> Hi guys, i am in contact with Tan Ju Hian, the assistant sales Director of neuston ( http://neuston.com ). Similar to KiSS with their DP450 unit they are about to launch a DivX compatible hardware standalone player ( http://neuston.com/dvx_1201.asp and http://neuston.com/dvx_1307.asp ) and i am talking to them about the potential problems to be exptected with AVI as container. They are investigating if alternative containers such as MP4, OGM or maybe even matroska could be used as AVI replacement and therefore want to include a conversion software tool to help customers with AVIs that play without sync, as they fear the impact on their service departments if playback problems with AVI files will occur ( and these are very likely to happen as you know ). I am trying to convince them that such a tool should be based on the GPL and sources be distributed with the CD, as it could use many existing code, making the job a lot easier. Tan Ju said in his last email to me : [quote] Your ideas and concepts seem like good ones and make a lot of sense. The inclusion of a 'conversion tool' being bundled with the player seems like almost a necessity as unfortunately, there is no hardware available whereby it can support DivX 4 and below on a stand alone piece of equipment. Software that can convert any .avi to work with the DVX-1201. I would be more than appreciative with any more ideas and people I can get in touch with in regards to the conversion tool. I admire your passion and knowledge in the field, especially since it is a hobby of yours! Kind regards, Yu Hian Tan Yu Hian Asst. Director, Global Sales neuston corporation 41 Science Park #04-07/7A The Gemini Science Park II Singapore 117610 Tel : (+65) 68733312 Fax : (+65) 68733304 Mobile : (+65) 98750846 E-mail : yuey@neuston.com [/quote] Main job was : - parse AVI files - read DivX3/Angelpotion/SMR/MPEG4V3 and convert to MPEG4ISO - detect VBR MP3 and/or AC3 audio - send out warning signals about VBR audio not being AVI specs compliant, also potential AC3 audio probs ( cut in frames by nandub ) - convert file into a new AVI that can be read by player in sync in any case, i.e. is compatible with players AVI parser - probably convert file into another container supported by Neuston player ( much later -- 2nd step ), preferably MP4 If anybody feels like he could take such a job, drop me a mail to christianhjw at users dot sourceforge dot net . Best regards Christian HJ Wiesner From xvid-devel@xvid.org Mon Jan 6 09:26:33 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Mon, 6 Jan 2003 10:26:33 +0100 (CET) Subject: [XviD-devel] SGI Irix port In-Reply-To: <1041824065.30111.13.camel@rivendell.home.local> Message-ID: On 5 Jan 2003, Florin Andrei wrote: Hi, welcome back! > A while ago, i asked if you are interested in making XviD work on SGI > Irix. Someone from this mailing list answered positively, but after that > we've kinda lost contact. Maybe it was me? I can't really help in porting to SGI (although I _love_ the SGI compiler :-), because I don't have access to a SGI machine anymore. :((( So, I would be very interested in ssh access, maybe you could create an "xvid" account and we continue the discussion by private mail? > Well, if meanwhile XviD still hasn't been ported to SGI Irix (i didn't > watched the mailing list, sorry if this is old news), and if you are > still willing to do the work, please let me know. I'll reinstall soon my > small SGI development machine, together with a full set of development > tools (including recent versions of GNU tools and SGI's commercial > compiler, MIPSPro) and i could give SSH access to it to one of the > members of the XviD team. That would be great! I guess it shouldn't be too much work to get XviD to compile on Irix, and I'm pretty sure that other tools like transcode and mplayer already exist there, too. So video encoding with XviD would be possible. Next step would be assembler or multimedia-library optimization (MDMX instruction set, isn't it?). I don't know anyone who could do that, but maybe we can wait until it's time for that to find someone... If I remember correctly, you might find somebody directly at SGI? gruel From xvid-devel@xvid.org Mon Jan 6 09:31:13 2003 From: xvid-devel@xvid.org (Amit Bhushan) Date: Mon, 6 Jan 2003 15:01:13 +0530 Subject: [XviD-devel] VLC Table could not understand...........the implementation. Message-ID: <46984F04936AEC4A99F6CCC7F2248B74022D85@stsrv02.ssdsi.com> Hello, I have got Last change: 2002/09/28 16:01:15 (GMT) version code & i am in VLC implementation, suck with following difficulties. 1.> Why there are different tables for encoder and decoder? 2.> Can the VLC Table be implemented using Huffman algorith? If yes, then which will be simpler? 3.> Why are 2-d array variables max_level[][] & max_run[][] are common for for both encoder & decoder? 4.> Can you please elaborate the implementation of vlc_codes.h and implementation .i.e init of it in mbcoding.c? Regards Amit Bhushan. From xvid-devel@xvid.org Mon Jan 6 10:45:57 2003 From: xvid-devel@xvid.org (Marco Al) Date: Mon, 6 Jan 2003 11:45:57 +0100 Subject: [XviD-devel] VLC Table could not understand...........the implementation. References: <46984F04936AEC4A99F6CCC7F2248B74022D85@stsrv02.ssdsi.com> Message-ID: <000f01c2b570$cbd2ce30$bca45982@student.utwente.nl> This is a multi-part message in MIME format. ------=_NextPart_000_000C_01C2B579.2D833900 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Amit Bhushan wrote: > Why there are different tables for encoder and decoder? VLCs are uniquely decodable, but there are multiple ways to match them ... you can do the traditional bit by bit matching, traversing the set of VLCs in a binary tree like manner, but while that might be suited for hardware implementation it is not terribly efficient on a general purpose processor. Since the largest VLC (ignoring esc1/2 codes) is only 12 bits we can do it smarter by using a lookup table from all possible 12 bit words in the bitstream to their corresponding events and VLC lengths. This is different from the encoder since the codes shorter than 12 bits occur multiple times in the table, because they can be followed by arbitrary bits in the encoded bitstream. > Can the VLC Table be implemented using Huffman algorith? I havent seen a list of probabilities, but I guess you could reverse engineer them. > If yes, then > which will be simpler? Using the existing VLCs. > Why are 2-d array variables max_level[][] & > max_run[][] are common for for both encoder & decoder? Escape1/2 coding provides a translation of a given event to a different event, this operation can be reversed using the same table ... hence they are used both in decoding and encoding. Or rather max_level/run are used when building the lut for encoding, which when using the small lut is meant to hold all standard VLCs and the ones for escape1/2 coding. Even with the small lut only the fixed length escape3 codes are computed instead of looked up ... again because we are using a general purpose CPU. In hardware you would probably use computations to compute escape1/2 coding to save on the lut space. > Can you please > elaborate the implementation of vlc_codes.h and implementation .i.e init of > it in mbcoding.c? It is very simple, the code traverses the copy pasted VLC tables from the ISO standard as is ... and seeds the lut with them. This will take care of all the standard VLCs. For codes which remain after this it will first try if there is an escape1 code, and if they exist put them in the lut. If that doesnt succeed it tries an escape2 code. Remaining entries after this are either filled with escape3 codes, or left open in the case of intra coding with the small lut. This is done since for intra we only do the lookup for the positive range of levels, and escape3 codes arent as easy to negate as the VLCs (which just require setting the LSB). So instead we will just compute them explicitly when we need them. For all levels which lie beyond the range of -31 - 31 in the case of inter and -64 - 64 in the case of intra escape3 codes are computed on the fly when encoding with the small lut. With the big lut all codes for all possible events can be directly looked up. A more readable mbcoding.c is attached. Marco ------=_NextPart_000_000C_01C2B579.2D833900 Content-Type: text/plain; name="mbcoding.c" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="mbcoding.c" /************************************************************************= ***** * * XVID MPEG-4 VIDEO CODEC * - Macro Block coding functions - * * Copyright(C) 2002 Michael Militzer * * This file is part of XviD, a free MPEG-4 video encoder/decoder * * XviD is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 = USA * * Under section 8 of the GNU General Public License, the copyright * holders of XVID explicitly forbid distribution in the following * countries: * * - Japan * - United States of America * * Linking XviD statically or dynamically with other modules is making = a * combined work based on XviD. Thus, the terms and conditions of the * GNU General Public License cover the whole combination. * * As a special exception, the copyright holders of XviD give you * permission to link XviD with independent modules that communicate = with * XviD solely through the VFW1.1 and DShow interfaces, regardless of = the * license terms of these independent modules, and to copy and = distribute * the resulting combined work under terms of your choice, provided = that * every copy of the combined work is accompanied by a complete copy of * the source code of XviD (the version of XviD used to produce the * combined work), being distributed under the terms of the GNU General * Public License plus this exception. An independent module is a = module * which is not derived from or based on XviD. * * Note that people who make modified versions of XviD are not = obligated * to grant this special exception for their modified versions; it is * their choice whether to do so. The GNU General Public License gives * permission to release a modified version without this exception; = this * exception also makes it possible to release a modified version which * carries forward this exception. * * $Id: mbcoding.c,v 1.37 2003/01/05 16:54:36 edgomez Exp $ * = *************************************************************************= ***/ #include #include "../portab.h" #include "bitstream.h" #include "zigzag.h" #include "vlc_codes.h" #include "mbcoding.h" #include "../utils/mbfunctions.h" #define ABS(X) (((X)>0)?(X):-(X)) #define CLIP(X,A) (X > A) ? (A) : (X) /*#define _BIGLUT_*/ #ifdef _BIGLUT_ #define LEVELOFFSET 2048 #else #define LEVELOFFSET 32 #endif /************************************************************************= ***** * Local data = *************************************************************************= ***/ static REVERSE_EVENT DCT3D[2][4096]; #ifdef _BIGLUT_ static VLC coeff_VLC[2][2][4096][64]; static VLC *intra_table, *inter_table;=20 #else static VLC coeff_VLC[2][2][64][64]; #endif /************************************************************************= ***** * Vector Length Coding Initialization = *************************************************************************= ***/ void init_vlc_tables(void) { uint32_t i, j, intra, last, run, level_esc, run_esc, offset; int32_t level; #ifdef _BIGLUT_ intra_table =3D coeff_VLC[1]; inter_table =3D coeff_VLC[0];=20 #endif for (intra =3D 0; intra < 2; intra++) for (i =3D 0; i < 4096; i++) DCT3D[intra][i].event.level =3D 0; for (intra =3D 0; intra < 2; intra++) for (last =3D 0; last < 2; last++) { for (run =3D 0; run < 63 + last; run++) for (level =3D 0; level < 32 << intra; level++) { #ifdef _BIGLUT_ offset =3D LEVELOFFSET; #else offset =3D !intra * LEVELOFFSET; #endif coeff_VLC[intra][last][level + offset][run].len =3D 128; } } for (intra =3D 0; intra < 2; intra++) for (i =3D 0; i < 102; i++) { #ifdef _BIGLUT_ offset =3D LEVELOFFSET; #else offset =3D !intra * LEVELOFFSET; #endif for (j =3D 0; j < 1 << (12 - coeff_tab[intra][i].vlc.len); j++) { DCT3D[intra][(coeff_tab[intra][i].vlc.code << (12 - = coeff_tab[intra][i].vlc.len)) | j].len =3D coeff_tab[intra][i].vlc.len; DCT3D[intra][(coeff_tab[intra][i].vlc.code << (12 - = coeff_tab[intra][i].vlc.len)) | j].event =3D coeff_tab[intra][i].event; } = coeff_VLC[intra][coeff_tab[intra][i].event.last][coeff_tab[intra][i].even= t.level + offset][coeff_tab[intra][i].event.run].code =3D coeff_tab[intra][i].vlc.code << 1; = coeff_VLC[intra][coeff_tab[intra][i].event.last][coeff_tab[intra][i].even= t.level + offset][coeff_tab[intra][i].event.run].len =3D coeff_tab[intra][i].vlc.len + 1; #ifndef _BIGLUT_ if (!intra) #endif { coeff_VLC[intra][coeff_tab[intra][i].event.last][offset - = coeff_tab[intra][i].event.level][coeff_tab[intra][i].event.run].code =3D (coeff_tab[intra][i].vlc.code << 1) | 1; coeff_VLC[intra][coeff_tab[intra][i].event.last][offset - = coeff_tab[intra][i].event.level][coeff_tab[intra][i].event.run].len =3D coeff_tab[intra][i].vlc.len + 1; } } for (intra =3D 0; intra < 2; intra++) for (last =3D 0; last < 2; last++) for (run =3D 0; run < 63 + last; run++) { for (level =3D 1; level < 32 << intra; level++) { if (level <=3D max_level[intra][last][run] && run <=3D = max_run[intra][last][level]) continue; #ifdef _BIGLUT_ offset =3D LEVELOFFSET; #else offset =3D !intra * LEVELOFFSET; #endif level_esc =3D level - max_level[intra][last][run]; if (level_esc <=3D max_level[intra][last][run] && run <=3D = max_run[intra][last][level_esc]) { coeff_VLC[intra][last][level + offset][run].code =3D (ESCAPE1 << coeff_VLC[intra][last][level_esc + = offset][run].len) | coeff_VLC[intra][last][level_esc + offset][run].code; coeff_VLC[intra][last][level + offset][run].len =3D coeff_VLC[intra][last][level_esc + offset][run].len + 7 + 1; #ifndef _BIGLUT_ if (!intra) #endif { coeff_VLC[intra][last][offset - level][run].code =3D (ESCAPE1 << coeff_VLC[intra][last][level_esc + = offset][run].len) | coeff_VLC[intra][last][level_esc + offset][run].code | 1; coeff_VLC[intra][last][offset - level][run].len =3D coeff_VLC[intra][last][level_esc + offset][run].len + 7 + = 1; } continue; } =09 run_esc =3D run - 1 - max_run[intra][last][level]; if (level <=3D max_level[intra][last][run_esc] && run_esc <=3D = max_run[intra][last][level]) /*remove the above continue and use the lower test instead to use = shorter escape codes when possible : if (coeff_VLC[intra][last][level + offset][run_esc].len + 7 + 2 < coeff_VLC[intra][last][level + offset][run].len)*/ { coeff_VLC[intra][last][level + offset][run].code =3D (ESCAPE2 << coeff_VLC[intra][last][level + = offset][run_esc].len) | coeff_VLC[intra][last][level + offset][run_esc].code; coeff_VLC[intra][last][level + offset][run].len =3D coeff_VLC[intra][last][level + offset][run_esc].len + 7 + 2; #ifndef _BIGLUT_ if (!intra) #endif { coeff_VLC[intra][last][offset - level][run].code =3D (ESCAPE2 << coeff_VLC[intra][last][level + = offset][run_esc].len) | coeff_VLC[intra][last][level + offset][run_esc].code | 1; coeff_VLC[intra][last][offset - level][run].len =3D coeff_VLC[intra][last][level + offset][run_esc].len + 7 + 2; } continue; } #ifndef _BIGLUT_ if (!intra) #endif if (coeff_VLC[intra][last][level + offset][run].len =3D=3D 128) { coeff_VLC[intra][last][level + offset][run].code =3D (ESCAPE3 << 21) | (last << 20) | (run << 14) | (1 << 13) | = ((level & 0xfff) << 1) | 1; coeff_VLC[intra][last][level + offset][run].len =3D 30; coeff_VLC[intra][last][offset - level][run].code =3D (ESCAPE3 << 21) | (last << 20) | (run << 14) | (1 << 13) | = ((-level & 0xfff) << 1) | 1; coeff_VLC[intra][last][offset - level][run].len =3D 30; } } #ifdef _BIGLUT_ for (level =3D 32 << intra; level < 2048; level++) { coeff_VLC[intra][last][level + offset][run].code =3D (ESCAPE3 << 21) | (last << 20) | (run << 14) | (1 << 13) | = ((level & 0xfff) << 1) | 1; coeff_VLC[intra][last][level + offset][run].len =3D 30; coeff_VLC[intra][last][offset - level][run].code =3D (ESCAPE3 << 21) | (last << 20) | (run << 14) | (1 << 13) | = ((-level & 0xfff) << 1) | 1; coeff_VLC[intra][last][offset - level][run].len =3D 30; } #else if (!intra) { coeff_VLC[intra][last][0][run].code =3D (ESCAPE3 << 21) | (last << 20) | (run << 14) | (1 << 13) | = ((-32 & 0xfff) << 1) | 1; coeff_VLC[intra][last][0][run].len =3D 30; } #endif } } /************************************************************************= ***** * Local inlined functions for MB coding = *************************************************************************= ***/ static __inline void CodeVector(Bitstream * bs, int32_t value, int32_t f_code, Statistics * pStat) { const int scale_factor =3D 1 << (f_code - 1); const int cmp =3D scale_factor << 5; if (value < (-1 * cmp)) value +=3D 64 * scale_factor; if (value > (cmp - 1)) value -=3D 64 * scale_factor; pStat->iMvSum +=3D value * value; pStat->iMvCount++; if (value =3D=3D 0) { BitstreamPutBits(bs, mb_motion_table[32].code, mb_motion_table[32].len); } else { uint16_t length, code, mv_res, sign; length =3D 16 << f_code; f_code--; sign =3D (value < 0); if (value >=3D length) value -=3D 2 * length; else if (value < -length) value +=3D 2 * length; if (sign) value =3D -value; value--; mv_res =3D value & ((1 << f_code) - 1); code =3D ((value - mv_res) >> f_code) + 1; if (sign) code =3D -code; code +=3D 32; BitstreamPutBits(bs, mb_motion_table[code].code, mb_motion_table[code].len); if (f_code) BitstreamPutBits(bs, mv_res, f_code); } } #ifdef __BIGLUT_ static __inline void CodeCoeff(Bitstream * bs, const int16_t qcoeff[64], VLC * table, const uint16_t * zigzag, uint16_t intra) { uint32_t j, last; short v; VLC *vlc; j =3D intra; last =3D intra; while (j < 64 && (v =3D qcoeff[zigzag[j]]) =3D=3D 0) j++; do { vlc =3D table + 64 * 2048 + (v << 6) + j - last; last =3D ++j; /* count zeroes */ while (j < 64 && (v =3D qcoeff[zigzag[j]]) =3D=3D 0) j++; /* write code */ if (j !=3D 64) { BitstreamPutBits(bs, vlc->code, vlc->len); } else { vlc +=3D 64 * 4096; BitstreamPutBits(bs, vlc->code, vlc->len); break; } } while (1); } #else static __inline void CodeCoeffInter(Bitstream * bs, const int16_t qcoeff[64], const uint16_t * zigzag) { uint32_t i, run, prev_run, code, len; int32_t level, prev_level, level_shifted; i =3D 0; run =3D 0; while (!(level =3D qcoeff[zigzag[i++]])) run++; prev_level =3D level; prev_run =3D run; run =3D 0; while (i < 64) { if ((level =3D qcoeff[zigzag[i++]]) !=3D 0) { level_shifted =3D prev_level + 32; if (!(level_shifted & -64)) { code =3D coeff_VLC[0][0][level_shifted][prev_run].code; len =3D coeff_VLC[0][0][level_shifted][prev_run].len; } else { code =3D (ESCAPE3 << 21) | (prev_run << 14) | (1 << 13) | = ((prev_level & 0xfff) << 1) | 1; len =3D 30; } BitstreamPutBits(bs, code, len); prev_level =3D level; prev_run =3D run; run =3D 0; } else run++; } level_shifted =3D prev_level + 32; if (!(level_shifted & -64)) { code =3D coeff_VLC[0][1][level_shifted][prev_run].code; len =3D coeff_VLC[0][1][level_shifted][prev_run].len; } else { code =3D (ESCAPE3 << 21) | (1 << 20) | (prev_run << 14) | (1 << 13) | = ((prev_level & 0xfff) << 1) | 1; len =3D 30; } BitstreamPutBits(bs, code, len); } static __inline void CodeCoeffIntra(Bitstream * bs, const int16_t qcoeff[64], const uint16_t * zigzag) { uint32_t i, abs_level, run, prev_run, code, len; int32_t level, prev_level; i =3D 1; run =3D 0; while (!(level =3D qcoeff[zigzag[i++]])) run++; prev_level =3D level; prev_run =3D run; run =3D 0; while (i < 64) { if ((level =3D qcoeff[zigzag[i++]]) !=3D 0) { abs_level =3D ABS(prev_level); abs_level =3D abs_level < 64 ? abs_level : 0; code =3D coeff_VLC[1][0][abs_level][prev_run].code; len =3D coeff_VLC[1][0][abs_level][prev_run].len; if (len !=3D 128) code |=3D (prev_level < 0); else { code =3D (ESCAPE3 << 21) | (prev_run << 14) | (1 << 13) | = ((prev_level & 0xfff) << 1) | 1; len =3D 30; } BitstreamPutBits(bs, code, len); prev_level =3D level; prev_run =3D run; run =3D 0; } else run++; } abs_level =3D ABS(prev_level); abs_level =3D abs_level < 64 ? abs_level : 0; code =3D coeff_VLC[1][1][abs_level][prev_run].code; len =3D coeff_VLC[1][1][abs_level][prev_run].len; if (len !=3D 128) code |=3D (prev_level < 0); else { code =3D (ESCAPE3 << 21) | (1 << 20) | (prev_run << 14) | (1 << 13) | = ((prev_level & 0xfff) << 1) | 1; len =3D 30; } BitstreamPutBits(bs, code, len); } #endif /************************************************************************= ***** * Local functions = *************************************************************************= ***/ static void CodeBlockIntra(const FRAMEINFO * frame, const MACROBLOCK * pMB, int16_t qcoeff[6 * 64], Bitstream * bs, Statistics * pStat) { uint32_t i, mcbpc, cbpy, bits; cbpy =3D pMB->cbp >> 2; /* write mcbpc */ if (frame->coding_type =3D=3D I_VOP) { mcbpc =3D ((pMB->mode >> 1) & 3) | ((pMB->cbp & 3) << 2); BitstreamPutBits(bs, mcbpc_intra_tab[mcbpc].code, mcbpc_intra_tab[mcbpc].len); } else { mcbpc =3D (pMB->mode & 7) | ((pMB->cbp & 3) << 3); BitstreamPutBits(bs, mcbpc_inter_tab[mcbpc].code, mcbpc_inter_tab[mcbpc].len); } /* ac prediction flag */ if (pMB->acpred_directions[0]) BitstreamPutBits(bs, 1, 1); else BitstreamPutBits(bs, 0, 1); /* write cbpy */ BitstreamPutBits(bs, cbpy_tab[cbpy].code, cbpy_tab[cbpy].len); /* write dquant */ if (pMB->mode =3D=3D MODE_INTRA_Q) BitstreamPutBits(bs, pMB->dquant, 2); /* write interlacing */ if (frame->global_flags & XVID_INTERLACING) { BitstreamPutBit(bs, pMB->field_dct); } /* code block coeffs */ for (i =3D 0; i < 6; i++) { if (i < 4) BitstreamPutBits(bs, dcy_tab[qcoeff[i * 64 + 0] + 255].code, dcy_tab[qcoeff[i * 64 + 0] + 255].len); else BitstreamPutBits(bs, dcc_tab[qcoeff[i * 64 + 0] + 255].code, dcc_tab[qcoeff[i * 64 + 0] + 255].len); if (pMB->cbp & (1 << (5 - i))) { bits =3D BitstreamPos(bs); #ifdef _BIGLUT_ CodeCoeff(bs, &qcoeff[i * 64], intra_table, scan_tables[pMB->acpred_directions[i]], 1); #else CodeCoeffIntra(bs, &qcoeff[i * 64], = scan_tables[pMB->acpred_directions[i]]); #endif bits =3D BitstreamPos(bs) - bits; pStat->iTextBits +=3D bits; } } } static void CodeBlockInter(const FRAMEINFO * frame, const MACROBLOCK * pMB, int16_t qcoeff[6 * 64], Bitstream * bs, Statistics * pStat) { int32_t i; uint32_t bits, mcbpc, cbpy; mcbpc =3D (pMB->mode & 7) | ((pMB->cbp & 3) << 3); cbpy =3D 15 - (pMB->cbp >> 2); /* write mcbpc */ BitstreamPutBits(bs, mcbpc_inter_tab[mcbpc].code, mcbpc_inter_tab[mcbpc].len); /* write cbpy */ BitstreamPutBits(bs, cbpy_tab[cbpy].code, cbpy_tab[cbpy].len); /* write dquant */ if (pMB->mode =3D=3D MODE_INTER_Q) BitstreamPutBits(bs, pMB->dquant, 2); /* interlacing */ if (frame->global_flags & XVID_INTERLACING) { if (pMB->cbp) { BitstreamPutBit(bs, pMB->field_dct); DPRINTF(DPRINTF_DEBUG, "codep: field_dct: %d", pMB->field_dct); } /* if inter block, write field ME flag */ if (pMB->mode =3D=3D MODE_INTER || pMB->mode =3D=3D MODE_INTER_Q) { BitstreamPutBit(bs, pMB->field_pred); DPRINTF(DPRINTF_DEBUG, "codep: field_pred: %d", pMB->field_pred); /* write field prediction references */ if (pMB->field_pred) { BitstreamPutBit(bs, pMB->field_for_top); BitstreamPutBit(bs, pMB->field_for_bot); } } } /* code motion vector(s) */ for (i =3D 0; i < (pMB->mode =3D=3D MODE_INTER4V ? 4 : 1); i++) { CodeVector(bs, pMB->pmvs[i].x, frame->fcode, pStat); CodeVector(bs, pMB->pmvs[i].y, frame->fcode, pStat); } bits =3D BitstreamPos(bs); /* code block coeffs */ for (i =3D 0; i < 6; i++) if (pMB->cbp & (1 << (5 - i))) #ifdef _BIGLUT_ CodeCoeff(bs, &qcoeff[i * 64], inter_table, scan_tables[0], 0); #else CodeCoeffInter(bs, &qcoeff[i * 64], scan_tables[0]); #endif bits =3D BitstreamPos(bs) - bits; pStat->iTextBits +=3D bits; } /************************************************************************= ***** * Macro Block bitstream encoding functions = *************************************************************************= ***/ void MBCoding(const FRAMEINFO * frame, MACROBLOCK * pMB, int16_t qcoeff[6 * 64], Bitstream * bs, Statistics * pStat) { if (frame->coding_type =3D=3D P_VOP) { BitstreamPutBit(bs, 0); /* coded */ } if (pMB->mode =3D=3D MODE_INTRA || pMB->mode =3D=3D MODE_INTRA_Q) CodeBlockIntra(frame, pMB, qcoeff, bs, pStat); else CodeBlockInter(frame, pMB, qcoeff, bs, pStat); } void MBSkip(Bitstream * bs) { BitstreamPutBit(bs, 1); /* not coded */ return; } /************************************************************************= ***** * decoding stuff starts here = *************************************************************************= ***/ /* * For IVOP addbits =3D=3D 0 * For PVOP addbits =3D=3D fcode - 1 * For BVOP addbits =3D=3D max(fcode,bcode) - 1 * returns true or false */ int=20 check_resync_marker(Bitstream * bs, int addbits) { uint32_t nbits; uint32_t code; uint32_t nbitsresyncmarker =3D NUMBITS_VP_RESYNC_MARKER + addbits; nbits =3D BitstreamNumBitsToByteAlign(bs); code =3D BitstreamShowBits(bs, nbits); if (code =3D=3D (((uint32_t)1 << (nbits - 1)) - 1)) { return BitstreamShowBitsFromByteAlign(bs, nbitsresyncmarker) =3D=3D = RESYNC_MARKER; } return 0; } int get_mcbpc_intra(Bitstream * bs) { uint32_t index; index =3D BitstreamShowBits(bs, 9); index >>=3D 3; BitstreamSkip(bs, mcbpc_intra_table[index].len); return mcbpc_intra_table[index].code; } int get_mcbpc_inter(Bitstream * bs) { uint32_t index; =09 index =3D CLIP(BitstreamShowBits(bs, 9), 256); BitstreamSkip(bs, mcbpc_inter_table[index].len); return mcbpc_inter_table[index].code; } int get_cbpy(Bitstream * bs, int intra) { int cbpy; uint32_t index =3D BitstreamShowBits(bs, 6); BitstreamSkip(bs, cbpy_table[index].len); cbpy =3D cbpy_table[index].code; if (!intra) cbpy =3D 15 - cbpy; return cbpy; } int get_mv_data(Bitstream * bs) { uint32_t index; if (BitstreamGetBit(bs)) return 0; index =3D BitstreamShowBits(bs, 12); if (index >=3D 512) { index =3D (index >> 8) - 2; BitstreamSkip(bs, TMNMVtab0[index].len); return TMNMVtab0[index].code; } if (index >=3D 128) { index =3D (index >> 2) - 32; BitstreamSkip(bs, TMNMVtab1[index].len); return TMNMVtab1[index].code; } index -=3D 4; BitstreamSkip(bs, TMNMVtab2[index].len); return TMNMVtab2[index].code; } int get_mv(Bitstream * bs, int fcode) { int data; int res; int mv; int scale_fac =3D 1 << (fcode - 1); data =3D get_mv_data(bs); if (scale_fac =3D=3D 1 || data =3D=3D 0) return data; res =3D BitstreamGetBits(bs, fcode - 1); mv =3D ((ABS(data) - 1) * scale_fac) + res + 1; return data < 0 ? -mv : mv; } int get_dc_dif(Bitstream * bs, uint32_t dc_size) { int code =3D BitstreamGetBits(bs, dc_size); int msb =3D code >> (dc_size - 1); if (msb =3D=3D 0) return (-1 * (code ^ ((1 << dc_size) - 1))); return code; } int get_dc_size_lum(Bitstream * bs) { int code, i; code =3D BitstreamShowBits(bs, 11); for (i =3D 11; i > 3; i--) { if (code =3D=3D 1) { BitstreamSkip(bs, i); return i + 1; } code >>=3D 1; } BitstreamSkip(bs, dc_lum_tab[code].len); return dc_lum_tab[code].code; } int get_dc_size_chrom(Bitstream * bs) { uint32_t code, i; code =3D BitstreamShowBits(bs, 12); for (i =3D 12; i > 2; i--) { if (code =3D=3D 1) { BitstreamSkip(bs, i); return i; } code >>=3D 1; } return 3 - BitstreamGetBits(bs, 2); } /************************************************************************= ***** * Local inlined function to "decode" written vlc codes = *************************************************************************= ***/ static __inline int get_coeff(Bitstream * bs, int *run, int *last, int intra, int short_video_header) { uint32_t mode; int32_t level; REVERSE_EVENT *reverse_event; if (short_video_header) /* inter-VLCs will be used for both intra and = inter blocks */ intra =3D 0; if (BitstreamShowBits(bs, 7) !=3D ESCAPE) { reverse_event =3D &DCT3D[intra][BitstreamShowBits(bs, 12)]; if ((level =3D reverse_event->event.level) =3D=3D 0) goto error; *last =3D reverse_event->event.last; *run =3D reverse_event->event.run; BitstreamSkip(bs, reverse_event->len); return BitstreamGetBits(bs, 1) ? -level : level; } BitstreamSkip(bs, 7); if (short_video_header) { /* escape mode 4 - H.263 type, only used if short_video_header =3D 1 = */ *last =3D BitstreamGetBit(bs); *run =3D BitstreamGetBits(bs, 6); level =3D BitstreamGetBits(bs, 8); if (level =3D=3D 0 || level =3D=3D 128) DPRINTF(DPRINTF_ERROR, "Illegal LEVEL for ESCAPE mode 4: %d", level); return (level << 24) >> 24; } mode =3D BitstreamShowBits(bs, 2); if (mode < 3) { BitstreamSkip(bs, (mode =3D=3D 2) ? 2 : 1); reverse_event =3D &DCT3D[intra][BitstreamShowBits(bs, 12)]; if ((level =3D reverse_event->event.level) =3D=3D 0) goto error; *last =3D reverse_event->event.last; *run =3D reverse_event->event.run; BitstreamSkip(bs, reverse_event->len); if (mode < 2) /* first escape mode, level is offset */ level +=3D max_level[intra][*last][*run]; else /* second escape mode, run is offset */ *run +=3D max_run[intra][*last][level] + 1; return BitstreamGetBits(bs, 1) ? -level : level; } /* third escape mode - fixed length codes */ BitstreamSkip(bs, 2); *last =3D BitstreamGetBits(bs, 1); *run =3D BitstreamGetBits(bs, 6); BitstreamSkip(bs, 1); /* marker */ level =3D BitstreamGetBits(bs, 12); BitstreamSkip(bs, 1); /* marker */ return (level << 20) >> 20; error: *run =3D VLC_ERROR; return 0; } /************************************************************************= ***** * MB reading functions = *************************************************************************= ***/ void get_intra_block(Bitstream * bs, int16_t * block, int direction, int coeff) { const uint16_t *scan =3D scan_tables[direction]; int level; int run; int last; do { level =3D get_coeff(bs, &run, &last, 1, 0); if (run =3D=3D -1) { DPRINTF(DPRINTF_DEBUG, "fatal: invalid run"); break; } coeff +=3D run; block[scan[coeff]] =3D level; DPRINTF(DPRINTF_COEFF,"block[%i] %i", scan[coeff], level); /*DPRINTF(DPRINTF_COEFF,"block[%i] %i %08x", scan[coeff], level, = BitstreamShowBits(bs, 32)); */ if (level < -2047 || level > 2047) { DPRINTF(DPRINTF_DEBUG, "warning: intra_overflow: %d", level); } coeff++; } while (!last); } void get_inter_block(Bitstream * bs, int16_t * block) { const uint16_t *scan =3D scan_tables[0]; int p; int level; int run; int last; p =3D 0; do { level =3D get_coeff(bs, &run, &last, 0, 0); if (run =3D=3D -1) { DPRINTF(DPRINTF_ERROR, "fatal: invalid run"); break; } p +=3D run; block[scan[p]] =3D level; DPRINTF(DPRINTF_COEFF,"block[%i] %i", scan[p], level); if (level < -2047 || level > 2047) { DPRINTF(DPRINTF_DEBUG, "warning: inter_overflow: %d", level); } p++; } while (!last); } ------=_NextPart_000_000C_01C2B579.2D833900-- From xvid-devel@xvid.org Mon Jan 6 13:24:14 2003 From: xvid-devel@xvid.org (Marco Al) Date: Mon, 6 Jan 2003 14:24:14 +0100 Subject: [XviD-devel] VLC Message-ID: <012101c2b586$e809d9c0$bca45982@student.utwente.nl> This is a multi-part message in MIME format. ------=_NextPart_000_011E_01C2B58F.49B42A10 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Hmm the old init was a bit of a mess, I should have tried to understand the old code before plodding along ... it worked, but it looks a lot nicer with this diff. I tested it on a fairly large movie, could someone verify it works correctly and apply it to stable? (_BIGLUT_ was broken too because of a faulty #ifdef, fixed now). Marco ------=_NextPart_000_011E_01C2B58F.49B42A10 Content-Type: text/plain; name="diff.txt" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="diff.txt" 69c69 < /*#define _BIGLUT_*/ --- > /*#define BIGLUT*/ 71c71 < #ifdef _BIGLUT_ --- > #ifdef BIGLUT 83c83 < #ifdef _BIGLUT_ --- > #ifdef BIGLUT 85c85 < VLC *intra_table, *inter_table;=20 --- > static VLC *intra_table, *inter_table;=20 97,99c97 < uint32_t i, j, intra, last, run, offset; < int32_t level; < VLC coeff_VLC_temp[2][2][64][64]; --- > uint32_t i, j, intra, last, run, run_esc, level, level_esc, escape, = escape_len, offset; 101c99 < #ifdef _BIGLUT_ --- > #ifdef BIGLUT 117c115 < #ifdef _BIGLUT_ --- > #ifdef BIGLUT 122d119 < coeff_VLC_temp[intra][last][level][run].len =3D 128; 130c127 < #ifdef _BIGLUT_ --- > #ifdef BIGLUT 141,145d137 < = coeff_VLC_temp[intra][coeff_tab[intra][i].event.last][coeff_tab[intra][i]= .event.level][coeff_tab[intra][i].event.run].code < =3D coeff_tab[intra][i].vlc.code << 1; < = coeff_VLC_temp[intra][coeff_tab[intra][i].event.last][coeff_tab[intra][i]= .event.level][coeff_tab[intra][i].event.run].len < =3D coeff_tab[intra][i].vlc.len + 1; <=20 150c142 < #ifndef _BIGLUT_ --- > #ifndef BIGLUT 167c159,162 < #ifdef _BIGLUT_ --- > if (level <=3D max_level[intra][last][run] && run <=3D = max_run[intra][last][level]) > continue; >=20 > #ifdef BIGLUT 172,174c167,182 < if ((max_level[intra][last][run]) && (level > = max_level[intra][last][run])) < if (coeff_VLC_temp[intra][last][level - = max_level[intra][last][run]][run].len !=3D 128 < && coeff_VLC[intra][last][level + offset][run].len =3D=3D 128) --- > level_esc =3D level - max_level[intra][last][run]; > run_esc =3D run - 1 - max_run[intra][last][level]; > /*use this test to use shorter esc2 codes when possible > if (level_esc <=3D max_level[intra][last][run] && run <=3D = max_run[intra][last][level_esc] > && !(coeff_VLC[intra][last][level_esc + offset][run].len + 7 + 1 > > coeff_VLC[intra][last][level + offset][run_esc].code + 7 + = 2))*/ >=20 > if (level_esc <=3D max_level[intra][last][run] && run <=3D = max_run[intra][last][level_esc]) > { > escape =3D ESCAPE1; > escape_len =3D 7 + 1; > run_esc =3D run; > } > else > { > if (level <=3D max_level[intra][last][run_esc] && run_esc <=3D = max_run[intra][last][level]) 176,190c184,186 < coeff_VLC[intra][last][level + offset][run].code < =3D (ESCAPE1 << coeff_VLC_temp[intra][last][level - = max_level[intra][last][run]][run].len) < | coeff_VLC_temp[intra][last][level - = max_level[intra][last][run]][run].code; < coeff_VLC[intra][last][level + offset][run].len < =3D coeff_VLC_temp[intra][last][level - = max_level[intra][last][run]][run].len + 7 + 1; < #ifndef _BIGLUT_ < if (!intra) < #endif < { < coeff_VLC[intra][last][offset - level][run].code < =3D (ESCAPE1 << coeff_VLC_temp[intra][last][level - = max_level[intra][last][run]][run].len) < | coeff_VLC_temp[intra][last][level - = max_level[intra][last][run]][run].code | 1; < coeff_VLC[intra][last][offset - level][run].len < =3D coeff_VLC_temp[intra][last][level - = max_level[intra][last][run]][run].len + 7 + 1; < } --- > escape =3D ESCAPE2; > escape_len =3D 7 + 2; > level_esc =3D level; 192,197c188 < if (run > max_run[intra][last][level]) < if (coeff_VLC_temp[intra][last][level][run - 1 - = max_run[intra][last][level]].len !=3D 128 < && coeff_VLC[intra][last][level + offset][run].len =3D=3D 128) < /*use the lower test instead of the upper to use shorter escape = codes when possible : < if (coeff_VLC_temp[intra][last][level][run - 1 - = max_run[intra][last][level]].len + 7 + 2 < < coeff_VLC[intra][last][level + offset][run].len)*/ --- > else 199,204c190 < coeff_VLC[intra][last][level + offset][run].code < =3D (ESCAPE2 << coeff_VLC_temp[intra][last][level][run - 1 - = max_run[intra][last][level]].len) < | coeff_VLC_temp[intra][last][level][run - 1 - = max_run[intra][last][level]].code; < coeff_VLC[intra][last][level + offset][run].len < =3D coeff_VLC_temp[intra][last][level][run - 1 - = max_run[intra][last][level]].len + 7 + 2; < #ifndef _BIGLUT_ --- > #ifndef BIGLUT 208,212c194,199 < coeff_VLC[intra][last][offset - level][run].code < =3D (ESCAPE2 << coeff_VLC_temp[intra][last][level][run - 1 - = max_run[intra][last][level]].len) < | coeff_VLC_temp[intra][last][level][run - 1 - = max_run[intra][last][level]].code | 1; < coeff_VLC[intra][last][offset - level][run].len < =3D coeff_VLC_temp[intra][last][level][run - 1 - = max_run[intra][last][level]].len + 7 + 2; --- > coeff_VLC[intra][last][level + offset][run].code > =3D (ESCAPE3 << 21) | (last << 20) | (run << 14) | (1 << 13) = | ((level & 0xfff) << 1) | 1; > coeff_VLC[intra][last][level + offset][run].len =3D 30; > coeff_VLC[intra][last][offset - level][run].code > =3D (ESCAPE3 << 21) | (last << 20) | (run << 14) | (1 << 13) = | ((-level & 0xfff) << 1) | 1; > coeff_VLC[intra][last][offset - level][run].len =3D 30; 213a201 > continue; 215c203,210 < #ifndef _BIGLUT_ --- > } >=20 > coeff_VLC[intra][last][level + offset][run].code > =3D (escape << coeff_VLC[intra][last][level_esc + = offset][run_esc].len) > | coeff_VLC[intra][last][level_esc + offset][run_esc].code; > coeff_VLC[intra][last][level + offset][run].len > =3D coeff_VLC[intra][last][level_esc + offset][run_esc].len + = escape_len; > #ifndef BIGLUT 218,227c213,219 < if (coeff_VLC[intra][last][level + offset][run].len =3D=3D 128) < { < coeff_VLC[intra][last][level + offset][run].code < =3D (ESCAPE3 << 21) | (last << 20) | (run << 14) | (1 << 13) | = ((level & 0xfff) << 1) | 1; < coeff_VLC[intra][last][level + offset][run].len =3D 30; <=20 < coeff_VLC[intra][last][offset - level][run].code < =3D (ESCAPE3 << 21) | (last << 20) | (run << 14) | (1 << 13) | = ((-level & 0xfff) << 1) | 1; < coeff_VLC[intra][last][offset - level][run].len =3D 30; < } --- > { > coeff_VLC[intra][last][offset - level][run].code > =3D (escape << coeff_VLC[intra][last][level_esc + = offset][run_esc].len) > | coeff_VLC[intra][last][level_esc + offset][run_esc].code | = 1; > coeff_VLC[intra][last][offset - level][run].len > =3D coeff_VLC[intra][last][level_esc + offset][run_esc].len + = escape_len; > } 229c221,222 < #ifdef _BIGLUT_ --- >=20 > #ifdef BIGLUT 310c303 < #ifdef __BIGLUT_ --- > #ifdef BIGLUT 522c515 < #ifdef _BIGLUT_ --- > #ifdef BIGLUT 591c584 < #ifdef _BIGLUT_ --- > #ifdef BIGLUT ------=_NextPart_000_011E_01C2B58F.49B42A10-- From xvid-devel@xvid.org Mon Jan 6 13:26:46 2003 From: xvid-devel@xvid.org (Christian HJ Wiesner) Date: Mon, 06 Jan 2003 14:26:46 +0100 Subject: [XviD-devel] Re: Conversion Tool from DivX3/4 to MPEG4 ISO, both based on Windows and Linux - paid job offer from Neuston !!! In-Reply-To: <3E193E07.9030301@users.sf.net> References: <3E193E07.9030301@users.sf.net> Message-ID: <3E198416.3040803@web.de> Christian HJ Wiesner wrote: > > Hi guys, > > i am in contact with Tan Ju Hian, the assistant sales Director of > neuston ( http://neuston.com ). > > > Main job was : > > - read DivX3/Angelpotion/SMR/MPEG4V3 and convert to MPEG4ISO Sorry if i was unclear here, this conversion process has to be done WITHOUT reencoding ( -h from XviD Team said it should be possible AFAIK, dont ask me about details though ). The whole process should not take longer than 20 - 30 minutes, and process needs to be fully automatic. Biggest inconvenience for the user here should be burning the new CD ;-) .... Please accept my apologies for any inconvenience this unprecise description may have caused. Regards C. Wiesner From xvid-devel@xvid.org Tue Jan 7 03:25:41 2003 From: xvid-devel@xvid.org (Florin Andrei) Date: 06 Jan 2003 19:25:41 -0800 Subject: [XviD-devel] SGI Irix port In-Reply-To: References: Message-ID: <1041909941.1681.26.camel@rivendell.home.local> On Mon, 2003-01-06 at 01:26, Christoph Lampert wrote: > On 5 Jan 2003, Florin Andrei wrote: > > welcome back! Thanks! :-) > > A while ago, i asked if you are interested in making XviD work on SGI > > Irix. Someone from this mailing list answered positively, but after that > > we've kinda lost contact. > > Maybe it was me? Yes, Christian, it was you. ;-) > I can't really help in porting to SGI (although I _love_ > the SGI compiler :-), A lot of people love it, because of its thoroughness and because it's so pedantic ("anal" is the word used by some). If you have the smallest shadow of an error in your sources, it will surely let you know, loud and clear. PureFTPd was churned through it, to iron out bugs, before the 1.0.0 release. Possibly some other projects too, that i can't remember right now. > because I don't have access to a SGI machine anymore. :((( I can fix that. > So, I would be very interested in ssh access, maybe you could create an > "xvid" account and we continue the discussion by private mail? Ok, so then tomorrow i'll drive to work instead of walking, because i'll have to carry my tiny Indy (hey, it's actually an R5K MIPS, full 64bit architecture, don't make fun of it please :-D) to the office to reinstall it (much better over the LAN than through some crappy VPN thing). I'll let you know (on your private address) when i'm done. > That would be great! I guess it shouldn't be too much work to get XviD > to compile on Irix, and I'm pretty sure that other tools like transcode > and mplayer already exist there, too. xine also was ported and i've heard it works fine (but of course i doubt there's any decent DivX support for it yet on Irix). On transcode-users mailing list there was, like a year ago, a cool thread about some crazy guys from Germany who attempted to run transcode on a medium-sized SGI Origin 3800 (128 CPUs, 64 GB RAM). They managed to obtain a couple hundred frames per second when converting from DVD to DivX, but that's because their DivX codec was completely unoptimised; possibly, with an optimised codec, they might have been obtained some kframe/sec or so. :-O > Next step would be assembler or multimedia-library optimization (MDMX > instruction set, isn't it?). I don't know anyone who could do that, but > maybe we can wait until it's time for that to find someone... If I > remember correctly, you might find somebody directly at SGI? At least i can ask. Yeah, ok, i'll post a question to an internal forum. But if you want to do the low-level stuff yourself, i can ask for documentation, which is a much easier question. :-) For starters: http://techpubs.sgi.com/library/tpl/cgi-bin/init.cgi Talk to you later, -- Florin Andrei http://florin.myip.org/ From xvid-devel@xvid.org Tue Jan 7 08:41:31 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 7 Jan 2003 09:41:31 +0100 (CET) Subject: [XviD-devel] SGI Irix port In-Reply-To: <1041909941.1681.26.camel@rivendell.home.local> Message-ID: On 6 Jan 2003, Florin Andrei wrote: > But if you want to do the low-level stuff yourself, i can ask for > documentation, which is a much easier question. :-) For starters: > > http://techpubs.sgi.com/library/tpl/cgi-bin/init.cgi I doubt it, I'm pretty busy myself, no time to dig into a new assember language. But once the C stuff is running, I'm sure there will be someone in the wide world who wants to watch DivX fullscreen and will be willing to help. gruel From xvid-devel@xvid.org Tue Jan 7 10:12:44 2003 From: xvid-devel@xvid.org (Christian HJ Wiesner) Date: Tue, 07 Jan 2003 11:12:44 +0100 Subject: [XviD-devel] Re: Conversion Tool from DivX3/4 to MPEG4 ISO, both based on Windows and Linux - paid job offer from Neuston !!! In-Reply-To: <3E193E07.9030301@users.sf.net> References: <3E193E07.9030301@users.sf.net> Message-ID: <3E1AA81C.90502@web.de> Christian HJ Wiesner wrote: > > Hi guys, > > i am in contact with Tan Ju Hian, the assistant sales Director of > neuston ( http://neuston.com ). Similar to KiSS with their DP450 unit > they are about to launch a DivX compatible hardware standalone player > ( http://neuston.com/dvx_1201.asp and http://neuston.com/dvx_1307.asp > ) and i am talking to them about the potential problems to be > exptected with AVI as container. They are investigating if alternative > containers such as MP4, OGM or maybe even matroska could be used as > AVI replacement and therefore want to include a conversion software > tool to help customers with AVIs that play without sync, as they fear > the impact on their service departments if playback problems with AVI > files will occur ( and these are very likely to happen as you know ). I am briefly infroming you that work on the conversion tool hast started, to avoid any form of double work .Please check here to learn more about the details in case you are planning to contribute to the project : http://forum.doom9.org/showthread.php?s=&postid=236848#post236848 This will be the last email of this form to all the lists that were copied, in future the status of the project has to be read from the thread above. Special thanks to the FFMPEG team for delivering the base work to make such a conversion tool possible. Best regards Christian HJ Wiesner http://matroska.org From xvid-devel@xvid.org Tue Jan 7 14:23:27 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Wed, 08 Jan 2003 01:23:27 +1100 Subject: [XviD-devel] status of bframes? In-Reply-To: References: Message-ID: <20030108011908.1C55.SUXEN_DROL@hotmail.com> On Sun, 5 Jan 2003 21:20:03 -0000 "Jim Hauxwell" wrote: > The only way to get this encode working anywhere reasonable was to turn > interlacing off. Even lowering the max quantizer didn't work. I guess > bframes don't work with interlacing at the moment? correct. xvidcore\src\utils\mbtransquant.c::MBTransQuantInterBVOP needs modification. -- pete; life is like a box of ammo From xvid-devel@xvid.org Tue Jan 7 14:39:38 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 7 Jan 2003 15:39:38 +0100 (CET) Subject: [XviD-devel] Status of... Message-ID: Hi, what's the status of "reduced resolution"? Is it stable? Should it be in the branch at all, which is supposed to become ASP? I'm asking because I don't know how to combine GMC and reduced resolution. Is it possible at all? What happens to the prediction vectors etc.? And since I'm at it: Can somebody tell me exactly how the combination of GMC and Quarterpel should look like? As far as I know, motion compensation for GMC in quarterpel mode is done with _bilinear interpolation_, not with any filtering. But for vectors which lie outside the VOP area the GMC part refers to some other section and this also deals with boundary block mirroring. Can somebody (Michael?, Pete?) enlighten me what to do? gruel From xvid-devel@xvid.org Tue Jan 7 15:03:50 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Wed, 08 Jan 2003 02:03:50 +1100 Subject: [XviD-devel] Status of... In-Reply-To: References: Message-ID: <20030108015329.1C58.SUXEN_DROL@hotmail.com> On Tue, 7 Jan 2003 15:39:38 +0100 (CET) Christoph Lampert wrote: > > Hi, > > what's the status of "reduced resolution"? Is it stable? Should it be in rrv "works", but ive not done enough testing to deem it stable. > the branch at all, which is supposed to become ASP? I'm asking because > I don't know how to combine GMC and reduced resolution. Is it possible > at all? What happens to the prediction vectors etc.? the specification does not describe how they are combined either. reduced + qpel/gmc/interlacing is forbidden (unless we want to propose a mpeg-4 ammendment..) > And since I'm at it: Can somebody tell me exactly how the combination of > GMC and Quarterpel should look like? As far as I know, motion compensation > for GMC in quarterpel mode is done with _bilinear interpolation_, not with > any filtering. But for vectors which lie outside the VOP area the GMC part > refers to some other section and this also deals with boundary block > mirroring. Can somebody (Michael?, Pete?) enlighten me what to do? a gmc vector is no different than a regular mv vector; standard boundary padding (image_setedges) applies. -- pete; life is like a box of ammo From xvid-devel@xvid.org Tue Jan 7 15:42:46 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Wed, 08 Jan 2003 02:42:46 +1100 Subject: [XviD-devel] qpel smearing/noise problem [fixed] Message-ID: <20030108021417.1C5E.SUXEN_DROL@hotmail.com> hi, we need to replace our idct. the present mmx/xmm code (peter gubanov/mpeg2dec) produces errors, which become quite visibile in quarterpel mode. our current integer idct also produces qpels errors.. which makes me curious about the sse2/ppc/ia64 stuff. anyway, i think we should switch to michael niedermayer/ffmpeg's simple_idct. it is fast and produces much less error. simple_idct_mmx is written in gas... so will anyone object to me commiting a nasm'd version? -- pete From xvid-devel@xvid.org Tue Jan 7 17:22:40 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Wed, 08 Jan 2003 04:22:40 +1100 Subject: [XviD-devel] Re: qpel smearing/noise problem Message-ID: <20030108033627.EAE8.SUXEN_DROL@hotmail.com> > hi, > we need to replace our idct. the present mmx/xmm code (peter > gubanov/mpeg2dec) produces errors, which become quite visibile in > quarterpel mode. our current integer idct also produces qpels errors.. > which makes me curious about the sse2/ppc/ia64 stuff. > > anyway, i think we should switch to michael niedermayer/ffmpeg's > simple_idct. it is fast and produces much less error. > simple_idct_mmx is written in gas... so will anyone object to me > commiting a nasm'd version? > i retract my previous statement it seems simple_idct is prone to h+v qpel interpolation error. (where as the mpeg2dec idct was more prone to h qpel interpolation) i conclude that quarterpel amplifies idct error. maybe wee need to enforce an intra macroblock refresh every 132/4 frames, or use ieee_floating_point_reference_idct, or maybe pull qpel entirely? :-( this explains why h.264/avc uses an integer transform for 8th & 16th-pel interpolation. -- pete; life is like a box of ammo From xvid-devel@xvid.org Sun Jan 5 03:32:22 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sun, 05 Jan 2003 14:32:22 +1100 Subject: [XviD-devel] [f]emms / intrisics In-Reply-To: References: <20030105002920.13F1.SUXEN_DROL@hotmail.com> Message-ID: <20030105142830.158C.SUXEN_DROL@hotmail.com> On Sat, 4 Jan 2003 14:52:58 +0100 (CET) Christoph Lampert wrote: > On Sun, 5 Jan 2003, suxen_drol wrote: > > > > the emms_mmx and emms_3dn functions could be moved to nasm to avoid > > compiler problems... and avoid having to defined EMMS() macros in > > portab.h. i have moved them to cpuid.asm. > They are only 1 instruction, aren't they? > So nasming them would be kind of overhead... true. > > > > or, would y'all rather switch intrinsics? > > > Your decision... I don't care, I don't speak ASM (except for 68K & MIPS). > > Would we get all our current NASM code transformed into intrisitrics? > Or should we run both in parallel then? stick with nasm ; if it aint broken, dont fix it. -- pete From xvid-devel@xvid.org Tue Jan 7 23:23:45 2003 From: xvid-devel@xvid.org (Michael Militzer) Date: Wed, 8 Jan 2003 00:23:45 +0100 Subject: [XviD-devel] Re: qpel smearing/noise problem References: <20030108033627.EAE8.SUXEN_DROL@hotmail.com> Message-ID: <000901c2b6a3$d85cf390$1702a8c0@michipc> Hi, ----- Original Message ----- From: "suxen_drol" To: Sent: Tuesday, January 07, 2003 6:22 PM Subject: [XviD-devel] Re: qpel smearing/noise problem > > > hi, > > > we need to replace our idct. the present mmx/xmm code (peter > > gubanov/mpeg2dec) produces errors, which become quite visibile in > > quarterpel mode. our current integer idct also produces qpels errors.. > > which makes me curious about the sse2/ppc/ia64 stuff. > > > > anyway, i think we should switch to michael niedermayer/ffmpeg's > > simple_idct. it is fast and produces much less error. > > simple_idct_mmx is written in gas... so will anyone object to me > > commiting a nasm'd version? > > > > i retract my previous statement > it seems simple_idct is prone to h+v qpel interpolation error. > (where as the mpeg2dec idct was more prone to h qpel interpolation) > > i conclude that quarterpel amplifies idct error. > maybe wee need to enforce an intra macroblock refresh every 132/4 frames, > or use ieee_floating_point_reference_idct, or maybe pull qpel > entirely? :-( > I don't think that replacing our idct will really help us here: idct error gets compensated, so the error itself is not that much of a problem. The core problem is that different idct implementations introduce different sorts of errors. Therefore if a different idct is used for decoding than in encoding, the reference pictures will get more and more out of sync between encoder and decoder over time which leads to artifacts (smearing). Switching to floating point reference idct won't help (artifacts could be even worse instead) because most decoders will use an idct which introduces much bigger errors than reference idct and therefore encoder and decoder's reference pictures will again run out of sync. I see the following ways to solve the problem: 1) use xvid for decoding xvid content (encoder+decoder share same idct = no problems) 2) implement the 132 inter macroblocks limit and check if this helps 3) reread the iso specs. I remember a sentence similar to this one: "idct has to meet IEEE1180 requirements with the following modifications: ..." - so our idct might be IEEE compliant but is maybe not compatible to the mpeg-4 standard... 4) try to agree on one idct implementation between all the various mpeg-4 decoders (impossible, but at least xvid and ffmpeg could agree on one common idct, maybe divx also) bye, Michael From xvid-devel@xvid.org Tue Jan 7 23:50:30 2003 From: xvid-devel@xvid.org (Michael Militzer) Date: Wed, 8 Jan 2003 00:50:30 +0100 Subject: [XviD-devel] Status of... References: <20030108015329.1C58.SUXEN_DROL@hotmail.com> Message-ID: <001501c2b6a7$93d5a100$1702a8c0@michipc> Hi, ----- Original Message ----- From: "suxen_drol" To: Sent: Tuesday, January 07, 2003 4:03 PM Subject: Re: [XviD-devel] Status of... [...] > > the branch at all, which is supposed to become ASP? I'm asking because > > I don't know how to combine GMC and reduced resolution. Is it possible > > at all? What happens to the prediction vectors etc.? > > > the specification does not describe how they are combined either. > reduced + qpel/gmc/interlacing is forbidden (unless we want to propose a > mpeg-4 ammendment..) > iirc, rrv is advanced realtime profile which has none of the more advanced mpeg-4 tools (means no bframes, no qpel and no gmc). So while reduced resolution might give some benefit (over pure simple profile), it should always be inferior to an ASP stream. Therefore the reduced resolution feature is quite useless for us imho... bye, Michael From xvid-devel@xvid.org Wed Jan 8 08:25:14 2003 From: xvid-devel@xvid.org (Marco Al) Date: Wed, 8 Jan 2003 09:25:14 +0100 Subject: [XviD-devel] Re: qpel smearing/noise problem References: <20030108033627.EAE8.SUXEN_DROL@hotmail.com> <000901c2b6a3$d85cf390$1702a8c0@michipc> Message-ID: <000901c2b6ef$77d2fc30$bca45982@student.utwente.nl> Michael Militzer wrote: > 3) reread the iso specs. I remember a sentence similar to this one: "idct > has to meet IEEE1180 requirements with the following modifications: ..." - > so our idct might be IEEE compliant but is maybe not compatible to the > mpeg-4 standard... How about finally putting the 0 check behind the iDCT in transquant? It is only 20 instructions or so ... Marco From xvid-devel@xvid.org Wed Jan 8 09:07:40 2003 From: xvid-devel@xvid.org (Michael Niedermayer) Date: Wed, 8 Jan 2003 10:07:40 +0100 Subject: [XviD-devel] Re: qpel smearing/noise problem In-Reply-To: <000901c2b6a3$d85cf390$1702a8c0@michipc> References: <20030108033627.EAE8.SUXEN_DROL@hotmail.com> <000901c2b6a3$d85cf390$1702a8c0@michipc> Message-ID: <200301081007.40828.michaelni@gmx.at> Hi On Wednesday 08 January 2003 00:23, Michael Militzer wrote: [...] > > > we need to replace our idct. the present mmx/xmm code (peter > > > gubanov/mpeg2dec) produces errors, which become quite visibile in > > > quarterpel mode. our current integer idct also produces qpels errors.. > > > which makes me curious about the sse2/ppc/ia64 stuff. > > > > > > anyway, i think we should switch to michael niedermayer/ffmpeg's > > > simple_idct. it is fast and produces much less error. > > > simple_idct_mmx is written in gas... so will anyone object to me > > > commiting a nasm'd version? > > > > i retract my previous statement > > it seems simple_idct is prone to h+v qpel interpolation error. > > (where as the mpeg2dec idct was more prone to h qpel interpolation) [...] > I see the following ways to solve the problem: > 1) use xvid for decoding xvid content (encoder+decoder share same idct = no > problems) do u have a C IDCT which has bit identical output to the MMX one? otherwise u would have to force C or MMX for qpel content, and the later would mean that the videos wouldnt be decodeable without artifacts on non x86 hardware > 2) implement the 132 inter macroblocks limit and check if this helps as the 132 check is done for co-located MBs there is some risk that due to motion the slightly messed up area isnt cleaned and accumulates more artifacts, but except this i would guess that a inter limit is the most reasonable solution for IDCT difference problems > 3) reread the iso specs. I remember a sentence similar to this one: "idct > has to meet IEEE1180 requirements with the following modifications: ..." - > so our idct might be IEEE compliant but is maybe not compatible to the > mpeg-4 standard... hmm i doubt that, IIRC the extra rules are quite weak > 4) try to agree on one idct implementation between all the various mpeg-4 > decoders (impossible, but at least xvid and ffmpeg could agree on one > common idct, maybe divx also) difficult because of different optimized IDCTs, (mlib, arm, ppc, ps2, alpha) IDCTs in ffmpeg, i doubt that their output is bit identical, and just disabling them and using the c IDCT would mean a speed loss for these platforms which would be unfair IMHO btw, can someone share/(send me/upload) a qpel sample which decodes differently with different IDCTs? i havnt seen qpel-idct problems yet but i didnt really searched for them either [...] Michael From xvid-devel@xvid.org Wed Jan 8 11:15:00 2003 From: xvid-devel@xvid.org (Marco Al) Date: Wed, 8 Jan 2003 12:15:00 +0100 Subject: [XviD-devel] Re: qpel smearing/noise problem Message-ID: <000d01c2b707$2f2fefc0$bca45982@student.utwente.nl> Michael Militzer wrote: > 3) reread the iso specs. I remember a sentence similar to this one: "idct > has to meet IEEE1180 requirements with the following modifications: ..." - > so our idct might be IEEE compliant but is maybe not compatible to the > mpeg-4 standard... How about finally putting the 0 check behind the iDCT in transquant? It is only 20 instructions or so ... Marco From xvid-devel@xvid.org Wed Jan 8 11:31:57 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Wed, 8 Jan 2003 12:31:57 +0100 (CET) Subject: [XviD-devel] Re: qpel smearing/noise problem In-Reply-To: <000901c2b6a3$d85cf390$1702a8c0@michipc> Message-ID: Hi, On Wed, 8 Jan 2003, Michael Militzer wrote: > I see the following ways to solve the problem: > 1) use xvid for decoding xvid content (encoder+decoder share same idct = no > problems) Hm, not good, since we want to create high quality MPEG-4 video, not high quality XVID video. > 2) implement the 132 inter macroblocks limit and check if this helps Easiest way for testing: Make max_keyframe_interval=132 (for non-bframe-encoding) and see what happens. Most likely, this won't be enough. > 3) reread the iso specs. I remember a sentence similar to this one: "idct > has to meet IEEE1180 requirements with the following modifications: ..." - > so our idct might be IEEE compliant but is maybe not compatible to the > mpeg-4 standard... -------------------------------------------------------------------- The N by N inverse discrete transform shall conform to IEEE Standard Specification for the Implementations of 8 by 8 Inverse Discrete Cosine Transform, Std 1180-1990, December 6, 1990, with the following modifications : 1) In item (1) of subclause 3.2 of the IEEE specification, the last sentence is replaced by: "Data sets of 1 000 000 (one million) blocks each should be generated for (L=256, H=255), (L=H=5) and (L=384, H=383)." 2) The text of subclause 3.3 of the IEEE specification is replaced by : "For any pixel location, the peak error shall not exceed 2 in magnitude. There is no other accuracy requirement for this test." 3) Let F be the set of 4096 blocks Bi[y][x] (i=0..4095) defined as follows: a) Bi[0][0] = i - 2048 b) Bi[7][7] = 1 if Bi[0][0] is even, Bi[7][7] = 0 if Bi[0][0] is odd c) All other coefficients Bi[y][x] other than Bi[0][0] and Bi[7][7] are equal to 0 For each block Bi[y][x] that belongs to set F defined above, an IDCT that claims to be compliant shall output a block f[y][x] that as a peak error of 1 or less compared to the reference saturated mathematical integer-number IDCT f(x,y). In other words, | f[y][x] - f(x,y)| shall be <= 1 for all x and y. NOTE 1 Clause 2.3 Std 1180-1990 Considerations of Specifying IDCT Mismatch Errors requires the specification of periodic intra-picture coding in order to control the accumulation of mismatch errors. Every macroblock is required to be refreshed before it is coded 132 times as predictive macroblocks. Macroblocks in B-pictures (and skipped macroblocks in P-pictures) are excluded from the counting because they do not lead to the accumulation of mismatch errors. This requirement is the same as indicated in 1180-1990 for visual telephony according to ITU-T Recommendation H.261. NOTE 2 Whilst the IEEE IDCT standard mentioned above is a necessary condition for the satisfactory implementation of the IDCT function it should be understood that this is not sufficient. In particular attention is drawn to the following sentence from subclause 5.4: Where arithmetic precision is not specified, such as the calculation of the IDCT, the precision shall be sufficient so that significant errors do not occur in the final integer values. ---------------------------------------------------------------- I guess the programmers checked 2). But do we also fulfill 3) ? > 4) try to agree on one idct implementation between all the various mpeg-4 > decoders (impossible, but at least xvid and ffmpeg could agree on one common > idct, maybe divx also) As 1), quality should not depend on the decoder, if it is without bounds of MPEG-4. So 5) Check if a) this happens with other encoders, too (ffmpeg? divx?) b) we really do correct rounding in Qpel MPEG-4 surely was tested against these errors, and they came up with the 132 predicted MBs rule. If this is not sufficient for us, it might very well have something to do with out implementation. gruel From xvid-devel@xvid.org Wed Jan 8 18:36:46 2003 From: xvid-devel@xvid.org (Roberto Della Pasqua) Date: Wed, 8 Jan 2003 19:36:46 +0100 Subject: [XviD-devel] please help ^_^ Message-ID: <046501c2b744$e65ba4e0$3232a8c0@pc01> This is a multi-part message in MIME format. ------=_NextPart_000_0462_01C2B74D.47A2C690 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi! I'm sorry to disturb, I like to know if I can embed the xvid mpeg4 codec into a commercial = application... Is it possible? Which kind of license I need to achieve with xvid staff? Its enough insert the xvid informations into credit and copyrght = section? Really thanks, perhaps does exist a "chief" that follow and rapresent the xdiv group? Bye bye, Robi. ------=_NextPart_000_0462_01C2B74D.47A2C690 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi!
 
I'm sorry to disturb,
 
I like to know if I can embed the xvid = mpeg4 codec=20 into a commercial application...
 
Is it possible?
 
Which kind of license I need to achieve = with xvid=20 staff?
 
Its enough insert the xvid informations = into credit=20 and copyrght section?
 
Really thanks,
 
perhaps does exist a "chief" that = follow and=20 rapresent the xdiv group?
 
Bye bye,
 
Robi.
------=_NextPart_000_0462_01C2B74D.47A2C690-- From xvid-devel@xvid.org Wed Jan 8 19:31:36 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Wed, 8 Jan 2003 20:31:36 +0100 (CET) Subject: [XviD-devel] Re: qpel smearing/noise problem In-Reply-To: Message-ID: On Wed, 8 Jan 2003, Christoph Lampert wrote: > 3) Let F be the set of 4096 blocks Bi[y][x] (i=0..4095) defined as follows: > > a) Bi[0][0] = i - 2048 > b) Bi[7][7] = 1 if Bi[0][0] is even, Bi[7][7] = 0 if Bi[0][0] is odd > c) All other coefficients Bi[y][x] other than Bi[0][0] and Bi[7][7] are > equal to 0 > > For each block Bi[y][x] that belongs to set F defined above, an IDCT that > claims to be compliant shall output a block f[y][x] that as a peak error > of 1 or less compared to the reference saturated mathematical > integer-number IDCT f(x,y). > > In other words, | f[y][x] - f(x,y)| shall be <= 1 for all x and y. It seems we pass this, too, at least if one compares results of idct_int32, idct_mmx and idct_xmm with the reference idct (as in xvid_bench.c). gruel From xvid-devel@xvid.org Thu Jan 9 11:35:17 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Thu, 9 Jan 2003 12:35:17 +0100 (CET) Subject: [XviD-devel] please help ^_^ In-Reply-To: <046501c2b744$e65ba4e0$3232a8c0@pc01> Message-ID: On Wed, 8 Jan 2003, Roberto Della Pasqua wrote: > Hi! > > I'm sorry to disturb, Hi, no problem, but please don't post the same question more than once. > I like to know if I can embed the xvid mpeg4 codec into a commercial > application... "commercial" yes, but "proprietary" no. If you want to create software which uses XVID you must follow the rules of GPL, which is: * The source code of the application (both XVID and your application(!) ) must be available, distributed together with the application itself. * Re-Distribution and modification of your application must be allowed free of charge. * some other terms which you can read in the GPL FAQ at http://www.gnu.org/licenses If you don't plan to release the sources and/or if you don't want to allow free redistribution etc., you MAY NOT base your application on XVID. > Which kind of license I need to achieve with xvid staff? XVID is released under GNU GPL, see above. > Its enough insert the xvid informations into credit and copyrght section? No! Definitely NO! > Really thanks, > > perhaps does exist a "chief" that follow and rapresent the xdiv group? There is no "chief" and we are not called "xdiv". If you have further questions, write to contact@xvid.org. Christoph -- Christoph H. Lampert chl@math,uni-bonn,de | Diese Signature wurde maschi- Beringstr. 6, Zi. 15, 53115 Bonn, Germany | nell erstellt und bedarf Tel. (0228) 73-4708 Fax. +49 228 73-7916 | keiner Unterschrift. AZ 27B-6 From xvid-devel@xvid.org Thu Jan 9 12:19:36 2003 From: xvid-devel@xvid.org (Radek Czyz) Date: Thu, 9 Jan 2003 22:49:36 +1030 Subject: [XviD-devel] Re: qpel smearing/noise problem In-Reply-To: References: Message-ID: <414295286.20030109224936@syskin.cjb.net> This problem is - obviously - not only related to idct. However, the results are very strange: When XviD idct was used, xvid could decode everything correctly, but ffdshow with xvid idct - couldn't. When 'simple' idct was used in xvid, ffdshow (with 'simple' or 'reference' idct) is able to decode H and V interpolation correctly - but not HV. No other changes has been made to anything. Does anyone has any explanation? There must be an explanation for this... HV interpolation wasn't decoded correctly in any case - using reference idct, both in encoder and decoder, didn't help either. Does anyone remember where can I find in the specs, what size of block is used for halfpel interpolation in qpel mode? I've been doing all my experiments both on 8x8 blocks and 16x16 blocks, simply because I don't know which is correct. I'v been looking for it, but I havn't found the answer. Radek From xvid-devel@xvid.org Thu Jan 9 12:56:54 2003 From: xvid-devel@xvid.org (James Hauxwell) Date: Thu, 9 Jan 2003 12:56:54 -0000 Subject: [XviD-devel] Re: qpel smearing/noise problem In-Reply-To: <414295286.20030109224936@syskin.cjb.net> Message-ID: <001301c2b7de$95e9b7a0$5c0c81a4@enterprise> In qpel mode you can have 8x8 and 16x16 blocks The process is 8tap filter horizontal Bilinear filter horizontal 8tap filter vertical Bilinear filter vertical If you are only half pel then you only need to the 8tap horizontal/vertical interpolation Maybe under both H&V you are not doing the filtering in the correct order. This would explain the problems. Jim -----Original Message----- From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org] On Behalf Of radoslaw@syskin.cjb.net Sent: 09 January 2003 12:20 To: xvid-devel@xvid.org Subject: Re: [XviD-devel] Re: qpel smearing/noise problem This problem is - obviously - not only related to idct. However, the results are very strange: When XviD idct was used, xvid could decode everything correctly, but ffdshow with xvid idct - couldn't. When 'simple' idct was used in xvid, ffdshow (with 'simple' or 'reference' idct) is able to decode H and V interpolation correctly - but not HV. No other changes has been made to anything. Does anyone has any explanation? There must be an explanation for this... HV interpolation wasn't decoded correctly in any case - using reference idct, both in encoder and decoder, didn't help either. Does anyone remember where can I find in the specs, what size of block is used for halfpel interpolation in qpel mode? I've been doing all my experiments both on 8x8 blocks and 16x16 blocks, simply because I don't know which is correct. I'v been looking for it, but I havn't found the answer. Radek _______________________________________________ XviD-devel mailing list XviD-devel@xvid.org http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Thu Jan 9 13:06:48 2003 From: xvid-devel@xvid.org (Michael Niedermayer) Date: Thu, 9 Jan 2003 14:06:48 +0100 Subject: [XviD-devel] Re: qpel smearing/noise problem In-Reply-To: <414295286.20030109224936@syskin.cjb.net> References: <414295286.20030109224936@syskin.cjb.net> Message-ID: <200301091406.48765.michaelni@gmx.at> Hi On Thursday 09 January 2003 13:19, Radek Czyz wrote: [...] > Does anyone remember where can I find in the specs, what size of block > is used for halfpel interpolation in qpel mode? I've been doing all my > experiments both on 8x8 blocks and 16x16 blocks, simply because I don't > know which is correct. I'v been looking for it, but I havn't found the > answer. for 1MV the lowpass filter is done on a 17x17 block with the boundary mirrored for 4MV its done on 9x9 block with the boundary mirrored all just IMHO ... AFAIK, the reason behind this weird boundary mirroring is btw, to reduce the memory bandwidth needed for fetching the blocks in hardware implementations the number of fetched bytes for 1mv with mirroring 17x17 = 289 1mv without mirroring 23x23 = 529 4mv with mirroring 9 x 9x4= 324 4mv without mirroring 15x15x4= 900 so its quite significant worst case reduction [...] Michael From xvid-devel@xvid.org Thu Jan 9 14:08:51 2003 From: xvid-devel@xvid.org (Michael Niedermayer) Date: Thu, 9 Jan 2003 15:08:51 +0100 Subject: [XviD-devel] Re: qpel smearing/noise problem In-Reply-To: <001301c2b7de$95e9b7a0$5c0c81a4@enterprise> References: <001301c2b7de$95e9b7a0$5c0c81a4@enterprise> Message-ID: <200301091508.51262.michaelni@gmx.at> Hi On Thursday 09 January 2003 13:56, James Hauxwell wrote: > In qpel mode you can have 8x8 and 16x16 blocks > > The process is > 8tap filter horizontal > Bilinear filter horizontal > 8tap filter vertical > Bilinear filter vertical damn, i forgot that, ffmpeg does what the standart says, not what the reference software does, so thats very likely the problem, only question is which is correct? AFAIK its the reference sw which is correct, does anyone have any authorative awnser? [...] Michael From xvid-devel@xvid.org Thu Jan 9 14:19:12 2003 From: xvid-devel@xvid.org (James Hauxwell) Date: Thu, 9 Jan 2003 14:19:12 -0000 Subject: [XviD-devel] Re: qpel smearing/noise problem In-Reply-To: <200301091508.51262.michaelni@gmx.at> Message-ID: <001401c2b7ea$15432f30$5c0c81a4@enterprise> There has been an corrigendum to 14496-2 to modify the spec it to how the reference software works. I have a copy of it, but can't send it. Jim -----Original Message----- From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org] On Behalf Of michaelni@gmx.at Sent: 09 January 2003 14:09 To: xvid-devel@xvid.org Subject: Re: [XviD-devel] Re: qpel smearing/noise problem Hi On Thursday 09 January 2003 13:56, James Hauxwell wrote: > In qpel mode you can have 8x8 and 16x16 blocks > > The process is > 8tap filter horizontal > Bilinear filter horizontal > 8tap filter vertical > Bilinear filter vertical damn, i forgot that, ffmpeg does what the standart says, not what the reference software does, so thats very likely the problem, only question is which is correct? AFAIK its the reference sw which is correct, does anyone have any authorative awnser? [...] Michael _______________________________________________ XviD-devel mailing list XviD-devel@xvid.org http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Thu Jan 9 15:13:01 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Thu, 9 Jan 2003 16:13:01 +0100 (CET) Subject: [XviD-devel] Re: qpel smearing/noise problem In-Reply-To: <200301091508.51262.michaelni@gmx.at> Message-ID: On Thu, 9 Jan 2003, Michael Niedermayer wrote: > Hi > > On Thursday 09 January 2003 13:56, James Hauxwell wrote: > > In qpel mode you can have 8x8 and 16x16 blocks > > > > The process is > > 8tap filter horizontal > > Bilinear filter horizontal > > 8tap filter vertical > > Bilinear filter vertical > damn, i forgot that, ffmpeg does what the standart says, not what the > reference software does, so thats very likely the problem, only question is > which is correct? The reference software is correct (well, in fact the standard has been modified to be in compliance with the software. That's a clever way of debugging: leave the software as it is, instead modify the specs. ) gruel From xvid-devel@xvid.org Thu Jan 9 15:41:45 2003 From: xvid-devel@xvid.org (Michael Niedermayer) Date: Thu, 9 Jan 2003 16:41:45 +0100 Subject: [XviD-devel] Re: qpel smearing/noise problem In-Reply-To: References: Message-ID: <200301091641.45358.michaelni@gmx.at> Hi On Thursday 09 January 2003 16:13, Christoph Lampert wrote: > On Thu, 9 Jan 2003, Michael Niedermayer wrote: > > Hi > > > > On Thursday 09 January 2003 13:56, James Hauxwell wrote: > > > In qpel mode you can have 8x8 and 16x16 blocks > > > > > > The process is > > > 8tap filter horizontal > > > Bilinear filter horizontal > > > 8tap filter vertical > > > Bilinear filter vertical > > > > damn, i forgot that, ffmpeg does what the standart says, not what the > > reference software does, so thats very likely the problem, only question > > is which is correct? > > The reference software is correct (well, in fact the standard has been > modified to be in compliance with the software. That's a clever way > of debugging: leave the software as it is, instead modify the specs. ) ok, i believe u both, ill fix ffmpeg btw, ISO sucks, 1. because the standarts are not freely available 2. because they change them at random 3. these ugly patents .... 4. they are bloated with strange features which noone will ever use i hope tarkin will be finished soon, allthough i havnt seen much activity on their mailinglist ... [...] Michael From xvid-devel@xvid.org Thu Jan 9 16:36:35 2003 From: xvid-devel@xvid.org (Michael Militzer) Date: Thu, 9 Jan 2003 17:36:35 +0100 Subject: [XviD-devel] Re: qpel smearing/noise problem References: <414295286.20030109224936@syskin.cjb.net> Message-ID: <006101c2b7fd$46fdc400$1702a8c0@michipc> Hi, ----- Original Message ----- From: "Radek Czyz" To: Sent: Thursday, January 09, 2003 1:19 PM Subject: Re: [XviD-devel] Re: qpel smearing/noise problem > This problem is - obviously - not only related to idct. > > However, the results are very strange: > > When XviD idct was used, xvid could decode everything correctly, but > ffdshow with xvid idct - couldn't. > > When 'simple' idct was used in xvid, ffdshow (with 'simple' or > 'reference' idct) is able to decode H and V interpolation correctly - > but not HV. No other changes has been made to anything. > Does anyone has any explanation? There must be an explanation for > this... yes, there is an explanation. My qpel interpolation code follows the reference implementation (and the ISO spec corrigendum). The corrigendum changes the way how HV interpolation has to be done. So if ffmpeg does not follow the reference software (and it looks like it does not), then it's quite logical that HV interpolated blocks are not correctly decoded. > HV interpolation wasn't decoded correctly in any case - using > reference idct, both in encoder and decoder, didn't help either. > > Does anyone remember where can I find in the specs, what size of block > is used for halfpel interpolation in qpel mode? I've been doing all my > experiments both on 8x8 blocks and 16x16 blocks, simply because I don't > know which is correct. I'v been looking for it, but I havn't found the > answer. The current implementation in XVID should be correct. Regardless whether we're in halfpel or in qpel mode, there should be always performed a 16x16 interpolation for normal INTER blocks, 16x8 with interlacing and 8x8 for 4MV mode. Yes, we always do 8x8 interpolation in halfpel mode regardless of the current block mode we have, but that's correct because 4 * 8x8 bilinear interpolation is the same as one 16x16 bilinear interpolation, so in halfpel mode there is no need for special code which allows different block sizes. Due to boundary mirroring in qpel mode however, 4 * 8x8 filtering is not identical to 1 * 16x16... bye, Michael From xvid-devel@xvid.org Thu Jan 9 17:51:23 2003 From: xvid-devel@xvid.org (Venkata Tumati) Date: Thu, 9 Jan 2003 12:51:23 -0500 Subject: [XviD-devel] MVO, and SGI perfex In-Reply-To: <20030107110001.10505.96427.Mailman@edu.bnhof.de> Message-ID: <004a01c2b807$ba0a3c30$58783b18@hanuman> Hi, As was suggested in a previous email regarding encoding multiple visual objects. I created multiple instances of encoder. I was encoding three VO (three YUV files) so I created three instances and stored them sequentially in a file. Now for performance analysis how close does this come to the mpeg4 standard of encoding multiple visual objects? Was any SGI perfex analysis done with XVID. Thank you. -Venkata From xvid-devel@xvid.org Thu Jan 9 21:18:50 2003 From: xvid-devel@xvid.org (Michael Niedermayer) Date: Thu, 9 Jan 2003 22:18:50 +0100 Subject: [XviD-devel] Re: qpel smearing/noise problem In-Reply-To: <200301091641.45358.michaelni@gmx.at> References: <200301091641.45358.michaelni@gmx.at> Message-ID: <200301092218.51329.michaelni@gmx.at> Hi On Thursday 09 January 2003 16:41, Michael Niedermayer wrote: > On Thursday 09 January 2003 16:13, Christoph Lampert wrote: > > On Thu, 9 Jan 2003, Michael Niedermayer wrote: > > > On Thursday 09 January 2003 13:56, James Hauxwell wrote: > > > > In qpel mode you can have 8x8 and 16x16 blocks > > > > > > > > The process is > > > > 8tap filter horizontal > > > > Bilinear filter horizontal > > > > 8tap filter vertical > > > > Bilinear filter vertical > > > > > > damn, i forgot that, ffmpeg does what the standart says, not what the > > > reference software does, so thats very likely the problem, only > > > question is which is correct? > > > > The reference software is correct (well, in fact the standard has been > > modified to be in compliance with the software. That's a clever way > > of debugging: leave the software as it is, instead modify the specs. ) > > ok, i believe u both, ill fix ffmpeg ok, done btw i allso reproduced the IDCT qpel difference problem (see http://www.mplayerhq.hu/~michael/qpel-test.avi) for the video, its encoded with qpel / simpleidct with different constant qpel vectors in different areas of the image, it cant be decoded without artifacts with a different IDCT, allthough its a unfair test as the constant pattern with constant vectors will lead to a catastrophic accumulation of errors (if a IDCT "error" ever happens in a block, then it will very likely happen over and over again for the same block ...) [...] Michael From xvid-devel@xvid.org Fri Jan 10 03:16:33 2003 From: xvid-devel@xvid.org (xvid-devel@xvid.org) Date: Fri, 10 Jan 2003 11:16:33 +0800 Subject: [XviD-devel] Re: qpel smearing/noise problem Message-ID: &9,0%H MIME .f&!Hi >On Thursday 09 January 2003 16:41, Michael Niedermayer wrote: >> On Thursday 09 January 2003 16:13, Christoph Lampert wrote: >> > On Thu, 9 Jan 2003, Michael Niedermayer wrote: >> > The reference software is correct (well, in fact the standard has been >> > modified to be in compliance with the software. That's a clever way >> > of debugging: leave the software as it is, instead modify the specs. ) >> >> ok, i believe u both, ill fix ffmpeg >ok, done >btw i allso reproduced the IDCT qpel difference problem >(see http://www.mplayerhq.hu/~michael/qpel-test.avi) for the video, its >encoded with qpel / simpleidct with different constant qpel vectors in >different areas of the image, it cant be decoded without artifacts with a >different IDCT, allthough its a unfair test as the constant pattern with >constant vectors will lead to a catastrophic accumulation of errors (if a >IDCT "error" ever happens in a block, then it will very likely happen over >and over again for the same block ...) > >[...] > >Michael So... is it the problem I sent in XviD mailing list last October? ([XviD-devel] Quarterpel problem.) -- Jeanson Hung BU2, ADMtek Inc. Phone: 03-5788879-521 --=_alternative 0012029948256CAA_= Content-Type: text/html; charset="us-ascii"


>Hi

>On Thursday 09 January 2003 16:41, Michael Niedermayer wrote:
>> On Thursday 09 January 2003 16:13, Christoph Lampert wrote:
>> > On Thu, 9 Jan 2003, Michael Niedermayer wrote:
>> > The reference software is correct (well, in fact the standard has been
>> > modified to be in compliance with the software. That's a clever way
>> > of debugging: leave the software as it is, instead modify the specs. )
>>
>> ok, i believe u both, ill fix ffmpeg
>ok, done

>btw i allso reproduced the IDCT qpel difference problem
>(see http://www.mplayerhq.hu/~michael/qpel-test.avi) for the video, its
>encoded with qpel / simpleidct with different constant qpel vectors in
>different areas of the image, it cant be decoded without artifacts with a
>different IDCT, allthough its a unfair test as the constant pattern with
>constant vectors will lead to a catastrophic accumulation of errors (if a
>IDCT "error" ever happens in a block, then it will very likely happen over
>and over again for the same block ...)
>
>[...]
>
>Michael


So... is it the problem I sent in XviD mailing list last October?
([XviD-devel] Quarterpel problem.)

--
Jeanson Hung
BU2, ADMtek Inc.
Phone: 03-5788879-521

--=_alternative 0012029948256CAA_=-- From xvid-devel@xvid.org Fri Jan 10 11:12:06 2003 From: xvid-devel@xvid.org (Michael Militzer) Date: Fri, 10 Jan 2003 12:12:06 +0100 Subject: [XviD-devel] Re: qpel smearing/noise problem References: Message-ID: <002b01c2b89a$152e5eb0$1702a8c0@michipc> Hi, [...] > So... is it the problem I sent in XviD mailing list last October? > ([XviD-devel] Quarterpel problem.) no, we were basically talking about the following two problems (which caused the smearing): a) the reference software implements qpel in a different way than what the standard says and b) using different idct implementations in de- and encoder can lead to artifacts, qpel seems to amplify this problem The problems you mentioned earlier were problems specific to the CVS HEAD qpel code. This code had been abandoned for quite a long time already. The "real" development is done on our dev-api-3 cvs branch and the qpel code of our dev-api-3 source tree was free of all bugs you described already back in october. bye, Michael From xvid-devel@xvid.org Fri Jan 10 15:27:19 2003 From: xvid-devel@xvid.org (Kostas) Date: Fri, 10 Jan 2003 10:27:19 -0500 Subject: [XviD-devel] Test Streams for xvid en/-decoder Message-ID: Hello to all, I am trying to do some measurements on the real-time performance of the xvid codec. I am currently working on the windows (XP) flavour of the codec.My problem is that I don't have any tool to generate test streams (YV12 streams , if I am wrong pls. correct me).Similarly I don't have in mind any codecs, that reads the output of the xvid decoder. My question is whether you have in mind any player/transcoder that could help me generate/view the test streams in MS Windows environment. Thank you in advance, Koby _____________________________________________________________ Get 25MB, POP3, Spam Filtering with LYCOS MAIL PLUS for $19.95/year. http://login.mail.lycos.com/brandPage.shtml?pageId=plus&ref=lmtplus From xvid-devel@xvid.org Fri Jan 10 19:11:13 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Fri, 10 Jan 2003 20:11:13 +0100 Subject: [XviD-devel] halfpel and maybe quarterpel interpolation questions Message-ID: <200301102011.13679.elcabesa@inwind.it> hi another time i'm here to disturb you, sorry=) i have some question, i'm looking at image_interpolation function and i see that when it's called for halfpel interpolation, it make new pixels simply using a linear interpolation. i don't know if i'm right.. but using a FIR bigger than the one used for linear interpolation won't make it work better? going back to one dimension formula you are using a fir with these coefficents 0.5 1 0.5 may be using a bigger fir.. something like a 9 coefficent FIR insthead of a 3 coeff FIR it would make a better interpolation, and would guide xvid to a better motion estimation? (i don't know if the interpolated image is then used for motion estimation) i don't know nothing about qpel interpolation algorithm.. but maybe it can also improve it if you tell that it could help i could try to test it , for halfpel and report what i found see you From xvid-devel@xvid.org Fri Jan 10 21:36:58 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 10 Jan 2003 22:36:58 +0100 (CET) Subject: [XviD-devel] FYI: Qpel in Reference Message-ID: Hi, maybe it's already corrected, but if it's not: Reference-Software has a Qpel bug, too: From http://mpeg.telecomitalialab.com/working_documents/mpeg-04/visual/visual_implementers_guide.zip There are some more issues (chromaMV in QPel B-frames...) please check the document yourself. gruel ------------------------------------------------------------- A truncation error of the chrominance field MV with quarter_pel_mode P/S-VOP (Momusys version)Problem : ISO/IEC 14496-2 Section 7.6.5 says, "Motion vector MVDCHR for both chrominance blocks is derived by calculating the sum of the K luminance vectors, that corresponds to K 8x8 blocks that do not lie outside the VOP shape and dividing this sum by 2*K; in quarter sample mode the vectors are divided by 2 before summation." The ?division by 2? is usually implemented as ?/ 2? in the reference software. However, the reference software shows a funny result only for the vertical part of the chrominance field MV with quarter_pel_mode. For adjustThe ?division by 2? is usually implemented as ?/ 2? in the reference software. However, the reference software shows a funny result only for the vertical part of the chrominance field MV with quarter_pel_mode. For adjusting to the frame based scale, the vertical part has been multiplied by 2 before the chrominance MV calculation. The current implementation may forget returning back the adjustment. Solution : Line 4354 in mot_comp.c L4354?line 3768 of OptSimple version? replace dy = (Int)(2*yvec[0]); with dy = (Int)(2*yvec[0])/2*2; Line 4534 in mot_comp.c?line 3948 of OptSimple version? replace dy = (Int)(2*yvec[1]); with dy = (Int)(2*yvec[1])/2*2; From xvid-devel@xvid.org Sat Jan 11 11:27:00 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 11 Jan 2003 12:27:00 +0100 (CET) Subject: [XviD-devel] halfpel and maybe quarterpel interpolation questions In-Reply-To: <200301102011.13679.elcabesa@inwind.it> Message-ID: On Fri, 10 Jan 2003, Marco "elcabesa" Belli wrote: > hi > another time i'm here to disturb you, sorry=) > > i have some question, i'm looking at image_interpolation function and i see > that when it's called for halfpel interpolation, it make new pixels simply > using a linear interpolation. > i don't know if i'm right.. but using a FIR bigger than the one used for > linear interpolation won't make it work better? We can't decide on these things ourselves, it's the MPEG-4 standard that demands linear interpolation for halfpel-resolution. Btw. for Quarterpel there is some FIR, also fixed by the standard. gruel From xvid-devel@xvid.org Sat Jan 11 13:14:01 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Sat, 11 Jan 2003 14:14:01 +0100 Subject: [XviD-devel] halfpel and maybe quarterpel interpolation questions In-Reply-To: References: Message-ID: <200301111414.01795.elcabesa@inwind.it> > We can't decide on these things ourselves, it's the MPEG-4 standard that > demands linear interpolation for halfpel-resolution. Btw. for Quarterpel > there is some FIR, also fixed by the standard. ok i have understood.. and i have understood also why they decide for a linear interpolation for it, using a FIR i went down to 6 fps, using your linear interpolation i encode at 13 pfs forcing xvid to use only not assembler optimized code=) where can i find some MPEG-4 spec? i downloaded reference software..but i cant' understand toomuch from it.. i'm also a student..so i have not much money From xvid-devel@xvid.org Sat Jan 11 13:45:20 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 11 Jan 2003 14:45:20 +0100 (CET) Subject: [XviD-devel] Don't do " signed /= unsigned " Message-ID: Hi, I just found out a nasty side effect and wanted to warn those of you who didn't know about it (like me): Don't divide signed values by unsigned! At least in gcc 2.95 and 3.2 the division will be done as unsigned and the result will be wrong! I don't know if this is what ANSI C demands, but it's annoying! Please check yourself with the test program. In branch motion_comp.c there is a line dx /= (1+quarterpel) and this gives me wrong results if dx is signed int (which it is) and quarterpel is unsigned (which I declared that way, since it's a 0 or 1 flag). Division is then done unsigned! So dx=-2, quarterpel=1 leads to dx = 2 Billion (dx= 0x7FFFFFFF) Boy, it took me a while to find this, because in previous version of motion_comp the lines were if (quarterpel) dx/=2; which works flawlessly with unsigned quarterpel, too. gruel ---------------------- void main() { int dx=-2; const unsigned int q=1; dx /= 1+q; printf("dx=%d\n",dx); } Output: dx=2147483647 From xvid-devel@xvid.org Sat Jan 11 14:09:03 2003 From: xvid-devel@xvid.org (Radek Czyz) Date: Sun, 12 Jan 2003 00:39:03 +1030 Subject: [XviD-devel] Don't do " signed /= unsigned " In-Reply-To: References: Message-ID: <13342673641.20030112003903@syskin.cjb.net> Hi, gruel wrote > In branch motion_comp.c there is a line > dx /= (1+quarterpel) > and this gives me wrong results if dx is signed int (which it is) > and quarterpel is unsigned (which I declared that way, since it's a 0 or > 1 flag). Division is then done unsigned! now you know why I made this signed ;) I think that division is faster than if - am I correct? However, I'm sure that some kind of bitshift would be even faster... do you know a way to make it a bitshift, but dividing negative values correctly? Radek PS: @gruel, how's your GME going? :) From xvid-devel@xvid.org Sat Jan 11 14:16:52 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 11 Jan 2003 15:16:52 +0100 (CET) Subject: [XviD-devel] halfpel and maybe quarterpel interpolation questions In-Reply-To: <200301111414.01795.elcabesa@inwind.it> Message-ID: On Sat, 11 Jan 2003, Marco "elcabesa" Belli wrote: > > > We can't decide on these things ourselves, it's the MPEG-4 standard that > > demands linear interpolation for halfpel-resolution. Btw. for Quarterpel > > there is some FIR, also fixed by the standard. > > ok i have understood.. and i have understood also why they decide for a linear > interpolation for it, using a FIR i went down to 6 fps, using your linear > interpolation i encode at 13 pfs forcing xvid to use only not assembler > optimized code=) > > where can i find some MPEG-4 spec? i downloaded reference software..but i > cant' understand toomuch from it.. i'm also a student..so i have not much > money No, unfortunately they are not available for free. You have to buy them from ISO http://www.iso.ch/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=36081 at 44 CHF. There are some drafts available for free download from which you can get much information, but details have changed since then. And there is the reference software, which is up to date, but rather difficult to read. gruel From xvid-devel@xvid.org Sat Jan 11 14:21:37 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 11 Jan 2003 15:21:37 +0100 (CET) Subject: [XviD-devel] Don't do " signed /= unsigned " In-Reply-To: <13342673641.20030112003903@syskin.cjb.net> Message-ID: On Sun, 12 Jan 2003, Radek Czyz wrote: > Hi, > > gruel wrote > > > In branch motion_comp.c there is a line > > > dx /= (1+quarterpel) > > > and this gives me wrong results if dx is signed int (which it is) > > and quarterpel is unsigned (which I declared that way, since it's a 0 or > > 1 flag). Division is then done unsigned! > > now you know why I made this signed ;) Yes, I found it out the hard way... And btw. I just changed 'quarterpel' in decoder-struct to signed, too. > I think that division is faster than if - am I correct? I'm not so sure. In theory, division is better than branch, but since qpel is a constant for the whole sequence, branch prediction might kick in and the if be faster in the end. We can simply measure it and decide then. > However, I'm > sure that some kind of bitshift would be even faster... do you know a > way to make it a bitshift, but dividing negative values correctly? Not really, maybe with an extra if ;-) if (dx<0) dx++; dx >>= qpel; ;-p > PS: @gruel, how's your GME going? :) Will be commited any minute. gruel From xvid-devel@xvid.org Sat Jan 11 14:40:49 2003 From: xvid-devel@xvid.org (Marco Al) Date: Sat, 11 Jan 2003 15:40:49 +0100 Subject: [XviD-devel] Don't do " signed /= unsigned " References: <13342673641.20030112003903@syskin.cjb.net> Message-ID: <002e01c2b97f$6f5ff520$bca45982@student.utwente.nl> Radek Czyz wrote: > I think that division is faster than if - am I correct? The old version probably compiled to a DIV too for division by 2 for negative numbers, I dont think compilers will use tricks for division by 2 of signed integers, although with a good compiler it probably used a CMOV instead of a conditional branch ... so the if wouldnt hurt much. With GCC or ICC the old version would probably only take a couple cycles more than yours. > sure that some kind of bitshift would be even faster... do you know a > way to make it a bitshift, but dividing negative values correctly? After a couple of tries : (dx >> qpel) + (dx & qpel & (dx >> (sizeoff(dx) * 8 - 1))) Can be executed in 4-5 cycles, versus 17 for DIV. From xvid-devel@xvid.org Sat Jan 11 15:46:01 2003 From: xvid-devel@xvid.org (Roberto Altieri) Date: Sat, 11 Jan 2003 16:46:01 +0100 Subject: [XviD-devel] Problems with NASM Message-ID: <002901c2b988$8b5e0240$340610ac@pcalt> I'm trying to build the project by using Microsoft Visual Studio 6 but I'm having troubles with the ASM files. I have installed NASM but some files are not compiled. I get error messages for ASM instructions like: cglobal sse2_os_trigger align 16 sse2_os_trigger: xorpd xmm0, xmm0 // on this row!!!!!!!! ret in the cpuid.asm,v 1.3 2002/11/17 The command I use in Visual Studio is nasm -f win32 -DPREFIX -o $(IntDir)\$(InputName).obj $(InputPath) The error is: .\..\src\utils\x86_asm\cpuid.asm:204: parser: instruction expected Does anybody know what I have to do? Thank-you Roberto From xvid-devel@xvid.org Sat Jan 11 16:05:38 2003 From: xvid-devel@xvid.org (Roberto Altieri) Date: Sat, 11 Jan 2003 17:05:38 +0100 Subject: R: [XviD-devel] Problems with NASM In-Reply-To: <002901c2b988$8b5e0240$340610ac@pcalt> Message-ID: <002a01c2b98b$4953da20$340610ac@pcalt> Ok I found th new version of NASM: nasm-0.98.35-win32.zip on SourceForge and it works. -----Messaggio originale----- Da: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org] Per conto di Roberto Altieri Inviato: sabato 11 gennaio 2003 16.46 A: xvid-devel@xvid.org Oggetto: [XviD-devel] Problems with NASM I'm trying to build the project by using Microsoft Visual Studio 6 but I'm having troubles with the ASM files. I have installed NASM but some files are not compiled. I get error messages for ASM instructions like: cglobal sse2_os_trigger align 16 sse2_os_trigger: xorpd xmm0, xmm0 // on this row!!!!!!!! ret in the cpuid.asm,v 1.3 2002/11/17 The command I use in Visual Studio is nasm -f win32 -DPREFIX -o $(IntDir)\$(InputName).obj $(InputPath) The error is: .\..\src\utils\x86_asm\cpuid.asm:204: parser: instruction expected Does anybody know what I have to do? Thank-you Roberto _______________________________________________ XviD-devel mailing list XviD-devel@xvid.org http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Sat Jan 11 16:34:55 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 11 Jan 2003 17:34:55 +0100 (CET) Subject: [XviD-devel] Finally, GMC rc1 Message-ID: Hi, I just commited GMC to dev-api-3 branch. This GMC is not in release stage, it's for _testing_ by developers, not for testing by users. In particular, I just noticed that the results are slightly different (worse) with the committed version than they were with my local version, so there is some hidden bug which I'm searching at the moment. If I find any binaries in the internet where this GMC is enabled, I will never ever commit any code to CVS again (at least none that is working but under construction). And I mean it! Honestly! It is easy to optimize the current code for speed. I did not unroll a single loop, I did not change multiplication to summation, I did nothing. This is the next thing I will be doing... I also havent tested decoding with other decoders (ffmpeg). So please wait ONE more WEEK until you re-enable GMC in binary builds. BUGS: GMC + QPel might not work, yet. I've checked, but not enought. QPel without GMC should not be changed. If you have image problems with anything else than GMC+Qpel, please report them! TODO: Speed and quality. I'll post another mail about how and what to optimize. About the options: Currently GMC is enabled by the general option XVID_GMC. I don't know if this is a good idea, but it's the simplest. Soon, there will be another option: XVID_GMC_TRANSLATIONAL (which isn't supported yet!). XVID_GMC and XVID_GMC_TRANSLATIONS can be combined into 4 combinations with the meaning: (!GMC && !GMC_TRANSLATIONAL) no GMC, as before, only P-VOPs (!GMC && GMC_TRANSLATIONAL) 1 warppoint (translational-only) GMC is performed, P-VOP if warppoint==(0,0), otherwise S-VOP (GMC && GMC_TRANSLATIONAL) 2 warppoints GMC, P-VOPs if wp1==(0,0) and wp2==(0,0), otherwise S-VOP. (GMC && !GMC_TRANSLATIONAL) 2 warrpoints GMC, P-VOPs if wp2=(0,0), otherwise S-VOPs Best results might be the last combination, because only hardly gain anything from translational GMC (motion vectors do fine for translations), but you need 1 extra bit per MB in S-VOPs. This is also the current default. for 1 warppoint we might want to add or always use "DivX5 compatability", which means 2 warppoints are written to the bitstream, but the second is always (0,0). gruel From xvid-devel@xvid.org Sat Jan 11 18:28:26 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 11 Jan 2003 19:28:26 +0100 (CET) Subject: [XviD-devel] Finally, GMC rc1 In-Reply-To: Message-ID: On Sat, 11 Jan 2003, Christoph Lampert wrote: > > Hi, > > I just commited GMC to dev-api-3 branch. This GMC is not in release stage, > it's for _testing_ by developers, not for testing by users. In particular, > I just noticed that the results are slightly different (worse) with the > committed version than they were with my local version, so there is some > hidden bug which I'm searching at the moment. Okay, finally found it. It was a sideeffect of the new SAD including chroma value (this flag has been moved to PMV_CHROMA[8/16]) and GMC. Btw: Don't combine CHROMA with GMC, yet, because GMC uses ordinary lumi-only SAD for mode decision. gruel From xvid-devel@xvid.org Sat Jan 11 19:19:55 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 11 Jan 2003 20:19:55 +0100 (CET) Subject: [XviD-devel] get_block_inter and dequant_inter in the same routine? Message-ID: Hi, did anyone ever test if doing get_block_inter() and dequant_inter() in the same routine would give a speedup (at least H263 dequant). It seems so wasteful that the decoder has to call memset(&block[i * 64], 0, 64 * sizeof(int16_t)); every time a block is read from bitstream, even if only 1 or 2 coefficients are in the bitsream (which is the general case), and then all the zeros are also dequantized. gruel From xvid-devel@xvid.org Sat Jan 11 19:34:20 2003 From: xvid-devel@xvid.org (Jim Hauxwell) Date: Sat, 11 Jan 2003 19:34:20 -0000 Subject: [XviD-devel] get_block_inter and dequant_inter in the same routine? In-Reply-To: Message-ID: Ive modified mine to do this, however you have to do the border coefficients later, after DC/AC prediction. The way it works is to do use a mask of the values 0, 0, 0, 0, 0, 0, 0, 0 0, 1, 1, 1, 1, 1, 1, 1 0, 1, 1, 1, 1, 1, 1, 1 0, 1, 1, 1, 1, 1, 1, 1 0, 1, 1, 1, 1, 1, 1, 1 0, 1, 1, 1, 1, 1, 1, 1 0, 1, 1, 1, 1, 1, 1, 1 0, 1, 1, 1, 1, 1, 1, 1 when it run length decodes it checks the position on the mask to find out if inverse quantization can be done or not. If its on the boarder then it has to be done after DC/AC prediction. This is much faster on none intel hardware (i.e. without mmx) but about the same on intel. You do have the advantage that you dont have lots of 3dn, mmx, xmm routines to write and maintain. As it was no faster I didn't bother submitting it. I'll revisit it next week. Jim > -----Original Message----- > From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On > Behalf Of Christoph Lampert > Sent: 11 January 2003 19:20 > To: xvid-devel@xvid.org > Subject: [XviD-devel] get_block_inter and dequant_inter in the same > routine? > > > > Hi, > > did anyone ever test if doing get_block_inter() and dequant_inter() > in the same routine would give a speedup (at least H263 dequant). > > It seems so wasteful that the decoder has to call > > memset(&block[i * 64], 0, 64 * sizeof(int16_t)); > > every time a block is read from bitstream, even if only 1 or 2 > coefficients are in the bitsream (which is the general case), and > then all the zeros are also dequantized. > > gruel > > > > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Sat Jan 11 19:55:01 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 11 Jan 2003 20:55:01 +0100 (CET) Subject: [XviD-devel] get_block_inter and dequant_inter in the same routine? In-Reply-To: Message-ID: On Sat, 11 Jan 2003, Jim Hauxwell wrote: > Ive modified mine to do this, however you have to do the border > coefficients later, after DC/AC prediction. But AC/DC is only for INTRA-blocks, isn't it? I wanted to change decode_mbinter() for INTER-blocks where DCT coefficients are full of zeros and 'run' values are large. gruel From xvid-devel@xvid.org Sat Jan 11 20:07:19 2003 From: xvid-devel@xvid.org (Jim Hauxwell) Date: Sat, 11 Jan 2003 20:07:19 -0000 Subject: [XviD-devel] get_block_inter and dequant_inter in the same routine? In-Reply-To: Message-ID: Yes, you correct In an attempt to type fast I forgot that I had modified both intra and inter to do the same effect. In intra mode you use the mask. Jim > -----Original Message----- > From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On > Behalf Of Christoph Lampert > Sent: 11 January 2003 19:55 > To: xvid-devel@xvid.org > Subject: RE: [XviD-devel] get_block_inter and dequant_inter in the same > routine? > > > On Sat, 11 Jan 2003, Jim Hauxwell wrote: > > > Ive modified mine to do this, however you have to do the border > > coefficients later, after DC/AC prediction. > > But AC/DC is only for INTRA-blocks, isn't it? > I wanted to change decode_mbinter() for INTER-blocks where DCT > coefficients are full of zeros and 'run' values are large. > > gruel > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Sat Jan 11 20:40:43 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 11 Jan 2003 21:40:43 +0100 (CET) Subject: [XviD-devel] GMC rc2 In-Reply-To: Message-ID: QPel + GMC is fixed, please test everything in ASP (QPel, Bframes, GMC). There is no support for interlace (yet) or reduced res (ever). gruel From xvid-devel@xvid.org Sat Jan 11 20:47:12 2003 From: xvid-devel@xvid.org (Jim Hauxwell) Date: Sat, 11 Jan 2003 20:47:12 -0000 Subject: [XviD-devel] get_block_inter and dequant_inter in the same routine? In-Reply-To: Message-ID: Ok, Just done some tests, and I think its about 8% quicker than the xmm version. It takes 0.28% of a decode of a 2.5mbit PAL stream. pro : dump all the mmx xmm and 3dn versions of routine for native C quicker on non intel machines The quant_type sets up a function pointer for dequant_inter & dequant4_inter to save if/then/else I'll need to intergrate into latest CVS, if your interested, to make a patch. Jim > -----Original Message----- > From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On > Behalf Of Jim Hauxwell > Sent: 11 January 2003 20:07 > To: xvid-devel@xvid.org > Subject: RE: [XviD-devel] get_block_inter and dequant_inter in the same > routine? > > > Yes, you correct > > In an attempt to type fast I forgot that I had modified both > intra and inter > to do the same effect. > > In intra mode you use the mask. > > Jim > > > -----Original Message----- > > From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On > > Behalf Of Christoph Lampert > > Sent: 11 January 2003 19:55 > > To: xvid-devel@xvid.org > > Subject: RE: [XviD-devel] get_block_inter and dequant_inter in the same > > routine? > > > > > > On Sat, 11 Jan 2003, Jim Hauxwell wrote: > > > > > Ive modified mine to do this, however you have to do the border > > > coefficients later, after DC/AC prediction. > > > > But AC/DC is only for INTRA-blocks, isn't it? > > I wanted to change decode_mbinter() for INTER-blocks where DCT > > coefficients are full of zeros and 'run' values are large. > > > > gruel > > > > _______________________________________________ > > XviD-devel mailing list > > XviD-devel@xvid.org > > http://list.xvid.org/mailman/listinfo/xvid-devel > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Sat Jan 11 20:51:50 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 11 Jan 2003 21:51:50 +0100 (CET) Subject: [XviD-devel] get_block_inter and dequant_inter in the same routine? In-Reply-To: Message-ID: On Sat, 11 Jan 2003, Jim Hauxwell wrote: > Ok, > > Just done some tests, and I think its about 8% quicker than the xmm version. Pure C beating XMM? Sounds nice... > It takes 0.28% of a decode of a 2.5mbit PAL stream. Can you test on a lower bitrate stream? I hope that the more zeros there are, the faster it gets. > pro : dump all the mmx xmm and 3dn versions of routine for native C > quicker on non intel machines > > The quant_type sets up a function pointer for dequant_inter & dequant4_inter > to save if/then/else Which cases does your version implement? H263 linear dequant, or MPEG dequant, too? > I'll need to intergrate into latest CVS, if your interested, to make a > patch. Is anyone else out there? Any opinions? Maybe the author of get_inter_block()? gruel From xvid-devel@xvid.org Sat Jan 11 23:10:09 2003 From: xvid-devel@xvid.org (Jim Hauxwell) Date: Sat, 11 Jan 2003 23:10:09 -0000 Subject: [XviD-devel] get_block_inter and dequant_inter in the same routine? In-Reply-To: Message-ID: Sorry about the delay (watching back to the future) I only have PAL test streams, but you are correct in that the more coefficients, the more work. Thats why I tested it so high. I've implemented both the quatization routines, although I'm sure the C versions could be made faster. I'll make a patch against latest CVS tommorrow and throw it open to some wider testing. Jim > -----Original Message----- > From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]On > Behalf Of Christoph Lampert > Sent: 11 January 2003 20:52 > To: xvid-devel@xvid.org > Subject: RE: [XviD-devel] get_block_inter and dequant_inter in the same > routine? > > > On Sat, 11 Jan 2003, Jim Hauxwell wrote: > > > Ok, > > > > Just done some tests, and I think its about 8% quicker than the > xmm version. > > Pure C beating XMM? Sounds nice... > > > It takes 0.28% of a decode of a 2.5mbit PAL stream. > > Can you test on a lower bitrate stream? I hope that the more zeros there > are, the faster it gets. > > > > pro : dump all the mmx xmm and 3dn versions of routine for native C > > quicker on non intel machines > > > > The quant_type sets up a function pointer for dequant_inter & > dequant4_inter > > to save if/then/else > > Which cases does your version implement? H263 linear dequant, or MPEG > dequant, too? > > > > I'll need to intergrate into latest CVS, if your interested, to make a > > patch. > > > Is anyone else out there? Any opinions? Maybe the author of > get_inter_block()? > > > > gruel > > > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Sun Jan 12 00:09:27 2003 From: xvid-devel@xvid.org (Jim Hauxwell) Date: Sun, 12 Jan 2003 00:09:27 -0000 Subject: [XviD-devel] Anyone know how to make a patch using WinCVS? Message-ID: All, Anyone know how to make a patch using WinCVS? Jim From xvid-devel@xvid.org Sun Jan 12 03:26:27 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sun, 12 Jan 2003 14:26:27 +1100 Subject: [XviD-devel] Anyone know how to make a patch using WinCVS? In-Reply-To: References: Message-ID: <20030112142341.1425.SUXEN_DROL@hotmail.com> On Sun, 12 Jan 2003 00:09:27 -0000 "Jim Hauxwell" wrote: > All, > re: dequant method this is how the original opendivx decore performed dequant. for non-simd machines, dequant will always been faster. xvid really is designed for simd-optimization. > Anyone know how to make a patch using WinCVS? drop to dos, goto your working xvidcore directory, and type in c:\progra~1\wincvs\cvs95 diff -u > \mypatch.diff -- pete; life is like a box of ammo From xvid-devel@xvid.org Sun Jan 12 03:28:05 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sun, 12 Jan 2003 14:28:05 +1100 Subject: [XviD-devel] Don't do " signed /= unsigned " In-Reply-To: References: Message-ID: <20030112142638.1428.SUXEN_DROL@hotmail.com> On Sat, 11 Jan 2003 14:45:20 +0100 (CET) Christoph Lampert wrote: > Boy, it took me a while to find this, because in previous version of and we had the same un/signed div problem with dc quantization last year. maybe it'd be simpler if as-much-as-possible was signed. -- pete; life is like a box of ammo From xvid-devel@xvid.org Sun Jan 12 04:04:28 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sun, 12 Jan 2003 15:04:28 +1100 Subject: [XviD-devel] Re: qpel smearing/noise problem In-Reply-To: <200301091641.45358.michaelni@gmx.at> References: <200301091641.45358.michaelni@gmx.at> Message-ID: <20030112145408.0C5C.SUXEN_DROL@hotmail.com> On Thu, 9 Jan 2003 16:41:45 +0100 Michael Niedermayer wrote: > btw, ISO sucks, > 1. because the standarts are not freely available > 2. because they change them at random > 3. these ugly patents .... > 4. they are bloated with strange features which noone will ever use imho, none of the features work very well together. lots of good ideas, but little direction/intergration. > i hope tarkin will be finished soon, allthough i havnt seen much activity on > their mailinglist ... -- pete; life is like a box of ammo From xvid-devel@xvid.org Sun Jan 12 07:32:43 2003 From: xvid-devel@xvid.org (Venkata Tumati) Date: Sun, 12 Jan 2003 02:32:43 -0500 Subject: [XviD-devel] status problem in decode In-Reply-To: <20030111204400.23148.42391.Mailman@edu.bnhof.de> Message-ID: <001201c2ba0c$cbbfbe30$58783b18@hanuman> Hi, For some reason status that is used in Status = dec_init Status = dec_main Never changes it always remains 0, in encode it changes to 1. When I printed the status after line 375 in xvid_decore.c I got a 0 I am using it should be a 1 like the way encoder does it. What is the reason for this am I doing something wrong. Thank you, Venkata From xvid-devel@xvid.org Sun Jan 12 10:27:23 2003 From: xvid-devel@xvid.org (Dirk Knop) Date: Sun, 12 Jan 2003 11:27:23 +0100 Subject: [XviD-devel] GMC rc2 In-Reply-To: References: Message-ID: <3E21430B.1090207@gwdg.de> Hi, Christoph Lampert wrote: >QPel + GMC is fixed, please test everything in ASP (QPel, Bframes, GMC). > >There is no support for interlace (yet) or reduced res (ever). > Ok, did a first test on "Das Boot". According to sysKin I modified line 1764 in encoder.c to have a "better" gmc/no-gmc decision (in terms of filesize). Changed it to if (iSAD + 12 <= pMB->sad16) { /* mode decision GMC */ Used features: - GMC - QPel - bframes 3/150/100 libavcodec/ffdshow (from 13.12.2002) doesn't decode the resulting video correctly, it smears MBs through the image (looks funny though). Decoding with xvid is working flawless of course. With GMC, the "dark block flickering" problem is worse, they appear more often. Other than that the resulting video looks really nice. Good work! :) Best regards Koepi From xvid-devel@xvid.org Sun Jan 12 10:36:58 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 12 Jan 2003 11:36:58 +0100 (CET) Subject: [XviD-devel] GMC rc2 In-Reply-To: <3E21430B.1090207@gwdg.de> Message-ID: On Sun, 12 Jan 2003, Dirk Knop wrote: > Hi, > > Christoph Lampert wrote: > > >QPel + GMC is fixed, please test everything in ASP (QPel, Bframes, GMC). > > > >There is no support for interlace (yet) or reduced res (ever). > > > > Ok, did a first test on "Das Boot". According to sysKin I modified line > 1764 in encoder.c to have a "better" gmc/no-gmc decision (in terms of > filesize). Changed it to > > if (iSAD + 12 <= pMB->sad16) { /* mode decision GMC */ I tested different constants there, too. I always got different results, sometimes larger was better, sometimes not, sometimes even negative values. I guess it depends on the quality of GME, and for the moment, I left the values at 0. > Used features: > - GMC > - QPel > - bframes 3/150/100 > > libavcodec/ffdshow (from 13.12.2002) doesn't decode the resulting video > correctly, it smears MBs through the image (looks funny though). Yes, I'm in contact with them about that. I have to admit that I don't know which implementation is correct. Most likely both are not... > Decoding with xvid is working flawless of course. If you knew how much time this "of course" took me... > With GMC, the "dark block flickering" problem is worse, they appear more > often. I'm not aware for that, what is it? > Other than that the resulting video looks really nice. Good work! :) Thanks, but at the moment, I doubt that GMC really improves much. But I haven't tested with B-frames, so maybe there's a diference. gruel From xvid-devel@xvid.org Sun Jan 12 11:12:54 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 12 Jan 2003 12:12:54 +0100 (CET) Subject: [XviD-devel] GMC rc2 In-Reply-To: <3E21430B.1090207@gwdg.de> Message-ID: On Sun, 12 Jan 2003, Dirk Knop wrote: > Hi, > > Christoph Lampert wrote: > > >QPel + GMC is fixed, please test everything in ASP (QPel, Bframes, GMC). > > > >There is no support for interlace (yet) or reduced res (ever). > > > > Ok, did a first test on "Das Boot". According to sysKin I modified line > 1764 in encoder.c to have a "better" gmc/no-gmc decision (in terms of > filesize). Changed it to > > if (iSAD + 12 <= pMB->sad16) { /* mode decision GMC */ > > Used features: > - GMC > - QPel > - bframes 3/150/100 > > libavcodec/ffdshow (from 13.12.2002) doesn't decode the resulting video > correctly, it smears MBs through the image (looks funny though). Okay, XVID is fixed to use correct rounding for average motion vector (as microsoft reference does). ffmpeg has to be changed for this ( it's only a 1 line fix in h263.c instead of sum /= 256; sum= RSHIFT(sum<quarter_sample, a); it should be sum= RSHIFT(sum<quarter_sample, a+8); or maybe it doesn't matter... because now suddenly here it works without?!? Anyway, please continue testing! gruel From xvid-devel@xvid.org Sun Jan 12 11:35:17 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 12 Jan 2003 12:35:17 +0100 (CET) Subject: [XviD-devel] status problem in decode In-Reply-To: <001201c2ba0c$cbbfbe30$58783b18@hanuman> Message-ID: On Sun, 12 Jan 2003, Venkata Tumati wrote: > Hi, > For some reason status that is used in > Status = dec_init > Status = dec_main > Never changes it always remains 0, in encode it changes to 1. When I > printed the status after line 375 in xvid_decore.c I got a 0 I am using > it should be a 1 like the way encoder does it. > > What is the reason for this am I doing something wrong. I don't know of a file "xvid_decore.c", but if you talk about the examples in xvidcore/examples status is used as an error variable. All routines should return 0, this means "no error". If they return something else, like 1, an error was detected, e.g. the end of the bitstream is reached in decoding mode. However, since there still might be images buffered internally in the codec, the program doesn't terminate, but continues decoding, possibly until the maximum number of frames is reached. I don't remember exactly. Anyway, the programs are just for illustration of the API, you can change them to fit your needs as you wish... gruel From xvid-devel@xvid.org Sun Jan 12 12:44:36 2003 From: xvid-devel@xvid.org (Radek Czyz) Date: Sun, 12 Jan 2003 23:14:36 +1030 Subject: [XviD-devel] Question In-Reply-To: References: Message-ID: <812352021.20030112231436@syskin.cjb.net> Hello, First, I'd like to thank gruel for his GMC - wow, so many new things to play with ^__^. Now, another topic. Gruel wrote: > [...] It was a sideeffect of the new SAD including > chroma value (this flag has been moved to PMV_CHROMA[8/16]) and GMC. Could you tell me what you mean my creating two flags? ChromaME cannot be used for 8x8 search, because all four vectors contribute to a single chroma vector. As a result, it's only possible to compute chroma SAD after all four vectors are known. * This last check cannot be flag dependat - we have to compare the result against 16x16 SAD, so we can't add chroma SAD to 16x16 and not add it to the sum of 8x8. (*) It would be possible to add the chroma SAD when searching for last block, but I decided against it - our 8x8 search consists of refinement only (unless someone uses EXTSEARCH8, who does?), and subpixel refinement of a single vector is quite unlikely to change the chroma vector. Now, back to GMC: 1 About chromaME: as the code creates chroma planes of GMCed picture, it's easy to implement ChromaME with GMC. Just two more SAD8s to the comparsion. As ChromaME appears to be a success, maybe picture-based chroma interpolation shouldn't be abondoned as fast as comments in the code suggest... 2 As far as I can see (ffdshow's OSD is a beautiful thing) most frames are GMCed. I might be wrong, but I think that it's a waste. To check that, I changed the GME a bit - after GMC search, there is a loop which chooses mcsel for all macroblocks. If the total number of mcsel == 1 is not good enough, it reverts the changes and makes the frame a P_VOP. I didn't have a chance to test it, or extend it (maybe not the number is important, but total SADs gained? or SKIPs?). However, it gave me quite a nice filesize gain after a few attepts. If you're interested, I can send you the function as it is at the moment. Best regards, Radek From xvid-devel@xvid.org Sun Jan 12 12:51:17 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 12 Jan 2003 13:51:17 +0100 (CET) Subject: [XviD-devel] GMC rc3 - TODO Message-ID: Hi, here is the promised mail about GMC improvement, some results of the current CVS version are attached. We have to optimize for 2 goals, quality and speed. As you might notice when profiling, the main new routines are GlobalMotionEst() in motion_est.c, encoding only generate_GMCparameters in motion_comp.c, encoding and decoding generate_GMCimageMB in motion_comp.c, encoding and decoding MotionEst is a little bit tricky, surely there are going to be several changes. It's more than a "hack" at the moment, but it's far from perfect, too. This should first be optimized for quality. For this it would be interesting which clips/frames get _larger_ at fixed quant with GMC enabled and which get smaller. A perfect mode decision should only activate GMC, if one really benefits from it. The other two, generate_GMCparameters() and generate_GMCimageMB() are almost in their final form. They only support 2 warp parameters at the moment instead of 3, yet, but this is easy to include when we really want to. Apart from this, they are good candidates for optimization: generate_GMCparameters() is only called once per frame. It does some general calculations with the warppoints. It can surely be sped up, by ordinary peephole optimization, but ASM will not be needed. generate_GMCimageMB() this is the main warping part, the reference image is transformed into the globally transformed image. This routine does the warping for one 16x16 block and calculated the "average motion vector" for the block. In decoding, it is call for every MB which is GMC-coded. In encoding, it is called for every block (in a big loop by the routine generate_GMCimage() ). In the maximal case, the routine generate_GMCimageMB() does some calculations once for _every_ pixel in the image, Lumi as well as Chroma. So it has to be fast! Much faster than it is now. generate_GMCimageMB() contains a ordinary loop for (J=16*mj;J<16*(mj+1);J++) for (I=16*mi;I<16*(mi+1);I++) so every pixel of the block is treated seperately. Maybe this can be slightly parallized? Anyway, a first step would be to change these int F= i0s + ( ((-r*i0s+i1ss)*I + (r*j0s-j1ss)*J +(1<<(alpha+rho-1))) >> (alpha+rho) ); int G= j0s + ( ((-r*j0s+j1ss)*I + (-r*i0s+i1ss)*J +(1<<(alpha+rho-1))) >> (alpha+rho) ); difficult and wasteful calculations to a incremental approach, only add something every step instead of multiplying. The values of F and G are taken as x- and y-positions in memory, and the corresponding pixels are bilinearily interpolated: Y00 = pRef->y[ G*stride + F ]; // Lumi values Y01 = pRef->y[ G*stride + F+1 ]; Y10 = pRef->y[ G*stride + F+stride ]; Y11 = pRef->y[ G*stride + F+stride+1 ]; /* bilinear interpolation */ Y00 = ((s-ri)*Y00 + ri*Y01); Y10 = ((s-ri)*Y10 + ri*Y11); Y00 = ((s-rj)*Y00 + rj*Y10 + s*s/2 - rounding ) >>(sigma+sigma); I really hope there is a better way of doing this than. Prefetching might help, too. Andreas had some good ideas, e.g. the interpolation can be sped up if e.g. Y00, Y01, Y10 and Y11 are identical, or at least 2 of them. Also note that very often (almost always) G*stride+F for the current pixel is within +-1 positions of the previous pixel, etc. However, I have to admit that the compiler here does a great job already! On AthlonXP 1600+ (1.4GHz, hardware prefetch) and compiled with gcc 3.1 one call to generate_GMCimageMB() is 21 us, interpolation of the whole CIF image is 8.2 ms of 720x576 it's 33.5 ms. In the end, encoding is half the speed than without GMC... gruel From xvid-devel@xvid.org Sun Jan 12 11:43:03 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Sun, 12 Jan 2003 12:43:03 +0100 Subject: [XviD-devel] halfpel and maybe quarterpel interpolation questions In-Reply-To: References: Message-ID: <200301121243.03466.elcabesa@inwind.it> thank you for all these advice=) From xvid-devel@xvid.org Sun Jan 12 13:08:26 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 12 Jan 2003 14:08:26 +0100 (CET) Subject: [XviD-devel] Question In-Reply-To: <812352021.20030112231436@syskin.cjb.net> Message-ID: On Sun, 12 Jan 2003, Radek Czyz wrote: > Hello, > > First, I'd like to thank gruel for his GMC - wow, so many new things > to play with ^__^. > > Now, another topic. Gruel wrote: > > [...] It was a sideeffect of the new SAD including > > chroma value (this flag has been moved to PMV_CHROMA[8/16]) and GMC. > > Could you tell me what you mean my creating two flags? ChromaME cannot > be used for 8x8 search, because all four vectors contribute to a > single chroma vector. As a result, it's only possible to compute > chroma SAD after all four vectors are known. * Oh, great, then simply remove the [8/16] and let's call it PMV_CHROMA (or rather ME_CHROMA, because it's not specific to a ME routine?) Anyway, if there is space in the global flags, we can move it back there... I was just too lazy to search for an empty slot to put GMC ;-) > This last check cannot be flag dependat - we have to compare the > result against 16x16 SAD, so we can't add chroma SAD to 16x16 and not > add it to the sum of 8x8. > > (*) It would be possible to add the chroma SAD when searching for last > block, but I decided against it - our 8x8 search consists of > refinement only (unless someone uses EXTSEARCH8, who does?), and > subpixel refinement of a single vector is quite unlikely to change the > chroma vector. > > Now, back to GMC: > > 1 > About chromaME: as the code creates chroma planes of GMCed picture, > it's easy to implement ChromaME with GMC. Just two more SAD8s to the > comparsion. > As ChromaME appears to be a success, maybe picture-based chroma > interpolation shouldn't be abondoned as fast as comments in the code > suggest... I just wrote this because otherwise people would ask "should we do this block based" ;-) I don't even know if it would be faster, because in the current routine, you have all the values before you. Block based you would have to reload them and start calculation from scratch. > 2 > As far as I can see (ffdshow's OSD is a beautiful thing) most frames > are GMCed. That depends very much on the material. E.g. in the "Paris" clip there is hardly any S-VOP at all. > I might be wrong, but I think that it's a waste. To check > that, I changed the GME a bit - after GMC search, there is a loop > which chooses mcsel for all macroblocks. If the total number of > mcsel == 1 is not good enough, it reverts the changes and makes the > frame a P_VOP. I had plan for this, too. Even better if you already did it... > I didn't have a chance to test it, or extend it (maybe not the number > is important, but total SADs gained? or SKIPs?). However, it gave me > quite a nice filesize gain after a few attepts. > If you're interested, I can send you the function as it is at the > moment. Yes, please! I wanted to do it with "SAD gained", because we lose a fixed amound of bits (1 per MB) which is more than it looks like (up to 10% of bitrate). We also lose and win bits because of MV coding, but it is not really predictable how much. gruel From xvid-devel@xvid.org Sun Jan 12 13:17:22 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 12 Jan 2003 14:17:22 +0100 (CET) Subject: [XviD-devel] GMC rc4 In-Reply-To: Message-ID: GMC + Qpel should work now, too, including decoding with ffmpeg (the version has to be very new, because they changed their qpel stuff a few days ago). Btw. GomGom, is there an automatic way to increase XVID_BS_VERSION with every commit to CVS? I keep forgetting to update... gruel From xvid-devel@xvid.org Sun Jan 12 13:30:07 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Sun, 12 Jan 2003 14:30:07 +0100 Subject: [XviD-devel] GMC rc4 In-Reply-To: References: Message-ID: <20030112133007.GA8343@leeloo> --BXVAT5kNtrzKuDFl Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Christoph Lampert (chl@math.uni-bonn.de) wrote: > Btw. GomGom, is there an automatic way to increase XVID_BS_VERSION with > every commit to CVS? I keep forgetting to update... I don't know any rcs command that could do that. Sorry. Btw, Is XviD now working on GNU/Linux systems ? 2days ago it was segfaulting in image.c in yuv2yv12 functions (no matter MMX or C), it seems that it was calling the functions with wrong parameters. --=20 Edouard Gomez --BXVAT5kNtrzKuDFl Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+IW3fR5dTYz5sWMcRAkyGAKCB1GEy0B7rMLUoZ35RWWMKUVuOOwCgiSsw D3nKpLnWVqe5MMxSq7esj6g= =iXyS -----END PGP SIGNATURE----- --BXVAT5kNtrzKuDFl-- From xvid-devel@xvid.org Sun Jan 12 13:50:41 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 12 Jan 2003 14:50:41 +0100 (CET) Subject: [XviD-devel] GMC rc4 In-Reply-To: <20030112133007.GA8343@leeloo> Message-ID: On Sun, 12 Jan 2003, Edouard Gomez wrote: > Christoph Lampert (chl@math.uni-bonn.de) wrote: > > Btw. GomGom, is there an automatic way to increase XVID_BS_VERSION with > > every commit to CVS? I keep forgetting to update... > > I don't know any rcs command that could do that. Sorry. > > Btw, Is XviD now working on GNU/Linux systems ? 2days ago it was > segfaulting in image.c in yuv2yv12 functions (no matter MMX or C), it > seems that it was calling the functions with wrong parameters. ??? You mean when called by transcode... I don't know. I doubt it. It worked here all the time with my test-programs, so it's not GNU/Linux' fault. ;-) gruel From xvid-devel@xvid.org Sun Jan 12 13:59:56 2003 From: xvid-devel@xvid.org (Radek Czyz) Date: Mon, 13 Jan 2003 00:29:56 +1030 Subject: [XviD-devel] the crash In-Reply-To: <20030112133007.GA8343@leeloo> References: <20030112133007.GA8343@leeloo> Message-ID: <7816872451.20030113002956@syskin.cjb.net> hi, > Btw, Is XviD now working on GNU/Linux systems ? 2days ago it was > segfaulting in image.c in yuv2yv12 functions (no matter MMX or C), it > seems that it was calling the functions with wrong parameters. I tried xvid_stat (from stable) some time ago and it crashed when handling chroma components at yv12_to_yv12 function. Access violation. Weird. Radek From xvid-devel@xvid.org Sun Jan 12 14:00:01 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 12 Jan 2003 15:00:01 +0100 (CET) Subject: [XviD-devel] Custom Quantization MPEG-4 compatiblily issue? Message-ID: Hi, I just tried to create a .m4v stream with branch and include this into a .mp4 file using mp4creator from the mpeg4ip-package. It failed, when I included a custom matrix with the error: MP4ERROR: MP4WriteCountedString: Numerical result out of range Does XVID do this somehow in a non-standard way? gruel From xvid-devel@xvid.org Sun Jan 12 14:10:16 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 12 Jan 2003 15:10:16 +0100 (CET) Subject: [XviD-devel] the crash In-Reply-To: <7816872451.20030113002956@syskin.cjb.net> Message-ID: On Mon, 13 Jan 2003, Radek Czyz wrote: > hi, > > > Btw, Is XviD now working on GNU/Linux systems ? 2days ago it was > > segfaulting in image.c in yuv2yv12 functions (no matter MMX or C), it > > seems that it was calling the functions with wrong parameters. > > I tried xvid_stat (from stable) some time ago and it crashed when > handling chroma components at yv12_to_yv12 function. Access violation. > Weird. Oh, the _stable_... I haven't touched that for a while, I didn't anything had changed there, did it? gruel From xvid-devel@xvid.org Sun Jan 12 18:04:03 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Sun, 12 Jan 2003 19:04:03 +0100 Subject: [XviD-devel] 2pass encoding Message-ID: <200301121904.03223.elcabesa@inwind.it> hi your code to handle 2 pass encoding is inside your wvf dir nad not inside the xvidcore package, can it be moved to the xvidcore code, so all program that want to use it can do it? i'm using it form linux and MPLAYER and i cant test all the things i want=) thanks for your attenction=) byee From xvid-devel@xvid.org Sun Jan 12 18:41:13 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 12 Jan 2003 19:41:13 +0100 (CET) Subject: [XviD-devel] 2pass encoding In-Reply-To: <200301121904.03223.elcabesa@inwind.it> Message-ID: On Sun, 12 Jan 2003, Marco "elcabesa" Belli wrote: > hi > your code to handle 2 pass encoding is inside your wvf dir nad not inside the > xvidcore package, can it be moved to the xvidcore code, so all program that > want to use it can do it? > i'm using it form linux and MPLAYER and i cant test all the things i want=) There is two-pass code for XVID in the transcode software package (for Linux and other Un*Xes). gruel From xvid-devel@xvid.org Sun Jan 12 19:37:00 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 12 Jan 2003 20:37:00 +0100 (CET) Subject: [XviD-devel] 2pass encoding In-Reply-To: Message-ID: On Sun, 12 Jan 2003, Christoph Lampert wrote: > On Sun, 12 Jan 2003, Marco "elcabesa" Belli wrote: > > > hi > > your code to handle 2 pass encoding is inside your wvf dir nad not inside the > > xvidcore package, can it be moved to the xvidcore code, so all program that > > want to use it can do it? > > i'm using it form linux and MPLAYER and i cant test all the things i want=) > > There is two-pass code for XVID in the transcode software package (for > Linux and other Un*Xes). There's a file visual_implementers_guide.zip (and others) in http://mpeg.telecomitalialab.com/working_documents/mpeg-04/visual/ that covers errors and bugfixes. gruel From xvid-devel@xvid.org Sun Jan 12 16:46:20 2003 From: xvid-devel@xvid.org (xvid-devel@xvid.org) Date: Sun, 12 Jan 2003 16:46:20 --0400 Subject: [XviD-devel] Re: Movies Message-ID: <200301122046.h0CKk9et024717@edu.bnhof.de> This is a multipart message in MIME format --CSmtpMsgPart123X456_000_0001972A Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Attached file: --CSmtpMsgPart123X456_000_0001972A-- From xvid-devel@xvid.org Sun Jan 12 21:03:27 2003 From: xvid-devel@xvid.org (Michael Niedermayer) Date: Sun, 12 Jan 2003 22:03:27 +0100 Subject: [XviD-devel] 2pass encoding In-Reply-To: References: Message-ID: <200301122203.27472.michaelni@gmx.at> Hi On Sunday 12 January 2003 20:37, Christoph Lampert wrote: > On Sun, 12 Jan 2003, Christoph Lampert wrote: > > On Sun, 12 Jan 2003, Marco "elcabesa" Belli wrote: > > > hi > > > your code to handle 2 pass encoding is inside your wvf dir nad not > > > inside the xvidcore package, can it be moved to the xvidcore code, so > > > all program that want to use it can do it? > > > i'm using it form linux and MPLAYER and i cant test all the things i > > > want=) > > > > There is two-pass code for XVID in the transcode software package (for > > Linux and other Un*Xes). > > There's a file visual_implementers_guide.zip (and others) in > > http://mpeg.telecomitalialab.com/working_documents/mpeg-04/visual/ > > that covers errors and bugfixes. thanks alot gruel :) [...] Michael From xvid-devel@xvid.org Sun Jan 12 23:50:14 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Mon, 13 Jan 2003 00:50:14 +0100 Subject: [XviD-devel] 2pass encoding In-Reply-To: <200301121904.03223.elcabesa@inwind.it> References: <200301121904.03223.elcabesa@inwind.it> Message-ID: <20030112235014.GC6209@leeloo> --dkEUBIird37B8yKS Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Marco elcabesa Belli (elcabesa@inwind.it) wrote: > hi > your code to handle 2 pass encoding is inside your wvf dir nad not inside= the=20 > xvidcore package, can it be moved to the xvidcore code, so all program th= at=20 > want to use it can do it? mencoder has the xvid_vbr code i ported from the vfw to a more independant form of code 6 months ago. Do a "grep -rn ed\.gomez *" to find the file in the source tree. Anyway, my port is outdated for dev-api-3, because it does not handle bframes correctly. It's not worth trying to port the last hacks from vfw to this port because dev-api-3 will have all RC stuff inside the core (1pass, 2pass, and kinda quality mode) > i'm using it form linux and MPLAYER and i cant test all the things i want= =3D) Ok ok ok, i'm responsible for that, as i'm lagging way too much with the RC merge into dev-api-3. I can't promise nothing because i'm actually preparing my internship report for an oral exam for January 23th. Please don't flame me :-) --=20 Edouard Gomez --dkEUBIird37B8yKS Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+If82R5dTYz5sWMcRAowzAJwIWTbdHnk2eP/orOw1lcAcK+tcPQCgnZNW e8nlpTKsUjR6BJhGCUWEfGo= =eWMc -----END PGP SIGNATURE----- --dkEUBIird37B8yKS-- From xvid-devel@xvid.org Mon Jan 13 00:40:00 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Mon, 13 Jan 2003 01:40:00 +0100 Subject: [XviD-devel] Updated xvid_encraw and xvid_decraw Message-ID: <20030113004000.GB2514@leeloo> --Bn2rw/3z4jIqBvZU Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable I'm starting working on dev-api-3 and in order to merge RC into core i had to have working examples, simple to debug. So here is a summary of the update : * xvid_encraw - Display frame type correctly - new options -bn, -bqr, -bqd to control repectively max_bframes, bquant_ratio and bquant_offset. * xvid_decraw - Added code to try to flush nvops when read from the stream - it is wrong, it reads only one frame every 2 frames. I'll have a look at this another day (still supposed to write my report) We have to define again quality settings to enable new features. At least for tests, we should define some good test cases that will be commonly used in real encoding by users. Once i get xvid_encraw and xvid_dcraw working well, i'll merge changes into xvid_stat (which is just encraw+decraw mixed together) --=20 Edouard Gomez --Bn2rw/3z4jIqBvZU Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+IgrgR5dTYz5sWMcRApbcAJkBoCJQmBhPICiUgGMZiAzMuesMVQCfXQ8y fukmIrhEP96YssZF/tQAH2I= =6fdO -----END PGP SIGNATURE----- --Bn2rw/3z4jIqBvZU-- From xvid-devel@xvid.org Mon Jan 13 10:58:15 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Mon, 13 Jan 2003 11:58:15 +0100 (CET) Subject: [XviD-devel] XVID Bframe AVIs and ffmpeg decoding Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---595329928-999303251-1042455495=:8725 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi, something is wrong with branch encoding and/or decoding in the combination XVID/ffmpeg. When I encode AVIs (with transcode or windows VfW) and try to play with mplayer/ffmpeg, I get lots of "slice end not reached but screenspace end (6 left 7C0000)" errors and image distorsion (or other values, often 0,00000). When I create a raw M4V stream and embed them into MP4 container, I _don't_ get these messages when playing, and the image is fine. Koepi says the AVIs play well with Windows+ffdshow and _his_ test file without Bframes played well with mplayer/ffmpeg, too. So did my own "stable" encodings. But encoded by me, "branch" without Bframes had "slice" errors again. It seems to be quantizer dependent, because my in my test clip the error appear earlier at fixed quant 2 than at fixed 3 or 4. So, there has to be some issue, and I don't know if whos fault it is, ffmpeg or XVID. I'd rather blame XVID, because the MP4 decoding works. My theory is, that XVID branch outputs something nonstandard, which makes it into the bitstream when encoding directly to AVI, but is filtered out by the mpegip4 software when converting M4V->MP4. Maybe stuffing stuff...? I though it was the famous and much-hated 0x7f which _still_ is in encoder.c, but even after disabling that, nothing changed. Since the file is so short, I attached a clip (no image distorsion, but "slice end" error message) to show at least the Linux-Users what I mean. Any ideas? gruel ---595329928-999303251-1042455495=:8725 Content-Type: VIDEO/x-msvideo; name="slice-error.avi" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="slice-error.avi" UklGRoI7AABBVkkgTElTVMAAAABoZHJsYXZpaDgAAABAnAAAAAAAAAAAAAAQ AQAACgAAAAAAAAABAAAAAAAAAGABAAAgAQAAAAAAAAAAAAAAAAAAAAAAAExJ U1R0AAAAc3RybHN0cmg4AAAAdmlkc0RJVlgAAAAAAAAAAAAAAABAQg8AQHh9 AQAAAAAKAAAAAAAAAP////8AAAAAAAAAAAAAAABzdHJmKAAAACgAAABgAQAA IAEAAAEAGABESVZYAKQEAAAAAAAAAAAAAAAAAAAAAABMSVNUTAAAAElORk9J U0ZUQAAAAHRyYW5zY29kZS0wLjYuMy4yMDAzMDEwOQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKVU5LxAYAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABMSVNU5jIAAG1vdmkwMGRi+w0AAAAAAbADAAABtQsAAAEA AAABIAAGxABnDCwQkFGPAAABslh2aUQwMDA2AAABthBgmYI9t/m23+bbf5tt /m23+bbf5tt/m23+bbf5tt/m23+bbf5tt/m23+bbf5tt/m23+bbf5tt/m23+ bbf5tt/m23+bbf5tt/m23+bbf5tt/m23+bbf5tt/m23+bbf5tt/m23+bbf5t t/m23+bbf5tt/m23+bbf5tt/m23+bbf5tt/m23+bbf5tt/m23+bbf5tt/m23 +bbf5tt/m23+bbf5tt/m23+bbf5tt/m23+bbf5tt/m23+bbf5tt/m23+bbf5 tt/m23+bbf5tt/m23+bbf5tt/m23+bbf5tt/m23+bbf5tt/m23+bbf5tt/m2 3+bbf5tt/m3T/Ntv82275ttzzbf/NvP823/zbf/Ntv822/yt7EX8t9Eeb/hv 9ht2OzVGNWMH/7pm2/Li739+zCphXwc6f2zmFXBwJj/RhWxi6d6jfe/u9NBk 9jFzc+PRq1xVVHvz+z/N97882/z+z/Nt78/m/z73/Ntv83n55e+yLkVuW63E 35v1ioKuRzT47r/iJ7P8J555y+Zy+55959x5koRVH5t5/nn3PP/VPTkUkUa8 N1X+fhZ2b/Nt+ebb35t9/n8/+X/8inm3n+bff55t9yt7EXy53cRQUf9OaCXu /5m/t+Om//4/Or4XP5vmWfLIu5vZzx6n9/F2dXT3xt+Z5t/fm+/+f3c839/z bb/Pt/86zr4neP/mfzfxP+ff17qvlvlPLOoKR/XpRaCaWqcqzpUC6JV6Kbp9 6jYgqAZbM29nVN4t1cXDI+zJeMMzqLlFe76gQNDd2ucFbshQ7+f/ozP1RpOl 6is1Rg/g5A/6e8fx+cSdZ/fE2Z9/u+9t8435f5uv55e/ZHOFz+c/n//PPfue /b/T/y+v3TWd2+kK1oJ+7vhawtyj9NQK5HEQ20XBR26pmV6iy0XBTELMRSBP gY/ddP27KvMJ4jQakClB8L/35mx+vH0Sx69pbwB/AlcvZm1qWL+b/4VDQD4l Mq1SyuyriBKtA8/w5T0PXlUkOby81EMb+TUFXlBY844dg4A9id4Br26jkDW9 WGZ4v4uTNQDLYf5l5P0rs7FkfaA4gLjn08sFaN5vCAv9qdXBV7kXMVMbRcbY mzoL6ur+tHyn8QYgYabth+ecAhv/U9/05vkq4N4z7OnlW41KvFeNNw/ftt6P mm4HPrePICMruaBSbhN629gmTYpQWu1jYbfxE/dV3yEkc5kE8e3lES4+fbgr 3/uR3wCb5ywlj9119nJRP1xS3T6ictJTzbnX6x5dFD6KHn05zK++W5EAp1fX Dlz5dJETrpxabtTAdDs75/n+HuopwNTklhvQYaTgvQvFElkgLE7N5mAlqCUJ qfU6E1GQI8f9PvdH7C3qN1E4ynTj4fA4FOX+9QIYHrYI0O+WYC1yf1FFjaKD UdJwZvMB4OAbHymgwcpQw9AHwUBgLxHEcegwdpfqKDIPFTQMMMDE/FUPLGCU IYjFyzKUc/gMIiSDmjPQ6g1HKsGV7SoeKsVAqfgZZF5VArOduIlxMy21YqKO BPoFljhlKnV21Wl1u0OapkDCBQv2G5+mj6lvUa1hKeQWgLCBPz0pJOIyjTlU YDReb0Hov/8Ey8qlBKNfuEB/luIeuUX6RwgPyJvpquUUtoLBP+UHQKnekonx rr744Qvel0QzTbq2UVReOxpnwvEXD6WN/6tJXOYbd4f6702t/EH90gT1OnAo FutkNgti91vEXCUK5fLq22vRGoyHZTxVwGQNedBa1UT83k52yg6R0Y9t4sDC JikjSvvQGJVe8dE9VK/HbPAwn9/llEgMbbelcJb9po/p8VxLxBwHBT0+d8SN +9Ct0ljaGVUOYfiUUXs6honm49MQLEfJ8ynPM5QKKRYY7Pn/Jzkj2jrS0iW6 7jjEPdFJbkiJ3olldReozWCrCA2h2QFcuFMun+hMPvIe6Gry3HVz952p1ci7 fOl1aMiyjk7/Y1CV67/dkNcMUvQDUgjZwGBH1KogI3Q7BGIR8PwUOJWVDCYs R6xzs536gioOQHY5v/rTEUq22mIS0HCkbpwbR4wDB01U+hzoeeAeDC6Ckd/Z bZ3v27tBU6/ywoBxI+HlCyx6PwDRJSrDmseoiMB5Bno3oUDOqO973oOBNlek oUyV94Txb3IbPVYJ4xiWoxlQzBdJjioOBqKeenoOWiwOCpRaou8CQwOS3s7S Ti6kB4LsxPFURg49e5LAI9gy6DhV+GtgwBwyFOK94taU9sBxDu3LIosgODIM COS4LKDgXZi/nUT5rORe5sJFuU2eST/lkLPSBT9oLcOUjq8CQzNqJaFIOWCu CtBeAwna3KxKDhmCalP5YV8p6Snqk3i4LAKzS6DRrO6+1li0iMnMB8UiaMtQ tR6AG+EHpqWaboEzii6EKoHOagCRSwWU9LTU+q3NcaF5SeWEDqHpIDz0AG6h wggDhcCbe0p1ANIUrIQwBxNSgkCVXiHtBxSCbLeXNU9uNcXF0o0L5xHzowBw qymd5Wp0kCWW540abCZ1dDYKke5xC5rIbKMgjlt9oOCt1niwvRkVFkqLvgxB xGb4vy8Bx3l1GyiimCperWiqFAOQhSscnmm1HdQ7I7rep1T2nYW0fMKx+JBc DDdXLoEMX0YYEQ7LwZOonB8qkBUsg4CDsTRtNRqEqKQcKzysIYjJFvqxB0OG isMlgYKwwpwPj0vAuzrcNQDDQygJp8rJMKTudUBRY4SgyeokmeYwOflegwDg pH6cR05eDI/2lIOI1FH7TiONb1dcMna8dZkrQcBx2ZqhHL0kPFlF6CV7Ta4L 5e5m4pX7RkuNELPcGwDxmElS50qnAcC5uBf9/kzg3gEgnR9PKOhiQoqa9W+h qlPVAONBP276SSjMF1ysHIgcMTqfIvzoOCjqN6DuA8x/+kf2XK1kfAcCfQyB c3ZxaQHFBQCZiviKjPQeegAz0l9da87CkiWtlq94ScBw1UK0PUY2BwVIzOo+ LBV9r87pspiIHC8nmsEnAnFpYiO+9JBp9lxAlNQygwDlzxm5qHVhVZWjgOBf L3m40GwZA4JTfcQrDEFiFUL8X90NAcJiyhZEjRA51n/SvIGFUQXjcE67V3LN bTQL8v/mLWQp5QHif/8fFnOdel5rT7tNdFCt6EQBJPSUn1kiwVexAAn/27BU vc29iInnN1axRwhrubqAn/zNXRhgCaj/L3l65fMJN6Ug44pPkjuWrLiDbT05 WtqGEjzQfbDyGZaMift5fKsDiMrYt1QMAnSD3vCuugcAlyl9c0KnfLECcRrc gOI8WH+n28oeo22kTTqtnMGYYI3hxVgpU6vsmjiBx5ajEjGdVqUe7aS3r1PQ 82NVYNVXlkjRaCp1bAcQBiH4HR2nWrNzAIeKoEqnekOCyHlOWMy2kKixqwK0 1EJX8Pqg65ZbKiItiqaTsQKHPRMnykH3KhRTnO5dHRg5WqQ4Pdu1+Gj3gpUX RLA45iKziJzqIoFagFkZQR/dRnL+vzvJBfYDkYJumrIQcf/SzQjckq3UAqkt UP+QI7HLdnb19lkdK/YAmW0c7sWCadtySQ8odwCdr5bsWh5a2owwCNiaRN/r L3tDB0bYcT5QcsKFN0E3lodQrjS1KDig/POrkaKAi+/3iF72ycpFQehw76Sg 4TT9fe9X6oFdaujBgzlDM6VAtwHBwCZciMbn/vzZTfRpg9Ng4F4moqAE5jgi /6tW3oOFafKpWvAcJpiNGGozBcq/1Bw2f5bK+LShmFeXNUYAuEl14sD93//Q eoERSuDiftpdNS17AWmuudVU6h8A93+5CskJk8CvLG4JqR9BgHH/uVNNidoC N0k3hIgBwqrvUMoMJ+3ooNyg4kBOkqfSHhEnKDuhN74+VcMQDiEFWBYcA8bA ElgMA48+vyOEb+uRyLe1Y5+CnDSgksRvlMK0Qup7ZxAfdE769wSd3v2UhW/e kTOOO/i6iIUojBPb6//agqoJEzF+nfI7P/ZLPrLCd7VJ52vfnCmbcoDjyWZa aWWvOoqUChucJDnv9f6jTctX7UD69+EnBgRu9FetCv35U3xKGQURkJbSZyFO nnaMj+Fefds20j6c34SjXyFDnhVnvvi4JSf0QMCxsAcQOHm/nD7kNvktgcOb O/tvNX23vb1Fw8jJpQeYTPu15uKEeLLFHXzv5lqBFaoKVjT9bSWn3zja1bFK 8tnYiWgRqfK6BXMq0KHdyQoPfwn77IebL5uwqWXWeY303qnuVeoOQ63OAtvP Y4qGcN85CBacRh3LFr2LXl6TvkJTvgUcefSscQN+IpeLXna+QYOwNLjHi3Ki Xl6tUSJ7BGPPkFHXH5My2p61yRDzt71GiJ67mouhggIH2inUCfX+82qVqAsO r9GkyVBKUvfaSHH7tvYiowXAfyWAPctZ3k6L14GVXGJ58hKdf5w23bNtv822 /zbb/Ntv822/zbb/Ntv822/zbb/Ntv822/zbb/Ntv822/zbb/Ntv822/zbb/ Ntv822/zbb/Ntv822/zbb/Ntv822/zbb/Ntv822/zbb/Ntv822/zbb/Ntv82 2/zbb/Ntv822/zbb/Ntv822/zbb/Ntv822/zbb/Ntv822/zbb/Ntv822/zbb /Ntv822/zbb/Ntv822/zbb/Ntv822/zbb/Ntv822/zbb/Ntv822/zbb/Ntv8 22/zbb/Ntv822/zbb/Ntv822/zbb/Ntv822/zbb/Ntv822/zbb/Ntv822/zb b/Ntv822/zbb9wAwMGRinAMAAAAAAbZQ4EX//////////////72rWe9L0ej0 u2tQn+hYyONYy2t9ve1v3337eKXaw1p3ayL2v7m9S/1s++++tkrbSZXkeefY zvbxQtk/r73629vetvfe7bs95mtiW5uMCtHnRoM1MKgp/azq39ymAS69rVnr MzBthjOQzzoTs5sJlGQyCxELKhReLFofDNlj87qNomOKd4niUMkIKoVoRZ8F o5KjQqLRm0lomazjt3alBU4lAw9HykeeBR/BiQjnh8q8DHRYLmeKAdc9xnEk zRO5613LvDIMkm5xxNWdAwVjwntWEMaJ9UfbEaAXBhw4CU2gXaQBJ0K+rk6a NvW7QYoiIWogSA5EwTvrZl3inCwJTqPaE4VBSnloyBaoReFSVMd2LTSUyzjR cTK4dHwcYSNbXIGxOF6f0LmwMAjV5p6n6f+DAY9EtKHcXosQw1wmMM/AtaBY NVPIV5HuUZg5PTcY/U/vAEqPR8TUP+EeVbEFLNNiP/qNOwGh0dwQhASHWWdR deI4Gas20MTiGihZAtR00JkB8rFz777LwWIvEPaOh0F4eExpFi0mI0uCsGRW 5OLUuLOgsgqTygKOByLsDZGdBybp9HjVmioHFoXLrWBfhipgsRe++srcJ0/w 18oIIDJMtTB8MVQHviLk63/49LAkBDfyyqlKpmmoPaxPTzF6pHDsRvCKHiPl 8dfBSXyPQYXh60FMDgMW2RYyqmVmVw7cizwzBcp58gBxWcOL+mA/6C4T+HEY Rpm2w6TigsFCHtBYC6VxOYUwibBbo8ckodUXQmHGLDrHgXoeRBE0kLU8KOgn BeCcpjQE5XcCainOD2eH31H7v0w7LTXgPqrGYMU1Y53GkLA5GUHvqmTmbONP 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 ---595329928-999303251-1042455495=:8725-- From xvid-devel@xvid.org Mon Jan 13 11:33:37 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Mon, 13 Jan 2003 12:33:37 +0100 (CET) Subject: [XviD-devel] XVID Bframe AVIs and ffmpeg decoding In-Reply-To: Message-ID: On Mon, 13 Jan 2003, Christoph Lampert wrote: > errors and image distorsion (or other values, often 0,00000). > When I create a raw M4V stream and embed them into MP4 container, I > _don't_ get these messages when playing, and the image is fine. Oh, great! Now it happens with raw encoding, mp4creator and .MP4, too. Still no ideas what causes it... :( gruel From xvid-devel@xvid.org Mon Jan 13 12:17:15 2003 From: xvid-devel@xvid.org (Michael Niedermayer) Date: Mon, 13 Jan 2003 13:17:15 +0100 Subject: [XviD-devel] XVID Bframe AVIs and ffmpeg decoding In-Reply-To: References: Message-ID: <200301131317.15920.michaelni@gmx.at> Hi On Monday 13 January 2003 12:33, Christoph Lampert wrote: > On Mon, 13 Jan 2003, Christoph Lampert wrote: > > errors and image distorsion (or other values, often 0,00000). > > When I create a raw M4V stream and embed them into MP4 container, I > > _don't_ get these messages when playing, and the image is fine. > > Oh, great! Now it happens with raw encoding, mp4creator and .MP4, too. > Still no ideas what causes it... :( at first quick look, its wrong stuffing bits, combined with bad luck (normally ffmpeg/lavc detects & works around it) u can try mplayer with "-lavdopts bug=0" to force bugfree type decoding, it fails or try mplayer with "-lavdopts bug=16" to force padding/stuffing bug type decoding, it works btw, could it be that xvid doesnt add stuffing bits if the last bit ends at byte aligned boudary? [...] Michael From xvid-devel@xvid.org Mon Jan 13 12:54:41 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Mon, 13 Jan 2003 13:54:41 +0100 (CET) Subject: [XviD-devel] XVID Bframe AVIs and ffmpeg decoding In-Reply-To: <200301131317.15920.michaelni@gmx.at> Message-ID: On Mon, 13 Jan 2003, Michael Niedermayer wrote: > Hi > > On Monday 13 January 2003 12:33, Christoph Lampert wrote: > > On Mon, 13 Jan 2003, Christoph Lampert wrote: > > > errors and image distorsion (or other values, often 0,00000). > > > When I create a raw M4V stream and embed them into MP4 container, I > > > _don't_ get these messages when playing, and the image is fine. > > > > Oh, great! Now it happens with raw encoding, mp4creator and .MP4, too. > > Still no ideas what causes it... :( > at first quick look, its wrong stuffing bits, combined with bad luck (normally > ffmpeg/lavc detects & works around it) > > u can try mplayer with "-lavdopts bug=0" to force bugfree type decoding, it > fails > or try mplayer with "-lavdopts bug=16" to force padding/stuffing bug type > decoding, it works > > btw, could it be that xvid doesnt add stuffing bits if the last bit ends at > byte aligned boudary? Yes, that's it! I'll a commit a patch... It has to be done just before VOP/VOL/VO startcodes, not between other structures, am I right? gruel From xvid-devel@xvid.org Mon Jan 13 13:10:54 2003 From: xvid-devel@xvid.org (Michael Niedermayer) Date: Mon, 13 Jan 2003 14:10:54 +0100 Subject: [XviD-devel] XVID Bframe AVIs and ffmpeg decoding In-Reply-To: References: Message-ID: <200301131410.54734.michaelni@gmx.at> Hi On Monday 13 January 2003 13:54, Christoph Lampert wrote: > On Mon, 13 Jan 2003, Michael Niedermayer wrote: > > Hi > > > > On Monday 13 January 2003 12:33, Christoph Lampert wrote: > > > On Mon, 13 Jan 2003, Christoph Lampert wrote: > > > > errors and image distorsion (or other values, often 0,00000). > > > > When I create a raw M4V stream and embed them into MP4 container, I > > > > _don't_ get these messages when playing, and the image is fine. > > > > > > Oh, great! Now it happens with raw encoding, mp4creator and .MP4, too. > > > Still no ideas what causes it... :( > > > > at first quick look, its wrong stuffing bits, combined with bad luck > > (normally ffmpeg/lavc detects & works around it) > > > > u can try mplayer with "-lavdopts bug=0" to force bugfree type decoding, > > it fails > > or try mplayer with "-lavdopts bug=16" to force padding/stuffing bug type > > decoding, it works > > > > btw, could it be that xvid doesnt add stuffing bits if the last bit ends > > at byte aligned boudary? > > Yes, that's it! I'll a commit a patch... It has to be done just before > VOP/VOL/VO startcodes, not between other structures, am I right? dunno about VOP /VOL/VO perhaps its not needed there but it certainly is needed at the end of slices & end of the picture if its not done then detecting the end of slices is somewhat tricky and reverse decoding of RVLC would be impossible but noone uses RVLC so the later doesnt matter ... [...] Michael From xvid-devel@xvid.org Mon Jan 13 13:38:13 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Mon, 13 Jan 2003 14:38:13 +0100 (CET) Subject: [XviD-devel] XVID Bframe AVIs and ffmpeg decoding In-Reply-To: Message-ID: On Mon, 13 Jan 2003, Christoph Lampert wrote: > Michael Niedermayer wrote: > > btw, could it be that xvid doesnt add stuffing bits if the last bit ends at > > byte aligned boudary? > > Yes, that's it! I'll a commit a patch... It has to be done just before > VOP/VOL/VO startcodes, not between other structures, am I right? I guess "PadAlways()" is always needed before every any START_CODE, even if it's "clear" that this will be at byte boundary. Also, I assume that padding before a START_CODE is part of the _previous_ VOP not of the new one? So the padding before a VOP-header is done _after_ the previous VOP is finished and the resulting padding (possible a full 0x7F byte) is returned as part of the encoded VOP. Then the next VOP header can always start without padding (we wouldn't even have to check for it). Comments? If not, then I'll commit... gruel P.S. Since the full padding byte is 0x7F, we should really combine this with the VfW 0x7F to something standardized. Any suggestions? From xvid-devel@xvid.org Mon Jan 13 14:03:26 2003 From: xvid-devel@xvid.org (Michael Niedermayer) Date: Mon, 13 Jan 2003 15:03:26 +0100 Subject: [XviD-devel] XVID Bframe AVIs and ffmpeg decoding In-Reply-To: References: Message-ID: <200301131503.26881.michaelni@gmx.at> Hi On Monday 13 January 2003 14:38, Christoph Lampert wrote: > On Mon, 13 Jan 2003, Christoph Lampert wrote: > > Michael Niedermayer wrote: > > > btw, could it be that xvid doesnt add stuffing bits if the last bit > > > ends at byte aligned boudary? > > > > Yes, that's it! I'll a commit a patch... It has to be done just before > > VOP/VOL/VO startcodes, not between other structures, am I right? > > I guess "PadAlways()" is always needed before every any START_CODE, even > if it's "clear" that this will be at byte boundary. Also, I assume that > padding before a START_CODE is part of the _previous_ VOP not of the new > one? > So the padding before a VOP-header is done _after_ the previous VOP is > finished and the resulting padding (possible a full 0x7F byte) is returned > as part of the encoded VOP. > Then the next VOP header can always start without padding (we wouldn't > even have to check for it). > > Comments? If not, then I'll commit... IMHO padding is not done before startcodes but at the end of the various headers, and not allways, for example according to the std. there is no padding between VisObjSeq & VisObj and VidObj & VidObjLayer at least i dont see any in the text [...] Michael From xvid-devel@xvid.org Mon Jan 13 14:16:40 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Mon, 13 Jan 2003 15:16:40 +0100 (CET) Subject: [XviD-devel] Extra padding after FrameCodeI/P Message-ID: Hi, at the end of encoder_encode() there are 32 extra bits 0xFFFF, 0xFFFF written to bitstream. That's that for? Just to remove the risk of a bitstream-reader reading undefined/out-of-bounds memory? There has to be a better way, e.g. the encoding application simply allocing more mem. 4 extra bytes per frame is wasteful at very low bitrates, and also it's against MPEG-4 standard. gruel From xvid-devel@xvid.org Mon Jan 13 17:06:46 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Mon, 13 Jan 2003 18:06:46 +0100 (CET) Subject: [XviD-devel] XVID Bframe AVIs and ffmpeg decoding In-Reply-To: <200301131503.26881.michaelni@gmx.at> Message-ID: On Mon, 13 Jan 2003, Michael Niedermayer wrote: > > Comments? If not, then I'll commit... > IMHO padding is not done before startcodes but at the end of the various > headers, and not allways, for example according to the std. there is no > padding between VisObjSeq & VisObj and VidObj & VidObjLayer at least i dont > see any in the text Hm, it looks mandatory to me (even though it might not be logical), note that here it says: "first inserting a bit", and the check for byte alignment is only done after that. At the end of structures I though padding is only needed to reach byte boundary, therefore never stuffing full 8 bits. gruel "---------------------------------------------------------------- 6.2.1 Start codes All start codes shall be byte aligned. This shall be achieved by first inserting a bit with the value zero and then, if necessary, inserting bits with the value one before the start code prefix such that the first bit of the start code prefix is the first (most significant) bit of a byte. For stuffing of 1 to 8 bits, the codewords are as follows in Table 6-2. -----------------------------------------------------------------" From xvid-devel@xvid.org Mon Jan 13 18:12:26 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Mon, 13 Jan 2003 19:12:26 +0100 Subject: [XviD-devel] 2pass encoding In-Reply-To: <20030112235014.GC6209@leeloo> References: <200301121904.03223.elcabesa@inwind.it> <20030112235014.GC6209@leeloo> Message-ID: <200301131912.27035.elcabesa@inwind.it> hi > Anyway, my port is outdated for dev-api-3, because it does not handle > bframes correctly. It's not worth trying to port the last hacks from vfw > to this port because dev-api-3 will have all RC stuff inside the core > (1pass, 2pass, and kinda quality mode) is rigth this "WILL" inside "dev-api-3 will have all RC..." ? > Ok ok ok, i'm responsible for that, as i'm lagging way too much with the > RC merge into dev-api-3. I can't promise nothing because i'm actually > preparing my internship report for an oral exam for January 23th. Please > don't flame me :-) if you need a tester, or help doing that i'll be happy to help you From xvid-devel@xvid.org Sun Jan 12 03:53:54 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sun, 12 Jan 2003 14:53:54 +1100 Subject: [XviD-devel] Re: qpel smearing/noise problem In-Reply-To: <414295286.20030109224936@syskin.cjb.net> References: <414295286.20030109224936@syskin.cjb.net> Message-ID: <20030112144651.0C59.SUXEN_DROL@hotmail.com> On Thu, 9 Jan 2003 22:49:36 +1030 Radek Czyz wrote: > When 'simple' idct was used in xvid, ffdshow (with 'simple' or > 'reference' idct) is able to decode H and V interpolation correctly - > but not HV. No other changes has been made to anything. > Does anyone has any explanation? There must be an explanation for > this... > > HV interpolation wasn't decoded correctly in any case - using > reference idct, both in encoder and decoder, didn't help either. after much testing, i reckon the hv interpolation artifcacts radek speaks of, are not idct/qpel related. rather they are caused by residual quantization error. using h.263 quant=1 with unnatural test sequences (ie. a grey image, with one sharp bright line) causes the articats to appear in qpel and hpel. i removed the quantization/dequantization stage from the encoder/decode, and the artifacts are gone. this is the lossy-nature of mpeg-4, and not an xvid problem; coefficients are divided by two when using h.263 quant=1. -- pete; life is like a box of ammo From xvid-devel@xvid.org Mon Jan 13 23:36:38 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Tue, 14 Jan 2003 00:36:38 +0100 Subject: [XviD-devel] [BUG] XVID_CSP_RGB24 + XVID_CSP_VFLIP Message-ID: <20030113233638.GB9243@leeloo> --MW5yreqqjyrRcusr Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable I've been updating the transcode module for dev-api-3 support yesterday and today. And i found what seems to be a bug in rgb24+vflip. Tell me if i'm wrong but, when using vflip you're expecting to receive: frame->image =3D frame_data; frame->stride=3D frame_width*3; /* Simple case where rgb data is not padd= ed */ and of course you must use RGB24+VFLIP during encoder creation. With these settings i'm getting garbage image. But if i use a nasty workaround like this: frame->image =3D frame_data + frame_width*(frame_height-1)*3; frame->stride=3D -frame_width*3; and not using vflip then my image is fliped just like i want. Is this normal or is it a bug ? --=20 Edouard Gomez --MW5yreqqjyrRcusr Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+I02GR5dTYz5sWMcRAoRSAKD0MCAllq3RQVJX8N+wn0FsMKjFgACbB70V +Uwi8fZsfmFAAL04kYcwQUg= =aHnm -----END PGP SIGNATURE----- --MW5yreqqjyrRcusr-- From xvid-devel@xvid.org Mon Jan 13 23:58:31 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Tue, 14 Jan 2003 00:58:31 +0100 Subject: [XviD-devel] [WISH] Statistics and frame type returning Message-ID: <20030113235831.GA9343@leeloo> --EeQfGwPcQSOJBaQU Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Last mail before going to continue my training report... I commited a patch to fix some but not all errors when returning wrong statistics from encoder_encode_bframes. Changes: - introduced frame->intra =3D 3 =3D=3D S_VOP for GMC frames (the 3 number seemed to be free)=20 - Added lot of stats filling all over the code. Not hard to guess that i added them where it seemd logical to put them. BUT this does not mean the places were good ! this code is still a mess :-) Bugs: - bframes do not report correctly header bits - nvops fill the stats->quant with a value of 31, using 0 is impossible because transcode and mencoder use my vbr lib and stores statistics using code like this debug_quant[quant-1]++; 32 is not possible too because we would be out of meory boundaries in similar pieces of code. My wish is: - Could it be possible to fix bframe reporting ? thx Now going to fix my training report. --=20 Edouard Gomez --EeQfGwPcQSOJBaQU Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+I1KnR5dTYz5sWMcRAuOfAJ9AH8AmStYw/lPBKT+Ue/tUdqFLwACfbt6z KQZOwHMHGZrjU+aqqg0v/oA= =h+mU -----END PGP SIGNATURE----- --EeQfGwPcQSOJBaQU-- From xvid-devel@xvid.org Tue Jan 14 09:36:51 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 14 Jan 2003 10:36:51 +0100 (CET) Subject: [XviD-devel] [WISH] Statistics and frame type returning In-Reply-To: <20030113235831.GA9343@leeloo> Message-ID: On Tue, 14 Jan 2003, Edouard Gomez wrote: > Bugs: > - bframes do not report correctly header bits > - nvops fill the stats->quant with a value of 31, Couldn't we just repeat the last quant value? I'd find this most logical, since we just repeat the last frame. gruel From xvid-devel@xvid.org Tue Jan 14 10:03:39 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Tue, 14 Jan 2003 21:03:39 +1100 Subject: [XviD-devel] Extra padding after FrameCodeI/P In-Reply-To: References: Message-ID: <20030114205100.08E0.SUXEN_DROL@hotmail.com> On Mon, 13 Jan 2003 15:16:40 +0100 (CET) Christoph Lampert wrote: > > Hi, HI > > at the end of encoder_encode() there are 32 extra bits > 0xFFFF, 0xFFFF written to bitstream. That's that for? it's a encore2 relic. > Just to remove the risk of a bitstream-reader reading > undefined/out-of-bounds memory? There has to be a better > way, e.g. the encoding application simply allocing more mem. > 4 extra bytes per frame is wasteful at very low bitrates, and > also it's against MPEG-4 standard. yep. encoder_encode_bframes() never wrote 0xffff, only the older encoder_encode() function. padding before startcodes: while the iso suggests this, i dont think it was the authors intention. vfw 0x7f: i agree christoph: using the new api, xvid_encore(XVID_ENC_ENCODE,xxx) will return: <0 an error (XVID_ERR_xxx values..) 0 ther was no encoder output (vfw can then perform its 0x7f hack) >0 the number of output bytes (previously "frame.length") -- pete; life is like a box of ammo From xvid-devel@xvid.org Tue Jan 14 10:13:58 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 14 Jan 2003 11:13:58 +0100 (CET) Subject: [XviD-devel] Re: qpel smearing/noise problem In-Reply-To: <20030112144651.0C59.SUXEN_DROL@hotmail.com> Message-ID: On Sun, 12 Jan 2003, suxen_drol wrote: > using h.263 quant=1 with unnatural test sequences (ie. a grey image, > with one sharp bright line) causes the articats to appear in qpel and > hpel. i removed the quantization/dequantization stage from the > encoder/decode, and the artifacts are gone. > > this is the lossy-nature of mpeg-4, and not an xvid problem; > coefficients are divided by two when using h.263 quant=1. Did you remember the additional restriction on DCT/iDCT for quant=1 (which we tried to get rid of by TOO_SMALL_LIMIT=2)? Something that a no blocks must be written to bytestream which may or may not lead to only-zero compensation after inverse quant and iDCT? If I remember correctly, TOO_SMALL_LIMIT has been changed back to 1 in some versions of XVID. gruel From xvid-devel@xvid.org Tue Jan 14 10:18:35 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Tue, 14 Jan 2003 21:18:35 +1100 Subject: [XviD-devel] [WISH] Statistics and frame type returning In-Reply-To: <20030113235831.GA9343@leeloo> References: <20030113235831.GA9343@leeloo> Message-ID: <20030114210535.08E6.SUXEN_DROL@hotmail.com> On Tue, 14 Jan 2003 00:58:31 +0100 Edouard Gomez wrote: > Last mail before going to continue my training report... > > I commited a patch to fix some but not all errors when returning wrong > statistics from encoder_encode_bframes. > > Changes: > - introduced frame->intra = 3 == S_VOP for GMC frames (the 3 number > seemed to be free) > - Added lot of stats filling all over the code. Not hard to guess that > i added them where it seemd logical to put them. BUT this does not > mean the places were good ! this code is still a mess :-) imho frame->intra is an ugly hack for ratecontrol. intra was originaly intended to instruct the encoding application/container when the current frame was a keyframe. not for frame type. > Bugs: > - bframes do not report correctly header bits > - nvops fill the stats->quant with a value of 31, using 0 is impossible > because transcode and mencoder use my vbr lib and stores statistics > using code like this debug_quant[quant-1]++; 32 is not possible too > because we would be out of meory boundaries in similar pieces of > code. > > My wish is: > - Could it be possible to fix bframe reporting ? thx bframe reporting is difficult. we need to break the current api to do it properly. the new api is ready, but if i commit it the existing 2-pass becomes unuable... ive had no time to work on my new 2pass algo. besides it needs more testing. anyway, in the new api i have a encoder.c::set_stats() function which gets called in display-order from encoder_encode_bframes(). this sets the stats (XVID_ENC_STATS) structure. each FRAMEINFO struct stores the length of the frame, header bits, etc. -- pete; life is like a box of ammo From xvid-devel@xvid.org Tue Jan 14 10:29:59 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 14 Jan 2003 11:29:59 +0100 (CET) Subject: [XviD-devel] [WISH] Statistics and frame type returning In-Reply-To: <20030114210535.08E6.SUXEN_DROL@hotmail.com> Message-ID: On Tue, 14 Jan 2003, suxen_drol wrote: > bframe reporting is difficult. we need to break the current api to do it > properly. the new api is ready, but if i commit it the existing 2-pass > becomes unuable... ive had no time to work on my new 2pass algo. besides > it needs more testing. Did you include "aspect ratio" information into new API? If not, please do... gruel From xvid-devel@xvid.org Tue Jan 14 10:32:47 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 14 Jan 2003 11:32:47 +0100 (CET) Subject: [XviD-devel] Extra padding after FrameCodeI/P In-Reply-To: <20030114205100.08E0.SUXEN_DROL@hotmail.com> Message-ID: On Tue, 14 Jan 2003, suxen_drol wrote: > > at the end of encoder_encode() there are 32 extra bits > > 0xFFFF, 0xFFFF written to bitstream. That's that for? > > it's a encore2 relic. Removed. > padding before startcodes: while the iso suggests this, i dont think it > was the authors intention. I asked at technotes-mpeg4 at they say it's not needed, so I removed it again. 8bit Padding is now only done before VOP-start, and if we ever support slices, it will be done there, too. > vfw 0x7f: i agree christoph: > using the new api, xvid_encore(XVID_ENC_ENCODE,xxx) will return: > <0 an error (XVID_ERR_xxx values..) > 0 ther was no encoder output > (vfw can then perform its 0x7f hack) > >0 the number of output bytes (previously "frame.length") This sound very reasonable! gruel From xvid-devel@xvid.org Tue Jan 14 11:35:41 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Tue, 14 Jan 2003 22:35:41 +1100 Subject: [XviD-devel] [WISH] Statistics and frame type returning In-Reply-To: References: <20030114210535.08E6.SUXEN_DROL@hotmail.com> Message-ID: <20030114221833.67A2.SUXEN_DROL@hotmail.com> On Tue, 14 Jan 2003 11:29:59 +0100 (CET) Christoph Lampert wrote: > On Tue, 14 Jan 2003, suxen_drol wrote: > > bframe reporting is difficult. we need to break the current api to do it > > properly. the new api is ready, but if i commit it the existing 2-pass > > becomes unuable... ive had no time to work on my new 2pass algo. besides > > it needs more testing. > > Did you include "aspect ratio" information into new API? > If not, please do... yes. the api is very much like the current one for inputing video, the frame.type' now replaces frame->intra; we have XVID_TYPE_{I,P,B}VOP and XVID_TYPE_AUTO #defines. frame.out_flags indicates application/container stuff, such as "this is a keyframe". the stats structure is filled by the encoder. where stats.type is set to the XVID_TYPE_{I,P,B,S}VOP, or XVID_TYPE_NONE(for bframes, whilst the encoder is buffering up bframes). typedef struct { int version; /* --- VOL related stuff -----------------------------------------*/ int vol_flags; /* [in] vol flags */ unsigned char * quant_intra_matrix; /* [in:opt] custom intra qmatrix */ unsigned char * quant_inter_matrix; /* [in:opt] custom inter qmatrix */ int par; /* [in:opt] picture aspect ratio (refer to XVID_PAR_xxx above) */ int par_width; /* [in:opt] aspect ratio width */ int par_height; /* [in:opt] aspect ratio height */ /* ^^^-------------------------------------------------------------*/ int vop_flags; /* [in] (general)vop-based flags */ int motion; /* [in] ME options */ xvid_image_t input; /* [in] input image (read from) */ int type; /* [in:opt] coding type */ int quant; /* [in] frame quantizer; if <=0, automatatic (ratecontrol) */ int bquant; /* [in:opt] bframe quantizer; if <=0, automatic*/ void *bitstream; /* [in:opt] bitstream ptr (written to)*/ int length; /* [in:opt] bitstream length (bytes) */ int out_flags; /* [out] bitstream output flags */ } xvid_enc_frame_t; typedef struct { int version; /* encoding parameters */ int type; /* [out] coding type */ int quant; /* [out] frame quantizer */ int vol_flags; /* [out] vol flags (see above) */ int vop_flags; /* [out] vop flags (see above) */ /* bitrate/ratecontrol related */ int length; /* [out] frame length */ int hlength; /* [out] header length (bytes)*/ int kblks, mblks, ublks; /* [out] */ } xvid_enc_stats_t; -- pete; life is like a box of ammo From xvid-devel@xvid.org Tue Jan 14 11:41:00 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Tue, 14 Jan 2003 22:41:00 +1100 Subject: [XviD-devel] [BUG] XVID_CSP_RGB24 + XVID_CSP_VFLIP In-Reply-To: <20030113233638.GB9243@leeloo> References: <20030113233638.GB9243@leeloo> Message-ID: <20030114223627.67A5.SUXEN_DROL@hotmail.com> On Tue, 14 Jan 2003 00:36:38 +0100 Edouard Gomez wrote: > I've been updating the transcode module for dev-api-3 support yesterday > and today. And i found what seems to be a bug in rgb24+vflip. > > Tell me if i'm wrong but, when using vflip you're expecting to receive: > frame->image = frame_data; > frame->stride= frame_width*3; /* Simple case where rgb data is not padded */ > > and of course you must use RGB24+VFLIP during encoder creation. > > With these settings i'm getting garbage image. > > But if i use a nasty workaround like this: > > frame->image = frame_data + frame_width*(frame_height-1)*3; > frame->stride= -frame_width*3; > > and not using vflip hmm, that's essentially what XVID_CSP_VFLIP does. > > then my image is fliped just like i want. > > Is this normal or is it a bug ? the flipping code is generic, so in theory if it fails for rgb24 it should fail for all colorspaces. i shall look into it. btw, is mmx activated? -- pete From xvid-devel@xvid.org Tue Jan 14 12:57:12 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Tue, 14 Jan 2003 13:57:12 +0100 (CET) Subject: [XviD-devel] [BUG] XVID_CSP_RGB24 + XVID_CSP_VFLIP In-Reply-To: <20030114223627.67A5.SUXEN_DROL@hotmail.com> References: <20030113233638.GB9243@leeloo> <20030114223627.67A5.SUXEN_DROL@hotmail.com> Message-ID: <1042549032.3e240928a3cb3@imp.free.fr> suxen_drol said: > the flipping code is generic, so in theory if it fails for rgb24 it > should fail for all colorspaces. i shall look into it. > > btw, is mmx activated? I tested both plain C and mmx-ext versions settings CPU flags. Both were buggy and gave me the same results. The image looked like if stride was not right and adding offsets to R-G-B planes, moreover it seemed to be interlaced-like (big strides of black and then big strides of color with r/g/b planes being offseted one from each other) I'll post a screenshot this evening if i did not find the bug myself. -- Edouard Gomez From xvid-devel@xvid.org Tue Jan 14 13:45:44 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 14 Jan 2003 14:45:44 +0100 (CET) Subject: [XviD-devel] Custom Quant Matrices Message-ID: Hi, there a bug a millenium ago which caused set_matrix_intra() (or _inter()? or both?) to segfault for some matrix entries. Does anyone remember when and how this was resolved? I still can't get custom matrices to work with ffmpeg or mpeg4ip. gruel From xvid-devel@xvid.org Tue Jan 14 15:42:09 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 14 Jan 2003 16:42:09 +0100 (CET) Subject: [XviD-devel] reenable GMC Message-ID: Hi, if nobody complains about big bugs in GMC within the next few hours, you can swtich it on again in VfW, I guess. I was able to play Windows-generated AVIs with GMC on Linux/ffmpeg and vice versa, so the biggest bugs should be removed. But please remember it's still considered "slow, unstable, maybe broken and most likely you won't gain much from it" Also one should mention that DivX5 is not able to play file with "real" GMC. Still, to optimize for quality and speed, we can use as many testers as possible. gruel From xvid-devel@xvid.org Tue Jan 14 18:27:43 2003 From: xvid-devel@xvid.org (skal) Date: 14 Jan 2003 19:27:43 +0100 Subject: [XviD-devel] GMC rc3 - TODO In-Reply-To: References: Message-ID: <1042568863.1461.24.camel@latitude344> --=-APBwBi9oN659GV+PbUMx Content-Type: text/plain Content-Transfer-Encoding: 7bit Hi, On Sun, 2003-01-12 at 13:51, Christoph Lampert wrote: > Anyway, a first step would be to change these > > int F= i0s + ( ((-r*i0s+i1ss)*I + (r*j0s-j1ss)*J +(1<<(alpha+rho-1))) >> (alpha+rho) ); > int G= j0s + ( ((-r*j0s+j1ss)*I + (-r*i0s+i1ss)*J +(1<<(alpha+rho-1))) >> (alpha+rho) ); > > difficult and wasteful calculations to a incremental approach, only add > something every step instead of multiplying. here's a test-bed (a la xvid_bench.c) for future tests on GMC. I've also quickly hacked a fixed-point incremental version, just to be sure I still can beat a linux compiler :) this is most probably my last contribution to XVID. Farewell! Skal --=-APBwBi9oN659GV+PbUMx Content-Disposition: attachment; filename=xvid_gmc.c Content-Transfer-Encoding: quoted-printable Content-Type: text/x-c; name=xvid_gmc.c; charset=ISO-8859-1 /************************************************************************** * * XVID MPEG-4 VIDEO CODEC - Unit tests and benches for GMC * * This program is free software; you can redistribute it and/or modif= y * it under the terms of the GNU General Public License as published b= y * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * *************************************************************************/ /************************************************************************ * =20 * History: * * 01.04.2003 alt impl. w/ 4b fixed-point - Skal - * *************************************************************************/ #include #include #include // for gettimeofday #include // for memset #include #include "xvid.h" #include "portab.h" #include "global.h" // inner guts #include "image/image.h" #include "utils/mbfunctions.h" #include "motion/motion.h" #include "utils/mem_transfer.h" #include "utils/emms.h" #include "utils/timer.h" #include const int speed_ref =3D 50; /********************************************************************* * misc *********************************************************************/ /* returns time in micro-s*/ double gettime_usec() { =20 struct timeval tv; gettimeofday(&tv, 0); return tv.tv_sec*1.0e6 + tv.tv_usec; } void write_pgm(int w, int h, int BpS, int BpSc, IMAGE *I) { static int nb =3D 0; int i; FILE *f; char name[64]; sprintf( name, "dec%.5d.pgm", nb++ ); f =3D fopen(name, "wb"); if (!f) return; fprintf(f, "P5\n\n%d %d 255\n", w, h*3/2); for(i=3D0; iy + i*BpS, w, 1, f); for(i=3D0; iu + i*BpSc, w/2,1, f); fwrite(I->v + i*BpSc, w/2,1, f); } fclose(f); } /* Pseudo-random generator specified by IEEE 1180 */ static long ieee_seed =3D 1; static void ieee_reseed(long s) { ieee_seed =3D s; } static long ieee_rand(int Min, int Max) { static double z =3D (double) 0x7fffffff; long i,j; double x; ieee_seed =3D (ieee_seed * 1103515245) + 12345; i =3D ieee_seed & 0x7ffffffe; x =3D ((double) i) / z; x *=3D (Max-Min+1); j =3D (long)x; j =3D j + Min; assert(j>=3DMin && j<=3DMax); return (short)j; } /********************************************************************* * GMC decoding test *********************************************************************/ typedef void (*GMC_Param_Func)( const int num_wp, const int res, const WARPPOINTS *const warp, const int width, const int height, GMC_DATA *const gmc ); typedef VECTOR (*GMC_MB_Func)( const GMC_DATA *const gmc_data, const IMAGE *const pRef, const int mi, const int mj, const int stride, const int stride2, const int quarterpel, const int rounding, IMAGE *const pGMC); void test_GMC(GMC_Param_Func PFunc, GMC_MB_Func MFunc ) { double t; const int nb_tests =3D speed_ref; const int W =3D 64, H =3D 64; const int EW =3D ((W+15)&~15) + 2*EDGE_SIZE; // <=3D> stride const int EH =3D ((H+15)&~15) + 2*EDGE_SIZE; const int YSize =3D EW*EH; const int UVSize =3D (EW/2)*(EH/2); const int offset =3D EDGE_SIZE + EDGE_SIZE*EW; const int offset2 =3D EDGE_SIZE/2+(EDGE_SIZE/2)*(EW/2); uint8_t Bits[2][YSize+2*UVSize]; IMAGE Src, Dst; int res, nb_warp, i, n, x, y; int qpel, rounding; WARPPOINTS warps; GMC_DATA data; VECTOR AMv; Src.y =3D Bits[0] +offset; Src.u =3D Bits[0]+YSize +offset2; Src.v =3D Src.u + UVSize; Dst.y =3D Bits[1] +offset; Dst.u =3D Bits[1]+YSize +offset2; Dst.v =3D Dst.u + UVSize; printf( "\n =3D=3D=3D=3D=3D test GMC =3D=3D=3D=3D=3D\n" ); for(res=3D2; res<=3D16; res<<=3D1) { int32_t crc =3D 0; printf( "res=3D%d ... ", res ); t =3D -gettime_usec(); for(qpel=3D0; qpel<=3D1; ++qpel) { for(rounding=3D0; rounding<=3D1; ++rounding) { for(nb_warp=3D0; nb_warp<=3D2; ++nb_warp) { printf( "[%d]", nb_warp ); ieee_reseed(13*nb_warp+37*rounding+qpel+53); for(n=3D0; n>2)^(Bits[1][x]<<2)) + ((crc^Bits[1][x])&0xffff= ); } } } } t +=3D gettime_usec(); printf( " ... crc=3D0x%x time=3D%.3lf sec\n", crc, t/1000000. ); } =20 } /********************************************************************* * alt implementation *********************************************************************/ /* let's use some (forbidden) statics until they make it into GMC_DATA */ static int32_t Cos, Sin; static int32_t Fo, Go; static int32_t cCos, cSin; static int32_t cFo, cGo; #ifndef RSHIFT #define RSHIFT(a,b) ((a) > 0 ? ((a) + (1<<((b)-1)))>>(b) : ((a) + (1<<((b)-= 1))-1)>>(b)) #endif /* assume b>0 */ #ifndef RDIV #define RDIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b)) #endif static __inline int gmc_sanitize(int value, int quarterpel, int fcode) { int length =3D 1 << (fcode+4); // if (quarterpel) value *=3D 2; if (value < -length) return -length; else if (value >=3D length) return length-1; else return value; } static uint32_t __inline log2bin(uint32_t value) { int n =3D 0; while (value) { value >>=3D 1; n++; } return n; } void my_GMCparameters( const int num_wp, const int res, const WARPPOINTS *const warp, const int width, const int height, GMC_DATA *const gmc) { int tmp; int du0 =3D warp->duv[0].x; int dv0 =3D warp->duv[0].y; int du1 =3D warp->duv[1].x; int dv1 =3D warp->duv[1].y; gmc->num_wp =3D num_wp; gmc->s =3D res; /* scaling parameters 2,4,8 or 16 */ gmc->sigma =3D log2bin(res-1); /* log2bin(15)=3D4, log2bin(16)=3D5, log2= bin(17)=3D5 */ gmc->r =3D 16/res;=20 gmc->rho =3D 4 - gmc->sigma; /* =3D log2bin(r-1) */ gmc->W =3D width; gmc->H =3D height; /* fixed reference coordinates */ gmc->alpha =3D log2bin(gmc->W-1); gmc->Ws =3D 1<alpha;=20 gmc->i0s =3D res/2 * ( du0 ); gmc->j0s =3D res/2 * ( dv0 ); gmc->i1s =3D res/2 * (2*width + du1 + du0 ); gmc->j1s =3D res/2 * ( dv1 + dv0 ); =20 tmp =3D (gmc->W-gmc->Ws)*(gmc->r*gmc->i0s); tmp +=3D gmc->Ws*(gmc->r*gmc->i1s - 16*gmc->W); gmc->i1ss =3D 16*gmc->Ws + RDIV(tmp,gmc->W);=20 tmp =3D (gmc->W - gmc->Ws)*(gmc->r*gmc->j0s); tmp +=3D gmc->Ws*gmc->r*gmc->j1s; gmc->j1ss =3D RDIV( tmp, gmc->W ); =20 Cos =3D gmc->i1ss - gmc->r*gmc->i0s; Sin =3D gmc->j1ss - gmc->r*gmc->j0s; Fo =3D (2*gmc->i0s + 1) << (gmc->alpha+gmc->rho-1); Go =3D (2*gmc->j0s + 1) << (gmc->alpha+gmc->rho-1); cCos =3D 4*Cos; cSin =3D 4*Sin; cFo =3D Cos - Sin + (1 << (gmc->alpha+gmc->rho+1)); cFo +=3D 2*gmc->Ws*gmc->r*gmc->i0s - 16*gmc->Ws; cGo =3D Sin + Cos + (1 << (gmc->alpha+gmc->rho+1)); cGo +=3D 2*gmc->Ws*gmc->r*gmc->j0s - 16*gmc->Ws; } VECTOR my_GMCimageMB( const GMC_DATA *const gmc_data, const IMAGE *const pRef, const int mi, const int mj, const int stride, const int stride2, const int quarterpel, const int rounding, IMAGE *const pGMC) { const int W =3D gmc_data->W; const int H =3D gmc_data->H; const int rho =3D gmc_data->rho;=20 const int alpha =3D gmc_data->alpha;=20 const int rounder =3D 128 - (rounding<<(rho+rho)); uint8_t *dstY, *dstU, *dstV; int I,J; VECTOR avgMV =3D {0,0}; int32_t Fj, Gj; dstY =3D &pGMC->y[(mj*16)*stride+mi*16] + 16; Fj =3D Fo - Sin*(mj*16) + Cos*(mi*16); Gj =3D Go + Cos*(mj*16) + Sin*(mi*16); for (J=3D16; J>0; --J) { int32_t Fi, Gi; =20 Fi =3D Fj; Fj -=3D Sin; Gi =3D Gj; Gj +=3D Cos; for (I=3D-16; I<0; ++I) { int32_t F, G, ri, rj; int Y00,Y01,Y10,Y11; F =3D ( Fi >> (alpha+rho) ) << rho; Fi +=3D Cos;=20 G =3D ( Gi >> (alpha+rho) ) << rho; Gi +=3D Sin; avgMV.x +=3D F; avgMV.y +=3D G; ri =3D F & 15; rj =3D G & 15; F >>=3D 4; G >>=3D 4; if (F< -1) F=3D-1; else if (F>W) F=3DW; if (G< -1) G=3D-1; else if (G>H) G=3DH; Y00 =3D pRef->y[ G*stride + F ]; Y01 =3D pRef->y[ G*stride + F+1 ]; Y10 =3D pRef->y[ G*stride + F + stride ]; Y11 =3D pRef->y[ G*stride + F+1 + stride ]; Y01 =3D (Y00<<4) + ri*(Y01-Y00); Y11 =3D (Y10<<4) + ri*(Y11-Y10); Y11 =3D (Y01<<4) + rj*(Y11-Y01); Y00 =3D ( Y11 + rounder ) >> 8; dstY[I] =3D (uint8_t)Y00; } dstY +=3D stride; } dstU =3D &pGMC->u[(mj*8)*stride2+mi*8] + 8; dstV =3D &pGMC->v[(mj*8)*stride2+mi*8] + 8; Fj =3D cFo - cSin*(mj*8) + cCos*(mi*8); Gj =3D cGo + cCos*(mj*8) + cSin*(mi*8); for (J=3D8; J>0; --J) { int32_t Fi, Gi; Fi =3D Fj; Fj -=3D cSin;=20 Gi =3D Gj; Gj +=3D cCos; for (I=3D-8; I<0; ++I) { int32_t F, G, ri, rj; int C00,C01,C10,C11; F =3D ( Fi >> (alpha+rho+2) ) << rho; Fi +=3D cCos; G =3D ( Gi >> (alpha+rho+2) ) << rho; Gi +=3D cSin; ri =3D F & 15; rj =3D G & 15; F >>=3D 4; G >>=3D 4; if (F< -1) F=3D-1; else if (F>=3DW/2) F=3DW/2; if (G< -1) G=3D-1; else if (G>=3DH/2) G=3DH/2; C00 =3D pRef->u[ G*stride2 + F ]; C01 =3D pRef->u[ G*stride2 + F+1 ]; C10 =3D pRef->u[ G*stride2 + F + stride2]; C11 =3D pRef->u[ G*stride2 + F+1 + stride2]; C01 =3D (C00<<4) + ri*(C01-C00); C11 =3D (C10<<4) + ri*(C11-C10); C11 =3D (C01<<4) + rj*(C11-C01); C00 =3D ( C11 + rounder ) >> 8; dstU[I] =3D (uint8_t)C00; =20 C00 =3D pRef->v[ G*stride2 + F ]; C01 =3D pRef->v[ G*stride2 + F+1 ]; C10 =3D pRef->v[ G*stride2 + F + stride2]; C11 =3D pRef->v[ G*stride2 + F+1 + stride2]; C01 =3D (C00<<4) + ri*(C01-C00); C11 =3D (C10<<4) + ri*(C11-C10); C11 =3D (C01<<4) + rj*(C11-C01); C00 =3D ( C11 + rounder ) >> 8; dstV[I] =3D (uint8_t)C00; } dstU +=3D stride2; dstV +=3D stride2; } avgMV.x -=3D 16*(120<<4); // 120 =3D 15*16/2 avgMV.y -=3D 16*(120<<4); avgMV.x =3D RSHIFT( avgMV.x, (4+7-quarterpel) ); avgMV.y =3D RSHIFT( avgMV.y, (4+7-quarterpel) ); =20 return avgMV; } /********************************************************************* * main *********************************************************************/ int main(int argc, char *argv[]) { int what =3D 0; if (argc>1) what =3D atoi(argv[1]); if (what=3D=3D0 || what=3D=3D1) test_GMC(generate_GMCparameters, generate_GMCimageMB); if (what=3D=3D0 || what=3D=3D2) test_GMC(my_GMCparameters, my_GMCimageMB); return 0; } /*********************************************************************/ --=-APBwBi9oN659GV+PbUMx-- From xvid-devel@xvid.org Wed Jan 15 00:49:28 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Wed, 15 Jan 2003 01:49:28 +0100 Subject: [XviD-devel] [PATCH] small LUTs ported to unstable Message-ID: <20030115004928.GB20499@leeloo> --xo44VMWPx7vlQ2+2 Content-Type: multipart/mixed; boundary="ZoaI/ZTpAVc4A5k6" Content-Disposition: inline --ZoaI/ZTpAVc4A5k6 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable i prefer doing some tests before commiting... you're welcome to participate to this testing.=20 For me it works well, but i prefer have a pool of tester than stating "It works for me(tm)" Apply the patch against unstable. Thanks to Marc for his work :-) --=20 Edouard Gomez --ZoaI/ZTpAVc4A5k6 Content-Type: application/octet-stream Content-Disposition: attachment; filename="new-vlc-luts.diff.gz" Content-Transfer-Encoding: base64 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 bcjP8QAA --ZoaI/ZTpAVc4A5k6-- --xo44VMWPx7vlQ2+2 Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+JLAYR5dTYz5sWMcRAv9hAJ9DUEDdhzSfV+glAD57xh7+APyUxACgu/BM ZJnH6gdaQoH8Z1bcCavIO1c= =REXG -----END PGP SIGNATURE----- --xo44VMWPx7vlQ2+2-- From xvid-devel@xvid.org Wed Jan 15 00:01:25 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Wed, 15 Jan 2003 01:01:25 +0100 Subject: [XviD-devel] [DEBUG TASK] Valgrind report Message-ID: <20030115000125.GA20499@leeloo> --jI8keyz6grp/JLjh Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Well well, still going further in my dev-api-3 tests when trying MfA VLC codes and i get very strange results when enabling small LUTs. Frame size becomes HUGE. 1- We decided to see if LUTs were not corrupted using valgrind and qt the end of the email. 2- When steping trhough the code, i noticed that the first input frame goes make is path to encoder.c:1015 then iFrameNum is incremented and so, first frame is not a *forced IFrame* but it is an IFrame because MEanalysis is trying to analyse first frame against garbage. I'm pretty sure valgrind is reporting this bug, because Meanalysis is comparing a frame with unitialised data. Here is the log ---------------------------------------------------------------------------= ----- =3D=3D22227=3D=3D valgrind-1.0.4, a memory error detector for x86 GNU/Linux. =3D=3D22227=3D=3D Copyright (C) 2000-2002, and GNU GPL'd, by Julian Seward. =3D=3D22227=3D=3D Estimated CPU clock rate is 734 MHz =3D=3D22227=3D=3D For more details, rerun with: -v 1st frame =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x80922CC: CheckCandidate32I (../../src/motion/moti= on_est.c:355) =3D=3D22227=3D=3D by 0x8093424: DiamondSearch (../../src/motion/motion_e= st.c:641) =3D=3D22227=3D=3D by 0x809AA4D: MEanalyzeMB (../../src/motion/motion_est= .c:1835) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x80922CC: CheckCandidate32I (../../src/motion/moti= on_est.c:355) =3D=3D22227=3D=3D by 0x8093478: DiamondSearch (../../src/motion/motion_e= st.c:643) =3D=3D22227=3D=3D by 0x809AA4D: MEanalyzeMB (../../src/motion/motion_est= .c:1835) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x809A92F: MEanalyzeMB (../../src/motion/motion_est= .c:1821) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) =3D=3D22227=3D=3D by 0x804BBC2: xvid_encore (../../src/xvid.c:1004) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x809A95A: MEanalyzeMB (../../src/motion/motion_est= .c:1822) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) =3D=3D22227=3D=3D by 0x804BBC2: xvid_encore (../../src/xvid.c:1004) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x8099395: make_mask (../../src/motion/motion_est.c= :873) =3D=3D22227=3D=3D by 0x809A9FC: MEanalyzeMB (../../src/motion/motion_est= .c:1831) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x80993E7: make_mask (../../src/motion/motion_est.c= :874) =3D=3D22227=3D=3D by 0x809A9FC: MEanalyzeMB (../../src/motion/motion_est= .c:1831) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x809946F: make_mask (../../src/motion/motion_est.c= :878) =3D=3D22227=3D=3D by 0x809A9FC: MEanalyzeMB (../../src/motion/motion_est= .c:1831) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x80993B8: make_mask (../../src/motion/motion_est.c= :873) =3D=3D22227=3D=3D by 0x809A9FC: MEanalyzeMB (../../src/motion/motion_est= .c:1831) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x8099411: make_mask (../../src/motion/motion_est.c= :875) =3D=3D22227=3D=3D by 0x809A9FC: MEanalyzeMB (../../src/motion/motion_est= .c:1831) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x8099443: make_mask (../../src/motion/motion_est.c= :876) =3D=3D22227=3D=3D by 0x809A9FC: MEanalyzeMB (../../src/motion/motion_est= .c:1831) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x8097F5E: get_pmv2 (../../src/prediction/mbpredict= ion.h:582) =3D=3D22227=3D=3D by 0x809A856: MEanalyzeMB (../../src/motion/motion_est= .c:1811) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x8097F72: get_pmv2 (../../src/prediction/mbpredict= ion.h:582) =3D=3D22227=3D=3D by 0x809A856: MEanalyzeMB (../../src/motion/motion_est= .c:1811) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x8097F86: get_pmv2 (../../src/prediction/mbpredict= ion.h:582) =3D=3D22227=3D=3D by 0x809A856: MEanalyzeMB (../../src/motion/motion_est= .c:1811) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x8097F94: get_pmv2 (../../src/prediction/mbpredict= ion.h:582) =3D=3D22227=3D=3D by 0x809A856: MEanalyzeMB (../../src/motion/motion_est= .c:1811) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x8097FA2: get_pmv2 (../../src/prediction/mbpredict= ion.h:582) =3D=3D22227=3D=3D by 0x809A856: MEanalyzeMB (../../src/motion/motion_est= .c:1811) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x8097FBC: get_pmv2 (../../src/prediction/mbpredict= ion.h:585) =3D=3D22227=3D=3D by 0x809A856: MEanalyzeMB (../../src/motion/motion_est= .c:1811) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x8097FD0: get_pmv2 (../../src/prediction/mbpredict= ion.h:585) =3D=3D22227=3D=3D by 0x809A856: MEanalyzeMB (../../src/motion/motion_est= .c:1811) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x8097FE4: get_pmv2 (../../src/prediction/mbpredict= ion.h:585) =3D=3D22227=3D=3D by 0x809A856: MEanalyzeMB (../../src/motion/motion_est= .c:1811) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x8097FF2: get_pmv2 (../../src/prediction/mbpredict= ion.h:585) =3D=3D22227=3D=3D by 0x809A856: MEanalyzeMB (../../src/motion/motion_est= .c:1811) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) =3D=3D22227=3D=3D=20 =3D=3D22227=3D=3D Conditional jump or move depends on uninitialised value(s) =3D=3D22227=3D=3D at 0x8098000: get_pmv2 (../../src/prediction/mbpredict= ion.h:585) =3D=3D22227=3D=3D by 0x809A856: MEanalyzeMB (../../src/motion/motion_est= .c:1811) =3D=3D22227=3D=3D by 0x8096954: MEanalysis (../../src/motion/motion_est.= c:1892) =3D=3D22227=3D=3D by 0x8086399: encoder_encode_bframes (../../src/encode= r.c:1020) End of 1st frame then encoding is done without errors PS : this valgrind report has been done using BIGLUT --=20 Edouard Gomez --jI8keyz6grp/JLjh Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+JKTVR5dTYz5sWMcRApisAKD5RY7uxJAGE+Z9JMzPbFHryK0FGgCeJ8pD wcVxhfIp3gdY7IQM0rwwFOw= =HFjv -----END PGP SIGNATURE----- --jI8keyz6grp/JLjh-- From xvid-devel@xvid.org Tue Jan 14 22:14:56 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Tue, 14 Jan 2003 23:14:56 +0100 Subject: [XviD-devel] [not BUG] XVID_CSP_RGB24 + XVID_CSP_VFLIP In-Reply-To: <1042549032.3e240928a3cb3@imp.free.fr> References: <20030113233638.GB9243@leeloo> <20030114223627.67A5.SUXEN_DROL@hotmail.com> <1042549032.3e240928a3cb3@imp.free.fr> Message-ID: <20030114221456.GC524@leeloo> --JgQwtEuHJzHdouWu Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Ok i was wrong, i did a wrong check in my code. Mea Culpa --=20 Edouard Gomez --JgQwtEuHJzHdouWu Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+JIvgR5dTYz5sWMcRAhuYAJ93feF235W3I4MDqkVk+EuPswir4wCdHl/U MI1r67i+9kVQ1gJ3DfnQhks= =QgW/ -----END PGP SIGNATURE----- --JgQwtEuHJzHdouWu-- From xvid-devel@xvid.org Tue Jan 14 21:45:46 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Tue, 14 Jan 2003 22:45:46 +0100 Subject: [XviD-devel] [BUG] XVID_CSP_RGB24 + XVID_CSP_VFLIP In-Reply-To: <1042549032.3e240928a3cb3@imp.free.fr> References: <20030113233638.GB9243@leeloo> <20030114223627.67A5.SUXEN_DROL@hotmail.com> <1042549032.3e240928a3cb3@imp.free.fr> Message-ID: <20030114214546.GA524@leeloo> --7AUc2qLy4jB3hD7Z Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Well, i must admit i cannot reproduce the transcode's bug patching xvid_encraw in order to use RGB24 (pnm files instead of pgm). I think i'll look at the transcode module, perhaps i did something wrong i missed yesterday. --=20 Edouard Gomez --7AUc2qLy4jB3hD7Z Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+JIUKR5dTYz5sWMcRArcoAKDYP4sr3PrYxnUDkOokaaxoIww0ZgCg19nd PYswDxWym5gBGjHX9LkEmwQ= =LUwA -----END PGP SIGNATURE----- --7AUc2qLy4jB3hD7Z-- From xvid-devel@xvid.org Wed Jan 15 09:04:47 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Wed, 15 Jan 2003 20:04:47 +1100 Subject: [XviD-devel] [DEBUG TASK] Valgrind report In-Reply-To: <20030115000125.GA20499@leeloo> References: <20030115000125.GA20499@leeloo> Message-ID: <20030115200157.39B0.SUXEN_DROL@hotmail.com> On Wed, 15 Jan 2003 01:01:25 +0100 Edouard Gomez wrote: > Well well, still going further in my dev-api-3 tests when trying MfA VLC > codes and i get very strange results when enabling small LUTs. Frame > size becomes HUGE. > > 1- We decided to see if LUTs were not corrupted using valgrind and qt > the end of the email. > > 2- When steping trhough the code, i noticed that the first input frame > goes make is path to encoder.c:1015 then iFrameNum is incremented and > so, first frame is not a *forced IFrame* but it is an IFrame because > MEanalysis is trying to analyse first frame against garbage. I'm pretty > sure valgrind is reporting this bug, because Meanalysis is comparing a > frame with unitialised data. yep. iFrameNum is initially set to zero, but we increment it before doing the: if (iFrameNum==0) force_first_iframe a simple fix is to init iFrameNum=-1. -- pete; life is like a box of ammo From xvid-devel@xvid.org Wed Jan 15 10:08:07 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Wed, 15 Jan 2003 21:08:07 +1100 Subject: [XviD-devel] Custom Quantization MPEG-4 compatiblily issue? In-Reply-To: References: Message-ID: <20030115203029.B8E0.SUXEN_DROL@hotmail.com> On Sun, 12 Jan 2003 15:00:01 +0100 (CET) Christoph Lampert wrote: > > Hi, > > I just tried to create a .m4v stream with branch and include this into a > mp4 file using mp4creator from the mpeg4ip-package. > > It failed, when I included a custom matrix with the error: > > MP4ERROR: MP4WriteCountedString: Numerical result out of range > > > Does XVID do this somehow in a non-standard way? just gave it a try (mp4creator -create=custom.avi custom.mp4), and i i got a similar error: MP4ERROR: MP4WriteCountedString: Result too large the error occurs in the following function: void MP4File::WriteCountedString(char* string, u_int8_t charSize, bool allowExpandedCount) this writes out a string of bytes. the above error is generated when allowExpandedCount=false and the charSize (string length) exceeds 255 bytes. i modified the function to dump the string: custom.avi(custom mpeg qmatrix): charSize=332 bytes: (VOL=171 bytes) data:application/mpeg4-od-au;base64,AYCAgVcBgICBUgUfA4CAgUsAAQAEgICBPSARAGBhABXrQAAMNSsFgICBKwAAAbADAAABtQsAAAEAAAABIAAGxABnDEwQgFMIEBAQEBAQEBAQERAREBESERISERIVExQVFBMVGBYWGBgWFhgZGRseGxkZHR8jIx8dGiksKSQvNjYvQUZBWFhzigoKCgoKCgoKCgqKCooKi4sLCwsLjQwMDQwMDQ8NjY8PDY2PEA+REpEPkBITFhYTEhYZnBmWHaIiHaisKLa2yGMAAAGyWHZpRDAwMDh/AAaAgIABAA== default.avi(default mpeg qmatrix): charSize=160 bytes: (VOL=43 bytes) data:application/mpeg4-od-au;base64,AYCAgFcBgICAUgUfA4CAgEsAAQAEgICAPSARAFZ4ABjMAAANbdsFgICAKwAAAbADAAABtQsAAAEAAAABIAAGxABnDEwQgFJjAAABslh2aUQwMDA4fwAGgICAAQA= both .avis are of similar size; so it seems the charSize is relative to the length of the VOL. thus large VOLs cause mp4creator to fail. -- pete; life is like a box of ammo From xvid-devel@xvid.org Wed Jan 15 12:08:52 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Wed, 15 Jan 2003 23:08:52 +1100 Subject: [XviD-devel] Re: qpel smearing/noise problem In-Reply-To: <000901c2b6a3$d85cf390$1702a8c0@michipc> References: <20030108033627.EAE8.SUXEN_DROL@hotmail.com> <000901c2b6a3$d85cf390$1702a8c0@michipc> Message-ID: <20030115230148.E440.SUXEN_DROL@hotmail.com> On Wed, 8 Jan 2003 00:23:45 +0100 "Michael Militzer" wrote: > I see the following ways to solve the problem: > 1) use xvid for decoding xvid content (encoder+decoder share same idct = no > problems) > 2) implement the 132 inter macroblocks limit and check if this helps > 3) reread the iso specs. I remember a sentence similar to this one: "idct > has to meet IEEE1180 requirements with the following modifications: ..." - > so our idct might be IEEE compliant but is maybe not compatible to the > mpeg-4 standard... > 4) try to agree on one idct implementation between all the various mpeg-4 > decoders (impossible, but at least xvid and ffmpeg could agree on one common > idct, maybe divx also) okay. should we provide a selectable idct? or is that overkill? - integer reference - optimized integer reference (mpeg2dec) - simple_c(ffmpeg) - simple_mmx(ffmpeg) - idct_mmx/xmm(mpeg2dec) -- pete; life is like a box of ammo From xvid-devel@xvid.org Wed Jan 15 13:22:33 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Wed, 15 Jan 2003 14:22:33 +0100 (CET) Subject: [XviD-devel] GMC rc3 - TODO In-Reply-To: <1042568863.1461.24.camel@latitude344> Message-ID: On 14 Jan 2003, skal wrote: > here's a test-bed (a la xvid_bench.c) for future tests on GMC. > I've also quickly hacked a fixed-point incremental version, > just to be sure I still can beat a linux compiler :) > > this is most probably my last contribution to XVID. Farewell! > > Skal Hi Skal, thank you, for this and all, but why are you leaving? Did we annoy you too much? gruel From xvid-devel@xvid.org Wed Jan 15 15:05:41 2003 From: xvid-devel@xvid.org (skal) Date: 15 Jan 2003 16:05:41 +0100 Subject: [XviD-devel] GMC rc3 - TODO In-Reply-To: References: Message-ID: <1042643142.1471.4.camel@latitude344> --=-UdkVIwU0UdFhVLul/4Ck Content-Type: text/plain Content-Transfer-Encoding: 7bit Hi, On Wed, 2003-01-15 at 14:22, Christoph Lampert wrote: > On 14 Jan 2003, skal wrote: > > here's a test-bed (a la xvid_bench.c) for future tests on GMC. > > I've also quickly hacked a fixed-point incremental version, > > just to be sure I still can beat a linux compiler :) > > oops, the evaluation of the average MV was missing an (x,y) offset! Here is a corrected version. I've also simplified the calculation of the gradients (gee...how twisted-minded the ISO is!!) and sped the interpolation a little bit more. Moreover, weird sizes (not power of 2) where not tested... > thank you, for this and all, but why are you leaving? Did we annoy you too > much? well, I like to switch context on a regular basis, so I think I'm gonna (randomly?) pick a new subject of interest for the next 6 months ;) take care Skal --=-UdkVIwU0UdFhVLul/4Ck Content-Disposition: attachment; filename=xvid_gmc.c Content-Transfer-Encoding: quoted-printable Content-Type: text/x-c; name=xvid_gmc.c; charset=ISO-8859-1 /************************************************************************** * * XVID MPEG-4 VIDEO CODEC - Unit tests and benches for GMC * * This program is free software; you can redistribute it and/or modif= y * it under the terms of the GNU General Public License as published b= y * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * *************************************************************************/ /************************************************************************ * =20 * History: * * 01.04.2003 alt impl. w/ 4b fixed-point - Skal - * *************************************************************************/ #include #include #include // for gettimeofday #include // for memset #include #include "xvid.h" #include "portab.h" #include "global.h" // inner guts #include "image/image.h" #include "utils/mbfunctions.h" #include "motion/motion.h" #include "utils/mem_transfer.h" #include "utils/emms.h" #include "utils/timer.h" #include const int speed_ref =3D 50; /********************************************************************* * misc *********************************************************************/ /* returns time in micro-s*/ double gettime_usec() { =20 struct timeval tv; gettimeofday(&tv, 0); return tv.tv_sec*1.0e6 + tv.tv_usec; } void write_pgm(int w, int h, int BpS, int BpSc, IMAGE *I) { static int nb =3D 0; int i; FILE *f; char name[64]; sprintf( name, "dec%.5d.pgm", nb++ ); f =3D fopen(name, "wb"); if (!f) return; fprintf(f, "P5\n\n%d %d 255\n", w, h*3/2); for(i=3D0; iy + i*BpS, w, 1, f); for(i=3D0; iu + i*BpSc, w/2,1, f); fwrite(I->v + i*BpSc, w/2,1, f); } fclose(f); } /* Pseudo-random generator specified by IEEE 1180 */ static long ieee_seed =3D 1; static void ieee_reseed(long s) { ieee_seed =3D s; } static long ieee_rand(int Min, int Max) { static double z =3D (double) 0x7fffffff; long i,j; double x; ieee_seed =3D (ieee_seed * 1103515245) + 12345; i =3D ieee_seed & 0x7ffffffe; x =3D ((double) i) / z; x *=3D (Max-Min+1); j =3D (long)x; j =3D j + Min; assert(j>=3DMin && j<=3DMax); return (short)j; } /********************************************************************* * GMC decoding test *********************************************************************/ typedef void (*GMC_Param_Func)( const int num_wp, const int res, const WARPPOINTS *const warp, const int width, const int height, GMC_DATA *const gmc ); typedef VECTOR (*GMC_MB_Func)( const GMC_DATA *const gmc_data, const IMAGE *const pRef, const int mi, const int mj, const int stride, const int stride2, const int quarterpel, const int rounding, IMAGE *const pGMC); void test_GMC(GMC_Param_Func PFunc, GMC_MB_Func MFunc ) { double t; const int nb_tests =3D speed_ref; const int W =3D 256, H =3D 256; const int EW =3D ((W+15)&~15) + 2*EDGE_SIZE; // <=3D> stride const int EH =3D ((H+15)&~15) + 2*EDGE_SIZE; const int YSize =3D EW*EH; const int UVSize =3D (EW/2)*(EH/2); const int offset =3D EDGE_SIZE + EDGE_SIZE*EW; const int offset2 =3D EDGE_SIZE/2+(EDGE_SIZE/2)*(EW/2); uint8_t Bits[2][YSize+2*UVSize]; IMAGE Src, Dst; int res, nb_warp, i, n, x, y; int qpel, rounding; WARPPOINTS warps; GMC_DATA data; Src.y =3D Bits[0] +offset; Src.u =3D Bits[0]+YSize +offset2; Src.v =3D Src.u + UVSize; Dst.y =3D Bits[1] +offset; Dst.u =3D Bits[1]+YSize +offset2; Dst.v =3D Dst.u + UVSize; printf( "\n =3D=3D=3D=3D=3D test GMC =3D=3D=3D=3D=3D\n" ); for(res=3D2; res<=3D16; res<<=3D1) { int32_t crc =3D 0; printf( "res=3D%d ... ", res ); t =3D -gettime_usec(); for(qpel=3D0; qpel<=3D1; ++qpel) { for(rounding=3D0; rounding<=3D1; ++rounding) { for(nb_warp=3D0; nb_warp<=3D2; ++nb_warp) { printf( "[%d]", nb_warp ); ieee_reseed(13*nb_warp+37*rounding+qpel+53*res); for(n=3D0; n>2)^(Bits[1][x]<<2)) + ((crc^Bits[1][x])&0xffff= ); } } } } t +=3D gettime_usec(); printf( " ... crc=3D0x%x time=3D%.3lf sec\n", crc, t/1000000. ); } } /********************************************************************* * alt implementation *********************************************************************/ /* let's use some (forbidden) statics until they make it into GMC_DATA */ static int32_t dxF, dyF, dxG, dyG; static int32_t Fo, Go; static int32_t cFo, cGo; #ifndef RSHIFT #define RSHIFT(a,b) ((a) > 0 ? ((a) + (1<<((b)-1)))>>(b) : ((a) + (1<<((b)-= 1))-1)>>(b)) #endif /* assume b>0 */ #ifndef RDIV #define RDIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b)) #endif static uint32_t __inline log2bin(uint32_t value) { int n =3D 0; while (value) { value >>=3D 1; n++; } return n; } void my_GMCparameters( const int num_wp, const int res, const WARPPOINTS *const warp, const int width, const int height, GMC_DATA *const gmc) { const int du0 =3D warp->duv[0].x; const int dv0 =3D warp->duv[0].y; const int du1 =3D warp->duv[1].x; const int dv1 =3D warp->duv[1].y; const int du2 =3D warp->duv[2].x; const int dv2 =3D warp->duv[2].y; int Ws; gmc->W =3D width; gmc->H =3D height; gmc->rho =3D 4 - log2bin(res-1); // =3D {3,2,1,0} for res=3D{2,4,8,16} gmc->alpha =3D log2bin(gmc->W-1); Ws =3D (1 << gmc->alpha);=20 =20 dxF =3D 16*Ws + RDIV( 8*Ws*du1, gmc->W ); dxG =3D RDIV( 8*Ws*dv1, gmc->W ); Fo =3D (res*du0 + 1) << (gmc->alpha+gmc->rho-1); Go =3D (res*dv0 + 1) << (gmc->alpha+gmc->rho-1); if (num_wp=3D=3D2) { dyF =3D -dxG; dyG =3D dxF; } else if (num_wp=3D=3D3) { int beta =3D log2bin(gmc->H-1); int Hs =3D (1 << beta);=20 dyF =3D RDIV( 8*Hs*du2, gmc->H ); dyG =3D 16*Hs + RDIV( 8*Hs*dv2, gmc->H ); if (beta>gmc->alpha) { dxF <<=3D (beta-gmc->alpha); dxG <<=3D (beta-gmc->alpha); gmc->alpha =3D beta; Ws =3D 1<alpha-beta; dyG <<=3D gmc->alpha-beta; } } cFo =3D dxF + dyF + (1 << (gmc->alpha+gmc->rho+1)); cFo +=3D 16*Ws*(du0-1); cGo =3D dxG + dyG + (1 << (gmc->alpha+gmc->rho+1)); cGo +=3D 16*Ws*(dv0-1); } #define MLT(i) (((16-(i))<<16) + (i)) static const uint32_t MTab[16] =3D { MLT( 0), MLT( 1), MLT( 2), MLT( 3), MLT( 4), MLT( 5), MLT( 6), MLT(7), MLT( 8), MLT( 9), MLT(10), MLT(11), MLT(12), MLT(13), MLT(14), MLT(15) }; #undef MLT VECTOR my_GMCimageMB( const GMC_DATA *const gmc_data, const IMAGE *const pRef, const int mi, const int mj, const int stride, const int stride2, const int quarterpel, const int rounding, IMAGE *const pGMC) { const int W =3D gmc_data->W; const int H =3D gmc_data->H; const int rho =3D gmc_data->rho;=20 const int alpha =3D gmc_data->alpha;=20 const int rounder =3D ( 128 - (rounding<<(rho+rho)) ) << 16; uint8_t *dstY, *dstU, *dstV; int I,J; VECTOR avgMV =3D {0,0}; int32_t Fj, Gj; dstY =3D &pGMC->y[(mj*16)*stride+mi*16] + 16; Fj =3D Fo + dyF*mj*16 + dxF*mi*16; Gj =3D Go + dyG*mj*16 + dxG*mi*16; for (J=3D16; J>0; --J) { int32_t Fi, Gi; =20 Fi =3D Fj; Fj +=3D dyF; Gi =3D Gj; Gj +=3D dyG; for (I=3D-16; I<0; ++I) { int32_t F, G; uint32_t ri, rj; F =3D ( Fi >> (alpha+rho) ) << rho; Fi +=3D dxF; G =3D ( Gi >> (alpha+rho) ) << rho; Gi +=3D dxG; avgMV.x +=3D F; avgMV.y +=3D G; ri =3D MTab[F&15]; rj =3D MTab[G&15]; F >>=3D 4; G >>=3D 4; if (F< -1) F=3D-1; else if (F>W) F=3DW; if (G< -1) G=3D-1; else if (G>H) G=3DH; { // MMX-like bilinear... const int offset =3D G*stride + F; uint32_t f0, f1; f0 =3D pRef->y[ offset +0 ]; f0 |=3D pRef->y[ offset +1 ] << 16; f1 =3D pRef->y[ offset+stride +0 ]; f1 |=3D pRef->y[ offset+stride +1 ] << 16; f0 =3D (ri*f0)>>16; f1 =3D (ri*f1) & 0x0fff0000; f0 |=3D f1;=20 f0 =3D ( rj*f0 + rounder ) >> 24; dstY[I] =3D (uint8_t)f0; } } dstY +=3D stride; } dstU =3D &pGMC->u[(mj*8)*stride2+mi*8] + 8; dstV =3D &pGMC->v[(mj*8)*stride2+mi*8] + 8; Fj =3D cFo + dyF*4 *mj*8 + dxF*4 *mi*8; Gj =3D cGo + dyG*4 *mj*8 + dxG*4 *mi*8; for (J=3D8; J>0; --J) { int32_t Fi, Gi; Fi =3D Fj; Fj +=3D 4*dyF;=20 Gi =3D Gj; Gj +=3D 4*dyG; for (I=3D-8; I<0; ++I) { int32_t F, G; uint32_t ri, rj; F =3D ( Fi >> (alpha+rho+2) ) << rho; Fi +=3D 4*dxF; G =3D ( Gi >> (alpha+rho+2) ) << rho; Gi +=3D 4*dxG; ri =3D MTab[F&15]; rj =3D MTab[G&15]; F >>=3D 4; G >>=3D 4; if (F< -1) F=3D-1; else if (F>=3DW/2) F=3DW/2; if (G< -1) G=3D-1; else if (G>=3DH/2) G=3DH/2; { const int offset =3D G*stride2 + F; uint32_t f0, f1; f0 =3D pRef->u[ offset +0 ]; f0 |=3D pRef->u[ offset +1 ] << 16; f1 =3D pRef->u[ offset+stride2 +0 ]; f1 |=3D pRef->u[ offset+stride2 +1 ] << 16; f0 =3D (ri*f0)>>16; f1 =3D (ri*f1) & 0x0fff0000; f0 |=3D f1;=20 f0 =3D ( rj*f0 + rounder ) >> 24; dstU[I] =3D (uint8_t)f0; f0 =3D pRef->v[ offset +0 ]; f0 |=3D pRef->v[ offset +1 ] << 16; f1 =3D pRef->v[ offset+stride2 +0 ]; f1 |=3D pRef->v[ offset+stride2 +1 ] << 16; f0 =3D (ri*f0)>>16; f1 =3D (ri*f1) & 0x0fff0000; f0 |=3D f1;=20 f0 =3D ( rj*f0 + rounder ) >> 24; dstV[I] =3D (uint8_t)f0; =20 } } dstU +=3D stride2; dstV +=3D stride2; } avgMV.x -=3D 16*((256*mi+120)<<4); // 120 =3D 15*16/2 avgMV.y -=3D 16*((256*mj+120)<<4); avgMV.x =3D RSHIFT( avgMV.x, (4+7-quarterpel) ); avgMV.y =3D RSHIFT( avgMV.y, (4+7-quarterpel) ); return avgMV; } /********************************************************************* * main *********************************************************************/ int main(int argc, char *argv[]) { int what =3D 0; if (argc>1) what =3D atoi(argv[1]); if (what=3D=3D0 || what=3D=3D1) test_GMC(generate_GMCparameters, generate_GMCimageMB); if (what=3D=3D0 || what=3D=3D2) test_GMC(my_GMCparameters, my_GMCimageMB); return 0; } /*********************************************************************/ --=-UdkVIwU0UdFhVLul/4Ck-- From xvid-devel@xvid.org Wed Jan 15 16:24:36 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Wed, 15 Jan 2003 17:24:36 +0100 (CET) Subject: [XviD-devel] GMC rc3 - TODO In-Reply-To: <1042643142.1471.4.camel@latitude344> Message-ID: On 15 Jan 2003, skal wrote: > On Wed, 2003-01-15 at 14:22, Christoph Lampert wrote: > > On 14 Jan 2003, skal wrote: > > > here's a test-bed (a la xvid_bench.c) for future tests on GMC. > > > I've also quickly hacked a fixed-point incremental version, > > > just to be sure I still can beat a linux compiler :) > > > > oops, the evaluation of the average MV was missing an > (x,y) offset! Here is a corrected version. I've also > simplified the calculation of the gradients (gee...how > twisted-minded the ISO is!!) and sped the interpolation > a little bit more. Neat. We'll have to remember not to do this on machines where integers access has to be aligned. Please someone remind me, if I forget and complain one day... > Moreover, weird sizes (not power of 2) where not tested... Weird sizes for what? For image size? > > thank you, for this and all, but why are you leaving? Did we annoy you too > > much? > > well, I like to switch context on a regular basis, so I think > I'm gonna (randomly?) pick a new subject of interest for the > next 6 months ;) Sorry to lose you. :-( It was fun! gruel P.S. Skal, of course, you _do_ beat the compiler (at least gcc 2.95), but not as high as I expected, only by about 10%-12% here... Aren't you tempted to make it at least 50% >;-) xvid_gmc.c compiled with gcc -O2 -march=i686 -mcpu=i686 -funroll-loops -fstrict-aliasing -fomit-frame-pointer -fPIC -mpreferred-stack-boundary=4 on lame PII-450. "ugly gruel ISO" version ===== test GMC ===== res=2 ... [0][1][2][0][1][2][0][1][2][0][1][2] ... crc=0x7fb9 time=5.824sec 103.02 fps res=4 ... [0][1][2][0][1][2][0][1][2][0][1][2] ... crc=0x8a58 time=5.816sec 103.16 fps res=8 ... [0][1][2][0][1][2][0][1][2][0][1][2] ... crc=0x58c4 time=5.752sec 104.31 fps res=16 ...[0][1][2][0][1][2][0][1][2][0][1][2] ... crc=0x8a58 time=5.743sec 104.48 fps "Skal" version ===== test GMC ===== res=2 ... [0][1][2][0][1][2][0][1][2][0][1][2] ... crc=0x7fb9 time=5.247sec 114.36 fps res=4 ... [0][1][2][0][1][2][0][1][2][0][1][2] ... crc=0x8a58 time=5.272sec 113.81 fps res=8 ... [0][1][2][0][1][2][0][1][2][0][1][2] ... crc=0x58c4 time=5.214sec 115.08 fps res=16 ...[0][1][2][0][1][2][0][1][2][0][1][2] ... crc=0x8a58 time=5.215sec 115.06 fps From xvid-devel@xvid.org Wed Jan 15 17:02:44 2003 From: xvid-devel@xvid.org (skal) Date: 15 Jan 2003 18:02:44 +0100 Subject: [XviD-devel] GMC rc3 - TODO In-Reply-To: References: Message-ID: <1042650164.3684.21.camel@latitude344> Gruel, On Wed, 2003-01-15 at 17:24, Christoph Lampert wrote: > > Moreover, weird sizes (not power of 2) where not tested... > > Weird sizes for what? For image size? (for the sprite size, the one used in ROUND_DIV()) > > P.S. Skal, of course, you _do_ beat the compiler (at least gcc 2.95), but > not as high as I expected, only by about 10%-12% here... Aren't you > tempted to make it at least 50% >;-) > well, the evil temptation would be to keep on optimizing a code that is just in test phase so far. Of course there's still tricks to inject, but it would be premature, and would the code hardly readable... For instance, clamping the vector between in [0..W[ and [0..H[ is faster using: int offset = 0; if ((uint32_t)F=W) offset = W; if ((uint32_t)G=H) offset += H*stride; but rather obfuscated... Anyway, a better hunt for speed would be splitting the loop in two: 1rst pass: iterate F and G, clamp, store offsets and weights into a temp array. 2nd pass: perform the bilinear interp. itself, with a 1-sample delay line => Tighter loops, and 2nd pass very suitable for MMX-izing Also: move the calc of avgMV away from the main loop: it may fattens the code too much... bye, Skal > xvid_gmc.c compiled with > > gcc -O2 -march=i686 -mcpu=i686 -funroll-loops -fstrict-aliasing > -fomit-frame-pointer -fPIC -mpreferred-stack-boundary=4 > > on lame PII-450. > > > "ugly gruel ISO" version ===== test GMC ===== > > res=2 ... [0][1][2][0][1][2][0][1][2][0][1][2] ... crc=0x7fb9 time=5.824sec 103.02 fps > res=4 ... [0][1][2][0][1][2][0][1][2][0][1][2] ... crc=0x8a58 time=5.816sec 103.16 fps > res=8 ... [0][1][2][0][1][2][0][1][2][0][1][2] ... crc=0x58c4 time=5.752sec 104.31 fps > res=16 ...[0][1][2][0][1][2][0][1][2][0][1][2] ... crc=0x8a58 time=5.743sec 104.48 fps > > > "Skal" version ===== test GMC ===== > > res=2 ... [0][1][2][0][1][2][0][1][2][0][1][2] ... crc=0x7fb9 time=5.247sec 114.36 fps > res=4 ... [0][1][2][0][1][2][0][1][2][0][1][2] ... crc=0x8a58 time=5.272sec 113.81 fps > res=8 ... [0][1][2][0][1][2][0][1][2][0][1][2] ... crc=0x58c4 time=5.214sec 115.08 fps > res=16 ...[0][1][2][0][1][2][0][1][2][0][1][2] ... crc=0x8a58 time=5.215sec 115.06 fps > > > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel > From xvid-devel@xvid.org Wed Jan 15 17:31:41 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Wed, 15 Jan 2003 18:31:41 +0100 (CET) Subject: [XviD-devel] GMC rc3 - TODO In-Reply-To: <1042650164.3684.21.camel@latitude344> Message-ID: On 15 Jan 2003, skal wrote: > > P.S. Skal, of course, you _do_ beat the compiler (at least gcc 2.95), but > > not as high as I expected, only by about 10%-12% here... Aren't you > > tempted to make it at least 50% >;-) > > well, the evil temptation would be to keep on optimizing > a code that is just in test phase so far. Of course there's > still tricks to inject, but it would be premature, and > would the code hardly readable... Yes, there will be 3-warp-point code, even though it would be better to create a separate routine for that, so calculations for the 2-warp-point codes are not slowed down. Most likely, these routines (which are under very strong restrictions from the standard what their output may be) are going to stay as they are. What really _is_ going to change is GME... > For instance, clamping the vector between in [0..W[ and > [0..H[ is faster using: > > int offset = 0; > if ((uint32_t)F else if (F>=W) offset = W; > if ((uint32_t)G else if (G>=H) offset += H*stride; > > but rather obfuscated... errr, yes. Give me a few hours to think about that, maybe then I'll understand ;-) > Anyway, a better hunt for speed would be splitting > the loop in two: > 1rst pass: iterate F and G, clamp, store offsets and > weights into a temp array. > 2nd pass: perform the bilinear interp. itself, with > a 1-sample delay line > => Tighter loops, and 2nd pass very suitable > for MMX-izing > > Also: move the calc of avgMV away from the main loop: > it may fattens the code too much... Okay, we'll try that. I guess we all learned quite a lot from you, bye! (and tell us what you next project is going to be. Maybe audio encoding? XVID still lacks that ;-) gruel From xvid-devel@xvid.org Wed Jan 15 18:36:44 2003 From: xvid-devel@xvid.org (skal) Date: 15 Jan 2003 19:36:44 +0100 Subject: [XviD-devel] GMC rc3 - TODO In-Reply-To: References: Message-ID: <1042655804.1471.47.camel@latitude344> Christoph, On Wed, 2003-01-15 at 18:31, Christoph Lampert wrote: > On 15 Jan 2003, skal wrote: > > > P.S. Skal, of course, you _do_ beat the compiler (at least gcc 2.95), but > > > not as high as I expected, only by about 10%-12% here... Aren't you > > > tempted to make it at least 50% >;-) > > > > well, the evil temptation would be to keep on optimizing > > a code that is just in test phase so far. Of course there's > > still tricks to inject, but it would be premature, and > > would the code hardly readable... > > Yes, there will be 3-warp-point code, even though it would be better to > create a separate routine for that, so calculations for the 2-warp-point > codes are not slowed down. Most likely, these routines (which are under > very strong restrictions from the standard what their output may be) are > going to stay as they are. What really _is_ going to change is GME... Note: the main interpolation loop is the same for 3-warp-point case than for the 2-warp-point one. Only the gradients (dxF, dyF, dxG, dyG) are different from the rotation (Cos,-Sin,Sin,Cos). Actually, the second version of xvid_gmc.c I've sent already contains the setup code for the case num_wp = 3. Hope i didn't mess reading the ISO. > > > > For instance, clamping the vector between in [0..W[ and > > [0..H[ is faster using: > > > > int offset = 0; > > if ((uint32_t)F > else if (F>=W) offset = W; > > if ((uint32_t)G > else if (G>=H) offset += H*stride; > > > > but rather obfuscated... > > errr, yes. Give me a few hours to think about that, maybe then I'll > understand ;-) Btw, I've noticed a little 'bug': one should better take the residuals (ri, rj) *after* the F/G vector have been clamped to width/height. Actually, clamping to [-1,W]/[-1,H] is correct if one assumes the edges have been replicated. Otherwise, one can use the code: int W = gmc_data->W<<4; int H = gmc_data->H<<4; int offset = 0; uint32_t ri = 0, rj = 0; if ((uint32_t)F>4; } else if (F>=W) offset = W-1; if ((uint32_t)G<=H) { rj = MTab[G&15]; offset += (G>>4)*stride;} else if (G>=H) offset += (H-1)*stride; instead, which does not make such an assumption. bye, Skal From xvid-devel@xvid.org Thu Jan 16 01:17:56 2003 From: xvid-devel@xvid.org (zhouxiao) Date: Thu, 16 Jan 2003 9:17:56 +0800 Subject: [XviD-devel] about rate control mechanism Message-ID: <20030116011900.839D61C63441C@sm205.163.com> Hi, everyone, Can someone tell me something about the rate control mechanism used in XviD ? Now I am using XviD to encode the realtime scene collected by a camera. And I found that no matter how much the scene changes, the bitstream size for a fixed time interval is almost invariable. That is, If user specify the target bitrate is 900kbps, then, rate control can only maintain the real bitstream size approximately on the level of 900kbs . But maybe in some application, users could expect the real bitstream size can vary acording to the scenes' change, if the scene changes little, the bitrate is low, and if changes much, bitrate increases but cannot exceed 900kbps. That is, we need a rate adjusting mechanism which can ensure the real bitrate always under or on the level of target bitrate , not the rate control used in XviD which can only on the level of target bitrate. Can someone help me on this topic? ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡2003-01-16 From xvid-devel@xvid.org Thu Jan 16 06:57:56 2003 From: xvid-devel@xvid.org (anthony belista) Date: Thu, 16 Jan 2003 17:57:56 +1100 Subject: [XviD-devel] RGB to YV12 Message-ID: <200301161757.57002.anthonyb@stargames.com.au> Hello Pete, I understand you're working on some yv12 decoding. I wonder if you can give me some info about encoding the rgb back to yv12. I can't figure out how it will be mapped in the memory. thanks alot. sorry if I cause you any trouble. anthonyb From xvid-devel@xvid.org Thu Jan 16 07:41:00 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Thu, 16 Jan 2003 08:41:00 +0100 (CET) Subject: [XviD-devel] about rate control mechanism In-Reply-To: <20030116011900.839D61C63441C@sm205.163.com> References: <20030116011900.839D61C63441C@sm205.163.com> Message-ID: <1042702860.3e26620ceb542@imp.free.fr> En réponse à zhouxiao : > > Hi, everyone, > Can someone tell me something about the rate control mechanism used in > XviD ? The included Rate Ccontroller is Constant Bitrate. If i wanted to be precise I'd say it's a CBR/ABR (ABR==average bitrate) > Now I am using XviD to encode the realtime scene collected by a > camera. > And I found that no matter how much the scene changes, the bitstream > size for a fixed time interval is almost invariable. That is, If user > specify the target bitrate is 900kbps, then, rate control can only > maintain > the real bitstream size approximately on the level of 900kbs . That's what we expect from a CBR rate controler :-) The current (simplified) algorithm is not so complicated: 1 - Compute how much bits would have been consumed if nframes were encoded at target bitrate exactly. 2 - Compute how much we relly consumed. 3 - (1) - (2) gives the number of bits for the next frame. 4 - Supposing there's a linear relation between quantizer and frame size: Choose the appropriate quantizer You're done. Of course the real algorithm is a bit more complicated because it uses delays, and an internal parameter quality_scene in order to let frames consume a bit more of bits sometimes and then will try to delay the loss of bits ... RC is very inytersting area :-) > But maybe in some application, users could expect the real bitstream > size can vary acording to the scenes' change, if the scene changes > little, the bitrate is low, and if changes much, bitrate increases but > cannot exceed 900kbps. That is, we need a rate adjusting mechanism which > can ensure the real bitrate always under or on the level of target > bitrate , not the rate control used in XviD which can only on the level > of target bitrate. This would be a completely different approach. We could achieve that looking at Motion Estimation vectors. The more motion vectors of Inter blocks are close to zero the less a frame could use bits. It's feasible but that's something "Mr Joe" would use because it's a very quality damaging RC for common encodes. In the hope that one day I finish the RC merge on my local working copy, then such an RC could be included in XviD easily... but i hate saying that i'm laging behind all developers :-( -- Edouard Gomez - The man who hates reports From xvid-devel@xvid.org Thu Jan 16 09:43:29 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Thu, 16 Jan 2003 10:43:29 +0100 (CET) Subject: [XviD-devel] Result of ffmpeg encoding tests Message-ID: Hi, our collegues of ffmpeg got a great overview of tests about PSNR and fps for various combinations of their option. We should do something similar for XVID... and also, we should "steal" the features from ffmpeg which are most beneficial, e.g. "vhq" mode decision (based on real number of bits needed for a macroblock, right?) But maybe ChromaME has a similar effect? http://rguyom.chez.tiscali.fr/libavcodec_tests.html http://rguyom.chez.tiscali.fr/part1.html http://rguyom.chez.tiscali.fr/part2.html http://rguyom.chez.tiscali.fr/part3.html http://rguyom.chez.tiscali.fr/part4.html http://rguyom.chez.tiscali.fr/part5.html gruel From xvid-devel@xvid.org Thu Jan 16 10:41:03 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Thu, 16 Jan 2003 11:41:03 +0100 (CET) Subject: [XviD-devel] Custom Quantization MPEG-4 compatiblily issue? In-Reply-To: <20030115203029.B8E0.SUXEN_DROL@hotmail.com> Message-ID: On Wed, 15 Jan 2003, suxen_drol wrote: > > Does XVID do this somehow in a non-standard way? > > just gave it a try (mp4creator -create=custom.avi custom.mp4), and i > i got a similar error: MP4ERROR: MP4WriteCountedString: Result too large > > the error occurs in the following function: > void MP4File::WriteCountedString(char* string, > u_int8_t charSize, bool allowExpandedCount) > this writes out a string of bytes. the above error is generated when > allowExpandedCount=false and the charSize (string length) exceeds 255 > bytes. > > i modified the function to dump the string: > > custom.avi(custom mpeg qmatrix): charSize=332 bytes: (VOL=171 bytes) > data:application/mpeg4-od-au;base64,AYCAgVcBgICBUgUfA4CAgUsAAQAEgICBPSARAGBhABXrQAAMNSsFgICBKwAAAbADAAABtQsAAAEAAAABIAAGxABnDEwQgFMIEBAQEBAQEBAQERAREBESERISERIVExQVFBMVGBYWGBgWFhgZGRseGxkZHR8jIx8dGiksKSQvNjYvQUZBWFhzigoKCgoKCgoKCgqKCooKi4sLCwsLjQwMDQwMDQ8NjY8PDY2PEA+REpEPkBITFhYTEhYZnBmWHaIiHaisKLa2yGMAAAGyWHZpRDAwMDh/AAaAgIABAA== > > default.avi(default mpeg qmatrix): charSize=160 bytes: (VOL=43 bytes) > data:application/mpeg4-od-au;base64,AYCAgFcBgICAUgUfA4CAgEsAAQAEgICAPSARAFZ4ABjMAAANbdsFgICAKwAAAbADAAABtQsAAAEAAAABIAAGxABnDEwQgFJjAAABslh2aUQwMDA4fwAGgICAAQA= > > both .avis are of similar size; so it seems the charSize is relative to > the length of the VOL. thus large VOLs cause mp4creator to fail. Hm, so does the custom quant matrix AVI file play with ffmpeg? Because transcode segfaults when trying to use custom quant matrices, so I couldn't test it. But maybe that's my fault. gruel From xvid-devel@xvid.org Thu Jan 16 10:59:48 2003 From: xvid-devel@xvid.org (Amit Bhushan) Date: Thu, 16 Jan 2003 16:29:48 +0530 Subject: [XviD-devel] Xvid does not decodes a h.263 bitstream?????????? Message-ID: <46984F04936AEC4A99F6CCC7F2248B740363BD@stsrv02.ssdsi.com> Hi, The Xvid decoder does not decodes the h.263 bitstream as in the bitstream parser it does not read short_video_header value which tells us the type of bits stream .i.e MPEG4 or h.263. Is it so ???? Regards Amit Bhushan. From xvid-devel@xvid.org Thu Jan 16 11:27:49 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Thu, 16 Jan 2003 12:27:49 +0100 (CET) Subject: [XviD-devel] Automatic benchmark / compile Message-ID: Hi, I tested Skal's xvid_gmc (pure C, heavy computation, much memory access) with various compiler flags and found that different CPUs need different setting for "optimimal" performance. Well, what a great result, I'm gonna get the Nobel price for that, I know... Since it's very well 20% or more of a difference between "defaults" and "optimal", I wanted to include a small shell-script into XviD build/generic that could do some kind of automatic benchmarking and set compiler option accordingly (or at least output the values, so everyone can create his own CFLAGS ). My question to you: * Does anyone else of you with knowledge in /bin/sh programming volunteer for that? * Is there a similar method for Windows? gruel From xvid-devel@xvid.org Thu Jan 16 12:39:44 2003 From: xvid-devel@xvid.org (Michael Militzer) Date: Thu, 16 Jan 2003 13:39:44 +0100 Subject: [XviD-devel] Result of ffmpeg encoding tests References: Message-ID: <004c01c2bd5e$802b1dc0$4d0107d5@mmpc> Hi, ----- Original Message ----- From: "Christoph Lampert" To: Sent: Thursday, January 16, 2003 10:43 AM Subject: [XviD-devel] Result of ffmpeg encoding tests > Hi, > > our collegues of ffmpeg got a great overview of tests about PSNR and fps > for various combinations of their option. We should do something similar > for XVID... and also, we should "steal" the features from ffmpeg which are > most beneficial, e.g. "vhq" mode decision (based on real number of > bits needed for a macroblock, right?) But maybe ChromaME has a similar > effect? > > http://rguyom.chez.tiscali.fr/libavcodec_tests.html > http://rguyom.chez.tiscali.fr/part1.html > http://rguyom.chez.tiscali.fr/part2.html > http://rguyom.chez.tiscali.fr/part3.html > http://rguyom.chez.tiscali.fr/part4.html > http://rguyom.chez.tiscali.fr/part5.html yes, we should have something similar. It would be cool if we could agree on a common suite of test sequences and maybe a benchmarking script which would allow automatic testing of new features. Also I quickly tested ffmpeg's MPEG-4 encoding capabilities earlier this week and had similar impressions: 4MV mode seems to give no improvement in ffmpeg if used without vhq. XVID also does not benefit much from 4MV mode currently, I wonder if this could be improved by implementing something similar to vhq mode decision. bye, Michael From xvid-devel@xvid.org Thu Jan 16 12:46:40 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Thu, 16 Jan 2003 23:46:40 +1100 Subject: [XviD-devel] Xvid does not decodes a h.263 bitstream?????????? In-Reply-To: <46984F04936AEC4A99F6CCC7F2248B740363BD@stsrv02.ssdsi.com> References: <46984F04936AEC4A99F6CCC7F2248B740363BD@stsrv02.ssdsi.com> Message-ID: <20030116234229.EBB0.SUXEN_DROL@hotmail.com> On Thu, 16 Jan 2003 16:29:48 +0530 "Amit Bhushan" wrote: > Hi, > The Xvid decoder does not decodes the h.263 bitstream as in the bitstream parser it does not read short_video_header value which tells us the type of bits stream .i.e MPEG4 or h.263. Is it so ???? correct. it'd be trivial to implement decoding support. can u post a link to a sample short-video-header stream? -- pete; life is like a box of ammo From xvid-devel@xvid.org Thu Jan 16 13:09:30 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Fri, 17 Jan 2003 00:09:30 +1100 Subject: [XviD-devel] Custom Quantization MPEG-4 compatiblily issue? In-Reply-To: References: <20030115203029.B8E0.SUXEN_DROL@hotmail.com> Message-ID: <20030116235602.EBB6.SUXEN_DROL@hotmail.com> On Thu, 16 Jan 2003 11:41:03 +0100 (CET) Christoph Lampert wrote: > Hm, so does the custom quant matrix AVI file play with ffmpeg? Because > transcode segfaults when trying to use custom quant matrices, so I > couldn't test it. But maybe that's my fault. it decodes without crashing here, using a ~month old version of ffmpeg. try using ffmpeg natively (./ffmpeg -i custom.avi out%03d.pgm) if that fails, post you quantization matrix; and/or a short bitstream sample. -- pete; life is like a box of ammo From xvid-devel@xvid.org Thu Jan 16 13:25:39 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Thu, 16 Jan 2003 14:25:39 +0100 (CET) Subject: [XviD-devel] Automatic benchmark / compile In-Reply-To: References: Message-ID: <1042723539.3e26b2d388535@imp.free.fr> En réponse à Christoph Lampert : > Since it's very well 20% or more of a difference between "defaults" > and "optimal", I wanted to include a small shell-script into XviD > build/generic that could do some kind of automatic benchmarking and > set compiler option accordingly (or at least output the values, so > everyone can create his own CFLAGS ). This kind of test would fit perfectly in a configure script imo, perhaps it's time for me to try again to make some good autoconf script for XviD. The last time i tried, i failed because i tried to do autoconf+automake, but i think a single Makefile + some settings set thanks to the configure script could be possible. I started unifying Makefiles in 0.9.x branch and only some variables are now platform specific. So it's feasible. > My question to you: > * Does anyone else of you with knowledge in /bin/sh programming > volunteer for that? If i try again the autoconf adventure, then why not ? > * Is there a similar method for Windows? I don't think there's something similar on windows. The better thing to do would be to install cygwin and build XviD with GNU tools. It's as easy as a simple "make -f Makefile.cygwin|mingw" -- Edouard Gomez From xvid-devel@xvid.org Thu Jan 16 13:54:01 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Thu, 16 Jan 2003 14:54:01 +0100 (CET) Subject: [XviD-devel] Automatic benchmark / compile In-Reply-To: <1042723539.3e26b2d388535@imp.free.fr> Message-ID: On Thu, 16 Jan 2003, Edouard Gomez wrote: > En réponse à Christoph Lampert : > > Since it's very well 20% or more of a difference between "defaults" > > and "optimal", I wanted to include a small shell-script into XviD > > build/generic that could do some kind of automatic benchmarking and > > set compiler option accordingly (or at least output the values, so > > everyone can create his own CFLAGS ). > > This kind of test would fit perfectly in a configure script imo, I don't think so. A "configure" script is run after every update (at least download). A automatic benchmarking utility would have to run for several minutes, and the output CFLAGS would 99% surely be reusable for any later build at the same plattform. Most likely the best flags only depend on CPU, RAM speed and compiler and nothing else, so they would be interchangable, too. A configure script could however use a status output like /proc/cpuinfo in Linux to choose the (most likely) best flags, that's of course true... gruel From xvid-devel@xvid.org Thu Jan 16 14:46:08 2003 From: xvid-devel@xvid.org (Antonin Misek) Date: Thu, 16 Jan 2003 15:46:08 +0100 Subject: [XviD-devel] Use chroma motion decreases filesize In-Reply-To: Message-ID: <000701c2bd6e$01486890$1b2ba8c0@cplus07> Hi all, I little tested uManiac build 15.1.2003 15:00. I have interesting result: Use chroma motion decreases filesize in fixed-quant mode (q=4). Some time ago I noticed this in connection to B frames, but now it is also true for QPEL+CHM, and GMC+CHM. GMC increases filesize... TonyMi P.S. My test clip is Mummy, frame 1-1000, 710x428 pixels (i.e. only cropped). From xvid-devel@xvid.org Thu Jan 16 18:02:18 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Thu, 16 Jan 2003 19:02:18 +0100 (CET) Subject: [XviD-devel] Question In-Reply-To: <812352021.20030112231436@syskin.cjb.net> Message-ID: On Sun, 12 Jan 2003, Radek Czyz wrote: > Hello, > 1 > About chromaME: as the code creates chroma planes of GMCed picture, > it's easy to implement ChromaME with GMC. Just two more SAD8s to the > comparsion. Hi Radek, could you do this? It seems that now that binaries are out, people immediately start combining both features... gruel From xvid-devel@xvid.org Thu Jan 16 20:39:36 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Thu, 16 Jan 2003 21:39:36 +0100 Subject: [XviD-devel] RGB to YV12 In-Reply-To: <200301161757.57002.anthonyb@stargames.com.au> References: <200301161757.57002.anthonyb@stargames.com.au> Message-ID: <20030116203935.GB777@leeloo> --dTy3Mrz/UPE2dbVg Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable anthony belista (anthonyb@stargames.com.au) wrote: > Hello Pete, >=20 > I understand you're working on some yv12 decoding. I wonder if you can gi= ve me=20 > some info about encoding the rgb back to yv12. I can't figure out how it = will=20 > be mapped in the memory. thanks alot. sorry if I cause you any trouble. I'll do a quick answer because this is covered in lot of sites out there on the web (google is your friend) RGB is mostly used in its interleaved format which is mapped like this in memory (i'm talking about RGB24 which is 1byte per color component): For each row you have: width*3-2 | width*3-1 byte 1 2 3 4 5 6 ... | | width*3 | | | | | | | | | R.G.B R.G.B ... R.G.B An Y row begins at byte Y*width*3. Then a pixel on horizontal pos X on that row can be accessed using an offset of X*3. This gives a simple formula: uchar *pixel_addr =3D image_ptr + (X+width*Y)*3;=20 Then you can get the color components easily doing this: uchar R =3D *(pixel_addr + 0); uchar G =3D *(pixel_addr + 1); uchar G =3D *(pixel_addr + 2); Now truning an RGB image to an YV12 image is not as easy as picking a single RGB pixel. The first difference between RGB and YV12 is that YV12 uses a planar representation of the components that means that you'll have the Y plane then the U plane and finally the V plane. RGB used an interleaved format as you found each components "mixed together" RGB then RGB again etc etc Anyway, the relation to obtain YUV data from RGB pixels is linear operation using a 3x3 matrix (i don't have the coeeficients, but this does not hurt for the explanation) [Y] [c00 c01 c02][R] [U] =3D [c10 c11 c12][G] [V] [c20 c21 c22][B] This gives: Y =3D c00*R + c01*G + c02*B; U =3D c10*R + c11*G + c12*B; V =3D c20*R + c21*G + c22*B; Another special thing to take care is that YV12 format downsamples U and V planes by a factor 2 on both horizontal and vertical directions. This means that 4 RGB pixels will generate 4 Y samples, but only 1 U and 1 V sample.=20 basically for a four block RGB pixel this gives: RGB RGB Y Y will become UV RGB RGB Y Y 24bpp (3 bytes perpixel) (4*8+2*8)/4bpp =3D=3D 12bpp (3/2 bytes per pixel) Now the overall algorithm is: uchar rgb_image[width*height*3] uchar yuv_image[width*height*3/2] uchar *y =3D yuv_image; /* The Y plane is the first one */ uchar *u =3D y + width*height; /* Then the U plane after a widthxheight Y= plane */ uchar *v =3D u + width*height/4; /* Then the V plane after a (width/2)*(hei= ght/2)=3D=3Dwidth*height/4 U plane */ /* Macros to make the code readable */ #define R(x,y) rgb_image[((y)*width(x))*3 + 0] #define G(x,y) rgb_image[((y)*width(x))*3 + 1] #define B(x,y) rgb_image[((y)*width(x))*3 + 2] for(int y=3D0; y References: <20030115004928.GB20499@leeloo> Message-ID: <20030116211323.GC777@leeloo> --VywGB/WGlW4DM4P8 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Nobody complained so it's now in CVS. If you want old behaviour then define BIGLUT when compiling mbcoding.c. --=20 Edouard Gomez --VywGB/WGlW4DM4P8 Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+JyBzR5dTYz5sWMcRAvOWAJ4n8+LSFzNjK4RJr0R0HlhwDL5bQwCglVFn Qy3VuH7sLhwG7x2SO2qmLB4= =BvLr -----END PGP SIGNATURE----- --VywGB/WGlW4DM4P8-- From xvid-devel@xvid.org Fri Jan 17 02:56:19 2003 From: xvid-devel@xvid.org (zhouxiao) Date: Fri, 17 Jan 2003 10:56:19 +0800 Subject: [XviD-devel] Re: XviD-devel digest, Vol 1 #269 - 5 msgs Message-ID: <20030117025730.72CE31CFAAF22@sm203.163.com> Hi, Edouard Gomez, thanks for your reply. Another question is: If I want use a VBR algorithm to replace the CBR of XviD encoder, Can you introduce me some effective alogorithms? My goal is to do a realtime MPEG4 encoder wich can compress video at very low compression ratio on the precondition of certain quality. As I know, DivX seems to use the SRC scheme mentioned in MPEG-4 VM. But I cannot find which algorithm is used in FFMPEG. zxjan >> >> Hi, everyone, >> Can someone tell me something about the rate control mechanism used in >> XviD ? > >The included Rate Ccontroller is Constant Bitrate. If i wanted to be precise >I'd say it's a CBR/ABR (ABR==average bitrate) > >> Now I am using XviD to encode the realtime scene collected by a >> camera. >> And I found that no matter how much the scene changes, the bitstream >> size for a fixed time interval is almost invariable. That is, If user >> specify the target bitrate is 900kbps, then, rate control can only >> maintain >> the real bitstream size approximately on the level of 900kbs . > >That's what we expect from a CBR rate controler :-) > >The current (simplified) algorithm is not so complicated: > 1 - Compute how much bits would have been consumed if nframes were encoded > at target bitrate exactly. > 2 - Compute how much we relly consumed. > 3 - (1) - (2) gives the number of bits for the next frame. > 4 - Supposing there's a linear relation between quantizer and frame size: > Choose the appropriate quantizer > >You're done. Of course the real algorithm is a bit more complicated because it >uses delays, and an internal parameter quality_scene in order to let frames >consume a bit more of bits sometimes and then will try to delay the loss of bits >... RC is very inytersting area :-) > >> But maybe in some application, users could expect the real bitstream >> size can vary acording to the scenes' change, if the scene changes >> little, the bitrate is low, and if changes much, bitrate increases but >> cannot exceed 900kbps. That is, we need a rate adjusting mechanism which >> can ensure the real bitrate always under or on the level of target >> bitrate , not the rate control used in XviD which can only on the level >> of target bitrate. > >This would be a completely different approach. We could achieve that looking at >Motion Estimation vectors. The more motion vectors of Inter blocks are close to >zero the less a frame could use bits. It's feasible but that's something >"Mr Joe" would use because it's a very quality damaging RC for common encodes. > >In the hope that one day I finish the RC merge on my local working copy, then >such an RC could be included in XviD easily... but i hate saying that i'm laging >behind all developers :-( > >-- >Edouard Gomez - The man who hates reports > From xvid-devel@xvid.org Fri Jan 17 11:04:18 2003 From: xvid-devel@xvid.org (Radek Czyz) Date: Fri, 17 Jan 2003 21:34:18 +1030 Subject: Re[2]: [XviD-devel] Question In-Reply-To: References: Message-ID: <13358555.20030117213418@syskin.cjb.net> Hello Christoph, Friday, January 17, 2003, 4:32:18 AM, you wrote: > could you do this? It seems that now that binaries are out, people > immediately start combining both features... I did it the next day after you said that GMC can go to public. There hadn't been any danger of VfW people using it before, because VfW was still using the old flag - ChromaME hadn't been of any effect. It's all fixed now. Radek From xvid-devel@xvid.org Fri Jan 17 11:11:41 2003 From: xvid-devel@xvid.org (Dirk Knop) Date: Fri, 17 Jan 2003 12:11:41 +0100 Subject: [XviD-devel] Question In-Reply-To: <13358555.20030117213418@syskin.cjb.net> References: <13358555.20030117213418@syskin.cjb.net> Message-ID: <3E27E4ED.7090107@gwdg.de> Hi, Radek Czyz wrote: >Hello Christoph, > >Friday, January 17, 2003, 4:32:18 AM, you wrote: > > > >>could you do this? It seems that now that binaries are out, people >>immediately start combining both features... >> >> > >I did it the next day after you said that GMC can go to public. >There hadn't been any danger of VfW people using it before, because >VfW was still using the old flag - ChromaME hadn't been of any effect. > >It's all fixed now. > I'm sorry to interfere here, but this isn't the whole truth: 2pass curve treatment is messed up :-/ It's impossible to do a proper 2pass now, the 2nd pass gets encoded with fixed quant 2 as well (in my tests), and some user reports on Doom9 are pointing in the same direction. ;) Regards Koepi From xvid-devel@xvid.org Fri Jan 17 11:40:46 2003 From: xvid-devel@xvid.org (Romain PIQUOIS) Date: Fri, 17 Jan 2003 20:40:46 +0900 Subject: [XviD-devel] Use of xvid to create a videoconferencing tool. Message-ID: <03d101c2be1d$4634ce30$77010a0a@klab.org> Hi everybody, I am new to the scene but I had a lot of interested in video encoding (I mean here technically) since the beginning of DivX. Actually I would like to start an open source project to do videoconferencing using Mpeg4 codec. Here is my questions for the experts : - Do you think that xvid and such would bring a lot of performance increase compare to H263 (Microsoft NetMeeting) ? - Do you think that it is a compression scheme is adapted to such application ? I am talking here of a bandwith between 150kpbs and 1mbit including audio+video+videoconf info. I was especially thinking about feature such as encoding at variable rate redefined in real time or usage to B Frame instead of P frame to avoid to go over the bandwidth ability and so on... - Do you think that it is possible that I can help to modify the codec to work with so special conditions ? I think I am good programmer but not used well to codec programming and underlying mathematics about compression. I have some ideas about how I could modify the codec to be more efficient with such use but would like to discuss these issues if people here are interested in such use... Video encoding is great but I think there is more usage than ripping DVDs. :-P (dont flame me, it is humor...) Thanks, Romain. From xvid-devel@xvid.org Fri Jan 17 13:00:41 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Fri, 17 Jan 2003 14:00:41 +0100 Subject: [XviD-devel] [PATCH] into CVS now In-Reply-To: <20030116211323.GC777@leeloo> References: <20030115004928.GB20499@leeloo> <20030116211323.GC777@leeloo> Message-ID: <200301171400.41113.elcabesa@inwind.it> Alle Thursday 16 January 2003 22:13, Edouard Gomez ha scritto: > Nobody complained so it's now in CVS. > > If you want old behaviour then define BIGLUT when compiling mbcoding.c. ok after your commit i had tested it nad with this configuration it make wrong file with artifact in moving object mencoder -dvd 1 -oac mp3lame -lameopts br=128:vbr=3 -ovc xvid -xvidencopts fixed_quant=3:me_quality=6:max_bframes=4:bquant_ratio=120:gmc=1:me_colour=1:lumi_mask=1:4mv=1 -vop scale=640:264,crop=710:420:5:78 -endpos 1:31:25 -sws 2 -alang it -o prova.avi these mean xvid usign fixed quant, bframes 4:120:0 gmc ,chromaMe, lumi mask and 4mv simply disabling gmc it suddenly work=) i'll try some other testing triyng playng with parameter and i hope i'll do a bugreport before these nigth=) what do you mean with "Much lighter VLC implementation (saves >6MB)" log? and what are LUT? byeee=) From xvid-devel@xvid.org Fri Jan 17 13:33:03 2003 From: xvid-devel@xvid.org (Venkata Tumati) Date: Fri, 17 Jan 2003 08:33:03 -0500 Subject: [XviD-devel] multiple layers In-Reply-To: <20030117110001.21763.85983.Mailman@edu.bnhof.de> Message-ID: <000601c2be2c$f6ba2cf0$58783b18@hanuman> Hey, How do I encode multiple layers? -venkata From xvid-devel@xvid.org Fri Jan 17 13:37:58 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Fri, 17 Jan 2003 14:37:58 +0100 (CET) Subject: [XviD-devel] [PATCH] into CVS now In-Reply-To: <200301171400.41113.elcabesa@inwind.it> References: <20030115004928.GB20499@leeloo> <20030116211323.GC777@leeloo> <200301171400.41113.elcabesa@inwind.it> Message-ID: <1042810678.3e2807369b1c1@imp.free.fr> En réponse à "Marco \"elcabesa\" Belli" : > ok after your commit i had tested it nad with this configuration it make > wrong file with artifact in moving object > > mencoder -dvd 1 -oac mp3lame -lameopts br=128:vbr=3 -ovc xvid \ > -xvidencopts fixed_quant=3:me_quality=6:max_bframes=4:bquant_ratio=120:gmc=1:me_colour=1:lumi_mask=1:4mv=1 \ > -vop scale=640:264,crop=710:420:5:78 -endpos 1:31:25 -sws 2 -alang it -o prova.avi \ > > these mean xvid usign fixed quant, bframes 4:120:0 gmc ,chromaMe, lumi > mask and 4mv > My patch does not touch how features work. It modify the way we code final coefficients with smaller lookup tables for variable length encoding. > simply disabling gmc it suddenly work=) Then the bug is probably in GMC > what do you mean with > "Much lighter VLC implementation (saves >6MB)" log? and what are LUT? VLC = Variable Length Coding This is the final comnpression stage, when writing to bitsream the 8x8 blocks we write each coefficient as a (last, run, level) triplet. 'last' is 1 bit long and tells the decoder if it's the final non zero coefficient. 'run' is a runlength that tells the decoder how much zeros are preceding this non zero code. 'level' is the value of the encoded block element. To speedup the variable length coding we use Look Up Tables (the LUTs) that we address using a 3d address, as you might guess, we address then using run, last and level coordinates. The old implemetation was using >10MB LUTs on my system (because i was aligned on 32bit boundaries all the structures) The new implementation uses much smaller LUTs that are 64KB long. We hoped in a first time to save bandwidth at the expense of a bit more CPU instructions. Big LUTs were probably killing the performance of D2 cache which is generally 128KB or 256KB. As i posted a few weeks ago, the switch from big LUTs to small LUTs helped in D2 cache saving passing from 0.9% of misses to 0.1% (according to valgrind cache sinmulations). But the overall performance slowed down a bit (1%) I called for comments and it seemed clear that everyone agreed on using small LUTs to save memory. It seems logical that when using 0.9.0 (or dev-api-3 since the patch is in CVS) it is stupid to loose 10MB for LUTs, while frames buffers will occupy approximatively the same amount of space. With dev-api-3 the situation is even worst because we buffer more frames because of bframes. Not using small LUTs would have meant that we deliberately want to waste RAM to gain 1% overall gain speed. -- Edouard Gomez From xvid-devel@xvid.org Fri Jan 17 14:41:50 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 17 Jan 2003 15:41:50 +0100 (CET) Subject: [XviD-devel] [PATCH] into CVS now In-Reply-To: <200301171400.41113.elcabesa@inwind.it> Message-ID: On Fri, 17 Jan 2003, Marco "elcabesa" Belli wrote: > ok after your commit i had tested it nad with this configuration it make wrong > file with artifact in moving object > > mencoder -dvd 1 -oac mp3lame -lameopts br=128:vbr=3 -ovc xvid -xvidencopts > fixed_quant=3:me_quality=6:max_bframes=4:bquant_ratio=120:gmc=1:me_colour=1:lumi_mask=1:4mv=1 > -vop scale=640:264,crop=710:420:5:78 -endpos 1:31:25 -sws 2 -alang it -o > prova.avi > > these mean xvid usign fixed quant, bframes 4:120:0 gmc ,chromaMe, lumi mask > and 4mv > > simply disabling gmc it suddenly work=) Please make sure that not only your xvid-branch but also ffmpeg-branch is the very latest version. Then could you please check if anything similar happens with fewer options (keeping gmc, but disabling in this order: lumi mask, chromaME, 4mv, bframes) ? Last: can you provide me with a sample (as few frames as possible)? gruel From xvid-devel@xvid.org Fri Jan 17 14:49:17 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Fri, 17 Jan 2003 15:49:17 +0100 Subject: [XviD-devel] [PATCH] into CVS now In-Reply-To: <1042810678.3e2807369b1c1@imp.free.fr> References: <20030115004928.GB20499@leeloo> <200301171400.41113.elcabesa@inwind.it> <1042810678.3e2807369b1c1@imp.free.fr> Message-ID: <200301171549.17998.elcabesa@inwind.it> i have both last cvs and cvs before your last commit. .i'll try them and then told you if it work=) doing some testing i saw that qpel work perfectly, using a fixed quant and bframes my final file became 50mb insthead of 64mb =) very very good=) From xvid-devel@xvid.org Fri Jan 17 15:37:36 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Fri, 17 Jan 2003 16:37:36 +0100 Subject: [XviD-devel] [PATCH] into CVS now In-Reply-To: References: Message-ID: <200301171637.36624.elcabesa@inwind.it> i use not ffmpeg to look xvid encoded files, but xvid deocder=) and i found the bug=) int ilfe mbcoding.c at line 260 there is sprite_trajectory_code[0+16384].code = 0; sprite_trajectory_code[0+16384].len = 0; for (k=0;k<14;k++) { int limit = (1< Message-ID: On Fri, 17 Jan 2003, Marco "elcabesa" Belli wrote: > i use not ffmpeg to look xvid encoded files, but xvid deocder=) > > and i found the bug=) > [...] > > if you cannot see the diffrence between the 2 codes , this is the diffrence > > sprite_trajectory_code[i+16384].code = (2*limit-1)+l; WRONG CODE it uses i to > address vector insthead of l > > sprite_trajectory_code[i+16384].code = (2*limit-1)+l; right code > > so gmc vector were inizialided in a bad way=) Thanks, elcabesa! The fix is committed. gruel From xvid-devel@xvid.org Fri Jan 17 16:28:02 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Fri, 17 Jan 2003 17:28:02 +0100 Subject: [XviD-devel] [PATCH] into CVS now In-Reply-To: References: Message-ID: <200301171728.02174.elcabesa@inwind.it> > Thanks, elcabesa! The fix is committed. > > gruel thanks you all for this greath encoder From xvid-devel@xvid.org Fri Jan 17 16:47:14 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 17 Jan 2003 17:47:14 +0100 (CET) Subject: [XviD-devel] [PATCH] into CVS now In-Reply-To: <200301171728.02174.elcabesa@inwind.it> Message-ID: On Fri, 17 Jan 2003, Marco "elcabesa" Belli wrote: > > > Thanks, elcabesa! The fix is committed. > > > > gruel > > thanks you all for this greath encoder Btw, how did you find the wrong code so quickly? gruel From xvid-devel@xvid.org Fri Jan 17 17:35:32 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Fri, 17 Jan 2003 18:35:32 +0100 (CET) Subject: [XviD-devel] [PATCH] into CVS now In-Reply-To: <200301171637.36624.elcabesa@inwind.it> References: <200301171637.36624.elcabesa@inwind.it> Message-ID: <1042824932.3e283ee406bc3@imp.free.fr> En réponse à "Marco \"elcabesa\" Belli" : > and i found the bug=) So you were right and i was wrong... mea culpa this s the VLC patch which broke the sprite trajectory initialization :-( I must admit i tested the VLC patch using old quality settings with xvid_encraw so i did not use GMC... stupid, i should have tested this as well. Anyway it's now fixed, thanks -- Edouard Gomez From xvid-devel@xvid.org Fri Jan 17 18:11:43 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Fri, 17 Jan 2003 19:11:43 +0100 Subject: [XviD-devel] [PATCH] into CVS now In-Reply-To: References: Message-ID: <200301171911.43510.elcabesa@inwind.it> > > Btw, how did you find the wrong code so quickly? > > gruel downloading from cvs the last code that work and then looking inside old and new verison what was changed, luckly the bug was in the in the first line of code=) >So you were right and i was wrong... mea culpa this s the VLC patch which >broke the sprite trajectory initialization :-( nothing to complain to you =) only one thing to complain for, enabling gmc,bframes, luma, qpel, crhoma etc etc... my enocding solw down to 6 fps=( argggg disabling all them ,encodeing speed up to 25-30 fps=) but since i know nothing about assembler, i'll wait that all this code became stable and someone will port it to assembler code =) From xvid-devel@xvid.org Fri Jan 17 20:15:25 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 17 Jan 2003 21:15:25 +0100 (CET) Subject: [XviD-devel] Error Resilience Message-ID: Hi, to really become Advanced Simple Profile we need Error Resilience: Slice Resync, Data Partitioning, Reversible VLC. And I just saw that this already is a part of Simple Profile(!) Is anyone (interested in) working on this? gruel From xvid-devel@xvid.org Fri Jan 17 20:22:02 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 17 Jan 2003 21:22:02 +0100 (CET) Subject: [XviD-devel] Error Resilience In-Reply-To: Message-ID: On Fri, 17 Jan 2003, Christoph Lampert wrote: > Hi, > > to really become Advanced Simple Profile we need Error Resilience: Slice > Resync, Data Partitioning, Reversible VLC. > > And I just saw that this already is a part of Simple Profile(!) "Short header", too, and XviD does not fully support it, yet! gruel From xvid-devel@xvid.org Sat Jan 18 00:30:10 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sat, 18 Jan 2003 11:30:10 +1100 Subject: [XviD-devel] Error Resilience In-Reply-To: References: Message-ID: <20030118112306.0F45.SUXEN_DROL@hotmail.com> On Fri, 17 Jan 2003 21:22:02 +0100 (CET) Christoph Lampert wrote: > On Fri, 17 Jan 2003, Christoph Lampert wrote: > > > Hi, > > > > to really become Advanced Simple Profile we need Error Resilience: Slice > > Resync, Data Partitioning, Reversible VLC. > > > > And I just saw that this already is a part of Simple Profile(!) > > "Short header", too, and XviD does not fully support it, yet! > > gruel are you refering the decoder or encoder, or both. slice resync: xvid decoder support it already. encoding support is not difficult, but you have to keep track of the slice-boundary (because ac/dc, mv predicition can't occur over the boundary). data partitioning: i have been meaning to implement data partitioning in the decoder, but it is low priority. reversible vlc: iam unaware of any encoder/decoder that support this (other than the reference software). short header: easy to implement. (but i dont think the encoder should use this format..) -- pete; life is like a box of ammo From xvid-devel@xvid.org Sat Jan 18 00:40:24 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sat, 18 Jan 2003 11:40:24 +1100 Subject: [XviD-devel] Use of xvid to create a videoconferencing tool. In-Reply-To: <03d101c2be1d$4634ce30$77010a0a@klab.org> References: <03d101c2be1d$4634ce30$77010a0a@klab.org> Message-ID: <20030118113019.0F48.SUXEN_DROL@hotmail.com> On Fri, 17 Jan 2003 20:40:46 +0900 "Romain PIQUOIS" wrote: > Hi everybody, hello. > > I am new to the scene but I had a lot of interested in video encoding (I > mean here technically) > since the beginning of DivX. > > Actually I would like to start an open source project to do > videoconferencing using Mpeg4 codec. have u looked at ffmpeg? > Here is my questions for the experts : > - Do you think that xvid and such would bring a lot of performance increase > compare > to H263 (Microsoft NetMeeting) ? > - Do you think that it is a compression scheme is adapted to such > application ? i havent used netmeeting; i'd say if used correctly, mpeg-4 would offer a quality increase. > I am talking here of a bandwith between 150kpbs and 1mbit including > audio+video+videoconf info. > I was especially thinking about feature such as encoding at variable rate > redefined in real time or > usage to B Frame instead of P frame to avoid to go over the bandwidth > ability and so on... what resolutions? i've been playing arround with the real-time-simple (rts) profile. it doesnt support bframes, but you get reduced resolution vops which coiuld be used to avoid exceeding the available bandwidth > > - Do you think that it is possible that I can help to modify the codec to > work with so special conditions ? sure. the biggest problem i see for real-time streaming is ratecontrol. our cbr/abr algo needs improving. > I think I am good programmer but not used well to codec programming and > underlying mathematics about compression. there's not much mathematics... > I have some ideas about how I could modify the codec to be more efficient > with such use but would like to discuss these issues if people here are > interested in such use... > > Video encoding is great but I think there is more usage than ripping DVDs. > :-P > (dont flame me, it is humor...) you are correct! -- pete; life is like a box of ammo From xvid-devel@xvid.org Sat Jan 18 12:59:00 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 18 Jan 2003 13:59:00 +0100 (CET) Subject: [XviD-devel] Error Resilience In-Reply-To: <20030118112306.0F45.SUXEN_DROL@hotmail.com> Message-ID: On Sat, 18 Jan 2003, suxen_drol wrote: > are you refering the decoder or encoder, or both. For MPEG-4 compliance, I guess we only need to decode it. > slice resync: xvid decoder support it already. encoding support is not > difficult, but you have to keep track of the slice-boundary (because > ac/dc, mv predicition can't occur over the boundary). > > data partitioning: i have been meaning to implement data partitioning in > the decoder, but it is low priority. > > reversible vlc: iam unaware of any encoder/decoder that support this (other > than the reference software). > > short header: easy to implement. (but i dont think the encoder should > use this format..) No, I don't think the encoder needs any of this. But even if others claim to be MPEG-4 and don't really support it, XVID could. gruel From xvid-devel@xvid.org Sat Jan 18 16:32:55 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 18 Jan 2003 17:32:55 +0100 (CET) Subject: [XviD-devel] Setting Target Avg. Quant and Interval around it Message-ID: Hi, I tried to read the source, but there's way to much mathematics in it for me. Also, I only use the 2pass-lib for transcode, not the VfW, but maybe the method is similar: Is it possible to limit the allowed range of quantizers to a certain interval around the average, e.g. [Q-2,Q+2] for a mean quant of Q which is calculated from 1st pass? I would add the checks it myself, but I didn't find the calculation of an "expected average quant" for the whole movie. Maybe this isn't needed in current two-pass, but since one uses a linear model anyway ( 2ndpass-quant = 1stpass-quant * target-framesize / 1stpass-framesize) I thought the same was maybe done for the whole movie. Anyway, I would like to have a quantizer distribution with given (smaller) support (around a dynamically calculated mean value)... is that adjustable? gruel From xvid-devel@xvid.org Sat Jan 18 22:08:39 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 18 Jan 2003 23:08:39 +0100 (CET) Subject: [XviD-devel] Conversion YUYV->YV12, UYVY->YV12 Message-ID: Hi, is there any specific reason why yuyv_to_yv12_c() interpolates chroma from two scanlines whereas uyvy_to_yv12_c() simply copies one scanline and drops the other? gruel From xvid-devel@xvid.org Sat Jan 18 22:46:49 2003 From: xvid-devel@xvid.org (Michael Militzer) Date: Sat, 18 Jan 2003 23:46:49 +0100 Subject: [XviD-devel] Error Resilience References: Message-ID: <009901c2bf43$7d124aa0$1702a8c0@michipc> Hi, ----- Original Message ----- From: "Christoph Lampert" To: Sent: Friday, January 17, 2003 9:22 PM Subject: Re: [XviD-devel] Error Resilience > On Fri, 17 Jan 2003, Christoph Lampert wrote: > > > Hi, > > > > to really become Advanced Simple Profile we need Error Resilience: Slice > > Resync, Data Partitioning, Reversible VLC. > > > > And I just saw that this already is a part of Simple Profile(!) > > "Short header", too, and XviD does not fully support it, yet! I'd also like to mention that the vop quantizer value (in vop header) can have a precision of up to 9 bits. Our dequantization routines can only handle 5 bits (or a max quantizer of 31)... bye, Michael From xvid-devel@xvid.org Sat Jan 18 23:43:09 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sun, 19 Jan 2003 10:43:09 +1100 Subject: [XviD-devel] Conversion YUYV->YV12, UYVY->YV12 In-Reply-To: References: Message-ID: <20030119094040.51FE.SUXEN_DROL@hotmail.com> On Sat, 18 Jan 2003 23:08:39 +0100 (CET) Christoph Lampert wrote: > > Hi, > > is there any specific reason why yuyv_to_yv12_c() interpolates chroma from > two scanlines whereas uyvy_to_yv12_c() simply copies one scanline and > drops the other? are you sure about this? the c and assembly implementation of yuyv & uyvy use a common macro for uv interpolation: /* yuyv/yuyvi input */ #define READ_YUYV_Y(ROW,C1,C2,C3,C4) \ y_ptr[(ROW)*y_stride+0] = x_ptr[(ROW)*x_stride+(C1)]; \ y_ptr[(ROW)*y_stride+1] = x_ptr[(ROW)*x_stride+(C3)]; #define READ_YUYV_UV(UV_ROW,ROW1,ROW2,C1,C2,C3,C4) \ u_ptr[(UV_ROW)*uv_stride] = (x_ptr[(ROW1)*x_stride+(C2)] + x_ptr[(ROW2)*x_stride+(C2)] + 1) / 2; \ v_ptr[(UV_ROW)*uv_stride] = (x_ptr[(ROW1)*x_stride+(C4)] + x_ptr[(ROW2)*x_stride+(C4)] + 1) / 2; #define YUYV_TO_YV12_ROW(SIZE,C1,C2,C3,C4) \ /* nothing */ #define YUYV_TO_YV12(SIZE,C1,C2,C3,C4) \ READ_YUYV_Y (0, C1,C2,C3,C4) \ READ_YUYV_Y (1, C1,C2,C3,C4) \ READ_YUYV_UV(0, 0,1, C1,C2,C3,C4) ... MAKE_COLORSPACE(yuyv_to_yv12_c, 2,2,2, YUYV_TO_YV12, 0,1,2,3) MAKE_COLORSPACE(uyvy_to_yv12_c, 2,2,2, YUYV_TO_YV12, 1,0,3,2) -- pete; life is like a box of ammo From xvid-devel@xvid.org Sat Jan 18 23:49:11 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sun, 19 Jan 2003 10:49:11 +1100 Subject: [XviD-devel] Conversion YUYV->YV12, UYVY->YV12 In-Reply-To: References: Message-ID: <20030119104732.A5C3.SUXEN_DROL@hotmail.com> On Sat, 18 Jan 2003 23:08:39 +0100 (CET) Christoph Lampert wrote: > > Hi, > > is there any specific reason why yuyv_to_yv12_c() interpolates chroma from > two scanlines whereas uyvy_to_yv12_c() simply copies one scanline and > drops the other? are you sure? uyvy and yuyv use a common macro for interpolation (both in c and assembly). #define READ_YUYV_Y(ROW,C1,C2,C3,C4) \ y_ptr[(ROW)*y_stride+0] = x_ptr[(ROW)*x_stride+(C1)]; \ y_ptr[(ROW)*y_stride+1] = x_ptr[(ROW)*x_stride+(C3)]; #define READ_YUYV_UV(UV_ROW,ROW1,ROW2,C1,C2,C3,C4) \ u_ptr[(UV_ROW)*uv_stride] = (x_ptr[(ROW1)*x_stride+(C2)] + x_ptr[(ROW2)*x_stride+(C2)] + 1) / 2; \ v_ptr[(UV_ROW)*uv_stride] = (x_ptr[(ROW1)*x_stride+(C4)] + x_ptr[(ROW2)*x_stride+(C4)] + 1) / 2; #define YUYV_TO_YV12_ROW(SIZE,C1,C2,C3,C4) \ /* nothing */ #define YUYV_TO_YV12(SIZE,C1,C2,C3,C4) \ READ_YUYV_Y (0, C1,C2,C3,C4) \ READ_YUYV_Y (1, C1,C2,C3,C4) \ READ_YUYV_UV(0, 0,1, C1,C2,C3,C4) ... MAKE_COLORSPACE(yuyv_to_yv12_c, 2,2,2, YUYV_TO_YV12, 0,1,2,3) MAKE_COLORSPACE(uyvy_to_yv12_c, 2,2,2, YUYV_TO_YV12, 1,0,3,2) -- pete; life is like a box of ammo From xvid-devel@xvid.org Sun Jan 19 00:01:38 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sun, 19 Jan 2003 11:01:38 +1100 Subject: [XviD-devel] Error Resilience In-Reply-To: <009901c2bf43$7d124aa0$1702a8c0@michipc> References: <009901c2bf43$7d124aa0$1702a8c0@michipc> Message-ID: <20030119104922.A5C6.SUXEN_DROL@hotmail.com> On Sat, 18 Jan 2003 23:46:49 +0100 "Michael Militzer" wrote: hello, > I'd also like to mention that the vop quantizer value (in vop header) can > have a precision of up to 9 bits. Our dequantization routines can only > handle 5 bits (or a max quantizer of 31)... iam under the impression the "not_8_bit" flag (thus quant_precision and bits_per_pixel) is only permitted in the N-bit profile. besides, optimizing for qp=[1,2^9-1) wouldn't be much fun. -- pete; life is like a box of ammo From xvid-devel@xvid.org Sun Jan 19 01:22:51 2003 From: xvid-devel@xvid.org (Felix von Leitner) Date: Sun, 19 Jan 2003 02:22:51 +0100 Subject: [XviD-devel] What are the most important optimization opportunities? Message-ID: <20030119012251.GA5871@fefe.de> --LQksG6bCIzRHxTLp Content-Type: text/plain; charset=us-ascii Content-Disposition: inline I'm interested in spending time helping optimize the xvid sources. I have next to no understanding of how MPEG 4 works, but I am currently trying to learn MMX, SSE and 3dnow, so I would be willing to convert a few functions if they lend themselves to vectorization. Please name a few functions that are called particularly often and are stable enough that optimizations would not be useless as the function is being rewritten right now. Attached is a small trivial diff that I noticed. The #if 0 part in the end is to make the vim editor use the proper tab stops. I would prefer if xvid used standard 8-width tab stops, though, but that's not my decision to make. Felix --LQksG6bCIzRHxTLp Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="bitstream.c.diff" Index: bitstream.c =================================================================== RCS file: /xvid/xvidcore/src/bitstream/bitstream.c,v retrieving revision 1.28.2.19 diff -u -r1.28.2.19 bitstream.c --- bitstream.c 14 Jan 2003 10:30:39 -0000 1.28.2.19 +++ bitstream.c 19 Jan 2003 01:04:04 -0000 @@ -75,6 +75,9 @@ #include "mbcoding.h" +#if defined(__GNUC__) && defined(__i386__) +#define log2bin(value) ({ unsigned long res; asm("bsr %1,%0\n\tincl %0" : "=r"(res) : "r"(value)); res; }) +#else static uint32_t __inline log2bin(uint32_t value) { @@ -94,6 +97,7 @@ } #endif } +#endif static const uint32_t intra_dc_threshold_table[] = { @@ -1379,3 +1383,7 @@ } } + +#if 0 +vim:ts=4 +#endif --LQksG6bCIzRHxTLp-- From xvid-devel@xvid.org Sun Jan 19 03:08:17 2003 From: xvid-devel@xvid.org (Felix von Leitner) Date: Sun, 19 Jan 2003 04:08:17 +0100 Subject: [XviD-devel] Re: Automatic benchmark / compile In-Reply-To: References: Message-ID: <20030119030817.GA6121@fefe.de> Thus spake Christoph Lampert (chl@math.uni-bonn.de): > Since it's very well 20% or more of a difference between "defaults" and > "optimal", I wanted to include a small shell-script into XviD > build/generic that could do some kind of automatic benchmarking and set > compiler option accordingly (or at least output the values, so everyone > can create his own CFLAGS ). No, don't do that! I want to compile my xvid on my fast Athlon but use the binary on my slow C3, for example! The best way to do this is to have different versions in the binary, run them all five times on a warmed cache, and take the lowest cycle count of the five. Then choose the function with the lowest count. > * Does anyone else of you with knowledge in /bin/sh programming volunteer > for that? I know how to do it, but it really is a bad idea. > * Is there a similar method for Windows? Who cares? ;) Felix From xvid-devel@xvid.org Sun Jan 19 03:22:37 2003 From: xvid-devel@xvid.org (Felix von Leitner) Date: Sun, 19 Jan 2003 04:22:37 +0100 Subject: [XviD-devel] Encoding TV episodes Message-ID: <20030119032237.GB6121@fefe.de> My main use for xvid and ffmpeg is to encode TV episodes that come as SVCD so that one fits in 300 - 350 Megs, so that I can put two episodes on one CD. I would like to have a vertical resolution of 640, but settle for 512 if I don't get the better source material. When playing the episodes using TV-out on a TV set, MPEG-4 looks a lot like MPEG-2, because TV sets have inherent softening, but when I watch the encoded episodes on my high resolution TFT display saled up two or three times to make them full screen, I get horriblebad artifacts, even when watching from a distance of 3 to 5 meters. Why am I posting this here? Read on, please. ;) Sometimes I get TV episodes encoded as MPEG-4 by others, and those typically look better than my own encodings, although I am constantly chasing development versions and obscure tuning parameters to get better quality. When I look at other's MPEG-4 encodings, I see that they use neither qpel nor gmc and often not even b-frames. How can that be? Most of the high quality ones say they use XviD. Is there some secret high quality #define that I need to set? For the record, I also get bad artifacts when I don't use qpel, gmc or b-frames. Two pass encoding looks a little better, but not much. And -- what I find most interesting -- XviD encodings have different artifacts than ffmpeg, regardless of whether I play them back using xvid or ffmpeg. I thought both were by and large optimized versions of some common reference software? And looking at the code, the algorithms look quite close. Felix From xvid-devel@xvid.org Sun Jan 19 03:57:21 2003 From: xvid-devel@xvid.org (Felix von Leitner) Date: Sun, 19 Jan 2003 04:57:21 +0100 Subject: [XviD-devel] Re: log2 hacking... In-Reply-To: References: Message-ID: <20030119035721.GF6121@fefe.de> Thus spake Christoph Lampert (chl@math.uni-bonn.de): > I'm need a quick way to calculate the next higher (or equal) power > of two than a given value X: > So for X=320 is should be 512 and for X=720 it should be 1024. For X=1024 > it should be 1024 as well, etc. > I also need the log2() of this value, so the routine should be something > like > { > exponent = log2(X); > value = 1<< exponent; > } That looks like you really don't want the exponent, but you want all non-leading ones to be set to zero. If that is the case, this routine is for you (for up to 32-bit values): int onlyfirstbit(int x) { x |= (x >> 1); x |= (x >> 2); x |= (x >> 4); x |= (x >> 8); x |= (x >> 16); return (x & ~(x >> 1)); } clean, portable, and without jumps. Felix From xvid-devel@xvid.org Sun Jan 19 03:50:14 2003 From: xvid-devel@xvid.org (Felix von Leitner) Date: Sun, 19 Jan 2003 04:50:14 +0100 Subject: [XviD-devel] Re: Don't do " signed /= unsigned " In-Reply-To: <13342673641.20030112003903@syskin.cjb.net> References: <13342673641.20030112003903@syskin.cjb.net> Message-ID: <20030119035014.GE6121@fefe.de> Thus spake Radek Czyz (radoslaw@syskin.cjb.net): > I think that division is faster than if - am I correct? No! I have a VIA C3 CPU here, which is the CPU that needs optimization most, because it is kind of slow but it is a CPU that is in the stores right now (unlike ancient K6 or Celeron stuff). On the C3, a division takes 42 (!) cycles. A branch takes 12 cycles if it is mispredicted -- and still 5 cycles if it is correctly predicted! So avoid branches if you can. > However, I'm sure that some kind of bitshift would be even faster... > do you know a way to make it a bitshift, but dividing negative values > correctly? dx >>= quarterpel; should do it. -- 1 cycle on all modern CPUs. Felix From xvid-devel@xvid.org Sun Jan 19 03:47:27 2003 From: xvid-devel@xvid.org (Felix von Leitner) Date: Sun, 19 Jan 2003 04:47:27 +0100 Subject: [XviD-devel] Re: Don't do " signed /= unsigned " In-Reply-To: References: Message-ID: <20030119034727.GD6121@fefe.de> Thus spake Christoph Lampert (chl@math.uni-bonn.de): > dx /= (1+quarterpel) > and this gives me wrong results if dx is signed int (which it is) > and quarterpel is unsigned (which I declared that way, since it's a 0 or > 1 flag). Division is then done unsigned! Na das klingt aber wie eine sehr dumme Idee. Eine Integer-Division ist so das langsamste, was man auf heutigen Prozessoren tun kann. Auf meinem C3 kostet es z.B. 42 (!) Zyklen, ein falsch vorhergesagter Sprung kostet "nur" 12 Zyklen. Wenn hier eh nur durch 1 oder 2 geteilt wird, dann doch lieber dx >>= quarterpel oder so. Das kostet auf aktuellen CPUs 1 Takt und hat keinen Sprung drin. > if (quarterpel) dx/=2; > which works flawlessly with unsigned quarterpel, too. Auf einem C3 kostet auch ein richtig vorhergesagter Sprung bis zu 5 Taktzyklen. Ich biete an, den xvid-Code nach solchen Fallen abzusuchen, aber dazu brauche ich Kommentare im Quellcode, der zu globalen Variablen und Funktionsargumenten auch den Wertebereich und das Alignment ansagen, wenn möglich nicht nur maximal sondern auch die wahrscheinlichen Werte. Außerdem kann man bei C99 Kompilern auch mit restrict und expect echt was reißen. Gibt es einen schönen Benchmark-Korpus, welche Funktion wie häufig aufgerufen wird und so? Oder muß ich mir das selber machen mit mplayer? Felix From xvid-devel@xvid.org Sun Jan 19 04:55:37 2003 From: xvid-devel@xvid.org (Marco Al) Date: Sun, 19 Jan 2003 05:55:37 +0100 Subject: [XviD-devel] Re: Don't do " signed /= unsigned " References: <20030119034727.GD6121@fefe.de> Message-ID: <003901c2bf77$021354f0$bca45982@student.utwente.nl> Felix von Leitner wrote: > Wenn hier eh nur durch 1 oder 2 geteilt wird, dann doch lieber > > dx >>= quarterpel That floors the value, we have to truncate into the direction of zero instead. Thats why I arrived, after a couple of detours, at the rather convoluted (dx >> qpel) + (dx & qpel & (dx >> (sizeoff(dx) * 8 - 1))) Which adds 1 if dx's LSB is set and dx is negative (ie. whenever floor would give the wrong result). Marco From xvid-devel@xvid.org Sun Jan 19 10:37:50 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 19 Jan 2003 11:37:50 +0100 (CET) Subject: [XviD-devel] Re: Automatic benchmark / compile In-Reply-To: <20030119030817.GA6121@fefe.de> Message-ID: On Sun, 19 Jan 2003, Felix von Leitner wrote: > Thus spake Christoph Lampert (chl@math.uni-bonn.de): > > Since it's very well 20% or more of a difference between "defaults" and > > "optimal", I wanted to include a small shell-script into XviD > > build/generic that could do some kind of automatic benchmarking and set > > compiler option accordingly (or at least output the values, so everyone > > can create his own CFLAGS ). > > No, don't do that! I want to compile my xvid on my fast Athlon but use > the binary on my slow C3, for example! Calm down, this is not supposed to become a _mandatory_ feature. We don't force anyone to do anything... Having the same compiler flags for every CPU isn't optimal. Agreed? How to find the best flags for _any_ given CPU? Editing the flags by hand is fine if you know what to do. But who knows the best optimizaton flags without testing? I guess noone. So you sit down and test for a couple of hours? No. You just try two or three combinations that seems reasonable and leave it like that. Might work. But also might not. Surely suboptimal! So if we have a script (_not_ the Makefile itself, of course), then run the test. Copy/Paste the "best" CFLAGS to the Makefile and finshed. Looking for best flags on C3? Run the test on C3, copy the CFLAGS to your Athlon machine's Makefile and compile. Or let it be and write the flags by hand... it's your choice. Where exactly is the bad idea in this? > The best way to do this is to have different versions in the binary, run > them all five times on a warmed cache, and take the lowest cycle count > of the five. Then choose the function with the lowest count. And exactly that's why I want the script to do. > > * Does anyone else of you with knowledge in /bin/sh programming volunteer > > for that? > > I know how to do it, but it really is a bad idea. > > > * Is there a similar method for Windows? > > Who cares? ;) no further comment. gruel From xvid-devel@xvid.org Sun Jan 19 10:58:00 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 19 Jan 2003 11:58:00 +0100 (CET) Subject: [XviD-devel] What are the most important optimization opportunities? In-Reply-To: <20030119012251.GA5871@fefe.de> Message-ID: On Sun, 19 Jan 2003, Felix von Leitner wrote: > > Attached is a small trivial diff that I noticed. The #if 0 part in the > end is to make the vim editor use the proper tab stops. I would prefer > if xvid used standard 8-width tab stops, though, but that's not my > decision to make. Thanks for the patch. But I guess we can't include #if - parts for best viewing with every editor. tab-width has been discussed long ago, 8 is much too much for good viewing, I would prefer 3 as in the Linux kernel sources, but whatever. Every editor should have a global flags for this... gruel From xvid-devel@xvid.org Sun Jan 19 11:12:19 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Sun, 19 Jan 2003 12:12:19 +0100 Subject: [XviD-devel] What are the most important optimization opportunities? In-Reply-To: References: <20030119012251.GA5871@fefe.de> Message-ID: <20030119111219.GA598@leloo> --IJpNTDwzlM2Ie8A6 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Christoph Lampert (chl@math.uni-bonn.de) wrote: > On Sun, 19 Jan 2003, Felix von Leitner wrote: > >=20 > > Attached is a small trivial diff that I noticed. The #if 0 part in the > > end is to make the vim editor use the proper tab stops. I would prefer > > if xvid used standard 8-width tab stops, though, but that's not my > > decision to make. We decided to use 4 for tabs because there are some code pathes that are too much indented with 8 spaces tabs. Anyway, we won't include any editor trick into sources because we would have most editor directives than code in files.=20 I described a tip to edit C/H files with emacs using the right C style in the CodingStyle file. This tip is based on the file path, when emacs opens a file in a path matching the regexp /.*/xvidcore.*/.*\\.[ch]$ then it activates the xvid-c-mode.=20 If a similar tip exists for Vim, i'll be happy to add it to the Coding style file. @gruel: linux sources specify a tab is 8 spaces long iirc. See CodingStyle --=20 Edouard Gomez --IJpNTDwzlM2Ie8A6 Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+KogTR5dTYz5sWMcRApMOAKCvIynqId+hX/z1d1xsnUGLaiUWuACdE5Tq Vh24OkhYmKO6hK4BqdsKsY4= =Gol2 -----END PGP SIGNATURE----- --IJpNTDwzlM2Ie8A6-- From xvid-devel@xvid.org Sun Jan 19 12:26:01 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Sun, 19 Jan 2003 13:26:01 +0100 Subject: [XviD-devel] Re: Don't do " signed /= unsigned " In-Reply-To: <20030119034727.GD6121@fefe.de> References: <20030119034727.GD6121@fefe.de> Message-ID: <200301191326.01815.elcabesa@inwind.it> english please =) > Außerdem kann man bei C99 Kompilern auch mit restrict und expect echt > was reißen. Gibt es einen schönen Benchmark-Korpus, welche Funktion wie > häufig aufgerufen wird und so? Oder muß ich mir das selber machen mit > mplayer? what do you need to know about "mplayer", the only one word i understood in your email mail=) From xvid-devel@xvid.org Sun Jan 19 19:34:34 2003 From: xvid-devel@xvid.org (Felix von Leitner) Date: Sun, 19 Jan 2003 20:34:34 +0100 Subject: [XviD-devel] Re: What are the most important optimization opportunities? In-Reply-To: <20030119111219.GA598@leloo> References: <20030119012251.GA5871@fefe.de> <20030119111219.GA598@leloo> Message-ID: <20030119193434.GA7099@fefe.de> Thus spake Edouard Gomez (ed.gomez@free.fr): > > > Attached is a small trivial diff that I noticed. The #if 0 part in the > > > end is to make the vim editor use the proper tab stops. I would prefer > > > if xvid used standard 8-width tab stops, though, but that's not my > > > decision to make. > We decided to use 4 for tabs because there are some code pathes that are > too much indented with 8 spaces tabs. I'm not saying you should simply switch to 8 spaces. Obviously, it would look really broken then, especially regarding the ascii art tables. I'm saying you should reformat the source code so that it looks like it looks now with tab stops set to 8. It is easy to do it with most decent editors and I think there even exist good tools for it. This way you are driving developers away who open the source code in their editor for the first time and then refuse to help with a project where the source code looks so hideously broken. I'm not making this up, this has happened before to other projects. And all programmers' editors can transparently change tabs to spaces to keep up appearances. But I can understand if you don't want to do that for historical reasons or because of inertia ;) > Anyway, we won't include any editor trick into sources because we would > have most editor directives than code in files. Which editors besides vim and emacs even understand directives like this? > I described a tip to edit C/H files with emacs using the right C style > in the CodingStyle file. This tip is based on the file path, when emacs > opens a file in a path matching the regexp /.*/xvidcore.*/.*\\.[ch]$ > then it activates the xvid-c-mode. I think it's unreasonable to expect developers who just casually want to browse the source code to customize their editor. Just try running less on one of the files with tables in the comments and you will see. > If a similar tip exists for Vim, i'll be happy to add it to the Coding > style file. It would be something like autocmd BufRead xvidcore*/*.[ch] set ts=4 but that only works if you specify the full path when opening the file, which nobody does. The vi way is to have a file called .exrc in the current directory which overrides this setting, and the vim way is to include a comment in the end. There really is no other way to do it. > @gruel: linux sources specify a tab is 8 spaces long iirc. See > CodingStyle That's not just what the linux source say. It's the standard on all unix systems. I think it's not acceptable that you can't less or cat a source code file and read it properly this way. I'm curious: does this coding style originate from opendivx or was it converted by the xvid project? Felix From xvid-devel@xvid.org Mon Jan 20 15:17:56 2003 From: xvid-devel@xvid.org (skal) Date: 20 Jan 2003 16:17:56 +0100 Subject: [XviD-devel] Re: xvid_fdct_sse + qpel ASM In-Reply-To: <1043065173.1467.9.camel@latitude344> References: <1043065173.1467.9.camel@latitude344> Message-ID: <1043075876.1466.14.camel@latitude344> --=-ag4dD7pukXRGF7iP/4Fh Content-Type: text/plain Content-Transfer-Encoding: 7bit Re, Ok, ok, i was curious, so I've quickly hacked the MMX 'punpck' soup mentioned in my previous mail. Here's what's to add in fdct_sse.asm for the MMX fdct. It's 10% slower than SSE, (but still 30% faster than current XVID one, it seems;) bye! Skal --=-ag4dD7pukXRGF7iP/4Fh Content-Disposition: attachment; filename=fdct_mmx.asm Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; name=fdct_mmx.asm; charset=ISO-8859-1 cglobal xvid_fdct_mmx ;////////////////////////////////////////////////////////////////////// ;// fMTX_MULT_MMX (~26c) ;////////////////////////////////////////////////////////////////////// %macro fMTX_MULT_MMX 5 ; %1=3Dsrc, %2 =3D Coeffs, %3/%4=3Drounders ; MMX-only version (no 'pshufw'. ~10% overall slower than SSE) movd mm1, [ecx+%1*16+8+4] ; [67..] movq mm0, [ecx+%1*16+0] ; mm0 =3D [0123] movq mm7, mm0 punpcklwd mm1, [ecx+%1*16+8] ; [6475] movq mm2, mm1 psrlq mm1, 32 ; [75..] punpcklwd mm1,mm2 ; [7654] paddsw mm0, mm1 ; mm0 =3D [a0 a1 a2 a3] psubsw mm7, mm1 ; mm7 =3D [b0 b1 b2 b3] movq mm1, mm0 punpckldq mm0, mm7 ; mm0 =3D [a0 a1 b0 b1] punpckhdq mm1, mm7 ; mm1 =3D [b2 b3 a2 a3] movq mm2, qword [%2+ 0] ; [ M00 M01 M16 M17] movq mm3, qword [%2+ 8] ; [ M02 M03 M18 M19] pmaddwd mm2, mm0 ; [a0.M00+a1.M01 | b0.M16+b1.M17] movq mm4, qword [%2+16] ; [ M04 M05 M20 M21] pmaddwd mm3, mm1 ; [a2.M02+a3.M03 | b2.M18+b3.M19] movq mm5, qword [%2+24] ; [ M06 M07 M22 M23] pmaddwd mm4, mm0 ; [a0.M04+a1.M05 | b0.M20+b1.M21] movq mm6, qword [%2+32] ; [ M08 M09 M24 M25] pmaddwd mm5, mm1 ; [a2.M06+a3.M07 | b2.M22+b3.M23] movq mm7, qword [%2+40] ; [ M10 M11 M26 M27] pmaddwd mm6, mm0 ; [a0.M08+a1.M09 | b0.M24+b1.M25] paddd mm2, mm3 ; [ out0 | out1 ] pmaddwd mm7, mm1 ; [a0.M10+a1.M11 | b0.M26+b1.M27] psrad mm2, 16 pmaddwd mm0, qword [%2+48] ; [a0.M12+a1.M13 | b0.M28+b1.M29] paddd mm4, mm5 ; [ out2 | out3 ] pmaddwd mm1, qword [%2+56] ; [a0.M14+a1.M15 | b0.M30+b1.M31] psrad mm4, 16 paddd mm6, mm7 ; [ out4 | out5 ] psrad mm6, 16 paddd mm0, mm1 ; [ out6 | out7 ] =20 psrad mm0, 16 =20 packssdw mm2, mm4 ; [ out0|out1|out2|out3 ] paddsw mm2, [%3] ; Round packssdw mm6, mm0 ; [ out4|out5|out6|out7 ] paddsw mm6, [%4] ; Round psraw mm2, 4 ; =3D> [-2048, 2047] psraw mm6, 4 movq [ecx+%1*16+0], mm2 movq [ecx+%1*16+8], mm6 %endmacro align 16 xvid_fdct_mmx: ; ~269c mov ecx, [esp+4] fLLM_PASS ecx+0, 3 fLLM_PASS ecx+8, 3 fMTX_MULT_MMX 0, fTab1, Fdct_Rnd0, Fdct_Rnd0 fMTX_MULT_MMX 1, fTab2, Fdct_Rnd2, Fdct_Rnd1 fMTX_MULT_MMX 2, fTab3, Fdct_Rnd1, Fdct_Rnd1 fMTX_MULT_MMX 3, fTab4, Fdct_Rnd1, Fdct_Rnd1 fMTX_MULT_MMX 4, fTab1, Fdct_Rnd0, Fdct_Rnd0 fMTX_MULT_MMX 5, fTab4, Fdct_Rnd1, Fdct_Rnd1 fMTX_MULT_MMX 6, fTab3, Fdct_Rnd1, Fdct_Rnd1 fMTX_MULT_MMX 7, fTab2, Fdct_Rnd1, Fdct_Rnd1 ret ;////////////////////////////////////////////////////////////////////// --=-ag4dD7pukXRGF7iP/4Fh-- From xvid-devel@xvid.org Mon Jan 20 12:19:33 2003 From: xvid-devel@xvid.org (skal) Date: 20 Jan 2003 13:19:33 +0100 Subject: [XviD-devel] xvid_fdct_sse + qpel ASM Message-ID: <1043065173.1467.9.camel@latitude344> --=-dLq130355Ig4zdyzCliD Content-Type: text/plain Content-Transfer-Encoding: 7bit Hi, oops, I almost forget to post these old files. bye! Skal PS: As is, the QPel stuff should be initialized with: xvid_QP_Funcs = &xvid_QP_Funcs_mmx; xvid_QP_Add_Funcs = &xvid_QP_Add_Funcs_mmx; xvid_Init_QP_mmx(); until further integration (if any). --=-dLq130355Ig4zdyzCliD Content-Disposition: attachment; filename=fdct_sse.asm Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; name=fdct_sse.asm; charset=ISO-8859-1 ;/*************************************************************************= **** ; * ; * XVID MPEG-4 VIDEO CODEC ; * - SSE forward discrete cosine transform - ; * Copyright(C) 2002 Pascal Massimino ; * ; * This file is part of XviD, a free MPEG-4 video encoder/decoder ; * ; * XviD is free software; you can redistribute it and/or modify it ; * under the terms of the GNU General Public License as published by ; * the Free Software Foundation; either version 2 of the License, or ; * (at your option) any later version. ; * ; * This program is distributed in the hope that it will be useful, ; * but WITHOUT ANY WARRANTY; without even the implied warranty of ; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; * GNU General Public License for more details. ; * ; * You should have received a copy of the GNU General Public License ; * along with this program; if not, write to the Free Software ; * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 U= SA ; * ; * Under section 8 of the GNU General Public License, the copyright ; * holders of XVID explicitly forbid distribution in the following ; * countries: ; * ; * - Japan ; * - United States of America ; * ; * Linking XviD statically or dynamically with other modules is making a ; * combined work based on XviD. Thus, the terms and conditions of the ; * GNU General Public License cover the whole combination. ; * ; * As a special exception, the copyright holders of XviD give you ; * permission to link XviD with independent modules that communicate with ; * XviD solely through the VFW1.1 and DShow interfaces, regardless of the ; * license terms of these independent modules, and to copy and distribute ; * the resulting combined work under terms of your choice, provided that ; * every copy of the combined work is accompanied by a complete copy of ; * the source code of XviD (the version of XviD used to produce the ; * combined work), being distributed under the terms of the GNU General ; * Public License plus this exception. An independent module is a module ; * which is not derived from or based on XviD. ; * ; * Note that people who make modified versions of XviD are not obligated ; * to grant this special exception for their modified versions; it is ; * their choice whether to do so. The GNU General Public License gives ; * permission to release a modified version without this exception; this ; * exception also makes it possible to release a modified version which ; * carries forward this exception. ; * ; * $Id: fdct_sse.asm,v 1.1.2.1 2002/12/08 05:34:16 suxen_drol Exp $ ; * ; *************************************************************************= / ;/*************************************************************************= * ; * ; * History: ; * ; * 01.10.2002 creation - Skal - ; * ; *************************************************************************= / bits 32 %macro cglobal 1=20 %ifdef PREFIX global _%1=20 %define %1 _%1 %else global %1 %endif %endmacro cglobal xvid_fdct_sse ;////////////////////////////////////////////////////////////////////// ; ; Vertical pass is an implementation of the scheme: ; Loeffler C., Ligtenberg A., and Moschytz C.S.: ; Practical Fast 1D DCT Algorithm with Eleven Multiplications, ; Proc. ICASSP 1989, 988-991. ; ; Horizontal pass is a double 4x4 vector/matrix multiplication, ; (see also Intel's Application Note 922: ; http://developer.intel.com/vtune/cbts/strmsimd/922down.htm ; Copyright (C) 1999 Intel Corporation) ; ; Notes: ; * tan(3pi/16) is greater than 0.5, and would use the ; sign bit when turned into 16b fixed-point precision. So, ; we use the trick: x*tan3 =3D x*(tan3-1)+x ;=20 ; * There's only one SSE-specific instruction (pshufw). ; Porting to SSE2 also seems straightforward. ; ; * There's still 1 or 2 ticks to save in fLLM_PASS, but ; I prefer having a readable code, instead of a tightly=20 ; scheduled one... ; ; * Quantization stage (as well as pre-transposition for the ; idct way back) can be included in the fTab* constants ; (with induced loss of precision, somehow) ; ; * Some more details at: http://skal.planet-d.net/coding/dct.html ; ;//////////////////////////////////////////////////////////////////////=20 ; ; idct-like IEEE errors: ; ; =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D ; Peak error: 1.0000 ; Peak MSE: 0.0365 ; Overall MSE: 0.0201 ; Peak ME: 0.0265 ; Overall ME: 0.0006 ; ; =3D=3D Mean square errors =3D=3D ; 0.000 0.001 0.001 0.002 0.000 0.002 0.001 0.000 [0.001] ; 0.035 0.029 0.032 0.032 0.031 0.032 0.034 0.035 [0.032] ; 0.026 0.028 0.027 0.027 0.025 0.028 0.028 0.025 [0.027] ; 0.037 0.032 0.031 0.030 0.028 0.029 0.026 0.031 [0.030] ; 0.000 0.001 0.001 0.002 0.000 0.002 0.001 0.001 [0.001] ; 0.025 0.024 0.022 0.022 0.022 0.022 0.023 0.023 [0.023] ; 0.026 0.028 0.025 0.028 0.030 0.025 0.026 0.027 [0.027] ; 0.021 0.020 0.020 0.022 0.020 0.022 0.017 0.019 [0.020] ; =20 ; =3D=3D Abs Mean errors =3D=3D ; 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 [0.000] ; 0.020 0.001 0.003 0.003 0.000 0.004 0.002 0.003 [0.002] ; 0.000 0.001 0.001 0.001 0.001 0.004 0.000 0.000 [0.000] ; 0.027 0.001 0.000 0.002 0.002 0.002 0.001 0.000 [0.003] ; 0.000 0.000 0.000 0.000 0.000 0.001 0.000 0.001 [-0.000] ; 0.001 0.003 0.001 0.001 0.002 0.001 0.000 0.000 [-0.000] ; 0.000 0.002 0.002 0.001 0.001 0.002 0.001 0.000 [-0.000] ; 0.000 0.002 0.001 0.002 0.001 0.002 0.001 0.001 [-0.000] ; =20 ;////////////////////////////////////////////////////////////////////// section .data align 16 tan1: dw 0x32ec,0x32ec,0x32ec,0x32ec ; tan( pi/16) tan2: dw 0x6a0a,0x6a0a,0x6a0a,0x6a0a ; tan(2pi/16) (=3Dsqrt(2)-1) tan3: dw 0xab0e,0xab0e,0xab0e,0xab0e ; tan(3pi/16)-1 sqrt2: dw 0x5a82,0x5a82,0x5a82,0x5a82 ; 0.5/sqrt(2) ;////////////////////////////////////////////////////////////////////// align 16 fTab1: dw 0x4000, 0x4000, 0x58c5, 0x4b42, dw 0x4000, 0x4000, 0x3249, 0x11a8, dw 0x539f, 0x22a3, 0x4b42, 0xee58, dw 0xdd5d, 0xac61, 0xa73b, 0xcdb7, dw 0x4000, 0xc000, 0x3249, 0xa73b, dw 0xc000, 0x4000, 0x11a8, 0x4b42, dw 0x22a3, 0xac61, 0x11a8, 0xcdb7, dw 0x539f, 0xdd5d, 0x4b42, 0xa73b fTab2: dw 0x58c5, 0x58c5, 0x7b21, 0x6862, dw 0x58c5, 0x58c5, 0x45bf, 0x187e, dw 0x73fc, 0x300b, 0x6862, 0xe782, dw 0xcff5, 0x8c04, 0x84df, 0xba41, dw 0x58c5, 0xa73b, 0x45bf, 0x84df, dw 0xa73b, 0x58c5, 0x187e, 0x6862, dw 0x300b, 0x8c04, 0x187e, 0xba41, dw 0x73fc, 0xcff5, 0x6862, 0x84df fTab3: dw 0x539f, 0x539f, 0x73fc, 0x6254, dw 0x539f, 0x539f, 0x41b3, 0x1712, dw 0x6d41, 0x2d41, 0x6254, 0xe8ee, dw 0xd2bf, 0x92bf, 0x8c04, 0xbe4d, dw 0x539f, 0xac61, 0x41b3, 0x8c04, dw 0xac61, 0x539f, 0x1712, 0x6254, dw 0x2d41, 0x92bf, 0x1712, 0xbe4d, dw 0x6d41, 0xd2bf, 0x6254, 0x8c04 fTab4: dw 0x4b42, 0x4b42, 0x6862, 0x587e, dw 0x4b42, 0x4b42, 0x3b21, 0x14c3, dw 0x6254, 0x28ba, 0x587e, 0xeb3d, dw 0xd746, 0x9dac, 0x979e, 0xc4df, dw 0x4b42, 0xb4be, 0x3b21, 0x979e, dw 0xb4be, 0x4b42, 0x14c3, 0x587e, dw 0x28ba, 0x9dac, 0x14c3, 0xc4df, dw 0x6254, 0xd746, 0x587e, 0x979e align 16 Fdct_Rnd0: dw 6,8,8,8 Fdct_Rnd1: dw 8,8,8,8 Fdct_Rnd2: dw 10,8,8,8 MMX_One: dw 1,1,1,1 ;////////////////////////////////////////////////////////////////////// section .text ;////////////////////////////////////////////////////////////////////// ;// FDCT LLM vertical pass (~39c) ;////////////////////////////////////////////////////////////////////// %macro fLLM_PASS 2 ; %1: src/dst, %2:Shift movq mm0, [%1+0*16] ; In0 movq mm2, [%1+2*16] ; In2 movq mm3, mm0 movq mm4, mm2 movq mm7, [%1+7*16] ; In7 movq mm5, [%1+5*16] ; In5 psubsw mm0, mm7 ; t7 =3D In0-In7 paddsw mm7, mm3 ; t0 =3D In0+In7 psubsw mm2, mm5 ; t5 =3D In2-In5 paddsw mm5, mm4 ; t2 =3D In2+In5 movq mm3, [%1+3*16] ; In3 movq mm4, [%1+4*16] ; In4 movq mm1, mm3 psubsw mm3, mm4 ; t4 =3D In3-In4 paddsw mm4, mm1 ; t3 =3D In3+In4 movq mm6, [%1+6*16] ; In6 movq mm1, [%1+1*16] ; In1 psubsw mm1, mm6 ; t6 =3D In1-In6 paddsw mm6, [%1+1*16] ; t1 =3D In1+In6 psubsw mm7, mm4 ; tm03 =3D t0-t3 psubsw mm6, mm5 ; tm12 =3D t1-t2 paddsw mm4, mm4 ; 2.t3 paddsw mm5, mm5 ; 2.t2 paddsw mm4, mm7 ; tp03 =3D t0+t3 paddsw mm5, mm6 ; tp12 =3D t1+t2 psllw mm2, %2+1 ; shift t5 (shift +1 to.. psllw mm1, %2+1 ; shift t6 ..compensate cos4/2) psllw mm4, %2 ; shift t3 psllw mm5, %2 ; shift t2 psllw mm7, %2 ; shift t0 psllw mm6, %2 ; shift t1 psllw mm3, %2 ; shift t4 psllw mm0, %2 ; shift t7 psubsw mm4, mm5 ; out4 =3D tp03-tp12 psubsw mm1, mm2 ; mm1: t6-t5 paddsw mm5, mm5 paddsw mm2, mm2 paddsw mm5, mm4 ; out0 =3D tp03+tp12 movq [%1+4*16], mm4 ; =3D> out4 paddsw mm2, mm1 ; mm2: t6+t5 movq [%1+0*16], mm5 ; =3D> out0 movq mm4, [tan2] ; mm4 <=3D tan2 pmulhw mm4, mm7 ; tm03*tan2 movq mm5, [tan2] ; mm5 <=3D tan2 psubsw mm4, mm6 ; out6 =3D tm03*tan2 - tm12 pmulhw mm5, mm6 ; tm12*tan2 paddsw mm5, mm7 ; out2 =3D tm12*tan2 + tm03 movq mm6, [sqrt2] =20 movq mm7, [MMX_One] pmulhw mm2, mm6 ; mm2: tp65 =3D (t6 + t5)*cos4 por mm5, mm7 ; correct out2 por mm4, mm7 ; correct out6 pmulhw mm1, mm6 ; mm1: tm65 =3D (t6 - t5)*cos4 por mm2, mm7 ; correct tp65 movq [%1+2*16], mm5 ; =3D> out2 movq mm5, mm3 ; save t4 movq [%1+6*16], mm4 ; =3D> out6 movq mm4, mm0 ; save t7 =20 psubsw mm3, mm1 ; mm3: tm465 =3D t4 - tm65 psubsw mm0, mm2 ; mm0: tm765 =3D t7 - tp65 paddsw mm2, mm4 ; mm2: tp765 =3D t7 + tp65 paddsw mm1, mm5 ; mm1: tp465 =3D t4 + tm65 movq mm4, [tan3] ; tan3 - 1 movq mm5, [tan1] ; tan1 movq mm7, mm3 ; save tm465 pmulhw mm3, mm4 ; tm465*(tan3-1) movq mm6, mm1 ; save tp465 pmulhw mm1, mm5 ; tp465*tan1 paddsw mm3, mm7 ; tm465*tan3 pmulhw mm4, mm0 ; tm765*(tan3-1) paddsw mm4, mm0 ; tm765*tan3 pmulhw mm5, mm2 ; tp765*tan1 paddsw mm1, mm2 ; out1 =3D tp765 + tp465*tan1 psubsw mm0, mm3 ; out3 =3D tm765 - tm465*tan3 paddsw mm7, mm4 ; out5 =3D tm465 + tm765*tan3 psubsw mm5, mm6 ; out7 =3D-tp465 + tp765*tan1 movq [%1+1*16], mm1 ; =3D> out1 movq [%1+3*16], mm0 ; =3D> out3 movq [%1+5*16], mm7 ; =3D> out5 movq [%1+7*16], mm5 ; =3D> out7 %endmacro ;////////////////////////////////////////////////////////////////////// ;// fMTX_MULT (~20c) ;////////////////////////////////////////////////////////////////////// %macro fMTX_MULT 4 ; %1=3Dsrc, %2 =3D Coeffs, %3/%4=3Drounders movq mm0, [ecx+%1*16+0] ; mm0 =3D [0123] ; the 'pshufw' below is the only SSE instruction. ; For MMX-only version, it should be emulated with ; some 'punpck' soup... pshufw mm1, [ecx+%1*16+8], 00011011b ; mm1 =3D [7654] movq mm7, mm0 paddsw mm0, mm1 ; mm0 =3D [a0 a1 a2 a3] psubsw mm7, mm1 ; mm7 =3D [b0 b1 b2 b3] movq mm1, mm0 punpckldq mm0, mm7 ; mm0 =3D [a0 a1 b0 b1] punpckhdq mm1, mm7 ; mm1 =3D [b2 b3 a2 a3] movq mm2, qword [%2+ 0] ; [ M00 M01 M16 M17] movq mm3, qword [%2+ 8] ; [ M02 M03 M18 M19] pmaddwd mm2, mm0 ; [a0.M00+a1.M01 | b0.M16+b1.M17] movq mm4, qword [%2+16] ; [ M04 M05 M20 M21] pmaddwd mm3, mm1 ; [a2.M02+a3.M03 | b2.M18+b3.M19] movq mm5, qword [%2+24] ; [ M06 M07 M22 M23] pmaddwd mm4, mm0 ; [a0.M04+a1.M05 | b0.M20+b1.M21] movq mm6, qword [%2+32] ; [ M08 M09 M24 M25] pmaddwd mm5, mm1 ; [a2.M06+a3.M07 | b2.M22+b3.M23] movq mm7, qword [%2+40] ; [ M10 M11 M26 M27] pmaddwd mm6, mm0 ; [a0.M08+a1.M09 | b0.M24+b1.M25] paddd mm2, mm3 ; [ out0 | out1 ] pmaddwd mm7, mm1 ; [a0.M10+a1.M11 | b0.M26+b1.M27] psrad mm2, 16 pmaddwd mm0, qword [%2+48] ; [a0.M12+a1.M13 | b0.M28+b1.M29] paddd mm4, mm5 ; [ out2 | out3 ] pmaddwd mm1, qword [%2+56] ; [a0.M14+a1.M15 | b0.M30+b1.M31] psrad mm4, 16 paddd mm6, mm7 ; [ out4 | out5 ] psrad mm6, 16 paddd mm0, mm1 ; [ out6 | out7 ] =20 psrad mm0, 16 =20 packssdw mm2, mm4 ; [ out0|out1|out2|out3 ] paddsw mm2, [%3] ; Round packssdw mm6, mm0 ; [ out4|out5|out6|out7 ] paddsw mm6, [%4] ; Round psraw mm2, 4 ; =3D> [-2048, 2047] psraw mm6, 4 movq [ecx+%1*16+0], mm2 movq [ecx+%1*16+8], mm6 %endmacro align 16 xvid_fdct_sse: ; ~240c mov ecx, [esp+4] fLLM_PASS ecx+0, 3 fLLM_PASS ecx+8, 3 fMTX_MULT 0, fTab1, Fdct_Rnd0, Fdct_Rnd0 fMTX_MULT 1, fTab2, Fdct_Rnd2, Fdct_Rnd1 fMTX_MULT 2, fTab3, Fdct_Rnd1, Fdct_Rnd1 fMTX_MULT 3, fTab4, Fdct_Rnd1, Fdct_Rnd1 fMTX_MULT 4, fTab1, Fdct_Rnd0, Fdct_Rnd0 fMTX_MULT 5, fTab4, Fdct_Rnd1, Fdct_Rnd1 fMTX_MULT 6, fTab3, Fdct_Rnd1, Fdct_Rnd1 fMTX_MULT 7, fTab2, Fdct_Rnd1, Fdct_Rnd1 ret ;////////////////////////////////////////////////////////////////////// --=-dLq130355Ig4zdyzCliD Content-Disposition: attachment; filename=qpel.c Content-Transfer-Encoding: quoted-printable Content-Type: text/x-c; name=qpel.c; charset=ISO-8859-1 /************************************************************************** * * XVID MPEG-4 VIDEO CODEC * - QPel interpolation - * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * *************************************************************************/ /************************************************************************** * * History: * * 22.10.2002 initial coding - Skal - * *************************************************************************/ #ifndef XVID_AUTO_INCLUDE #include "../portab.h" #include "./qpel.h" ////////////////////////////////////////////////////////// static const int32_t FIR_Tab_8[9][8] =3D { { 14, -3, 2, -1, 0, 0, 0, 0 } , { 23, 19, -6, 3, -1, 0, 0, 0 } , { -7, 20, 20, -6, 3, -1, 0, 0 } , { 3, -6, 20, 20, -6, 3, -1, 0 } , { -1, 3, -6, 20, 20, -6, 3, -1 } , { 0, -1, 3, -6, 20, 20, -6, 3 } , { 0, 0, -1, 3, -6, 20, 20, -7 } , { 0, 0, 0, -1, 3, -6, 19, 23 } , { 0, 0, 0, 0, -1, 2, -3, 14 } }; static const int32_t FIR_Tab_16[17][16] =3D { { 14, -3, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } , { 23, 19, -6, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } , { -7, 20, 20, -6, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } , { 3, -6, 20, 20, -6, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } , { -1, 3, -6, 20, 20, -6, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0 } , { 0, -1, 3, -6, 20, 20, -6, 3, -1, 0, 0, 0, 0, 0, 0, 0 } , { 0, 0, -1, 3, -6, 20, 20, -6, 3, -1, 0, 0, 0, 0, 0, 0 } , { 0, 0, 0, -1, 3, -6, 20, 20, -6, 3, -1, 0, 0, 0, 0, 0 } , { 0, 0, 0, 0, -1, 3, -6, 20, 20, -6, 3, -1, 0, 0, 0, 0 } , { 0, 0, 0, 0, 0, -1, 3, -6, 20, 20, -6, 3, -1, 0, 0, 0 } , { 0, 0, 0, 0, 0, 0, -1, 3, -6, 20, 20, -6, 3, -1, 0, 0 } , { 0, 0, 0, 0, 0, 0, 0, -1, 3, -6, 20, 20, -6, 3, -1, 0 } , { 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, -6, 20, 20, -6, 3, -1 } , { 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, -6, 20, 20, -6, 3 } , { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, -6, 20, 20, -7 } , { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, -6, 19, 23 } , { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, -3, 14 } }; ////////////////////////////////////////////////////////// // Implementation #define XVID_AUTO_INCLUDE // 16x? filters #define SIZE 16 #define TABLE FIR_Tab_16 #define STORE(d,s) (d) =3D (s) #define FUNC_H H_Pass_16_C #define FUNC_V V_Pass_16_C #define FUNC_HA H_Pass_Avrg_16_C #define FUNC_VA V_Pass_Avrg_16_C #define FUNC_HA_UP H_Pass_Avrg_Up_16_C #define FUNC_VA_UP V_Pass_Avrg_Up_16_C #include __FILE__ /* self-include ourself */ // note: B-frame always uses Rnd=3D0... #define STORE(d,s) (d) =3D ( (s)+(d)+1 ) >> 1 #define FUNC_H H_Pass_16_Add_C #define FUNC_V V_Pass_16_Add_C #define FUNC_HA H_Pass_Avrg_16_Add_C #define FUNC_VA V_Pass_Avrg_16_Add_C #define FUNC_HA_UP H_Pass_Avrg_Up_16_Add_C #define FUNC_VA_UP V_Pass_Avrg_Up_16_Add_C #include __FILE__ /* self-include ourself */ #undef SIZE #undef TABLE // 8x? filters #define SIZE 8 #define TABLE FIR_Tab_8 #define STORE(d,s) (d) =3D (s) #define FUNC_H H_Pass_8_C #define FUNC_V V_Pass_8_C #define FUNC_HA H_Pass_Avrg_8_C #define FUNC_VA V_Pass_Avrg_8_C #define FUNC_HA_UP H_Pass_Avrg_Up_8_C #define FUNC_VA_UP V_Pass_Avrg_Up_8_C #include __FILE__ /* self-include ourself */ // note: B-frame always uses Rnd=3D0... #define STORE(d,s) (d) =3D ( (s)+(d)+1 ) >> 1 #define FUNC_H H_Pass_8_Add_C #define FUNC_V V_Pass_8_Add_C #define FUNC_HA H_Pass_Avrg_8_Add_C #define FUNC_VA V_Pass_Avrg_8_Add_C #define FUNC_HA_UP H_Pass_Avrg_Up_8_Add_C #define FUNC_VA_UP V_Pass_Avrg_Up_8_Add_C #include __FILE__ /* self-include ourself */ #undef SIZE #undef TABLE #undef XVID_AUTO_INCLUDE ////////////////////////////////////////////////////////// // general-purpose hooks // TODO: embed in enc/dec structure? XVID_QP_FUNCS *xvid_QP_Funcs =3D 0; XVID_QP_FUNCS *xvid_QP_Add_Funcs =3D 0; ////////////////////////////////////////////////////////// // plain C impl. declaration // TODO: should be declared elsewhere? XVID_QP_FUNCS xvid_QP_Funcs_C =3D { H_Pass_16_C, H_Pass_Avrg_16_C, H_Pass_Avrg_Up_16_C , V_Pass_16_C, V_Pass_Avrg_16_C, V_Pass_Avrg_Up_16_C , H_Pass_8_C,H_Pass_Avrg_8_C,H_Pass_Avrg_Up_8_C , V_Pass_8_C,V_Pass_Avrg_8_C,V_Pass_Avrg_Up_8_C }; XVID_QP_FUNCS xvid_QP_Add_Funcs_C =3D { H_Pass_16_Add_C, H_Pass_Avrg_16_Add_C, H_Pass_Avrg_Up_16_Add_C , V_Pass_16_Add_C, V_Pass_Avrg_16_Add_C, V_Pass_Avrg_Up_16_Add_C , H_Pass_8_Add_C,H_Pass_Avrg_8_Add_C,H_Pass_Avrg_Up_8_Add_C , V_Pass_8_Add_C,V_Pass_Avrg_8_Add_C,V_Pass_Avrg_Up_8_Add_C }; ////////////////////////////////////////////////////////// // mmx impl. declaration (cf. qpel_mmx.asm) // TODO: should be declared elsewhere? extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_16_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Avrg_16_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Avrg_Up_16_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_16_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Avrg_16_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Avrg_Up_16_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_8_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Avrg_8_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Avrg_Up_8_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_8_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Avrg_8_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Avrg_Up_8_mmx); XVID_QP_FUNCS xvid_QP_Funcs_mmx =3D { xvid_H_Pass_16_mmx, xvid_H_Pass_Avrg_16_mmx, xvid_H_Pass_Avrg_Up_16_mmx , xvid_V_Pass_16_mmx, xvid_V_Pass_Avrg_16_mmx, xvid_V_Pass_Avrg_Up_16_mmx , xvid_H_Pass_8_mmx,xvid_H_Pass_Avrg_8_mmx,xvid_H_Pass_Avrg_Up_8_mmx , xvid_V_Pass_8_mmx,xvid_V_Pass_Avrg_8_mmx,xvid_V_Pass_Avrg_Up_8_mmx }; extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Add_16_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Avrg_Add_16_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Avrg_Up_Add_16_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Add_16_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Avrg_Add_16_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Avrg_Up_Add_16_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_8_Add_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Avrg_8_Add_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Avrg_Up_8_Add_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_8_Add_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Avrg_8_Add_mmx); extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Avrg_Up_8_Add_mmx); XVID_QP_FUNCS xvid_QP_Add_Funcs_mmx =3D { xvid_H_Pass_Add_16_mmx, xvid_H_Pass_Avrg_Add_16_mmx, xvid_H_Pass_Avrg_U= p_Add_16_mmx , xvid_V_Pass_Add_16_mmx, xvid_V_Pass_Avrg_Add_16_mmx, xvid_V_Pass_Avrg_U= p_Add_16_mmx , xvid_H_Pass_8_Add_mmx,xvid_H_Pass_Avrg_8_Add_mmx,xvid_H_Pass_Avrg_Up_8_Ad= d_mmx , xvid_V_Pass_8_Add_mmx,xvid_V_Pass_Avrg_8_Add_mmx,xvid_V_Pass_Avrg_Up_8_Ad= d_mmx }; ////////////////////////////////////////////////////////// // tables for ASM extern uint16_t xvid_Expand_mmx[256][4]; // 8b -> 64b expansion table // Alternate way of filtering (cf. USE_TABLES flag in qpel_mmx.asm) // // 17 tables, 2K each =3D> 34K // Mirroring can be acheived composing 11 basic tables // (for instance: (23,19,-6,3)=3D(20,20,-6,3)+(3,-1,0,0) // Using Symmetries (and bswap) could reduce further =20 // the memory to 7 tables (->14K). extern int16_t xvid_FIR_1_0_0_0[256][4]; extern int16_t xvid_FIR_3_1_0_0[256][4]; extern int16_t xvid_FIR_6_3_1_0[256][4]; extern int16_t xvid_FIR_14_3_2_1[256][4]; extern int16_t xvid_FIR_20_6_3_1[256][4]; extern int16_t xvid_FIR_20_20_6_3[256][4]; extern int16_t xvid_FIR_23_19_6_3[256][4]; extern int16_t xvid_FIR_7_20_20_6[256][4]; extern int16_t xvid_FIR_6_20_20_6[256][4]; extern int16_t xvid_FIR_6_20_20_7[256][4]; extern int16_t xvid_FIR_3_6_20_20[256][4]; extern int16_t xvid_FIR_3_6_19_23[256][4]; extern int16_t xvid_FIR_1_3_6_20[256][4];=20 extern int16_t xvid_FIR_1_2_3_14[256][4];=20 extern int16_t xvid_FIR_0_1_3_6[256][4]; =20 extern int16_t xvid_FIR_0_0_1_3[256][4]; =20 extern int16_t xvid_FIR_0_0_0_1[256][4]; =20 ////////////////////////////////////////////////////////// uint16_t xvid_Expand_mmx[256][4]; // 8b -> 64b expansion table int16_t xvid_FIR_1_0_0_0[256][4]; int16_t xvid_FIR_3_1_0_0[256][4]; int16_t xvid_FIR_6_3_1_0[256][4]; int16_t xvid_FIR_14_3_2_1[256][4]; int16_t xvid_FIR_20_6_3_1[256][4]; int16_t xvid_FIR_20_20_6_3[256][4]; int16_t xvid_FIR_23_19_6_3[256][4]; int16_t xvid_FIR_7_20_20_6[256][4]; int16_t xvid_FIR_6_20_20_6[256][4]; int16_t xvid_FIR_6_20_20_7[256][4]; int16_t xvid_FIR_3_6_20_20[256][4]; int16_t xvid_FIR_3_6_19_23[256][4]; int16_t xvid_FIR_1_3_6_20[256][4]; int16_t xvid_FIR_1_2_3_14[256][4]; int16_t xvid_FIR_0_1_3_6[256][4]; int16_t xvid_FIR_0_0_1_3[256][4]; int16_t xvid_FIR_0_0_0_1[256][4]; static void Init_FIR_Table(int16_t Tab[][4], int A, int B, int C, int D) { int i; for(i=3D0; i<256; ++i) { Tab[i][0] =3D i*A; Tab[i][1] =3D i*B; Tab[i][2] =3D i*C; Tab[i][3] =3D i*D; } } void xvid_Init_QP_mmx() { int i; for(i=3D0; i<256; ++i) { xvid_Expand_mmx[i][0] =3D i; xvid_Expand_mmx[i][1] =3D i; xvid_Expand_mmx[i][2] =3D i; xvid_Expand_mmx[i][3] =3D i; } // Alternate way of filtering (cf. USE_TABLES flag in qpel_mmx.asm) Init_FIR_Table(xvid_FIR_1_0_0_0, -1, 0, 0, 0); Init_FIR_Table(xvid_FIR_3_1_0_0, 3, -1, 0, 0); Init_FIR_Table(xvid_FIR_6_3_1_0, -6, 3, -1, 0); Init_FIR_Table(xvid_FIR_14_3_2_1, 14, -3, 2, -1); Init_FIR_Table(xvid_FIR_20_6_3_1, 20, -6, 3, -1); Init_FIR_Table(xvid_FIR_20_20_6_3, 20, 20, -6, 3); Init_FIR_Table(xvid_FIR_23_19_6_3, 23, 19, -6, 3); Init_FIR_Table(xvid_FIR_7_20_20_6, -7, 20, 20, -6); Init_FIR_Table(xvid_FIR_6_20_20_6, -6, 20, 20, -6); Init_FIR_Table(xvid_FIR_6_20_20_7, -6, 20, 20, -7); Init_FIR_Table(xvid_FIR_3_6_20_20, 3, -6, 20, 20); Init_FIR_Table(xvid_FIR_3_6_19_23, 3, -6, 19, 23); Init_FIR_Table(xvid_FIR_1_3_6_20, -1, 3, -6, 20); Init_FIR_Table(xvid_FIR_1_2_3_14, -1, 2, -3, 14); Init_FIR_Table(xvid_FIR_0_1_3_6, 0, -1, 3, -6); Init_FIR_Table(xvid_FIR_0_0_1_3, 0, 0, -1, 3); Init_FIR_Table(xvid_FIR_0_0_0_1, 0, 0, 0, -1); } #endif /* !XVID_AUTO_INCLUDE */ ////////////////////////////////////////////////////////// // "reference" filters impl. in plain C ////////////////////////////////////////////////////////// #ifdef XVID_AUTO_INCLUDE static void FUNC_H(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32= _t Rnd) { while(H-->0) { int32_t i, k; int32_t Sums[SIZE] =3D { 0 }; for(i=3D0; i<=3DSIZE; ++i) for(k=3D0; k> 5; if (C<0) C =3D 0; else if (C>255) C =3D 255; STORE(Dst[i], C); } Src +=3D BpS; Dst +=3D BpS; } } static void FUNC_V(uint8_t *Dst, const uint8_t *Src, int32_t W, int32_t BpS, int32= _t Rnd) { while(W-->0) { int32_t i, k; int32_t Sums[SIZE] =3D { 0 }; const uint8_t *S =3D Src++; uint8_t *D =3D Dst++; for(i=3D0; i<=3DSIZE; ++i) { for(k=3D0; k>5; if (C<0) C =3D 0; else if (C>255) C =3D 255; STORE(D[0], C); D +=3D BpS; } } } static void FUNC_HA(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int3= 2_t Rnd) { while(H-->0) { int32_t i, k; int32_t Sums[SIZE] =3D { 0 }; for(i=3D0; i<=3DSIZE; ++i) for(k=3D0; k> 5; if (C<0) C =3D 0; else if (C>255) C =3D 255; C =3D (C+Src[i]+1-Rnd) >> 1; STORE(Dst[i], C); } Src +=3D BpS; Dst +=3D BpS; } } static void FUNC_HA_UP(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, i= nt32_t Rnd) { while(H-->0) { int32_t i, k; int32_t Sums[SIZE] =3D { 0 }; for(i=3D0; i<=3DSIZE; ++i) for(k=3D0; k> 5; if (C<0) C =3D 0; else if (C>255) C =3D 255; C =3D (C+Src[i+1]+1-Rnd) >> 1; STORE(Dst[i], C); } Src +=3D BpS; Dst +=3D BpS; } } static void FUNC_VA(uint8_t *Dst, const uint8_t *Src, int32_t W, int32_t BpS, int3= 2_t Rnd) { while(W-->0) { int32_t i, k; int32_t Sums[SIZE] =3D { 0 }; const uint8_t *S =3D Src; uint8_t *D =3D Dst; for(i=3D0; i<=3DSIZE; ++i) { for(k=3D0; k>5; if (C<0) C =3D 0; else if (C>255) C =3D 255; C =3D ( C+S[0]+1-Rnd ) >> 1; STORE(D[0], C); D +=3D BpS; S +=3D BpS; } Src++; Dst++; } } static void FUNC_VA_UP(uint8_t *Dst, const uint8_t *Src, int32_t W, int32_t BpS, i= nt32_t Rnd) { while(W-->0) { int32_t i, k; int32_t Sums[SIZE] =3D { 0 }; const uint8_t *S =3D Src; uint8_t *D =3D Dst; for(i=3D0; i<=3DSIZE; ++i) { for(k=3D0; k>5; if (C<0) C =3D 0; else if (C>255) C =3D 255; C =3D ( C+S[0]+1-Rnd ) >> 1; STORE(D[0], C); D +=3D BpS; S +=3D BpS; } Dst++; Src++; } } #undef STORE #undef FUNC_H #undef FUNC_V #undef FUNC_HA #undef FUNC_VA #undef FUNC_HA_UP #undef FUNC_VA_UP #endif /* XVID_AUTO_INCLUDE */ ////////////////////////////////////////////////////////// --=-dLq130355Ig4zdyzCliD Content-Disposition: attachment; filename=qpel.h Content-Transfer-Encoding: quoted-printable Content-Type: text/x-c-header; name=qpel.h; charset=ISO-8859-1 /**************************************************************************= *** * * XVID MPEG-4 VIDEO CODEC * - QPel interpolation - * * This program is free software ; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation ; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY ; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program ; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ***************************************************************************= **/ /************************************************************************** * * History: * * 22.10.2002 initial coding - Skal - * *************************************************************************/ #ifndef _XVID_QPEL_H_ #define _XVID_QPEL_H_ #include "../utils/mem_transfer.h" /**************************************************************************= *** * Signatures **************************************************************************= **/ #define XVID_QP_PASS_SIGNATURE(NAME) \ void (NAME)(uint8_t *dst, const uint8_t *src, int32_t length, int32_t BpS= , int32_t rounding) typedef XVID_QP_PASS_SIGNATURE(XVID_QP_PASS); // We put everything in a single struct so it can easily be passed // to prediction functions as a whole... struct XVID_QP_FUNCS { // filter for QPel 16x? prediction XVID_QP_PASS *H_Pass; XVID_QP_PASS *H_Pass_Avrg; XVID_QP_PASS *H_Pass_Avrg_Up; XVID_QP_PASS *V_Pass; XVID_QP_PASS *V_Pass_Avrg; XVID_QP_PASS *V_Pass_Avrg_Up; // filter for QPel 8x? prediction XVID_QP_PASS *H_Pass_8; XVID_QP_PASS *H_Pass_Avrg_8; XVID_QP_PASS *H_Pass_Avrg_Up_8; XVID_QP_PASS *V_Pass_8; XVID_QP_PASS *V_Pass_Avrg_8; XVID_QP_PASS *V_Pass_Avrg_Up_8; }; typedef struct XVID_QP_FUNCS XVID_QP_FUNCS; /**************************************************************************= *** * fwd dcl **************************************************************************= **/ extern XVID_QP_FUNCS xvid_QP_Funcs_C; // for P-frames extern XVID_QP_FUNCS xvid_QP_Add_Funcs_C; // for B-frames extern XVID_QP_FUNCS xvid_QP_Funcs_mmx; extern XVID_QP_FUNCS xvid_QP_Add_Funcs_mmx; extern void xvid_Init_QP_mmx(); // should be called at mmx initialization extern XVID_QP_FUNCS *xvid_QP_Funcs; // <- main pointer for enc/dec st= ructure extern XVID_QP_FUNCS *xvid_QP_Add_Funcs; // <- main pointer for enc/dec st= ructure /**************************************************************************= *** * macros **************************************************************************= **/ /**************************************************************************= *** Passes to be performed case 0: copy case 2: h-pass case 1/3: h-pass + h-avrg case 8: v-pass case 10: h-pass + v-pass case 9/11: h-pass + h-avrg + v-pass case 4/12: v-pass + v-avrg case 6/14: h-pass + v-pass + v-avrg case 5/13/7/15: h-pass + h-avrg + v-pass + v-avrg **************************************************************************= **/ static __inline void new_interpolate16x16_quarterpel( uint8_t * const cur, uint8_t * const refn, uint8_t * const refh, uint8_t * const refv, uint8_t * const refhv, const uint32_t x, const uint32_t y, const int32_t dx, const int dy, const uint32_t stride, const uint32_t rounding) { const uint8_t *src; uint8_t *dst; uint8_t *tmp; int32_t quads; const XVID_QP_FUNCS *Ops; Ops =3D xvid_QP_Funcs; // TODO: pass as argument quads =3D (dx&3) | ((dy&3)<<2); dst =3D cur + y * stride + x; src =3D refn + (dy>>2) * stride + (dx>>2); tmp =3D refh; // we need at least a 16 x stride scratch block switch(quads) { case 0: transfer8x8_copy( dst, src, stride); transfer8x8_copy( dst+8, src+8, stride); transfer8x8_copy( dst+8*stride, src+8*stride, stride); transfer8x8_copy( dst+8*stride+8, src+8*stride+8, stride); break; case 1: Ops->H_Pass_Avrg(dst, src, 16, stride, rounding); break; case 2: Ops->H_Pass(dst, src, 16, stride, rounding); break; case 3: Ops->H_Pass_Avrg_Up(dst, src, 16, stride, rounding); break; case 4: Ops->V_Pass_Avrg(dst, src, 16, stride, rounding); break; case 5: Ops->H_Pass_Avrg(tmp, src, 17, stride, rounding); Ops->V_Pass_Avrg(dst, tmp, 16, stride, rounding); break; case 6: Ops->H_Pass(tmp, src, 17, stride, rounding); Ops->V_Pass_Avrg(dst, tmp, 16, stride, rounding); break; case 7: Ops->H_Pass_Avrg_Up(tmp, src, 17, stride, rounding); Ops->V_Pass_Avrg(dst, tmp, 16, stride, rounding); break; case 8: Ops->V_Pass(dst, src, 16, stride, rounding); break; case 9: Ops->H_Pass_Avrg(tmp, src, 17, stride, rounding); Ops->V_Pass(dst, tmp, 16, stride, rounding); break; case 10: Ops->H_Pass(tmp, src, 17, stride, rounding); Ops->V_Pass(dst, tmp, 16, stride, rounding); break; case 11: Ops->H_Pass_Avrg_Up(tmp, src, 17, stride, rounding); Ops->V_Pass(dst, tmp, 16, stride, rounding); break; case 12: Ops->V_Pass_Avrg_Up(dst, src, 16, stride, rounding); break; case 13: Ops->H_Pass_Avrg(tmp, src, 17, stride, rounding); Ops->V_Pass_Avrg_Up(dst, tmp, 16, stride, rounding); break; case 14: Ops->H_Pass(tmp, src, 17, stride, rounding); Ops->V_Pass_Avrg_Up( dst, tmp, 16, stride, rounding); break; case 15: Ops->H_Pass_Avrg_Up(tmp, src, 17, stride, rounding); Ops->V_Pass_Avrg_Up(dst, tmp, 16, stride, rounding); break; } } static __inline void new_interpolate16x8_quarterpel( uint8_t * const cur, uint8_t * const refn, uint8_t * const refh, uint8_t * const refv, uint8_t * const refhv, const uint32_t x, const uint32_t y, const int32_t dx, const int dy, const uint32_t stride, const uint32_t rounding) { const uint8_t *src; uint8_t *dst; uint8_t *tmp; int32_t quads; const XVID_QP_FUNCS *Ops; Ops =3D xvid_QP_Funcs; // TODO: pass as argument quads =3D (dx&3) | ((dy&3)<<2); dst =3D cur + y * stride + x; src =3D refn + (dy>>2) * stride + (dx>>2); tmp =3D refh; // we need at least a 16 x stride scratch block switch(quads) { case 0: transfer8x8_copy( dst, src, stride); transfer8x8_copy( dst+8, src+8, stride); break; case 1: Ops->H_Pass_Avrg(dst, src, 8, stride, rounding); break; case 2: Ops->H_Pass(dst, src, 8, stride, rounding); break; case 3: Ops->H_Pass_Avrg_Up(dst, src, 8, stride, rounding); break; case 4: Ops->V_Pass_Avrg_8(dst, src, 16, stride, rounding); break; case 5: Ops->H_Pass_Avrg(tmp, src, 9, stride, rounding); Ops->V_Pass_Avrg_8(dst, tmp, 16, stride, rounding); break; case 6: Ops->H_Pass(tmp, src, 9, stride, rounding); Ops->V_Pass_Avrg_8(dst, tmp, 16, stride, rounding); break; case 7: Ops->H_Pass_Avrg_Up(tmp, src, 9, stride, rounding); Ops->V_Pass_Avrg_8(dst, tmp, 16, stride, rounding); break; case 8: Ops->V_Pass_8(dst, src, 16, stride, rounding); break; case 9: Ops->H_Pass_Avrg(tmp, src, 9, stride, rounding); Ops->V_Pass_8(dst, tmp, 16, stride, rounding); break; case 10: Ops->H_Pass(tmp, src, 9, stride, rounding); Ops->V_Pass_8(dst, tmp, 16, stride, rounding); break; case 11: Ops->H_Pass_Avrg_Up(tmp, src, 9, stride, rounding); Ops->V_Pass_8(dst, tmp, 16, stride, rounding); break; case 12: Ops->V_Pass_Avrg_Up_8(dst, src, 16, stride, rounding); break; case 13: Ops->H_Pass_Avrg(tmp, src, 9, stride, rounding); Ops->V_Pass_Avrg_Up_8(dst, tmp, 16, stride, rounding); break; case 14: Ops->H_Pass(tmp, src, 9, stride, rounding); Ops->V_Pass_Avrg_Up_8( dst, tmp, 16, stride, rounding); break; case 15: Ops->H_Pass_Avrg_Up(tmp, src, 9, stride, rounding); Ops->V_Pass_Avrg_Up_8(dst, tmp, 16, stride, rounding); break; } } static __inline void new_interpolate8x8_quarterpel( uint8_t * const cur, uint8_t * const refn, uint8_t * const refh, uint8_t * const refv, uint8_t * const refhv, const uint32_t x, const uint32_t y, const int32_t dx, const int dy, const uint32_t stride, const uint32_t rounding) { const uint8_t *src; uint8_t *dst; uint8_t *tmp; int32_t quads; const XVID_QP_FUNCS *Ops; Ops =3D xvid_QP_Funcs; // TODO: pass as argument quads =3D (dx&3) | ((dy&3)<<2); dst =3D cur + y * stride + x; src =3D refn + (dy>>2) * stride + (dx>>2); tmp =3D refh; // we need at least a 16 x stride scratch block switch(quads) { case 0: transfer8x8_copy( dst, src, stride); break; case 1: Ops->H_Pass_Avrg_8(dst, src, 8, stride, rounding); break; case 2: Ops->H_Pass_8(dst, src, 8, stride, rounding); break; case 3: Ops->H_Pass_Avrg_Up_8(dst, src, 8, stride, rounding); break; case 4: Ops->V_Pass_Avrg_8(dst, src, 8, stride, rounding); break; case 5: Ops->H_Pass_Avrg_8(tmp, src, 9, stride, rounding); Ops->V_Pass_Avrg_8(dst, tmp, 8, stride, rounding); break; case 6: Ops->H_Pass_8(tmp, src, 9, stride, rounding); Ops->V_Pass_Avrg_8(dst, tmp, 8, stride, rounding); break; case 7: Ops->H_Pass_Avrg_Up_8(tmp, src, 9, stride, rounding); Ops->V_Pass_Avrg_8(dst, tmp, 8, stride, rounding); break; case 8: Ops->V_Pass_8(dst, src, 8, stride, rounding); break; case 9: Ops->H_Pass_Avrg_8(tmp, src, 9, stride, rounding); Ops->V_Pass_8(dst, tmp, 8, stride, rounding); break; case 10: Ops->H_Pass_8(tmp, src, 9, stride, rounding); Ops->V_Pass_8(dst, tmp, 8, stride, rounding); break; case 11: Ops->H_Pass_Avrg_Up_8(tmp, src, 9, stride, rounding); Ops->V_Pass_8(dst, tmp, 8, stride, rounding); break; case 12: Ops->V_Pass_Avrg_Up_8(dst, src, 8, stride, rounding); break; case 13: Ops->H_Pass_Avrg_8(tmp, src, 9, stride, rounding); Ops->V_Pass_Avrg_Up_8(dst, tmp, 8, stride, rounding); break; case 14: Ops->H_Pass_8(tmp, src, 9, stride, rounding); Ops->V_Pass_Avrg_Up_8( dst, tmp, 8, stride, rounding); break; case 15: Ops->H_Pass_Avrg_Up_8(tmp, src, 9, stride, rounding); Ops->V_Pass_Avrg_Up_8(dst, tmp, 8, stride, rounding); break; } } /**************************************************************************= ***/ #endif /* _XVID_QPEL_H_ */ --=-dLq130355Ig4zdyzCliD Content-Disposition: attachment; filename=qpel_mmx.asm Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; name=qpel_mmx.asm; charset=ISO-8859-1 ;/*************************************************************************= **** ; * ; * XVID MPEG-4 VIDEO CODEC ; * - Quarter-pixel interpolation - ; * Copyright(C) 2002 Pascal Massimino ; * ; * This file is part of XviD, a free MPEG-4 video encoder/decoder ; * ; * XviD is free software; you can redistribute it and/or modify it ; * under the terms of the GNU General Public License as published by ; * the Free Software Foundation; either version 2 of the License, or ; * (at your option) any later version. ; * ; * This program is distributed in the hope that it will be useful, ; * but WITHOUT ANY WARRANTY; without even the implied warranty of ; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; * GNU General Public License for more details. ; * ; * You should have received a copy of the GNU General Public License ; * along with this program; if not, write to the Free Software ; * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 U= SA ; * ; * Under section 8 of the GNU General Public License, the copyright ; * holders of XVID explicitly forbid distribution in the following ; * countries: ; * ; * - Japan ; * - United States of America ; * ; * Linking XviD statically or dynamically with other modules is making a ; * combined work based on XviD. Thus, the terms and conditions of the ; * GNU General Public License cover the whole combination. ; * ; * As a special exception, the copyright holders of XviD give you ; * permission to link XviD with independent modules that communicate with ; * XviD solely through the VFW1.1 and DShow interfaces, regardless of the ; * license terms of these independent modules, and to copy and distribute ; * the resulting combined work under terms of your choice, provided that ; * every copy of the combined work is accompanied by a complete copy of ; * the source code of XviD (the version of XviD used to produce the ; * combined work), being distributed under the terms of the GNU General ; * Public License plus this exception. An independent module is a module ; * which is not derived from or based on XviD. ; * ; * Note that people who make modified versions of XviD are not obligated ; * to grant this special exception for their modified versions; it is ; * their choice whether to do so. The GNU General Public License gives ; * permission to release a modified version without this exception; this ; * exception also makes it possible to release a modified version which ; * carries forward this exception. ; * ; * $Id: qpel_mmx.asm,v 1.1.2.1 2002/12/08 05:34:16 suxen_drol Exp $ ; * ; *************************************************************************= / ;/*************************************************************************= * ; * ; * History: ; * ; * 22.10.2002 initial coding. unoptimized 'proof of concept',=20 ; * just to heft the qpel filtering. - Skal - ; * ; *************************************************************************= / %define USE_TABLES ; in order to use xvid_FIR_x_x_x_x tables ; instead of xvid_Expand_mmx... bits 32 %macro cglobal 1=20 %ifdef PREFIX global _%1=20 %define %1 _%1 %else global %1 %endif %endmacro %macro cextern 1=20 %ifdef PREFIX extern _%1=20 %define %1 _%1 %else extern %1 %endif %endmacro ;////////////////////////////////////////////////////////////////////// ;// Declarations ;// all signatures are: ;// void XXX(uint8_t *dst, const uint8_t *src,=20 ;// int32_t length, int32_t stride, int32_t rounding) ;////////////////////////////////////////////////////////////////////// cglobal xvid_H_Pass_16_mmx cglobal xvid_H_Pass_Avrg_16_mmx cglobal xvid_H_Pass_Avrg_Up_16_mmx cglobal xvid_V_Pass_16_mmx cglobal xvid_V_Pass_Avrg_16_mmx cglobal xvid_V_Pass_Avrg_Up_16_mmx cglobal xvid_H_Pass_8_mmx cglobal xvid_H_Pass_Avrg_8_mmx cglobal xvid_H_Pass_Avrg_Up_8_mmx cglobal xvid_V_Pass_8_mmx cglobal xvid_V_Pass_Avrg_8_mmx cglobal xvid_V_Pass_Avrg_Up_8_mmx cglobal xvid_H_Pass_Add_16_mmx cglobal xvid_H_Pass_Avrg_Add_16_mmx cglobal xvid_H_Pass_Avrg_Up_Add_16_mmx cglobal xvid_V_Pass_Add_16_mmx cglobal xvid_V_Pass_Avrg_Add_16_mmx cglobal xvid_V_Pass_Avrg_Up_Add_16_mmx cglobal xvid_H_Pass_8_Add_mmx cglobal xvid_H_Pass_Avrg_8_Add_mmx cglobal xvid_H_Pass_Avrg_Up_8_Add_mmx cglobal xvid_V_Pass_8_Add_mmx cglobal xvid_V_Pass_Avrg_8_Add_mmx cglobal xvid_V_Pass_Avrg_Up_8_Add_mmx cextern xvid_Expand_mmx %ifdef USE_TABLES cextern xvid_FIR_1_0_0_0 cextern xvid_FIR_3_1_0_0 cextern xvid_FIR_6_3_1_0 cextern xvid_FIR_14_3_2_1 cextern xvid_FIR_20_6_3_1 cextern xvid_FIR_20_20_6_3 cextern xvid_FIR_23_19_6_3 cextern xvid_FIR_7_20_20_6 cextern xvid_FIR_6_20_20_6 cextern xvid_FIR_6_20_20_7 cextern xvid_FIR_3_6_20_20 cextern xvid_FIR_3_6_19_23 cextern xvid_FIR_1_3_6_20 cextern xvid_FIR_1_2_3_14 cextern xvid_FIR_0_1_3_6 cextern xvid_FIR_0_0_1_3 cextern xvid_FIR_0_0_0_1 %endif ;//////////////////////////////////////////////////////////////////////=20 section .data align 16 Rounder1_MMX: times 4 dw 1 Rounder0_MMX: times 4 dw 0 align 16 Rounder_QP_MMX times 4 dw 16 times 4 dw 15 %ifndef USE_TABLES align 16 ; H-Pass table shared by 16x? and 8x? filters FIR_R0: dw 14, -3, 2, -1 align 16 FIR_R1: dw 23, 19, -6, 3, -1, 0, 0, 0 FIR_R2: dw -7, 20, 20, -6, 3, -1, 0, 0 FIR_R3: dw 3, -6, 20, 20, -6, 3, -1, 0 FIR_R4: dw -1, 3, -6, 20, 20, -6, 3, -1 FIR_R5: dw 0, -1, 3, -6, 20, 20, -6, 3, -1, 0, 0, 0 align 16 FIR_R6: dw 0, 0, -1, 3, -6, 20, 20, -6, 3, -1, 0, 0 align 16 FIR_R7: dw 0, 0, 0, -1, 3, -6, 20, 20, -6, 3, -1, 0 align 16 FIR_R8: dw -1, 3, -6, 20, 20, -6, 3, -1 FIR_R9: dw 0, -1, 3, -6, 20, 20, -6, 3, -1, 0, = 0, 0 align 16 FIR_R10: dw 0, 0, -1, 3, -6, 20, 20, -6, 3, -1, = 0, 0 align 16 FIR_R11: dw 0, 0, 0, -1, 3, -6, 20, 20, -6, 3, -= 1, 0 align 16 FIR_R12: dw -1, 3, -6, 20, 20, -6, = 3, -1 FIR_R13: dw 0, -1, 3, -6, 20, 20, -= 6, 3 FIR_R14: dw 0, 0, -1, 3, -6, 20, 2= 0, -7 FIR_R15: dw 0, 0, 0, -1, 3, -6, 1= 9, 23 FIR_R16: dw -1, 2, -= 3, 14 %endif ; !USE_TABLES ; V-Pass taps align 16 FIR_Cm7: times 4 dw -7 FIR_Cm6: times 4 dw -6 FIR_Cm3: times 4 dw -3 FIR_Cm1: times 4 dw -1 FIR_C2: times 4 dw 2 FIR_C3: times 4 dw 3 FIR_C14: times 4 dw 14 FIR_C19: times 4 dw 19 FIR_C20: times 4 dw 20 FIR_C23: times 4 dw 23 section .text ;////////////////////////////////////////////////////////////////////// ;// Here we go with the Q-Pel mess. ;// For horizontal passes, we process 4 *output* pixel in parallel ;// For vertical ones, we process 4 *input* pixel in parallel. ;////////////////////////////////////////////////////////////////////// %macro PROLOG_NO_AVRG 0 push esi push edi push ebp mov edi, [esp+16 + 0*4] ; Dst mov esi, [esp+16 + 1*4] ; Src mov ecx, [esp+16 + 2*4] ; Size mov ebp, [esp+16 + 3*4] ; BpS mov eax, [esp+16 + 4*4] ; Rnd and eax, 1 movq mm7, [Rounder_QP_MMX+eax*8] ; rounder %endmacro %macro EPILOG_NO_AVRG 0 pop ebp pop edi pop esi ret %endmacro %macro PROLOG_AVRG 0 push ebx push esi push edi push ebp mov edi, [esp+20 + 0*4] ; Dst mov esi, [esp+20 + 1*4] ; Src mov ecx, [esp+20 + 2*4] ; Size mov ebp, [esp+20 + 3*4] ; BpS mov eax, [esp+20 + 4*4] ; Rnd and eax, 1 movq mm7, [Rounder_QP_MMX+eax*8] ; rounder lea ebx, [Rounder1_MMX+eax*8] ; *Rounder2 %endmacro %macro EPILOG_AVRG 0 pop ebp pop edi pop esi pop ebx ret %endmacro ;////////////////////////////////////////////////////////////////////// ;// ;// All horizontal passes ;// ;////////////////////////////////////////////////////////////////////// ; macros for USE_TABLES %macro TLOAD 2 ; %1,%2: src pixels movzx eax, byte [esi+%1] movzx edx, byte [esi+%2] movq mm0, [xvid_FIR_14_3_2_1 + eax*8 ] movq mm3, [xvid_FIR_1_2_3_14 + edx*8 ] paddw mm0, mm7 paddw mm3, mm7 %endmacro %macro TACCUM2 5 ;%1:src pixel/%2-%3:Taps tables/ %4-%5:dst regs movzx eax, byte [esi+%1] paddw %4, [%2 + eax*8] paddw %5, [%3 + eax*8] %endmacro %macro TACCUM3 7 ;%1:src pixel/%2-%4:Taps tables/%5-%7:dst regs movzx eax, byte [esi+%1] paddw %5, [%2 + eax*8] paddw %6, [%3 + eax*8] paddw %7, [%4 + eax*8] %endmacro ;////////////////////////////////////////////////////////////////////// ; macros without USE_TABLES %macro LOAD 2 ; %1,%2: src pixels movzx eax, byte [esi+%1] movzx edx, byte [esi+%2] movq mm0, [xvid_Expand_mmx + eax*8] movq mm3, [xvid_Expand_mmx + edx*8] pmullw mm0, [FIR_R0 ] pmullw mm3, [FIR_R16] paddw mm0, mm7 paddw mm3, mm7 %endmacro %macro ACCUM2 4 ;src pixel/Taps/dst regs #1-#2 movzx eax, byte [esi+%1] movq mm4, [xvid_Expand_mmx + eax*8] movq mm5, mm4 pmullw mm4, [%2] pmullw mm5, [%2+8] paddw %3, mm4 paddw %4, mm5 %endmacro %macro ACCUM3 5 ;src pixel/Taps/dst regs #1-#2-#3 movzx eax, byte [esi+%1] movq mm4, [xvid_Expand_mmx + eax*8] movq mm5, mm4 movq mm6, mm5 pmullw mm4, [%2 ] pmullw mm5, [%2+ 8] pmullw mm6, [%2+16] paddw %3, mm4 paddw %4, mm5 paddw %5, mm6 %endmacro ;////////////////////////////////////////////////////////////////////// %macro MIX 3 ; %1:reg, %2:src, %3:rounder pxor mm6, mm6 movq mm4, [%2] movq mm1, %1 movq mm5, mm4 punpcklbw %1, mm6 punpcklbw mm4, mm6 punpckhbw mm1, mm6 punpckhbw mm5, mm6 movq mm6, [%3] ; rounder #2 paddusw %1, mm4 paddusw mm1, mm5 paddusw %1, mm6 paddusw mm1, mm6 psrlw %1, 1 psrlw mm1, 1 packuswb %1, mm1 %endmacro ;////////////////////////////////////////////////////////////////////// %macro H_PASS_16 2 ; %1:src-op (0=3DNONE,1=3DAVRG,2=3DAVRG-UP), %2:dst-o= p (NONE/AVRG) %if (%2=3D=3D0) && (%1=3D=3D0) PROLOG_NO_AVRG %else PROLOG_AVRG %endif .Loop ; mm0..mm3 serves as a 4x4 delay line %ifndef USE_TABLES LOAD 0, 16 ; special case for 1rst/last pixel movq mm1, mm7 movq mm2, mm7 ACCUM2 1, FIR_R1, mm0, mm1 ACCUM2 2, FIR_R2, mm0, mm1 ACCUM2 3, FIR_R3, mm0, mm1 ACCUM2 4, FIR_R4, mm0, mm1 ACCUM3 5, FIR_R5, mm0, mm1, mm2 ACCUM3 6, FIR_R6, mm0, mm1, mm2 ACCUM3 7, FIR_R7, mm0, mm1, mm2 ACCUM2 8, FIR_R8, mm1, mm2 ACCUM3 9, FIR_R9, mm1, mm2, mm3 ACCUM3 10, FIR_R10,mm1, mm2, mm3 ACCUM3 11, FIR_R11,mm1, mm2, mm3 ACCUM2 12, FIR_R12, mm2, mm3 ACCUM2 13, FIR_R13, mm2, mm3 ACCUM2 14, FIR_R14, mm2, mm3 ACCUM2 15, FIR_R15, mm2, mm3 %else TLOAD 0, 16 ; special case for 1rst/last pixel movq mm1, mm7 movq mm2, mm7 TACCUM2 1, xvid_FIR_23_19_6_3, xvid_FIR_1_0_0_0 , mm0, mm1 TACCUM2 2, xvid_FIR_7_20_20_6, xvid_FIR_3_1_0_0 , mm0, mm1 TACCUM2 3, xvid_FIR_3_6_20_20, xvid_FIR_6_3_1_0 , mm0, mm1 TACCUM2 4, xvid_FIR_1_3_6_20 , xvid_FIR_20_6_3_1, mm0, mm1 TACCUM3 5, xvid_FIR_0_1_3_6 , xvid_FIR_20_20_6_3, xvid_FIR_1_0_0_0 ,= mm0, mm1, mm2 TACCUM3 6, xvid_FIR_0_0_1_3 , xvid_FIR_6_20_20_6, xvid_FIR_3_1_0_0 ,= mm0, mm1, mm2 TACCUM3 7, xvid_FIR_0_0_0_1 , xvid_FIR_3_6_20_20, xvid_FIR_6_3_1_0 ,= mm0, mm1, mm2 TACCUM2 8, xvid_FIR_1_3_6_20 , xvid_FIR_20_6_3_1 , = mm1, mm2 TACCUM3 9, xvid_FIR_0_1_3_6 , xvid_FIR_20_20_6_3, = xvid_FIR_1_0_0_0, mm1, mm2, mm3 TACCUM3 10, xvid_FIR_0_0_1_3 , xvid_FIR_6_20_20_6, = xvid_FIR_3_1_0_0, mm1, mm2, mm3 TACCUM3 11, xvid_FIR_0_0_0_1 , xvid_FIR_3_6_20_20, = xvid_FIR_6_3_1_0, mm1, mm2, mm3 TACCUM2 12, xvid_FIR_1_3_6_20, xvid_FIR_20_6_3_1 , mm2, mm3 TACCUM2 13, xvid_FIR_0_1_3_6 , xvid_FIR_20_20_6_3, mm2, mm3 TACCUM2 14, xvid_FIR_0_0_1_3 , xvid_FIR_6_20_20_7, mm2, mm3 TACCUM2 15, xvid_FIR_0_0_0_1 , xvid_FIR_3_6_19_23, mm2, mm3 %endif psraw mm0, 5 psraw mm1, 5 psraw mm2, 5 psraw mm3, 5 packuswb mm0, mm1 packuswb mm2, mm3 %if (%1=3D=3D1) MIX mm0, esi, ebx %elif (%1=3D=3D2) MIX mm0, esi+1, ebx %endif %if (%2=3D=3D1) MIX mm0, edi, Rounder1_MMX %endif %if (%1=3D=3D1) MIX mm2, esi+8, ebx %elif (%1=3D=3D2) MIX mm2, esi+9, ebx %endif %if (%2=3D=3D1) MIX mm2, edi+8, Rounder1_MMX %endif lea esi, [esi+ebp] movq [edi+0], mm0 movq [edi+8], mm2 add edi, ebp dec ecx jg .Loop %if (%2=3D=3D0) && (%1=3D=3D0) EPILOG_NO_AVRG %else EPILOG_AVRG %endif %endmacro ;////////////////////////////////////////////////////////////////////// %macro H_PASS_8 2 ; %1:src-op (0=3DNONE,1=3DAVRG,2=3DAVRG-UP), %2:dst-op= (NONE/AVRG) %if (%2=3D=3D0) && (%1=3D=3D0) PROLOG_NO_AVRG %else PROLOG_AVRG %endif .Loop ; mm0..mm3 serves as a 4x4 delay line %ifndef USE_TABLES LOAD 0, 8 ; special case for 1rst/last pixel ACCUM2 1, FIR_R1, mm0, mm3 ACCUM2 2, FIR_R2, mm0, mm3 ACCUM2 3, FIR_R3, mm0, mm3 ACCUM2 4, FIR_R4, mm0, mm3 ACCUM2 5, FIR_R13, mm0, mm3 ACCUM2 6, FIR_R14, mm0, mm3 ACCUM2 7, FIR_R15, mm0, mm3 %else %if 0 ; test with no unrolling TLOAD 0, 8 ; special case for 1rst/last pixel TACCUM2 1, xvid_FIR_23_19_6_3, xvid_FIR_1_0_0_0 , mm0, mm3 TACCUM2 2, xvid_FIR_7_20_20_6, xvid_FIR_3_1_0_0 , mm0, mm3 TACCUM2 3, xvid_FIR_3_6_20_20, xvid_FIR_6_3_1_0 , mm0, mm3 TACCUM2 4, xvid_FIR_1_3_6_20 , xvid_FIR_20_6_3_1 , mm0, mm3 TACCUM2 5, xvid_FIR_0_1_3_6 , xvid_FIR_20_20_6_3, mm0, mm3 TACCUM2 6, xvid_FIR_0_0_1_3 , xvid_FIR_6_20_20_7, mm0, mm3 TACCUM2 7, xvid_FIR_0_0_0_1 , xvid_FIR_3_6_19_23, mm0, mm3 %else ; test with unrolling (little faster, but not much) movzx eax, byte [esi] movzx edx, byte [esi+8] movq mm0, [xvid_FIR_14_3_2_1 + eax*8 ] movzx eax, byte [esi+1] movq mm3, [xvid_FIR_1_2_3_14 + edx*8 ] paddw mm0, mm7 paddw mm3, mm7 movzx edx, byte [esi+2] paddw mm0, [xvid_FIR_23_19_6_3 + eax*8] paddw mm3, [xvid_FIR_1_0_0_0 + eax*8] movzx eax, byte [esi+3] paddw mm0, [xvid_FIR_7_20_20_6 + edx*8] paddw mm3, [xvid_FIR_3_1_0_0 + edx*8] movzx edx, byte [esi+4] paddw mm0, [xvid_FIR_3_6_20_20 + eax*8] paddw mm3, [xvid_FIR_6_3_1_0 + eax*8] movzx eax, byte [esi+5] paddw mm0, [xvid_FIR_1_3_6_20 + edx*8] paddw mm3, [xvid_FIR_20_6_3_1 + edx*8] movzx edx, byte [esi+6] paddw mm0, [xvid_FIR_0_1_3_6 + eax*8] paddw mm3, [xvid_FIR_20_20_6_3 + eax*8] movzx eax, byte [esi+7] paddw mm0, [xvid_FIR_0_0_1_3 + edx*8] paddw mm3, [xvid_FIR_6_20_20_7 + edx*8] paddw mm0, [xvid_FIR_0_0_0_1 + eax*8] paddw mm3, [xvid_FIR_3_6_19_23 + eax*8] %endif %endif ; !USE_TABLES psraw mm0, 5 psraw mm3, 5 packuswb mm0, mm3 %if (%1=3D=3D1) MIX mm0, esi, ebx %elif (%1=3D=3D2) MIX mm0, esi+1, ebx %endif %if (%2=3D=3D1) MIX mm0, edi, Rounder1_MMX %endif movq [edi], mm0 add edi, ebp add esi, ebp dec ecx jg .Loop %if (%2=3D=3D0) && (%1=3D=3D0) EPILOG_NO_AVRG %else EPILOG_AVRG %endif %endmacro ;////////////////////////////////////////////////////////////////////// ;// 16x? copy Functions xvid_H_Pass_16_mmx: H_PASS_16 0, 0 xvid_H_Pass_Avrg_16_mmx: H_PASS_16 1, 0 xvid_H_Pass_Avrg_Up_16_mmx: H_PASS_16 2, 0 ;////////////////////////////////////////////////////////////////////// ;// 8x? copy Functions xvid_H_Pass_8_mmx: H_PASS_8 0, 0 xvid_H_Pass_Avrg_8_mmx: H_PASS_8 1, 0 xvid_H_Pass_Avrg_Up_8_mmx: H_PASS_8 2, 0 ;////////////////////////////////////////////////////////////////////// ;// 16x? avrg Functions xvid_H_Pass_Add_16_mmx: H_PASS_16 0, 1 xvid_H_Pass_Avrg_Add_16_mmx: H_PASS_16 1, 1 xvid_H_Pass_Avrg_Up_Add_16_mmx: H_PASS_16 2, 1 ;////////////////////////////////////////////////////////////////////// ;// 8x? avrg Functions xvid_H_Pass_8_Add_mmx: H_PASS_8 0, 1 xvid_H_Pass_Avrg_8_Add_mmx: H_PASS_8 1, 1 xvid_H_Pass_Avrg_Up_8_Add_mmx: H_PASS_8 2, 1 ;////////////////////////////////////////////////////////////////////// ;// ;// All vertical passes ;// ;////////////////////////////////////////////////////////////////////// %macro V_LOAD 1 ; %1=3DLast? movd mm4, [edx] pxor mm6, mm6 %if (%1=3D=3D0) add edx, ebp %endif punpcklbw mm4, mm6 %endmacro %macro V_ACC1 2 ; %1:reg; 2:tap pmullw mm4, [%2] paddw %1, mm4 %endmacro %macro V_ACC2 4 ; %1-%2: regs, %3-%4: taps movq mm5, mm4 movq mm6, mm4 pmullw mm5, [%3] pmullw mm6, [%4] paddw %1, mm5 paddw %2, mm6 %endmacro %macro V_ACC2l 4 ; %1-%2: regs, %3-%4: taps movq mm5, mm4 pmullw mm5, [%3] pmullw mm4, [%4] paddw %1, mm5 paddw %2, mm4 %endmacro %macro V_ACC4 8 ; %1-%4: regs, %5-%8: taps V_ACC2 %1,%2, %5,%6 V_ACC2l %3,%4, %7,%8 %endmacro %macro V_MIX 3 ; %1:dst-reg, %2:src, %3: rounder pxor mm6, mm6 movq mm4, [%2] punpcklbw %1, mm6 punpcklbw mm4, mm6 paddusw %1, mm4 paddusw %1, [%3] psrlw %1, 1 packuswb %1, %1 %endmacro %macro V_STORE 4 ; %1-%2: mix ops, %3: reg, %4:last? psraw %3, 5 packuswb %3, %3 %if (%1=3D=3D1) V_MIX %3, esi, ebx add esi, ebp %elif (%1=3D=3D2) add esi, ebp V_MIX %3, esi, ebx %endif %if (%2=3D=3D1) V_MIX %3, edi, Rounder1_MMX %endif movd eax, %3 mov [edi], eax %if (%4=3D=3D0) add edi, ebp %endif %endmacro ;////////////////////////////////////////////////////////////////////// %macro V_PASS_16 2 ; %1:src-op (0=3DNONE,1=3DAVRG,2=3DAVRG-UP), %2:dst-o= p (NONE/AVRG) %if (%2=3D=3D0) && (%1=3D=3D0) PROLOG_NO_AVRG %else PROLOG_AVRG %endif ; we process one stripe of 4x16 pixel each time. ; the size (3rd argument) is meant to be a multiple of 4 ; mm0..mm3 serves as a 4x4 delay line .Loop push edi push esi ; esi is preserved for src-mixing mov edx, esi ; ouput rows [0..3], from input rows [0..8] movq mm0, mm7 movq mm1, mm7 movq mm2, mm7 movq mm3, mm7 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_C14, FIR_Cm3, FIR_C2, FIR_Cm1 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_C23, FIR_C19, FIR_Cm6, FIR_C3 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_Cm7, FIR_C20, FIR_C20, FIR_Cm6 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_C3, FIR_Cm6, FIR_C20, FIR_C20 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_Cm1, FIR_C3, FIR_Cm6, FIR_C20 V_STORE %1, %2, mm0, 0 V_LOAD 0 V_ACC2 mm1, mm2, FIR_Cm1, FIR_C3 V_ACC1 mm3, FIR_Cm6 V_STORE %1, %2, mm1, 0 V_LOAD 0 V_ACC2l mm2, mm3, FIR_Cm1, FIR_C3 V_STORE %1, %2, mm2, 0 V_LOAD 1 V_ACC1 mm3, FIR_Cm1 V_STORE %1, %2, mm3, 0 ; ouput rows [4..7], from input rows [1..11] (!!) mov esi, [esp] lea edx, [esi+ebp] lea esi, [esi+4*ebp] ; for src-mixing push esi ; this will be the new value for next round movq mm0, mm7 movq mm1, mm7 movq mm2, mm7 movq mm3, mm7 V_LOAD 0 V_ACC1 mm0, FIR_Cm1 V_LOAD 0 V_ACC2l mm0, mm1, FIR_C3, FIR_Cm1 V_LOAD 0 V_ACC2 mm0, mm1, FIR_Cm6, FIR_C3 V_ACC1 mm2, FIR_Cm1 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_C20, FIR_Cm6, FIR_C3, FIR_Cm1 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_C20, FIR_C20, FIR_Cm6, FIR_C3 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_Cm6, FIR_C20, FIR_C20, FIR_Cm6 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_C3, FIR_Cm6, FIR_C20, FIR_C20 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_Cm1, FIR_C3, FIR_Cm6, FIR_C20 V_STORE %1, %2, mm0, 0 V_LOAD 0 V_ACC2 mm1, mm2, FIR_Cm1, FIR_C3 V_ACC1 mm3, FIR_Cm6 V_STORE %1, %2, mm1, 0 V_LOAD 0 V_ACC2l mm2, mm3, FIR_Cm1, FIR_C3 V_STORE %1, %2, mm2, 0 V_LOAD 1 V_ACC1 mm3, FIR_Cm1 V_STORE %1, %2, mm3, 0 ; ouput rows [8..11], from input rows [5..15] pop esi lea edx, [esi+ebp] lea esi, [esi+4*ebp] ; for src-mixing push esi ; this will be the new value for next round movq mm0, mm7 movq mm1, mm7 movq mm2, mm7 movq mm3, mm7 V_LOAD 0 V_ACC1 mm0, FIR_Cm1 V_LOAD 0 V_ACC2l mm0, mm1, FIR_C3, FIR_Cm1 V_LOAD 0 V_ACC2 mm0, mm1, FIR_Cm6, FIR_C3 V_ACC1 mm2, FIR_Cm1 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_C20, FIR_Cm6, FIR_C3, FIR_Cm1 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_C20, FIR_C20, FIR_Cm6, FIR_C3 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_Cm6, FIR_C20, FIR_C20, FIR_Cm6 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_C3, FIR_Cm6, FIR_C20, FIR_C20 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_Cm1, FIR_C3, FIR_Cm6, FIR_C20 V_STORE %1, %2, mm0, 0 V_LOAD 0 V_ACC2 mm1, mm2, FIR_Cm1, FIR_C3 V_ACC1 mm3, FIR_Cm6 V_STORE %1, %2, mm1, 0 V_LOAD 0 V_ACC2l mm2, mm3, FIR_Cm1, FIR_C3 V_STORE %1, %2, mm2, 0 V_LOAD 1 V_ACC1 mm3, FIR_Cm1 V_STORE %1, %2, mm3, 0 ; ouput rows [12..15], from input rows [9.16] pop esi lea edx, [esi+ebp] %if (%1!=3D0) lea esi, [esi+4*ebp] ; for src-mixing %endif movq mm0, mm7 movq mm1, mm7 movq mm2, mm7 movq mm3, mm7 V_LOAD 0 V_ACC1 mm3, FIR_Cm1 V_LOAD 0 V_ACC2l mm2, mm3, FIR_Cm1, FIR_C3 V_LOAD 0 V_ACC2 mm1, mm2, FIR_Cm1, FIR_C3 V_ACC1 mm3, FIR_Cm6 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_Cm1, FIR_C3, FIR_Cm6, FIR_C20 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_C3, FIR_Cm6, FIR_C20, FIR_C20 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_Cm7, FIR_C20, FIR_C20, FIR_Cm6 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_C23, FIR_C19, FIR_Cm6, FIR_C3 V_LOAD 1 V_ACC4 mm0, mm1, mm2, mm3, FIR_C14, FIR_Cm3, FIR_C2, FIR_Cm1 V_STORE %1, %2, mm3, 0 V_STORE %1, %2, mm2, 0 V_STORE %1, %2, mm1, 0 V_STORE %1, %2, mm0, 1 ; ... next 4 columns pop esi pop edi add esi, 4 add edi, 4 sub ecx, 4 jg .Loop %if (%2=3D=3D0) && (%1=3D=3D0) EPILOG_NO_AVRG %else EPILOG_AVRG %endif %endmacro ;////////////////////////////////////////////////////////////////////// %macro V_PASS_8 2 ; %1:src-op (0=3DNONE,1=3DAVRG,2=3DAVRG-UP), %2:dst-op= (NONE/AVRG) %if (%2=3D=3D0) && (%1=3D=3D0) PROLOG_NO_AVRG %else PROLOG_AVRG %endif ; we process one stripe of 4x8 pixel each time ; the size (3rd argument) is meant to be a multiple of 4 ; mm0..mm3 serves as a 4x4 delay line .Loop push edi push esi ; esi is preserved for src-mixing mov edx, esi ; ouput rows [0..3], from input rows [0..8] movq mm0, mm7 movq mm1, mm7 movq mm2, mm7 movq mm3, mm7 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_C14, FIR_Cm3, FIR_C2, FIR_Cm1 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_C23, FIR_C19, FIR_Cm6, FIR_C3 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_Cm7, FIR_C20, FIR_C20, FIR_Cm6 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_C3, FIR_Cm6, FIR_C20, FIR_C20 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_Cm1, FIR_C3, FIR_Cm6, FIR_C20 V_STORE %1, %2, mm0, 0 V_LOAD 0 V_ACC2 mm1, mm2, FIR_Cm1, FIR_C3 V_ACC1 mm3, FIR_Cm6 V_STORE %1, %2, mm1, 0 V_LOAD 0 V_ACC2l mm2, mm3, FIR_Cm1, FIR_C3 V_STORE %1, %2, mm2, 0 V_LOAD 1 V_ACC1 mm3, FIR_Cm1 V_STORE %1, %2, mm3, 0 ; ouput rows [4..7], from input rows [1..9] mov esi, [esp] lea edx, [esi+ebp] %if (%1!=3D0) lea esi, [esi+4*ebp] ; for src-mixing %endif movq mm0, mm7 movq mm1, mm7 movq mm2, mm7 movq mm3, mm7 V_LOAD 0 V_ACC1 mm3, FIR_Cm1 =20 V_LOAD 0 V_ACC2l mm2, mm3, FIR_Cm1, FIR_C3 V_LOAD 0 V_ACC2 mm1, mm2, FIR_Cm1, FIR_C3 V_ACC1 mm3, FIR_Cm6 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_Cm1, FIR_C3, FIR_Cm6, FIR_C20 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_C3, FIR_Cm6, FIR_C20, FIR_C20 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_Cm7, FIR_C20, FIR_C20, FIR_Cm6 V_LOAD 0 V_ACC4 mm0, mm1, mm2, mm3, FIR_C23, FIR_C19, FIR_Cm6, FIR_C3 V_LOAD 1 V_ACC4 mm0, mm1, mm2, mm3, FIR_C14, FIR_Cm3, FIR_C2, FIR_Cm1 V_STORE %1, %2, mm3, 0 V_STORE %1, %2, mm2, 0 V_STORE %1, %2, mm1, 0 V_STORE %1, %2, mm0, 1 ; ... next 4 columns pop esi pop edi add esi, 4 add edi, 4 sub ecx, 4 jg .Loop %if (%2=3D=3D0) && (%1=3D=3D0) EPILOG_NO_AVRG %else EPILOG_AVRG %endif %endmacro ;////////////////////////////////////////////////////////////////////// ;// 16x? copy Functions xvid_V_Pass_16_mmx: V_PASS_16 0, 0 xvid_V_Pass_Avrg_16_mmx: V_PASS_16 1, 0 xvid_V_Pass_Avrg_Up_16_mmx: V_PASS_16 2, 0 ;////////////////////////////////////////////////////////////////////// ;// 8x? copy Functions xvid_V_Pass_8_mmx: V_PASS_8 0, 0 xvid_V_Pass_Avrg_8_mmx: V_PASS_8 1, 0 xvid_V_Pass_Avrg_Up_8_mmx: V_PASS_8 2, 0 ;////////////////////////////////////////////////////////////////////// ;// 16x? avrg Functions xvid_V_Pass_Add_16_mmx: V_PASS_16 0, 1 xvid_V_Pass_Avrg_Add_16_mmx: V_PASS_16 1, 1 xvid_V_Pass_Avrg_Up_Add_16_mmx: V_PASS_16 2, 1 ;////////////////////////////////////////////////////////////////////// ;// 8x? avrg Functions xvid_V_Pass_8_Add_mmx: V_PASS_8 0, 1 xvid_V_Pass_Avrg_8_Add_mmx: V_PASS_8 1, 1 xvid_V_Pass_Avrg_Up_8_Add_mmx: V_PASS_8 2, 1 ;////////////////////////////////////////////////////////////////////// --=-dLq130355Ig4zdyzCliD-- From xvid-devel@xvid.org Tue Jan 21 00:50:14 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Tue, 21 Jan 2003 01:50:14 +0100 Subject: [XviD-devel] [BUG?] intra meaning Message-ID: <20030121005014.GA2468@leloo> --qDbXVdCdHGoSgWSk Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable It seems one of my patches is breaking vfw because i used a free slot of the intra value of pFrame. When i searched a way to report SVOPS i searched through the encoder_encode_bframes to see what intra value was free to use, i noticed the value 3 was free so i mapped it to the SVOP type. It seems that assumption is responsible of vfw breakage, because this value was used in vfw. [01:22] "we defined that with sysKin and suxendrol some months ago" - if i was disconnected already and it didn't reach you [Then some big big lag reported by my irssi program] [01:26] ok, just because _you_ had nothing like that, you break usability for thousands of users? that's not fair [01:26] nvops [01:26] =3Dskipped frames [01:26] fact is [01:26] svop !=3D iframe, bframe, delay frame or not coded frame [01:26] if you look at that listing, all frame types are exclusive [01:27] your svop is an AND If i understand well you defined intras so that (type1 & type2) =3D=3D 0 Then i would like someone aware of this rule to repair my damages which are not so big. Just search at pFrame->intra in encoder_encode_bframes and modify the else statements of such if conditions. if(pEnc->current->coding_type =3D=3D P_VOP) pFrame->intra =3D 0; else pFrame->intra =3D 3; And put the same value in the intra2coding_type() function (encoder.c:659) And please, PLEASE *use* defines instead of unbearable magic constants. Thanks a lot for the attention. Good night :-( NB: next time i would like this kind of "voodoo mistery" explained in the code, else how the hell am i supposed to know something works like this and the other works like that ? Even christoph told me to use 3 for SVOPS because he was as aware as me of this exclusive rule. --=20 Edouard Gomez --qDbXVdCdHGoSgWSk Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+LJlGR5dTYz5sWMcRAtkUAJwIJtl5/FfFN4HO1ogCpve9TCksTQCeOqga eaBHtBss133sgeRCaKIVYZE= =62sp -----END PGP SIGNATURE----- --qDbXVdCdHGoSgWSk-- From xvid-devel@xvid.org Tue Jan 21 08:26:49 2003 From: xvid-devel@xvid.org (Dirk Knop) Date: Tue, 21 Jan 2003 09:26:49 +0100 Subject: [XviD-devel] [BUG?] intra meaning In-Reply-To: <20030121005014.GA2468@leloo> References: <20030121005014.GA2468@leloo> Message-ID: <3E2D0449.6090401@gwdg.de> Hi Folks, Gom, a little childish we are today, aren't we? Edouard Gomez wrote: >It seems one of my patches is breaking vfw because i used a free slot of >the intra value of pFrame. > Ok, for the slow brains once more: we decided to report some frame types - in the stats they look like this now #define NNSTATS_KEYFRAME (1<<31) #define NNSTATS_BFRAME (1<<30) #define NNSTATS_SKIPFRAME (1<<29) #define NNSTATS_PADFRAME (1<<28) #define NNSTATS_DELAYFRAME (1<<27) These frame types are indicated by frmae.intra (pFrame.intra in core): 0: pframe 1: iframe 2: bframe 3: skipframe (NVOP) 4: padframe (dunno what that was anymore %) ) 5: delayframe (those 1byte frames for queing up bframes). Now that you decided to mix these _exklusive_ frame types (a frame can't be a bframe and a skipframe for example) not only with SVOPS (pframes can be svop, bframes too) but even indicate them with what was skip-frame before you totally mess up rate control. Please, find some other variable to indicate wheather SVOP is used or anything, but don't abuse the frame type. (Or at least make it a (1<<31) so we can read that as flag - and warn us the next time before you "think" you're doing something right and commit it to the core). I thought you were coding some 2pass module? If you'd really read the code you were porting then you'd already know that we need those frame-types for propper curve treatment on 2pass. BUT you decide to post about how EVIL I am to dare to tell you that YOU messed up xvid for thousands of users for some days now, just because you decided that we don't deserve a proper frame type for rate control. Thanks for your further log extractions from our private chat, that SURE belongs into public. VERY very annoyed, Koepi From xvid-devel@xvid.org Tue Jan 21 11:04:03 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 21 Jan 2003 12:04:03 +0100 (CET) Subject: [XviD-devel] [BUG?] intra meaning In-Reply-To: <3E2D0449.6090401@gwdg.de> Message-ID: On Tue, 21 Jan 2003, Dirk Knop wrote: > Hi Folks, > > Gom, a little childish we are today, aren't we? > > Edouard Gomez wrote: > > >It seems one of my patches is breaking vfw because i used a free slot of > >the intra value of pFrame. > > Ok, for the slow brains once more: Now who's the childish one? > we decided to report some frame types - in the stats they look like this now > #define NNSTATS_KEYFRAME (1<<31) > #define NNSTATS_BFRAME (1<<30) > #define NNSTATS_SKIPFRAME (1<<29) > #define NNSTATS_PADFRAME (1<<28) > #define NNSTATS_DELAYFRAME (1<<27) Sorry, but those at constants from VfW. The core should not depend on this and it doesn't. Core works very well without VfW, so VfW should get its constants from the core, not vice versa. If VfW needs the codec to return any special values, there should be a comment explaining this, so people without VfW, like GomGom and me don't mess it up. I told GomGom to use S_VOP==3, because that's what the core does internally. Btw, as you already mentioned, it's not possible to have two frametypes at the same time, so using a 32bit bitmask for them does not seem a very logical choice. Anyway, let's choose a different value, and things are resolved. If millions of users are stupid enough to download an "unstable development branch" and overwrite their previous install without testing, then whatever... and maybe the guys who create binaries can test them, too, the next time, before putting them to download? gruel From xvid-devel@xvid.org Tue Jan 21 11:19:13 2003 From: xvid-devel@xvid.org (Dirk Knop) Date: Tue, 21 Jan 2003 12:19:13 +0100 Subject: [XviD-devel] [BUG?] intra meaning In-Reply-To: References: Message-ID: <3E2D2CB1.2080704@gwdg.de> Hi, Christoph Lampert wrote: >Now who's the childish one? > Hehe :) Yes, /me is too. I won't deny that, but I just got upset that a private conversation got logged and dragged into the public without my approval. >Sorry, but those at constants from VfW. The core should not depend on >this and it doesn't. Core works very well without VfW, so VfW should get >its constants from the core, not vice versa. >If VfW needs the codec to return any special values, there should be a >comment explaining this, so people without VfW, like GomGom and me don't >mess it up. I told GomGom to use S_VOP==3, because that's what the core >does internally. > I wasn't aware that internal S_VOP == pFrame.intra=3 got used, so accept my apologies. >Btw, as you already mentioned, it's not possible to have two frametypes >at the same time, so using a 32bit bitmask for them does not seem a very >logical choice. > Ok, so let's extend the API again? >Anyway, let's choose a different value, and things are resolved. >If millions of users are stupid enough to download an "unstable >development branch" and overwrite their previous install without testing, >then whatever... and maybe the guys who create binaries can test them, >too, the next time, before putting them to download? > > Believe me, I tested it, and was aware of the problem. The users demanded "newest" code, so they got it. After all, to use sysKin's input: it's a development branch and supposed to be broken. I think that after a week of this bug-extistence we made that point clear, and since we can fix it, we should start with it. Best regards Koepi From xvid-devel@xvid.org Tue Jan 21 12:01:28 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Tue, 21 Jan 2003 23:01:28 +1100 Subject: [XviD-devel] Re: What are the most important optimization opportunities? In-Reply-To: <20030119193434.GA7099@fefe.de> References: <20030119111219.GA598@leloo> <20030119193434.GA7099@fefe.de> Message-ID: <20030121225900.920D.SUXEN_DROL@hotmail.com> On Sun, 19 Jan 2003 20:34:34 +0100 Felix von Leitner wrote: > Thus spake Edouard Gomez (ed.gomez@free.fr): > > > > Attached is a small trivial diff that I noticed. The #if 0 part in the > > > > end is to make the vim editor use the proper tab stops. I would prefer > > > > if xvid used standard 8-width tab stops, though, but that's not my > > > > decision to make. > > We decided to use 4 for tabs because there are some code pathes that are > > too much indented with 8 spaces tabs. > > I'm not saying you should simply switch to 8 spaces. Obviously, it > would look really broken then, especially regarding the ascii art > tables. > the simple solution: replace all tabbed-indents with spaced-indents. -- pete; life is like a box of ammo From xvid-devel@xvid.org Tue Jan 21 12:07:23 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Tue, 21 Jan 2003 23:07:23 +1100 Subject: [XviD-devel] Re: Automatic benchmark / compile In-Reply-To: References: <20030119030817.GA6121@fefe.de> Message-ID: <20030121230227.9210.SUXEN_DROL@hotmail.com> On Sun, 19 Jan 2003 11:37:50 +0100 (CET) Christoph Lampert wrote: > > > * Is there a similar method for Windows? > > > > Who cares? ;) > > no further comment. windows users have access to sh&friends through cygwin or msys(mingw). now regardint the script, how is it gonna work? will u have a pool of options (-march=XX, -Oxx, -fXXX) and simply try every combination? -- pete; life is like a box of ammo From xvid-devel@xvid.org Tue Jan 21 12:09:40 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 21 Jan 2003 13:09:40 +0100 (CET) Subject: [XviD-devel] [BUG?] intra meaning In-Reply-To: <3E2D2CB1.2080704@gwdg.de> Message-ID: On Tue, 21 Jan 2003, Dirk Knop wrote: > > I wasn't aware that internal S_VOP == pFrame.intra=3 got used, so accept > my apologies. Nah, internally S_VOP==3, not pFrame.intra==3, because that's only used as a return value (I hope), and before GomGom's changes there was no specific return value for S-VOPs. gruel From xvid-devel@xvid.org Tue Jan 21 12:23:34 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 21 Jan 2003 13:23:34 +0100 (CET) Subject: [XviD-devel] What are the most important optimization opportunities? In-Reply-To: <20030119012251.GA5871@fefe.de> Message-ID: On Sun, 19 Jan 2003, Felix von Leitner wrote: > I'm interested in spending time helping optimize the xvid sources. > I have next to no understanding of how MPEG 4 works, but I am currently > trying to learn MMX, SSE and 3dnow, so I would be willing to convert a > few functions if they lend themselves to vectorization. Two things come to mind: a) Almost all C-functions for which SIMD-equivaltenz exist are heavily unoptimized, e.g. transferX-X-etc. Those would certainly need speedup, e.g. loop unrolling, prefetch, etc. The trick could be, that the MMX/SSE version _are_ very good (some of them even are _extremely_ good), and it's not only the MMX/SSE but also memory management etc, so it might be worth studying the MMX-stuff to see what to do in C-parts. Other functions, like image_input might be must faster when caching of the source is avoided (streaming data transfer). There are also parts where we call "memset(&p,0x00,size)" for arrays of fixed size. This might be must more elegant to do by an unrolled MMX-XOR macro (or am i talking rubbish here?) b) Another thing is _rounding_ in general. Everything that is connected to motion (MotionEst, MotionComp) has to do rounding, and the standard describes exactly which rounding has to be used: Round to -infinity, round to 0, round away from 0, round to +infinity Some of these are simple and fast (e.g. >>1 rounds to -infinity), some are simple and slow (e.g. /2 rounds to 0), but the other two are more difficult. Maybe you can come up with faster versions than we already have, e.g. make them CPU-specific (in portab.h) because jumps and division might get different penalties on different CPUs. gruel From xvid-devel@xvid.org Tue Jan 21 13:03:41 2003 From: xvid-devel@xvid.org (josse) Date: Tue, 21 Jan 2003 14:03:41 +0100 Subject: [XviD-devel] function of the "DECLARE_ALIGNED_MATRIX(name,sizex,sizey,type,alignment)" Message-ID: <3E2D452D.8070706@epost.de> Hi, What function have the DECLARE_ALIGNED_MATRIX(name,sizex,sizey,type,alignment) Macro in the porttab.h File I implement the code to Analog Devices DSP and i dont no if i need the macro of this platform. Have anyone a idea Thanks Josse From xvid-devel@xvid.org Tue Jan 21 13:29:57 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Wed, 22 Jan 2003 00:29:57 +1100 Subject: [XviD-devel] function of the "DECLARE_ALIGNED_MATRIX(name,sizex,sizey,type,alignment)" In-Reply-To: <3E2D452D.8070706@epost.de> References: <3E2D452D.8070706@epost.de> Message-ID: <20030122001902.E4CD.SUXEN_DROL@hotmail.com> On Tue, 21 Jan 2003 14:03:41 +0100 josse wrote: > Hi, > > What function have the > DECLARE_ALIGNED_MATRIX(name,sizex,sizey,type,alignment) > Macro in the porttab.h File > > I implement the code to Analog Devices DSP and i dont no if i need the > macro of this platform. > > Have anyone a idea on many platforms there is a significant memory access penalty for unaligned data. the purpose of the macro, as the name suggests, is to DECLARE an ALIGNED MATRIX (array). how alignment is performed is dependant upon the compiler. what compiler are you using? if you wish to ignore alignment, try the following: #define DECLARE_ALIGNED_MATRIX(name,sizex,sizey,type,alignment) \ type name[(sizex)*(sizey)] -- pete; life is like a box of ammo From xvid-devel@xvid.org Tue Jan 21 13:34:49 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Wed, 22 Jan 2003 00:34:49 +1100 Subject: [XviD-devel] Re: xvid_fdct_sse + qpel ASM In-Reply-To: <1043075876.1466.14.camel@latitude344> References: <1043065173.1467.9.camel@latitude344> <1043075876.1466.14.camel@latitude344> Message-ID: <20030122001218.E4CA.SUXEN_DROL@hotmail.com> On 20 Jan 2003 16:17:56 +0100 skal wrote: > > Re, > > Ok, ok, i was curious, so I've quickly hacked > the MMX 'punpck' soup mentioned in my previous > mail. Here's what's to add in fdct_sse.asm > for the MMX fdct. It's 10% slower than SSE, > (but still 30% faster than current XVID one, > it seems;) > > > bye! thanks skal. you really know your stuff. its been fun having you about! ive committed your new fdct to cvs (along with michaeln's c/nasm simple_idct). the code is not enabled by default, as ive only performed mmx testing. it works well. accuracy is almost identical to the current ap-922 derived fdct. to enable skal's fdct / simple idct, edit xvid.c:xvid_init(), and add fdct = xvid_fdct_mmx; or fdct = fdct_fdct_xmm; idct = simple_idct_c; or idct = simple_idct_mmx2; btw. do not use simple_idct_mmx; it expects permutated data. cya! -- pete; From xvid-devel@xvid.org Tue Jan 21 13:44:03 2003 From: xvid-devel@xvid.org (josse) Date: Tue, 21 Jan 2003 14:44:03 +0100 Subject: [XviD-devel] function of the "DECLARE_ALIGNED_MATRIX(name,sizex,sizey,type,alignment)" In-Reply-To: <20030122001902.E4CD.SUXEN_DROL@hotmail.com> References: <3E2D452D.8070706@epost.de> <20030122001902.E4CD.SUXEN_DROL@hotmail.com> Message-ID: <3E2D4EA3.9010201@epost.de> Hi, i test it and it works better (not perfect) as befor. Thanks The Compiler is the VisualDSP Ver. 2.2.2.4 from Analog Device. I dont now now alignment the compiler is used. This is the Next Problem. A other question i have. is the Sourecode 100% ANSI-C i think not. The MS VS6.0 Compiler have 0 Errors after compiling but the Analog Device Compiler have a lot of warnings and errors after compiling. suxen_drol schrieb: >On Tue, 21 Jan 2003 14:03:41 +0100 josse wrote: > > > >>Hi, >> >>What function have the >> DECLARE_ALIGNED_MATRIX(name,sizex,sizey,type,alignment) >>Macro in the porttab.h File >> >>I implement the code to Analog Devices DSP and i dont no if i need the >>macro of this platform. >> >>Have anyone a idea >> >> > >on many platforms there is a significant memory access >penalty for unaligned data. the purpose of the macro, as the name >suggests, is to DECLARE an ALIGNED MATRIX (array). > >how alignment is performed is dependant upon the compiler. what compiler >are you using? > > >if you wish to ignore alignment, try the following: > >#define DECLARE_ALIGNED_MATRIX(name,sizex,sizey,type,alignment) \ > type name[(sizex)*(sizey)] > >-- pete; life is like a box of ammo > > >_______________________________________________ >XviD-devel mailing list >XviD-devel@xvid.org >http://list.xvid.org/mailman/listinfo/xvid-devel > > > From xvid-devel@xvid.org Tue Jan 21 14:11:02 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 21 Jan 2003 15:11:02 +0100 (CET) Subject: [XviD-devel] Re: xvid_fdct_sse + qpel ASM In-Reply-To: <1043075876.1466.14.camel@latitude344> Message-ID: On 20 Jan 2003, skal wrote: > > Re, > > Ok, ok, i was curious, Hey Skal, welcome back ;-p gruel > so I've quickly hacked > the MMX 'punpck' soup mentioned in my previous > mail. Here's what's to add in fdct_sse.asm > for the MMX fdct. It's 10% slower than SSE, > (but still 30% faster than current XVID one, > it seems;) > > > bye! > > Skal > > > From xvid-devel@xvid.org Tue Jan 21 14:12:03 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 21 Jan 2003 15:12:03 +0100 (CET) Subject: [XviD-devel] function of the "DECLARE_ALIGNED_MATRIX(name,sizex,sizey,type,alignment)" In-Reply-To: <3E2D4EA3.9010201@epost.de> Message-ID: On Tue, 21 Jan 2003, josse wrote: > Hi, > > i test it and it works better (not perfect) as befor. Thanks > > The Compiler is the VisualDSP Ver. 2.2.2.4 from Analog Device. > I dont now now alignment the compiler is used. This is the Next Problem. > > A other question i have. > is the Sourecode 100% ANSI-C i think not. The MS VS6.0 Compiler have 0 > Errors after compiling > but the Analog Device Compiler have a lot of warnings and errors after > compiling. Can you send a logfile? Many of the warning will be harmless, but maybe there's something hidden somewhere. I wanted to do the same for SGI Compiler, but of course I forgot... gruel From xvid-devel@xvid.org Tue Jan 21 14:18:14 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 21 Jan 2003 15:18:14 +0100 (CET) Subject: [XviD-devel] Re: Automatic benchmark / compile In-Reply-To: <20030121230227.9210.SUXEN_DROL@hotmail.com> Message-ID: On Tue, 21 Jan 2003, suxen_drol wrote: > > On Sun, 19 Jan 2003 11:37:50 +0100 (CET) Christoph Lampert wrote: > > > > > * Is there a similar method for Windows? > > > > > > Who cares? ;) > > > > no further comment. > > windows users have access to sh&friends through cygwin or msys(mingw). > > now regardint the script, how is it gonna work? > will u have a pool of options (-march=XX, -Oxx, -fXXX) and simply try > every combination? Yes. I though of two groups of flags. Those that will be combined into every combination (like -march,-O) and those that will be done "greedy" (if it gives improvement for one setting, it should for every other -O as well), e.g. aligment. E.g. I found that xvid_gmc.c was 15-20% faster on PII/450 with -O2 -funroll-loops -fschedule-insns than e.g. with -O2 alone, also faster than with -O3 and any combination of flags and much faster than with -Os. Other "stronger" flags of these args performed worse, like "-funroll-all-loops" and -fschedule-insns2" This I wouldn't have guessed, so it was good to check once. Also, on Mobile PIII 1GHz it was better to use -mcpu=athlon than -mcpu=pentium3 with gcc 3.2 ... gruel From xvid-devel@xvid.org Tue Jan 21 14:19:54 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 21 Jan 2003 15:19:54 +0100 (CET) Subject: [XviD-devel] Re: Automatic benchmark / compile In-Reply-To: <20030121230227.9210.SUXEN_DROL@hotmail.com> Message-ID: On Tue, 21 Jan 2003, suxen_drol wrote: > > On Sun, 19 Jan 2003 11:37:50 +0100 (CET) Christoph Lampert wrote: > > > > > * Is there a similar method for Windows? > > > > > > Who cares? ;) > > > > no further comment. > > windows users have access to sh&friends through cygwin or msys(mingw). But the results won't help them, because the cygwin flags can't be used for MS VC. Or is there a command line version of the MS compiler? (Sorry, I really know nothing about developing with MS) gruel From xvid-devel@xvid.org Tue Jan 21 14:28:21 2003 From: xvid-devel@xvid.org (josse) Date: Tue, 21 Jan 2003 15:28:21 +0100 Subject: [XviD-devel] function of the "DECLARE_ALIGNED_MATRIX(name,sizex,sizey,type,alignment)" In-Reply-To: References: Message-ID: <3E2D5905.6020201@epost.de> Hi , at the last compilation no waring is coming but 3 errors. The sourcecode is the original xvid-Code. ..\Analog Devices\VisualDSP\cc21k" -flags-compiler --diag_warning,implicit_func_decl -g -D _DSP -21065L -c -o ..\DSP\libXvidCore\debug\quant_mpeg4.doj" ..\\DSP\libXvidCore\quant\quant_mpeg4.c" ..\DSP\libXvidCore\quant\quant_mpeg4.c", line 111: error: declaration is incompatible with "void quant4_intra_c(dm int16_t *dm, const dm int16_t *dm, const dm uint32_t, const dm uint32_t)" (declared at line 77 of "E:\wadle\Arbeits_Projekte\DSP\libXvidCore\quant\quant_mpeg4.h") const uint32_t dcscalar) ^ ..\DSP\libXvidCore\quant\quant_mpeg4.c", line 150: error: declaration is incompatible with "void dequant4_intra_c(dm int16_t *dm, const dm int16_t *dm, const dm uint32_t, const dm uint32_t)" (declared at line 80 of "E:\wadle\Arbeits_Projekte\DSP\libXvidCore\quant\quant_mpeg4.h") const uint32_t dcscalar) ^ ..\DSP\libXvidCore\quant\quant_mpeg4.c", line 195: error: declaration is incompatible with "uint32_t quant4_inter_c(dm int16_t Tool failed with exit/exception code: 1. Build was unsuccessful. Christoph Lampert schrieb: >Can you send a logfile? Many of the warning will be harmless, but maybe >there's something hidden somewhere. I wanted to do the same for SGI >Compiler, but of course I forgot... > > >gruel > >_______________________________________________ >XviD-devel mailing list >XviD-devel@xvid.org >http://list.xvid.org/mailman/listinfo/xvid-devel > > > From xvid-devel@xvid.org Tue Jan 21 14:34:07 2003 From: xvid-devel@xvid.org (josse) Date: Tue, 21 Jan 2003 15:34:07 +0100 Subject: [XviD-devel] general question about the platform Message-ID: <3E2D5A5F.8000708@epost.de> Hi, Is it right, that when i compile the sourcecode for a other platform as the supported (x86, PPC ...) in the XviD-Project i must rewrite all the *.asm Files for my special platform (for me Analog Device DSP 21065l 32-bit) From xvid-devel@xvid.org Tue Jan 21 15:23:50 2003 From: xvid-devel@xvid.org (Michael Militzer) Date: Tue, 21 Jan 2003 16:23:50 +0100 Subject: [XviD-devel] Error Resilience References: <009901c2bf43$7d124aa0$1702a8c0@michipc> <20030119104922.A5C6.SUXEN_DROL@hotmail.com> Message-ID: <004101c2c163$691a75a0$cb0307d5@mmpc> hi, > On Sat, 18 Jan 2003 23:46:49 +0100 "Michael Militzer" wrote: > > hello, > > > I'd also like to mention that the vop quantizer value (in vop header) can > > have a precision of up to 9 bits. Our dequantization routines can only > > handle 5 bits (or a max quantizer of 31)... > > iam under the impression the "not_8_bit" flag (thus quant_precision and > bits_per_pixel) is only permitted in the N-bit profile. yep, you're right bye, Michael From xvid-devel@xvid.org Tue Jan 21 15:39:47 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 21 Jan 2003 16:39:47 +0100 (CET) Subject: [XviD-devel] general question about the platform In-Reply-To: <3E2D5A5F.8000708@epost.de> Message-ID: On Tue, 21 Jan 2003, josse wrote: > Hi, > > Is it right, that when i compile the sourcecode for a other platform as > the supported (x86, PPC ...) in the XviD-Project i must rewrite all the > *.asm Files for my special platform (for me Analog Device DSP 21065l > 32-bit) You _can_ compile for any plattform that supports ANSI C (in theory it should work, maybe with a few minor modifications). The ASM-files are only for speedup, so if you want realtime encoding/decoding, you might have to add some .asm files for you plattform. However, you don't have to do this for every file, and the most often used routines are also the most basic ones, with algorithms often available from the CPU manufactor, like SAD = sum of absolute errors = distance between two vectors in L^1-norm and DCT/iDCT = 2d (inverse) discrete cosine function acting on 8x8 blocks. gruel From xvid-devel@xvid.org Tue Jan 21 15:46:01 2003 From: xvid-devel@xvid.org (josse) Date: Tue, 21 Jan 2003 16:46:01 +0100 Subject: [XviD-devel] general question about the platform In-Reply-To: References: Message-ID: <3E2D6B39.5030505@epost.de> > > >You _can_ compile for any plattform that supports ANSI C (in theory it >should work, maybe with a few minor modifications). The ASM-files are only >for speedup, so if you want realtime encoding/decoding, you might have to >add some .asm files for you plattform. However, you don't have to do this >for every file, and the most often used routines are also the most basic >ones, with algorithms often available from the CPU manufactor, like > >SAD = sum of absolute errors = distance between two vectors in L^1-norm >and >DCT/iDCT = 2d (inverse) discrete cosine function acting on 8x8 blocks. > >gruel > > Thank's for the fast answer. I will taste it for my platform. cu josse From xvid-devel@xvid.org Tue Jan 21 16:04:27 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 21 Jan 2003 17:04:27 +0100 (CET) Subject: [XviD-devel] general question about the platform In-Reply-To: <3E2D6B39.5030505@epost.de> Message-ID: gruel wrote: > >SAD = sum of absolute errors = distance between two vectors in L^1-norm > >and > >DCT/iDCT = 2d (inverse) discrete cosine function acting on 8x8 blocks. ^^^^^^^^^^^ Should have been "transformation", sorry... gruel From xvid-devel@xvid.org Tue Jan 21 16:52:12 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 21 Jan 2003 17:52:12 +0100 (CET) Subject: [XviD-devel] Quality optimization Message-ID: Hi, I had a look at quite a few FFmpeg tests lately, and from what I saw there, there is quite a lot of space left for optimizing quality within MPEG-4 bounds. Please comment on these: a) Mode decision. The FFMPEG "vhq" mode decision (checking by brute force which coding type needs the fewest bits) often improves the PSNR by 0.2-0.5, and it (almost) never does any harm (except for lower speed, of course). Proposal #1: Implement brute force mode decision into XVID ! (The routines are all there, maybe they have to be slightly modified to be "reentrant") ............................ b) Using SAD of Hadamard-transformed blocks instead of ordinary SAD for _subpixel_ resolution refinement (not for ordinary search!) can also increase PSNR significantly (though not for anime). Proposal #2: Implement SAD_hadamard which does the transform and SAD. (The routines are almost all there (or used to be), the result just might have to be scaled to fit into current SAD-checks) ............................ c) Rate-Distorsion optimized Quantization Sometimes it's good not to just quantize the values and save the result, but modify results a little to safe bits while at the same time no do much damage to the image. ffmpeg has "Trellis Quantization" for this, which is really slow, but often gives a boost to PSNR. (Note that from the computational point this is by far less work than "optimal adaptive quantization") Proposal #3: Implement "intelligent" quantization, e.g. Trellis. (or port it from Ffmpeg ;-) ............................... d) Set B-frames only when helpful A clip can benefit very much from Bframes, or the results can be horrible. In one of the VQEG test clips, I had a PSNR drop from 46.05 to 41.40 (-4.95db) just because of activating 1 bframe! Average(!) quantizers jumped from 2.26 to 5.22. But there is also a clip where PSNR was increased from 34.3 to 35.5 (+1.2dB). XVID already has a dynamic test for this, but it's a very simple check... Proposal #4: Implement a better criterion for dynamic bframes. (first we have to find one, but if necessary, just use brute force) ---------------------------------- extra, because untested: * I'm sure that GMC can do better than our current version, in particular GME and mode decision. * For B-frames, we buffer a number of frames internally before encoding them. They could also be used for encoding decisions (single pass ratecontrol, skipMB-check, frame-skip-check), no only for B-framing them. Since the encoding software supports because of bframes anyway, we could also prebuffer frames when _not_ using bframes. --------------------------------- gruel From xvid-devel@xvid.org Tue Jan 21 17:18:19 2003 From: xvid-devel@xvid.org (skal) Date: 21 Jan 2003 18:18:19 +0100 Subject: [XviD-devel] Re: xvid_fdct_sse + qpel ASM In-Reply-To: References: Message-ID: <1043169499.1435.23.camel@latitude344> On Tue, 2003-01-21 at 15:11, Christoph Lampert wrote: > On 20 Jan 2003, skal wrote: > > > > > Re, > > > > Ok, ok, i was curious, > > Hey Skal, welcome back ;-p bwehehe :) Skal From xvid-devel@xvid.org Tue Jan 21 18:50:57 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Tue, 21 Jan 2003 19:50:57 +0100 Subject: [XviD-devel] [BUG?] intra meaning In-Reply-To: <3E2D0449.6090401@gwdg.de> References: <20030121005014.GA2468@leloo> <3E2D0449.6090401@gwdg.de> Message-ID: <20030121185057.GA787@leloo> --OXfL5xGRrasGEqWY Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Dirk Knop (dknop@gwdg.de) wrote: > Gom, a little childish we are today, aren't we? The log was not intended to upset you, it was supposed to show your point of view with your explaination to me. Sorry if that annoys you, i thought it was logical to describe the "voodoo" that messed up the code. I'm not a flame starter, you should know that.=20 > we decided to report some frame types - in the stats they look like this = now > #define NNSTATS_KEYFRAME (1<<31) > #define NNSTATS_BFRAME (1<<30) > #define NNSTATS_SKIPFRAME (1<<29) > #define NNSTATS_PADFRAME (1<<28) > #define NNSTATS_DELAYFRAME (1<<27) Ok why not ? this is not core business. > These frame types are indicated by frmae.intra (pFrame.intra in core): >=20 > 0: pframe > 1: iframe > 2: bframe > 3: skipframe (NVOP) > 4: padframe (dunno what that was anymore %) ) > 5: delayframe (those 1byte frames for queing up bframes). > [...] Then now the proposed solutions: 1) Why don't you modify vfw so it looks at intra doing =3D=3D instead of some & ? Or 2) Let's find a real free slot without any signification in vfw.=20 (then just give me the value) Tell me which one is good for you and this bug is closed. Period. --=20 Edouard Gomez --OXfL5xGRrasGEqWY Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+LZaRR5dTYz5sWMcRAt+cAJ0cvY+ipUrB7u8QVTDSTzhSWlqhCwCgjLI3 UP0d63Jw6a/rs5Bsla7flWM= =bqO6 -----END PGP SIGNATURE----- --OXfL5xGRrasGEqWY-- From xvid-devel@xvid.org Tue Jan 21 18:56:59 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Tue, 21 Jan 2003 19:56:59 +0100 Subject: [XviD-devel] Re: Automatic benchmark / compile In-Reply-To: References: <20030121230227.9210.SUXEN_DROL@hotmail.com> Message-ID: <20030121185659.GB787@leloo> --E39vaYmALEf/7YXx Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Christoph Lampert (chl@math.uni-bonn.de) wrote: > But the results won't help them, because the cygwin flags can't be used > for MS VC. Or is there a command line version of the MS compiler? (Sorry, > I really know nothing about developing with MS) There is cl.exe in one the PATH defined in vcvars32.bat shipped with at least VisualC++ 5/6 The problem is they don't use the same options at all, and cl.exe has far less options than gcc concerning code generation and CPU specific optimization. --=20 Edouard Gomez --E39vaYmALEf/7YXx Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+LZf7R5dTYz5sWMcRAtgOAKDxmifUQSOpIoKgxzutD5uuuGRciACg62sV BPYGAI3BMHHeWx9Ec4G3fC8= =1boa -----END PGP SIGNATURE----- --E39vaYmALEf/7YXx-- From xvid-devel@xvid.org Tue Jan 21 17:18:00 2003 From: xvid-devel@xvid.org (Felix von Leitner) Date: Tue, 21 Jan 2003 18:18:00 +0100 Subject: [XviD-devel] Re: Encoding TV episodes In-Reply-To: <20030119032237.GB6121@fefe.de> References: <20030119032237.GB6121@fefe.de> Message-ID: <20030121171800.GA18365@fefe.de> Maybe I should have put this differently. I am encoding material with bitrate 800 but only get output with bitrate 500 which has a lot of artifacts. What can be done about this? Felix From xvid-devel@xvid.org Tue Jan 21 19:06:12 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 21 Jan 2003 20:06:12 +0100 (CET) Subject: [XviD-devel] Re: Automatic benchmark / compile In-Reply-To: <20030121185659.GB787@leloo> Message-ID: On Tue, 21 Jan 2003, Edouard Gomez wrote: > Christoph Lampert (chl@math.uni-bonn.de) wrote: > > But the results won't help them, because the cygwin flags can't be used > > for MS VC. Or is there a command line version of the MS compiler? (Sorry, > > I really know nothing about developing with MS) > > There is cl.exe in one the PATH defined in vcvars32.bat shipped with at > least VisualC++ 5/6 > > The problem is they don't use the same options at all, and cl.exe has > far less options than gcc concerning code generation and CPU specific > optimization. Sure, but that's not the problem, because one can define a set of flags for every compiler. It's just important if flags that are good for cl.exe can be used for a MS VC project-file as well and have the same effect there (or can easily be translated). gruel From xvid-devel@xvid.org Tue Jan 21 22:10:10 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Tue, 21 Jan 2003 23:10:10 +0100 Subject: [XviD-devel] [BUG solved] waiting for real fix In-Reply-To: <20030121005014.GA2468@leloo> References: <20030121005014.GA2468@leloo> Message-ID: <20030121221010.GF787@leloo> --O98KdSgI27dgYlM5 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable I reverted my changes so intra=3D=3D3 has now old meaning, but VFW devs should looks closer at the code, this value is never set in xvidcore ! So i wonder why my change did so many damage to VFW if this value is not even used. Please consider fixing vfw or xvidcore the right way, i'm completely lost in the assumptions done on the intra value. Thanks. --=20 Edouard Gomez --O98KdSgI27dgYlM5 Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+LcVCR5dTYz5sWMcRAmlGAKD0rIrwKvJpIz4P19emXssU7Uvi8wCg9NAp MB/j1BpkLSqmuFXgCoC5364= =Z31L -----END PGP SIGNATURE----- --O98KdSgI27dgYlM5-- From xvid-devel@xvid.org Tue Jan 21 23:50:07 2003 From: xvid-devel@xvid.org (Michael Militzer) Date: Wed, 22 Jan 2003 00:50:07 +0100 Subject: [XviD-devel] Quality optimization References: Message-ID: <061c01c2c1a8$2a66c580$cb0307d5@mmpc> Hi, > I had a look at quite a few FFmpeg tests lately, and from what I saw > there, there is quite a lot of space left for optimizing quality within > MPEG-4 bounds. > > Please comment on these: ok ;) > a) Mode decision. The FFMPEG "vhq" mode decision (checking by brute force > which coding type needs the fewest bits) often improves the PSNR by > 0.2-0.5, and it (almost) never does any harm (except for lower speed, of > course). > > Proposal #1: Implement brute force mode decision into XVID ! > (The routines are all there, maybe they have to be slightly modified to be > "reentrant") yes, vhq mode especially seems to help with 4MV mode. INTER4V mode does not give much benefit currently, maybe we can improve this > b) Using SAD of Hadamard-transformed blocks instead of ordinary > SAD for _subpixel_ resolution refinement (not for ordinary search!) > can also increase PSNR significantly (though not for anime). > > Proposal #2: Implement SAD_hadamard which does the transform and SAD. > (The routines are almost all there (or used to be), the result just > might have to be scaled to fit into current SAD-checks) why hadamard and not DCT? (because it's faster?) - shouldn't DCT give better results (at least in theory)? And why SAD and not SSE? SSE should more evenly distribute the error over a whole block which should make it easier to code. > c) Rate-Distorsion optimized Quantization > > Sometimes it's good not to just quantize the values and save the result, > but modify results a little to safe bits while at the same time no do much > damage to the image. ffmpeg has "Trellis Quantization" for this, which is > really slow, but often gives a boost to PSNR. (Note that from the > computational point this is by far less work than "optimal adaptive > quantization") > > Proposal #3: Implement "intelligent" quantization, e.g. Trellis. > (or port it from Ffmpeg ;-) yes, but it's quite slow. Also some additional optimal adaptive quantization would be nice... > d) Set B-frames only when helpful > > A clip can benefit very much from Bframes, or the results can be horrible. > In one of the VQEG test clips, I had a PSNR drop from 46.05 to 41.40 > (-4.95db) just because of activating 1 bframe! Average(!) quantizers > jumped from 2.26 to 5.22. But there is also a clip where PSNR was > increased from 34.3 to 35.5 (+1.2dB). XVID already has a dynamic test for > this, but it's a very simple check... > > Proposal #4: Implement a better criterion for dynamic bframes. > (first we have to find one, but if necessary, just use brute force) I'm not sure if the benefits of b-frames can be measured by simple PSNR comparisons: Of course the PSNR of bframes is generally lower than if we had coded a pframe instead (simply because bframe quant is higher), however bframes' lower quality don't influence the remaining picture sequence (because bframes are not used as reference). If we now assume normal viewing conditions (a video played back at ~25 fps), the quality decrease when a bframe is presented for only a short time (1/25s) might not be noticed at all. So for a fixed quant encoding with maybe 5 - 10 bframes/sec, the perceived video quality might stay the same while we have a noticable decrease in file size at the same time. Of course there might be video clips, where b-frames are really doing harm (and not only PSNR-wise). So for example if a PBP sequence (viewing order) is not significantly smaller than a corresponding PPP sequence, bframes should of course not be used (well, I guess I don't tell you anything new here ;-)) bye, Michael From xvid-devel@xvid.org Wed Jan 22 05:10:12 2003 From: xvid-devel@xvid.org (Marco Al) Date: Wed, 22 Jan 2003 06:10:12 +0100 Subject: [XviD-devel] Quality optimization References: Message-ID: <01b801c2c1d4$8c2cf7e0$bca45982@student.utwente.nl> Christoph Lampert wrote: > b) Using SAD of Hadamard-transformed blocks instead of ordinary > SAD for _subpixel_ resolution refinement (not for ordinary search!) > can also increase PSNR significantly (though not for anime). Do we have some timings for a 8 bit Hadamard transform yet? Since you are shooting for quality how about simply using the DCT and constructing a special LUT to do fast exact #bits calculations? (Without needing the actual codewords or work on the bitstream it can be done a lot faster.) Using simply SAD in the transform domain still fails to take into account the damage high frequency components do to bitrate, so it would still be far from optimal. Also why only allow it for the subpel search? Why not allow a full pel refinement step using it too? A low complexity alternative to SAD_hadamard which I wouldnt be surprised to see outperform it is the summed SAD in horizontally and vertically Sobel filtered images. > Proposal #3: Implement "intelligent" quantization, e.g. Trellis. > (or port it from Ffmpeg ;-) I think it could be improved, I think you could roll the greedy algorithm from the following paper into the R-D optimization procedure. http://www-it.et.tudelft.nl/~inald/pubs/Image%20Quality/Adaptive%20spatial%20noi se%20shaping%20for%20DCT%20based%20image%20compression%201996.pdf It is a precursor to the more general method of this paper : http://www-it.et.tudelft.nl/~inald/pubs/Image%20Quality/bnl96.pdf Of which only the idea of performing the optimization of coefficients in the order of their perceptual significance is really relevant to my proposed scheme though. This can be easily integrated with luminance masking ... and more importantly can be used to combat blocking. You can minimize error in given pixels by giving them a greater perceptual weight. So not only could you use luminance/texture/motion masking (albeit only in the spatial domain, I think they will work better there than in the DCT domain anyway though) but you could also use simply assign pixels near the border greater weights, this effectively migrates quantization error to the inside the block. A natural extension of this is quality based coding, since the method gives you a quality measure for free (perceptually weighted spatial MSE) you could use this for the dquant decision (which also has a lot of room for optimization BTW, the number of bits needed to encode dquant really needs to be taken into account ... and the only way to do that is to use an optimization not unlike the trellis based search for coefficients, if you simply had a minimum quality target for each MB it would be a lot easier than an R-D optimal search using global distortion though.) > Proposal #4: Implement a better criterion for dynamic bframes. > (first we have to find one, but if necessary, just use brute force) With fixed groups of b-frames brute forcing is possible, but with variable number of b-frames in a group it seems utterly intractable. How about if for a sequence of frames you perform ME for some temporal subsamplings of the sequence too? (So ME for every 2 frames in the sequence and for every 4 frames etc, up to the point where you only have 2 frames in a sequence of max_bframes size.) This will give you a much better idea of the number of bits needed to encode the sequence with a given number of b-frames (especially if ME gives something better than SAD as a predictor for the number of texture bits, this ties in with proposal #1). Marco From xvid-devel@xvid.org Wed Jan 22 05:22:33 2003 From: xvid-devel@xvid.org (Marco Al) Date: Wed, 22 Jan 2003 06:22:33 +0100 Subject: [XviD-devel] Quality optimization References: <061c01c2c1a8$2a66c580$cb0307d5@mmpc> Message-ID: <01cd01c2c1d6$4456da60$bca45982@student.utwente.nl> Michael Militzer wrote: > yes, vhq mode especially seems to help with 4MV mode. INTER4V mode does not > give much benefit currently, maybe we can improve this If you go this way I think a fine-to-coarse search would give better results than the present coarse-to-fine search. > why hadamard and not DCT? (because it's faster?) - shouldn't DCT give better > results (at least in theory)? And why SAD and not SSE? SSE should more > evenly distribute the error over a whole block which should make it easier > to code. Neither SAD nor SSE evenly distribute the error across the block if you use it in the transform domain AFAICS (although admittedly in the spatial domain SSE should do that better than SAD, as you can see in Dirk Farin's paper "A New Similarity Measure for Sub-Pixel Accurate Motion Analysis in Object-Based Coding" it doesnt do it all that well either though). Marco From xvid-devel@xvid.org Wed Jan 22 07:40:36 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Wed, 22 Jan 2003 18:40:36 +1100 Subject: [XviD-devel] general question about the platform In-Reply-To: <3E2D5A5F.8000708@epost.de> References: <3E2D5A5F.8000708@epost.de> Message-ID: <20030122182818.21B3.SUXEN_DROL@hotmail.com> On Tue, 21 Jan 2003 15:34:07 +0100 josse wrote: > Hi, > > Is it right, that when i compile the sourcecode for a other platform as > the supported (x86, PPC ...) in the XviD-Project i must rewrite all the > *.asm Files for my special platform (for me Analog Device DSP 21065l > 32-bit) the .asm files contain platform-specific optimized assembler versions of existing c functions. to experiment with xvid (ie. get it working) you do not need to rewrite these. you only need to rewrite them if you want increased performance. and, as gruel mentioned, most dsp manufactures provide a toolkit/library of dsp functions. btw, we get a lot of enquires about compiling/using xvid on dsp's. it'd be nice if these people would post their makefile/portab.h modifcations such to benefit everybody? -- pete; life is like a box of ammo From xvid-devel@xvid.org Wed Jan 22 10:42:05 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Wed, 22 Jan 2003 11:42:05 +0100 (CET) Subject: [XviD-devel] Quality optimization In-Reply-To: <061c01c2c1a8$2a66c580$cb0307d5@mmpc> Message-ID: On Wed, 22 Jan 2003, Michael Militzer wrote: > > Please comment on these: > > ok ;) > > > a) Mode decision. The FFMPEG "vhq" mode decision (checking by brute force > > which coding type needs the fewest bits) often improves the PSNR by > > 0.2-0.5, and it (almost) never does any harm (except for lower speed, of > > course). > > > > Proposal #1: Implement brute force mode decision into XVID ! > > (The routines are all there, maybe they have to be slightly modified to be > > "reentrant") > > yes, vhq mode especially seems to help with 4MV mode. INTER4V mode does not > give much benefit currently, maybe we can improve this After today's computer science class, I would like to make this Proposal into 1a) Implement brute force ... 1b) Collect lots of data of sad/dev/bits and mail it to me 1c) Scan through data to find some decision regions and some "regions of doubt". 1c) Implement a "stable" decision: If the decision is clear, use the fast one, when in doubt, use "bitcount decision". > > b) Using SAD of Hadamard-transformed blocks instead of ordinary > > SAD for _subpixel_ resolution refinement (not for ordinary search!) > > can also increase PSNR significantly (though not for anime). > > > > Proposal #2: Implement SAD_hadamard which does the transform and SAD. > > (The routines are almost all there (or used to be), the result just > > might have to be scaled to fit into current SAD-checks) > > why hadamard and not DCT? (because it's faster?) - shouldn't DCT give better > results (at least in theory)? And why SAD and not SSE? SSE should more > evenly distribute the error over a whole block which should make it easier > to code. For 3 and a half reasons (+1 double): a) SSE is much slower than SAD b) SSE version SAD didn't give any advantage in ffmpeg tests, except for Anime, but I'll retest this on the VQEG set. c) skal's SIMDed Hadamard is twice the speed of DCT (for C it might be more) d) H.26L proposed Hadamard, not DCT (and they are the experts ;-) e) ffmpeg showed no increase between Hadamard and DCT, but in this second I noticed that it was _quantizazion error_ with DCT, not SAD of DCT, so I might have to retest this, too. Of course we can have as many subpel-searchroutines as we want and test them, but for predefined quality profiles we should only have "pure SAD" and one "better-but-slower", where I guess SAD+SATD would be a good compromise. > > c) Rate-Distorsion optimized Quantization > > > > Sometimes it's good not to just quantize the values and save the result, > > but modify results a little to safe bits while at the same time no do much > > damage to the image. ffmpeg has "Trellis Quantization" for this, which is > > really slow, but often gives a boost to PSNR. (Note that from the > > computational point this is by far less work than "optimal adaptive > > quantization") > > > > Proposal #3: Implement "intelligent" quantization, e.g. Trellis. > > (or port it from Ffmpeg ;-) > > yes, but it's quite slow. Also some additional optimal adaptive quantization > would be nice... Optimal Adaptive Quant is another step, which could be based on results of Optimal Quantization. But real OAQ is _extremely_ slow, much slower than Trellis (which drops fps in ffmpeg to half, but on the other it's not optimzed and pure C as the moment). I proposed Trellis, because it's possible to implement within a few hours, since the algorithm is there, whereas for usable OAQ I guess somebody would have to come up with the right theory for our needs, first. > > d) Set B-frames only when helpful > > > > A clip can benefit very much from Bframes, or the results can be horrible. > > In one of the VQEG test clips, I had a PSNR drop from 46.05 to 41.40 > > (-4.95db) just because of activating 1 bframe! Average(!) quantizers > > jumped from 2.26 to 5.22. But there is also a clip where PSNR was > > increased from 34.3 to 35.5 (+1.2dB). XVID already has a dynamic test for > > this, but it's a very simple check... > > > > Proposal #4: Implement a better criterion for dynamic bframes. > > (first we have to find one, but if necessary, just use brute force) > > I'm not sure if the benefits of b-frames can be measured by simple PSNR > comparisons: Of course the PSNR of bframes is generally lower than if we had > coded a pframe instead (simply because bframe quant is higher), however > bframes' lower quality don't influence the remaining picture sequence > (because bframes are not used as reference). If we now assume normal viewing > conditions (a video played back at ~25 fps), the quality decrease when a > bframe is presented for only a short time (1/25s) might not be noticed at > all. In a typical IBPBPB GOP half of all frames are B-frames. So with the same argument as yours I'd say, quality of all other frames doesn't matter, because they are presented only for a short while. I'd say the "weight" of B-frames quality for _viewing_ is the same as of the others. For encoding of error it is not, but that's taken care of by higher quant for Bframes and ratecontrol. Average quant might not be a good measurement in bframes sequences, but average PSNR I'd say is. Btw. in later tests I noticed, that ffmpeg's overall quality with Bframes get much better when vhq is enabled in ffmpeg, so their mode decision in bframes might simply be very bad. Still, its a fact that sometimes bframes are beneficial and sometimes they are not, and I really have to adapt the test-script to XVID. > So for a fixed quant encoding with maybe 5 - 10 bframes/sec, the > perceived video quality might stay the same while we have a noticable > decrease in file size at the same time. 5-10 bframes per second is rarely the case, unless you already have a dynamic mode where bframes are supressed. Typical should be 12.5-15 bframes per second (maxbframes=1), or even 18-20 (maxbframes=2). > Of course there might be video clips, where b-frames are really doing harm > (and not only PSNR-wise). So for example if a PBP sequence (viewing order) > is not significantly smaller than a corresponding PPP sequence, bframes > should of course not be used (well, I guess I don't tell you anything new > here ;-)) I would say: Let's take ratecontrol take care of that (fix quant encoding is difficult for bframes, espcially because their quant isn't the one you choose as fixed) and watch the result. gruel From xvid-devel@xvid.org Wed Jan 22 10:42:59 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Wed, 22 Jan 2003 21:42:59 +1100 Subject: [XviD-devel] Re: Automatic benchmark / compile In-Reply-To: References: <20030121185659.GB787@leloo> Message-ID: <20030122213402.2E68.SUXEN_DROL@hotmail.com> --------_3E2E739A2E6E0387F00C_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit On Tue, 21 Jan 2003 20:06:12 +0100 (CET) Christoph Lampert wrote: > On Tue, 21 Jan 2003, Edouard Gomez wrote: > > > Christoph Lampert (chl@math.uni-bonn.de) wrote: > > > But the results won't help them, because the cygwin flags can't be used > > > for MS VC. Or is there a command line version of the MS compiler? (Sorry, > > > I really know nothing about developing with MS) > > > > There is cl.exe in one the PATH defined in vcvars32.bat shipped with at > > least VisualC++ 5/6 > > > > The problem is they don't use the same options at all, and cl.exe has > > far less options than gcc concerning code generation and CPU specific > > optimization. > > Sure, but that's not the problem, because one can define a set of flags > for every compiler. It's just important if flags that are good for cl.exe > can be used for a MS VC project-file as well and have the same effect > there (or can easily be translated). its no different: cl.exe (gcc), lib (ar), link (ld), nmake (gmake). i have a Makefile.vc which can be included in xvidcore/build/generic. also, the following has been iritating for me some time. Makefile.inc includes a gnu make ifeq() conditional used for ia64. this breaks non-gnu makes, such as the sgi make or microsoft nmake. ive attached a patch, which moves the conditional into Makefile.ia64. could someone please confirm it works. it looks okay to me, but i need reassurance. -- pete; life is like a box of ammo --------_3E2E739A2E6E0387F00C_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="ia64-ecc-patch.diff" Content-Disposition: attachment; filename="ia64-ecc-patch.diff" Content-Transfer-Encoding: base64 PyBNYWtlZmlsZS52Yw0KSW5kZXg6IE1ha2VmaWxlLmlhNjQNCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxl OiAveHZpZC94dmlkY29yZS9idWlsZC9nZW5lcmljL01ha2VmaWxlLmlhNjQsdg0KcmV0cmlldmlu ZyByZXZpc2lvbiAxLjMuMi4xDQpkaWZmIC11IC1yMS4zLjIuMSBNYWtlZmlsZS5pYTY0DQotLS0g TWFrZWZpbGUuaWE2NAkxNCBEZWMgMjAwMiAwODoxNDozNyAtMDAwMAkxLjMuMi4xDQorKysgTWFr ZWZpbGUuaWE2NAkyMiBKYW4gMjAwMyAxMDozMjo0NyAtMDAwMA0KQEAgLTI2LDYgKzI2LDcgQEAN CiBpZmVxICgkKENDKSxlY2MpDQogICAgIENGTEFHUys9IC1POSAtaXANCiAgICAgQ0ZMQUdTKz0g LUkvb3B0L2ludGVsL2NvbXBpbGVyNTAvaWEzMi9pbmNsdWRlIC1JL29wdC9pbnRlbC9jb21waWxl cjUwL2lhMzIvc3Vic3RpdHV0ZV9oZWFkZXJzLw0KKyAgICBTUkNfSUE2NCA6PSAkKFNSQ19JQTY0 Ol9nY2Mucz1fZWNjLnMpDQogDQogZWxzZQ0KICAgICBDRkxBR1MgKz0gLVdhbGwgLU85IC1mdW5y b2xsLWxvb3BzIC1mZmFzdC1tYXRoDQpJbmRleDogTWFrZWZpbGUuaW5jDQo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS Q1MgZmlsZTogL3h2aWQveHZpZGNvcmUvYnVpbGQvZ2VuZXJpYy9NYWtlZmlsZS5pbmMsdg0KcmV0 cmlldmluZyByZXZpc2lvbiAxLjE1LjIuNw0KZGlmZiAtdSAtcjEuMTUuMi43IE1ha2VmaWxlLmlu Yw0KLS0tIE1ha2VmaWxlLmluYwkyMSBKYW4gMjAwMyAxMzozMDo1OSAtMDAwMAkxLjE1LjIuNw0K KysrIE1ha2VmaWxlLmluYwkyMiBKYW4gMjAwMyAxMDozMjo0NyAtMDAwMA0KQEAgLTk3LDE2ICs5 Nyw5IEBADQogCSQoU1JDRElSKS9tb3Rpb24vaWE2NF9hc20vc2FkX2lhNjQucyBcDQogCSQoU1JD RElSKS9tb3Rpb24vaWE2NF9hc20vaGFsZnBlbDhfcmVmaW5lX2lhNjQucyBcDQogCSQoU1JDRElS KS9xdWFudC9pYTY0X2FzbS9xdWFudF9oMjYzX2lhNjQucyBcDQotCSQoU1JDRElSKS91dGlscy9p YTY0X2FzbS9tZW1fdHJhbnNmZXJfaWE2NC5zDQotDQotaWZlcSAoJChDQyksZWNjKQ0KLVNSQ19J QTY0ICs9IFwNCi0JJChTUkNESVIpL2RjdC9pYTY0X2FzbS9pZGN0X2lhNjRfZWNjLnMgDQotZWxz ZQ0KLVNSQ19JQTY0ICs9IFwNCisJJChTUkNESVIpL3V0aWxzL2lhNjRfYXNtL21lbV90cmFuc2Zl cl9pYTY0LnMgXA0KIAkkKFNSQ0RJUikvZGN0L2lhNjRfYXNtL2lkY3RfaWE2NF9nY2MucyANCi1l bmRpZg0KLQ0KKyMgbm90ZTogTWFrZWZpbGUuaWE2NCB3aWxsIHJlcGxhY2UgaWRjdF9pYTY0X2dj Yy5jIHdpdGggaWRjdF9pYTY0X2VjYy5zIHdoZW4gdXNpbmcgZWNjIGNvbXBpbGVyDQogDQogRElS U19JQTY0ID0gXA0KIAkkKFNSQ0RJUikvZGN0L2lhNjRfYXNtLyoubyBcDQo= --------_3E2E739A2E6E0387F00C_MULTIPART_MIXED_-- From xvid-devel@xvid.org Wed Jan 22 10:51:25 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Wed, 22 Jan 2003 11:51:25 +0100 (CET) Subject: [XviD-devel] Quality optimization In-Reply-To: <01b801c2c1d4$8c2cf7e0$bca45982@student.utwente.nl> Message-ID: On Wed, 22 Jan 2003, Marco Al wrote: > Christoph Lampert wrote: > > > b) Using SAD of Hadamard-transformed blocks instead of ordinary > > SAD for _subpixel_ resolution refinement (not for ordinary search!) > > can also increase PSNR significantly (though not for anime). > > Do we have some timings for a 8 bit Hadamard transform yet? I did some a while ago of skal's MMXEXT(?) version and posted them to the list. I don't remember, but might have been twice the speed of DCT, but half the speed of SAD. > Since you are shooting for quality how about simply using the DCT and > constructing a special LUT to do fast exact #bits calculations? (Without needing > the actual codewords or work on the bitstream it can be done a lot faster.) Quality yes, but at a reasonable speed. Poll at xvid.org showed that hardly anyone is willing to go below 5 fps per GHz. I guess half the speed of current XVID would be "acceptable", but not much less. Since QPel and GMC are also candidates for slowing everything down, compromises have to be made. > Using simply SAD in the transform domain still fails to take into account the > damage high frequency components do to bitrate, so it would still be far from > optimal. Also why only allow it for the subpel search? Why not allow a full pel > refinement step using it too? Because we don't use fullsearch, so the error measure has to be very smooth in order to support gradient decent. Tests with ffmpeg show that using other measurement that SAD often is not really beneficial for fullpel, most likely because error landscapes have many local minima (it's know that "number of bits needed" is not good for gradient decent, because it gets trapped very early). Subpel search is kind of "fullsearch", all neighbouring positions are visited, and the current fullpel one should of course be included. Also, it's speed again. There are 4 halfpel or 8 halfpel positions per macroblock to be visited, but in some cases a hundred or more fullpel positions. > A low complexity alternative to SAD_hadamard which I wouldnt be > surprised to see outperform it is the summed SAD in horizontally and vertically > Sobel filtered images. Sure, as many as possible, then we can choose the best. For speed btw. I don't know, Skal's version is very fast, but for quality, it would be interesting. gruel From xvid-devel@xvid.org Wed Jan 22 11:37:14 2003 From: xvid-devel@xvid.org (Cami) Date: Wed, 22 Jan 2003 13:37:14 +0200 Subject: [XviD-devel] learning References: Message-ID: <001601c2c20a$9d367ad0$803102c4@lonewolf> hi guys.. is there anyone here that is currently learning how mpeg4, or rather, how encoding works, perhaps have some documentation and/or code to get someone onto the right path if they want to get envolved with xvid? i have no knowledge of how video compression/encoding works, so any documentation would be appreciated. ++C From xvid-devel@xvid.org Wed Jan 22 11:57:48 2003 From: xvid-devel@xvid.org (Kostas) Date: Wed, 22 Jan 2003 06:57:48 -0500 Subject: [XviD-devel] learning Message-ID: Hi Cami, I would suggest "Video Codec Design" by Iain Richardson. Look it up in Amazon, it is quite a sound book covering many theoretic aspects in detail and connecting them with existing video coding standards (incl. MPEG-4) Hope this helps, rAbit On Wed, 22 Jan 2003 13:37:14 Cami wrote: >hi guys.. > >is there anyone here that is currently learning how mpeg4, >or rather, how encoding works, perhaps have some documentation >and/or code to get someone onto the right path if they >want to get envolved with xvid? > >i have no knowledge of how video compression/encoding works, >so any documentation would be appreciated. > >++C > >_______________________________________________ >XviD-devel mailing list >XviD-devel@xvid.org >http://list.xvid.org/mailman/listinfo/xvid-devel > _____________________________________________________________ Get 25MB, POP3, Spam Filtering with LYCOS MAIL PLUS for $19.95/year. http://login.mail.lycos.com/brandPage.shtml?pageId=plus&ref=lmtplus From xvid-devel@xvid.org Wed Jan 22 19:01:53 2003 From: xvid-devel@xvid.org (Marco Al) Date: Wed, 22 Jan 2003 20:01:53 +0100 Subject: [XviD-devel] Quality optimization References: Message-ID: <004c01c2c248$ba532440$bca45982@student.utwente.nl> Christoph Lampert wrote: >> Do we have some timings for a 8 bit Hadamard transform yet? > > I did some a while ago of skal's MMXEXT(?) version and posted them to > the list. I don't remember, but might have been twice the speed of DCT, > but half the speed of SAD. The non attributed asm code only managed 173 cycles with 8 bits accourding to the source, that is not twice as fast as DCT AFAIK. > Because we don't use fullsearch, so the error measure has to be very > smooth in order to support gradient decent. Tests with ffmpeg show that > using other measurement that SAD often is not really beneficial for > fullpel, most likely because error landscapes have many local minima (it's > know that "number of bits needed" is not good for gradient decent, > because it gets trapped very early). Subpel search is kind of > "fullsearch", all neighbouring positions are visited, and the current > fullpel one should of course be included. SAD can guide you to near "the" minimum, but I dont see any reason to assume it will never be more than a pel off. If the pel level minimum found using SAD isnt also a pel level minimum using a more advanced error measure it isnt a correct point to do the subpel search around ... wether a subsequent full pel search (starting from the point found by SAD) with the better measure can get trapped in a local mimimum is besides the point, it will always be as good or better a match. > Also, it's speed again. There are 4 halfpel or 8 halfpel positions per > macroblock to be visited, but in some cases a hundred or more fullpel > positions. I was not suggesting doing the entire search with the better measure, just refining the full pel position after the SAD based search finished. >> A low complexity alternative to SAD_hadamard which I wouldnt be >> surprised to see outperform it is the summed SAD in horizontally and >> vertically Sobel filtered images. > > Sure, as many as possible, then we can choose the best. For speed btw. I > don't know, Skal's version is very fast, but for quality, it would be > interesting. A third option is to do semi quantization+codelength determination in the hadamard domain, equivalent to my proposal using DCT, instead of SAD. Or even to simply have a per coefficient scaling factor which penalizes high frequencies (all these options might need a lot of tweaking though, the advantage of the DCT plus exact codelength determination is that there are no parameters to tweak). Marco From xvid-devel@xvid.org Wed Jan 22 19:51:04 2003 From: xvid-devel@xvid.org (Helder Aranha) Date: Wed, 22 Jan 2003 19:51:04 -0000 Subject: [XviD-devel] two lame questions References: Message-ID: <004401c2c24f$9ac8a1c0$0158580a@zarco> Hi list 1. Encoding stats. Does xvidenc produce a stats file for each file encoding? If so, is there a default directory for it? 2. 1st pass and 2nd pass what's the difference? a 2nd pass refines the results from 1st pass? If you're doing real-time encoding (like for streaming live video), can/should you use 2nd pass? Don't flame on this, but the documentation is not very clear on the subject (ie, it's not lame-proof :) Helder From xvid-devel@xvid.org Wed Jan 22 22:09:13 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Thu, 23 Jan 2003 09:09:13 +1100 Subject: [XviD-devel] two lame questions In-Reply-To: <004401c2c24f$9ac8a1c0$0158580a@zarco> References: <004401c2c24f$9ac8a1c0$0158580a@zarco> Message-ID: <20030123085444.9A35.SUXEN_DROL@hotmail.com> On Wed, 22 Jan 2003 19:51:04 -0000 "Helder Aranha" wrote: > Hi list > > 1. Encoding stats. > Does xvidenc produce a stats file for each file encoding? If so, is there a > default directory for it? no. its just an example/debug to demonstrate how xvid works. 2-pass (and therefore stats files) are only support by the vfw frontend and gomz libxvidvbr (transcode). > 2. 1st pass and 2nd pass > what's the difference? a 2nd pass refines the results from 1st pass? If > you're doing real-time encoding (like for streaming live video), can/should > you use 2nd pass? 2pass cannot be used to real-time encoding. the idea behind two pass is to maximize quality for a target storage size (ie. ~600megabytes...). xvid 2pass guide is available here: http://forum.doom9.org/showthread.php?threadid=36915&pagenumber=4 and dirk's older xvid options guide: http://roeder.goe.net/~koepi/ a technical description of 2pass encoding: http://www.research.ibm.com/journal/rd/434/westerink.html > Don't flame on this, but the documentation is not very clear on the subject > (ie, it's not lame-proof :) here: http://doom9.org -- pete; life is like a box of ammo From xvid-devel@xvid.org Thu Jan 23 11:41:56 2003 From: xvid-devel@xvid.org (Radek Czyz) Date: Thu, 23 Jan 2003 22:11:56 +1030 Subject: [XviD-devel] Quality optimization In-Reply-To: References: Message-ID: <13031505843.20030123221156@syskin.cjb.net> Hello, Allow me to present some my opinions related to the discussion. > a) Mode decision. The FFMPEG "vhq" mode decision (checking by brute force > which coding type needs the fewest bits) often improves the PSNR by > 0.2-0.5, and it (almost) never does any harm (except for lower speed, of > course). > > Proposal #1: Implement brute force mode decision into XVID ! > (The routines are all there, maybe they have to be slightly modified to be > "reentrant") Let me just say that I agree :> > After today's computer science class, I would like to make this Proposal > into 1a) Implement brute force ... > 1b) Collect lots of data of sad/dev/bits and mail it to me > 1c) Scan through data to find some decision regions and some > "regions of doubt". > 1c) Implement a "stable" decision: If the decision is clear, use the > fast one, when in doubt, use "bitcount decision". And we can also use these statistical data to evaluate a better 'simple' mode decision. >> > b) Using SAD of Hadamard-transformed blocks instead of ordinary >> > SAD for _subpixel_ resolution refinement (not for ordinary search!) >> > can also increase PSNR significantly (though not for anime). >> > >> > Proposal #2: Implement SAD_hadamard which does the transform and SAD. >> > (The routines are almost all there (or used to be), the result just >> > might have to be scaled to fit into current SAD-checks) >> >> why hadamard and not DCT? (because it's faster?) - shouldn't DCT give better >> results (at least in theory)? And why SAD and not SSE? SSE should more >> evenly distribute the error over a whole block which should make it easier >> to code. My experiments show that during halfpel refinement, the biggest slowdown comes not from the speed of comparsion function, but from memory access. I guess that means that we an use a more complicated function (maybe even dct) while still having the same speed. > d) Set B-frames only when helpful > > A clip can benefit very much from Bframes, or the results can be horrible. > In one of the VQEG test clips, I had a PSNR drop from 46.05 to 41.40 > (-4.95db) just because of activating 1 bframe! Average(!) quantizers > jumped from 2.26 to 5.22. But there is also a clip where PSNR was > increased from 34.3 to 35.5 (+1.2dB). XVID already has a dynamic test for > this, but it's a very simple check... > > Proposal #4: Implement a better criterion for dynamic bframes. > (first we have to find one, but if necessary, just use brute force) Do you have any idea how brute force should work? The goal is to have future frame, with it's vectors, ready before the decision. But if it's ready, than the decision has been already done.... That doesn't make sense. Of course I'd also would like to see a better decison. > I'm not sure if the benefits of b-frames can be measured by simple PSNR > comparisons: Of course the PSNR of bframes is generally lower than if we had > coded a pframe instead (simply because bframe quant is higher), however > bframes' lower quality don't influence the remaining picture sequence > (because bframes are not used as reference). If we now assume normal viewing > conditions (a video played back at ~25 fps), the quality decrease when a > bframe is presented for only a short time (1/25s) might not be noticed at > all. I agree, but with slightly different arguments ;) . B-frames might have horrible PSNR but still look very good. The picture, when compared pixel-by-pixel, might be different than the original, but it's still sharp, because both references are sharp, and is not blocky, because SAD wouldn't allow visible blocks (that's the way SAD is). As a result, b-frames don't look bad even when someone would look at a still picture, and at the same time original might look very different - especially the noise is very different. > Btw. in later tests I noticed, that ffmpeg's overall quality with Bframes > get much better when vhq is enabled in ffmpeg, so their mode decision in > bframes might simply be very bad. Still, its a fact that sometimes > bframes are beneficial and sometimes they are not, and I really have to > adapt the test-script to XVID. Do they use vhq for mode decision in b-frames? I'd be a bit worried about it. As b-frames have higher quant and good motion compensation, they usually have no DCT data at all. Therefore, vhq mode decision would simply add bits needed to code the mode (1..4) and bits needed to code vector. Direct mode would always win... As you might remember, I used to experiment with mrSAD for motion estimation. This is what I discovered while doing so: SAD is a very good way to search motion PROVIDED that it is able to find a good match. The picture created by SAD-besed ME is very smooth and in fact looks good before DCT data are applied (as long as you don't look closer, of course). If there are several possible vectors which need no DCT correction at all, SAD will choose the one which looks best. However, this is no longer true when DCT are to be written. A single DCT coefficient will affect entire block. SAD tries to match most pixels as nicely as possible, but after quantized DCT is applied, these fine-tuned pixels will not match anymore. This is when SAD starts to suck. I used to be working on a second-stage ME search, which is done for a macroblock if SAD value was not good enough. I discovered that 'not good enough' is something like "comparable to, or bigger than, deviation; or more than 3000". I used mrSAD for the search and easly improved PSNR by 0.25dB. I suspended the project because it still didn't help on fades, so was not good enough. This can be done better with DCT. What I think we should try: - use normal SAD for the search. - use DCT to choose INTER/INTRA/INTER4V. Choose the one which uses least number of bits and looks better (so when INTER4V uses 1 more bit but SAD is much lower, we still choose INTER4V). - if cbp == 0 (which we know after DCT check), leave it there. SAD was really the best matching function when the block is not corrected anymore. - else, we can use a smarter search to mimimize number of bits. The macroblock (well, block...) will look as good as quantization allows anyway, so we can use more advanced techiques to minimize mumber of bits. OK, this mail is too long already. Thanks for reading. Best Regards, Radek From xvid-devel@xvid.org Thu Jan 23 12:09:17 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Thu, 23 Jan 2003 13:09:17 +0100 (CET) Subject: [XviD-devel] Quality optimization In-Reply-To: <13031505843.20030123221156@syskin.cjb.net> Message-ID: On Thu, 23 Jan 2003, Radek Czyz wrote: > My experiments show that during halfpel refinement, the biggest > slowdown comes not from the speed of comparsion function, but from > memory access. I guess that means that we an use a more complicated > function (maybe even dct) while still having the same speed. Then we have to speed up memory access by either not doing interpolation in huge full frames (3 or 4 of them are needed), or by adding better prefetch. We're not doing streaming dot product, we know in advance what memory locations we'll most likely need for the next block. > > d) Set B-frames only when helpful > > > > A clip can benefit very much from Bframes, or the results can be horrible. > > In one of the VQEG test clips, I had a PSNR drop from 46.05 to 41.40 > > (-4.95db) just because of activating 1 bframe! Average(!) quantizers > > jumped from 2.26 to 5.22. But there is also a clip where PSNR was > > increased from 34.3 to 35.5 (+1.2dB). XVID already has a dynamic test for > > this, but it's a very simple check... > > > > Proposal #4: Implement a better criterion for dynamic bframes. > > (first we have to find one, but if necessary, just use brute force) > > Do you have any idea how brute force should work? The goal is to have > future frame, with it's vectors, ready before the decision. But if > it's ready, than the decision has been already done.... That doesn't > make sense. Use a low max_bframes number, like 2 or 3. Encode as PPP (most basic settings, only fullpel etc), encode as BBP in saving the result in two different buffer. Decide in some why (quality vs. sizes) which is better, use that. > Of course I'd also would like to see a better decison. > > > I'm not sure if the benefits of b-frames can be measured by simple PSNR > > comparisons: Of course the PSNR of bframes is generally lower than if we had > > coded a pframe instead (simply because bframe quant is higher), however > > bframes' lower quality don't influence the remaining picture sequence > > (because bframes are not used as reference). If we now assume normal viewing > > conditions (a video played back at ~25 fps), the quality decrease when a > > bframe is presented for only a short time (1/25s) might not be noticed at > > all. > > I agree, but with slightly different arguments ;) . B-frames might > have horrible PSNR but still look very good. The picture, when > compared pixel-by-pixel, might be different than the original, but > it's still sharp, because both references are sharp, and is not > blocky, because SAD wouldn't allow visible blocks (that's the way SAD > is). As a result, b-frames don't look bad even when someone would look > at a still picture, and at the same time original might look very > different - especially the noise is very different. > > > Btw. in later tests I noticed, that ffmpeg's overall quality with Bframes > > get much better when vhq is enabled in ffmpeg, so their mode decision in > > bframes might simply be very bad. Still, its a fact that sometimes > > bframes are beneficial and sometimes they are not, and I really have to > > adapt the test-script to XVID. > > Do they use vhq for mode decision in b-frames? I'd be a bit worried > about it. As b-frames have higher quant and good motion compensation, > they usually have no DCT data at all. Therefore, vhq mode decision > would simply add bits needed to code the mode (1..4) and bits needed > to code vector. Direct mode would always win... If a compensated block has no DCT data, then direct mode SHOULD always win... since it needs the fewest bits. Something like that? Yes, it might be a little slow, I know. gruel From xvid-devel@xvid.org Thu Jan 23 12:47:59 2003 From: xvid-devel@xvid.org (Radek Czyz) Date: Thu, 23 Jan 2003 23:17:59 +1030 Subject: Re[2]: [XviD-devel] Quality optimization In-Reply-To: References: Message-ID: <11235468971.20030123231759@syskin.cjb.net> Hi, > [...] or by adding better > prefetch. We're not doing streaming dot product, we know in advance > what memory locations we'll most likely need for the next block. I'm only guessing what prefetch is. Would it be possible to write a macro, in inline assembler (defined in portab.h as needed) looking like this PREFETCH(void *); which would perform the prefetch? Compiler cannnot know in advance that, for example, a SAD will use the memory locations it's using. By doing some prefetch's before calling SAD, the time spent for calling the function could be used to catch the function's data. Sometimes it would be possible to do that in a big advance. For example, we could prefetch chroma data when ChromaME is on, before the luma SAD is called... correct me if Im talking nonsense... Nice tool for experiments. What do you think? Is it possible at all? From xvid-devel@xvid.org Thu Jan 23 13:16:51 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Thu, 23 Jan 2003 14:16:51 +0100 (CET) Subject: Re[2]: [XviD-devel] Quality optimization In-Reply-To: <11235468971.20030123231759@syskin.cjb.net> Message-ID: On Thu, 23 Jan 2003, Radek Czyz wrote: > Hi, > > > [...] or by adding better > > prefetch. We're not doing streaming dot product, we know in advance > > what memory locations we'll most likely need for the next block. > > I'm only guessing what prefetch is. > Would it be possible to write a macro, in inline assembler (defined in > portab.h as needed) looking like this > > PREFETCH(void *); > > which would perform the prefetch? Yes. MMX has an instruction for that, other CPU ASMs might as well. If not, prefetch using C is possible, too. There are also other basic operations which always should be tried before immediately going to ASM: http://cdrom.amd.com/devconn/events/gdc_2002_amd.pdf > Compiler cannnot know in advance that, for example, a SAD will use the > memory locations it's using. By doing some prefetch's before calling > SAD, the time spent for calling the function could be used to catch > the function's data. > > Sometimes it would be possible to do that in a big advance. For > example, we could prefetch chroma data when ChromaME is on, before the > luma SAD is called... correct me if Im talking nonsense... > > Nice tool for experiments. > > What do you think? Is it possible at all? Yes, and any time-critical software should do it. gruel From xvid-devel@xvid.org Thu Jan 23 15:29:40 2003 From: xvid-devel@xvid.org (skal) Date: 23 Jan 2003 16:29:40 +0100 Subject: [XviD-devel] Quality optimization In-Reply-To: References: Message-ID: <1043335781.1454.5.camel@latitude344> Christoph, On Tue, 2003-01-21 at 17:52, Christoph Lampert wrote: > * I'm sure that GMC can do better than our current version, in particular > GME and mode decision. > I've looked at your GME code (yeah, I couldn't help:) and have some question: a) Where is GMC-accuracy taken into account? It should change the scaling of your solution... b) why didn't you jump directly on 3-pts warping? The least-square minimization equations are quite similar to the 2-pts ones you seem to have used... c) It's somehow agreed in the literature that scaling the x-y coords to [-1,1] range is vital to ensure numerical stability of the computations (or maybe this was only required for the Kalman-filtering ... non linear stuff... or maybe for the 4-pts case... dunno) just my .01euros bye, Skal From xvid-devel@xvid.org Thu Jan 23 16:11:11 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Thu, 23 Jan 2003 17:11:11 +0100 (CET) Subject: [XviD-devel] Quality optimization In-Reply-To: <1043335781.1454.5.camel@latitude344> Message-ID: On 23 Jan 2003, skal wrote: > > * I'm sure that GMC can do better than our current version, in particular > > GME and mode decision. > > > > I've looked at your GME code (yeah, I couldn't help:) and > have some question: > > a) Where is GMC-accuracy taken into account? it isn't. > It should change the scaling of your solution... Errr, should it? I don't think so. Values for sprite reference points are (as far as I know) always stored in halfpel units, even in 16th-pel mode. It's not possible to have e.g. 1/16th pel translation. Which is a pity, btw. except for that with 1 warppoint translational (as DIVX does), we will be able to able to re-use halfpel images and don't have to do "real" GMC decoding. > b) why didn't you jump directly on 3-pts warping? The > least-square minimization equations are quite similar > to the 2-pts ones you seem to have used... Yes, the estimation wouldn't be very different, maybe easier because X and Y are independent then. I had two reasons: a) I had a paper from Smolic, who used 2-warp-points and results were as good as with 3 in natural video. b) With 2 additional parameters I'm afraid the chance of overfitting would be even greater. When just using motion vectors without differential refinement, I'd like to keep the number of free parameters as low as possible. > c) It's somehow agreed in the literature that scaling the > x-y coords to [-1,1] range is vital to ensure numerical > stability of the computations (or maybe this was only > required for the Kalman-filtering ... non linear stuff... > or maybe for the 4-pts case... dunno) Hm, I can't really see why at the moment. Matrix values are in the range of 10^7 and 10^{-7} and can (and will) easily be reduced by another factor of 64 or so... Maybe if I had to invert the 4x4 or 6x6 matrix using numerical calculations, stability would become crucial, but I have a closed formula for the inverse, so it's just a few float operations per entry per iteration. gruel From xvid-devel@xvid.org Thu Jan 23 18:03:48 2003 From: xvid-devel@xvid.org (skal) Date: 23 Jan 2003 19:03:48 +0100 Subject: [XviD-devel] Quality optimization In-Reply-To: References: Message-ID: <1043345028.1445.49.camel@latitude344> On Thu, 2003-01-23 at 17:11, Christoph Lampert wrote: > On 23 Jan 2003, skal wrote: > > > * I'm sure that GMC can do better than our current version, in particular > > > GME and mode decision. > > > > > > > I've looked at your GME code (yeah, I couldn't help:) and > > have some question: > > > > a) Where is GMC-accuracy taken into account? > > it isn't. > > > It should change the scaling of your solution... > > Errr, should it? I don't think so. Values for sprite reference points are > (as far as I know) always stored in halfpel units, even in 16th-pel mode. Oh yeah, you're right: accuracy is only used during the bilinear interpolation. It's a pity, for sure. Why didn't the decide that interpolation should be done at 1/16th pel resolution, period. I don't quite see the need for that (useless) parameter, if we can't tune the warp points precision with... > It's not possible to have e.g. 1/16th pel translation. Which is a pity, > btw. except for that with 1 warppoint translational (as DIVX does), we > will be able to able to re-use halfpel images and don't have to do > "real" GMC decoding. > > > c) It's somehow agreed in the literature that scaling the > > x-y coords to [-1,1] range is vital to ensure numerical > > stability of the computations (or maybe this was only > > required for the Kalman-filtering ... non linear stuff... > > or maybe for the 4-pts case... dunno) > > Hm, I can't really see why at the moment. Matrix values are in the range > of 10^7 and 10^{-7} and can (and will) easily be reduced by > another factor of 64 or so... Maybe if I had to invert the 4x4 or 6x6 > matrix using numerical calculations, stability would become crucial, > but I have a closed formula for the inverse, so it's just a few float > operations per entry per iteration. hmm... in our case, you're right, it shouldn't matter. It's in fact more problematic for genuinely ill-defined problem, see for instance: http://citeseer.nj.nec.com/luong95fundamental.html hopefully, 4-warp points is not used for sprite-GMC :) bye Skal From xvid-devel@xvid.org Fri Jan 24 02:43:53 2003 From: xvid-devel@xvid.org (Felix von Leitner) Date: Fri, 24 Jan 2003 03:43:53 +0100 Subject: [XviD-devel] max_bframes>1 (was: Re: Quality optimization) In-Reply-To: References: <13031505843.20030123221156@syskin.cjb.net> Message-ID: <20030124024353.GA1858@fefe.de> Thus spake Christoph Lampert (chl@math.uni-bonn.de): > Use a low max_bframes number, like 2 or 3. The ffmpeg quality benchmarks clearly showed that setting max_bframes to more than one was actually bad for quality. So far, my xvid tests agree. I have found substantial visual quality loss when setting max_bframes to 2 instead of 1. I haven't tried 3 but I can't imagine it will be any better than 2. Felix From xvid-devel@xvid.org Fri Jan 24 04:02:36 2003 From: xvid-devel@xvid.org (=?utf-8?B?5byg5bqG5YWI?=) Date: Fri, 24 Jan 2003 12:02:36 +0800 Subject: [XviD-devel] a new problem! References: <13031505843.20030123221156@syskin.cjb.net> <20030124024353.GA1858@fefe.de> Message-ID: <001101c2c35d$6ed67b00$7f14a8c0@zqx> I am studying the decoder of Xvid.When I read the following statement, I felt puzzled: if (!BitstreamGetBit(bs)) /* complexity_estimation_disable */ { DPRINTF(DPRINTF_ERROR, "complexity_estimation not supported"); return -1; } According to the bitstream syntax of MEPG4, it likes that: if(!complexity_estimation_disable ) define_vop_complexity_estimation_header(); So I think the Xvid decoder has not supportted complexity estimation? Why? From xvid-devel@xvid.org Fri Jan 24 05:46:45 2003 From: xvid-devel@xvid.org (=?gb2312?B?1cXH7M/I?=) Date: Fri, 24 Jan 2003 13:46:45 +0800 Subject: [XviD-devel] a problem Message-ID: <005901c2c36c$022022e0$7f14a8c0@zqx> This is a multi-part message in MIME format. ------=_NextPart_000_0056_01C2C3AF.090EE760 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SSBhbSBhIGZyZXNobWFuIGluIFh2aWQgQ29kZWMgZmllbGQuIEkgdHJ5IHRvIGRlY29kZXIgYW4g SSBmcmFtZSBieSB1c2luZyB4dmlkJ3MgZGVjb2Rlci4NCkkgZmVlbCBoYXBweSB3aGVuIEkgZGVj b2RlIGl0IGFuZCBkaXNwbGF5IGl0IHVzaW5nIERpcmVjdERyYXcuIEJ1dCBoYXZlIGEgbGl0dGxl IHJlZ3JldCwgdGhlcmUgYXJlIGFib3V0IDEuNSByb3dzIChib3R0b20pd2hpY2ggYXJlIGZ1enp5 IGFuZCAgcGllYmFsZC5UaGUgaW1hZ2Ugc2l6ZSBpcyAzNTIqMjg4LCBjb2xvc3BhY2UgaXMgWFZJ RF9DU1BfWVVZMiggZXhjZXB0IHRoaXMgY29sb3JzcGFjZSwgYWxsIHRoZSBvdGhlciBmYWlsZWQh IHB1enpsbGluZyEpLldobyBjYW4gdGVsbCBtZSB0aGUgcmVhc29uPw0K ------=_NextPart_000_0056_01C2C3AF.090EE760 Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv L0VOIj4NCjxIVE1MPjxIRUFEPg0KPE1FVEEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVu dD0idGV4dC9odG1sOyBjaGFyc2V0PWdiMjMxMiI+DQo8TUVUQSBjb250ZW50PSJNU0hUTUwgNi4w MC4yNjAwLjAiIG5hbWU9R0VORVJBVE9SPg0KPFNUWUxFPjwvU1RZTEU+DQo8L0hFQUQ+DQo8Qk9E WSBiZ0NvbG9yPSNmZmZmZmY+DQo8RElWPjxGT05UIHNpemU9Mj5JIGFtIGEgZnJlc2htYW4mbmJz cDtpbiBYdmlkIENvZGVjIGZpZWxkLiBJIHRyeSB0byBkZWNvZGVyIGFuIA0KSSBmcmFtZSBieSB1 c2luZyB4dmlkJ3MgZGVjb2Rlci48L0ZPTlQ+PC9ESVY+DQo8RElWPjxGT05UIHNpemU9Mj5JIGZl ZWwgaGFwcHkgd2hlbiBJIGRlY29kZSBpdCBhbmQgZGlzcGxheSBpdCB1c2luZyBEaXJlY3REcmF3 LiANCkJ1dCBoYXZlIGEgbGl0dGxlIHJlZ3JldCwgdGhlcmUmbmJzcDthcmUgYWJvdXQgMS41IHJv d3MgKGJvdHRvbSl3aGljaCZuYnNwO2FyZSANCmZ1enp5IGFuZCZuYnNwOyZuYnNwO3BpZWJhbGQu VGhlIGltYWdlIHNpemUgaXMgMzUyKjI4OCwgY29sb3NwYWNlIGlzIA0KWFZJRF9DU1BfWVVZMigg ZXhjZXB0IHRoaXMgY29sb3JzcGFjZSwgYWxsIHRoZSBvdGhlciBmYWlsZWQhIHB1enpsbGluZyEp LldobyBjYW4gDQp0ZWxsIG1lIHRoZSByZWFzb24/PC9GT05UPjwvRElWPjwvQk9EWT48L0hUTUw+ DQo= ------=_NextPart_000_0056_01C2C3AF.090EE760-- From xvid-devel@xvid.org Fri Jan 24 06:04:56 2003 From: xvid-devel@xvid.org (=?gb2312?B?1cXH7M/I?=) Date: Fri, 24 Jan 2003 14:04:56 +0800 Subject: [XviD-devel] a problem References: <005901c2c36c$022022e0$7f14a8c0@zqx> Message-ID: <006d01c2c36e$8da27b90$7f14a8c0@zqx> This is a multi-part message in MIME format. ------=_NextPart_000_0066_01C2C3B1.931E2810 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0067_01C2C3B1.931E2810" ------=_NextPart_001_0067_01C2C3B1.931E2810 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 WW91IGNhbiBsb29rIHRoZSBhdHRhY2hlZCBmaWxlLiBUaGUgaGVhZGVyIGlzIGFkZGVkIGJ5IG15 c2VsZiwgdXNpbmcgdGhlIGV4YW1wbGUgZW5jb2Rlci4gVGhlIHN1cmUgZGF0YSBiZWdpbnMgZnJv bSAwMDAwMDFCNi4gDQpNeSBhaW0gaXMgdGhhdCBkZWNvZGUgYSByZWFsLXRpbWUgdmlkZW8gc3Ry ZWFtIG9yIGEgc2F2ZWQgZmlsZShhcmUgYWxsIGFuIGFzZiBmb3JtYXQpICwgZmluZCB0aGUgSSBm cmFtZSBvciBQIGZyYW1lICxhbmQgdHJhbnNtaXQgaXQgdG8gdGhlIGNsaWVudC4gVGhlIGNsaWVu dCBtdXN0IGRlY29kZSAgdGhpcyBjb21wcmVzc2VkIEkgZnJhbWUgb3IgUCBmcmFtZS4gTm93ICwg dGhvdWdoIEkgZmluZCB0aGUgSSBmcmFtZSwgaXQgaXMgYmVnaW4gZnJvbSB0aGUgVk9QLCBubyBh bnkgR09WIGFuZCBWaWRlbyBPYmplY3QgaW5mby4gSXQgaXNuJ3QgZGVjb2RlIHJpZ2h0bHkgLlNv IEkgYWRkZWQgdGhlIGhlYWRlci4NCldobyBjYW4gdGVsbCBtZSBob3cgSSBjYW4gZGVjb2RlIHRo ZSBmcmFtZSByaWdodGx5IGluIHRoaXMgbmV0d29yayBhcHBsaWNhdGlvbiA/DQpUaGFuayB5b3Ug IQ0KDQooSSB0aGluayBteSBlbmdsaXNoIGlzIHBvb3IsIGFuZCBkb24ndCBrbm93IHdoZXRoZXIg eW91IHVuZGVyc3RhbmQgbXkgaWRlYSBvciBub3QpDQoNCg0KDQotLS0tLSBPcmlnaW5hbCBNZXNz YWdlIC0tLS0tIA0KICBGcm9tOiDVxcfsz8ggDQogIFRvOiB4dmlkLWRldmVsQHh2aWQub3JnIA0K ICBTZW50OiBGcmlkYXksIEphbnVhcnkgMjQsIDIwMDMgMTo0NiBQTQ0KICBTdWJqZWN0OiBbWHZp RC1kZXZlbF0gYSBwcm9ibGVtDQoNCg0KICBJIGFtIGEgZnJlc2htYW4gaW4gWHZpZCBDb2RlYyBm aWVsZC4gSSB0cnkgdG8gZGVjb2RlciBhbiBJIGZyYW1lIGJ5IHVzaW5nIHh2aWQncyBkZWNvZGVy Lg0KICBJIGZlZWwgaGFwcHkgd2hlbiBJIGRlY29kZSBpdCBhbmQgZGlzcGxheSBpdCB1c2luZyBE aXJlY3REcmF3LiBCdXQgaGF2ZSBhIGxpdHRsZSByZWdyZXQsIHRoZXJlIGFyZSBhYm91dCAxLjUg cm93cyAoYm90dG9tKXdoaWNoIGFyZSBmdXp6eSBhbmQgIHBpZWJhbGQuVGhlIGltYWdlIHNpemUg aXMgMzUyKjI4OCwgY29sb3NwYWNlIGlzIFhWSURfQ1NQX1lVWTIoIGV4Y2VwdCB0aGlzIGNvbG9y c3BhY2UsIGFsbCB0aGUgb3RoZXIgZmFpbGVkISBwdXp6bGxpbmchKS5XaG8gY2FuIHRlbGwgbWUg dGhlIHJlYXNvbj8NCg== ------=_NextPart_001_0067_01C2C3B1.931E2810 Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv L0VOIj4NCjxIVE1MPjxIRUFEPg0KPE1FVEEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVu dD0idGV4dC9odG1sOyBjaGFyc2V0PWdiMjMxMiI+DQo8TUVUQSBjb250ZW50PSJNU0hUTUwgNi4w MC4yNjAwLjAiIG5hbWU9R0VORVJBVE9SPg0KPFNUWUxFPjwvU1RZTEU+DQo8L0hFQUQ+DQo8Qk9E WSBiZ0NvbG9yPSNmZmZmZmY+DQo8RElWPjxGT05UIHNpemU9Mj5Zb3UgY2FuIGxvb2sgdGhlIGF0 dGFjaGVkIGZpbGUuIFRoZSBoZWFkZXIgaXMgYWRkZWQgYnkgbXlzZWxmLCANCnVzaW5nIHRoZSBl eGFtcGxlIGVuY29kZXIuIFRoZSBzdXJlIGRhdGEmbmJzcDtiZWdpbnMgZnJvbSAwMDAwMDFCNi4g DQo8L0ZPTlQ+PC9ESVY+DQo8RElWPjxGT05UIHNpemU9Mj5NeSBhaW0gaXMgdGhhdCBkZWNvZGUg YSByZWFsLXRpbWUgdmlkZW8gc3RyZWFtIG9yIGEgc2F2ZWQgDQpmaWxlKGFyZSBhbGwgYW4gYXNm IGZvcm1hdCkgLCBmaW5kIHRoZSBJIGZyYW1lIG9yIFAgZnJhbWUmbmJzcDssYW5kIHRyYW5zbWl0 IA0KaXQmbmJzcDt0byB0aGUgY2xpZW50LiBUaGUgY2xpZW50IG11c3QmbmJzcDtkZWNvZGUgJm5i c3A7dGhpcyBjb21wcmVzc2VkIEkgZnJhbWUgDQpvciBQIGZyYW1lLiBOb3cgLCB0aG91Z2ggSSBm aW5kIHRoZSBJIGZyYW1lLCBpdCBpcyBiZWdpbiBmcm9tIHRoZSBWT1AsIG5vIGFueSANCkdPViBh bmQgVmlkZW8gT2JqZWN0IGluZm8uJm5ic3A7SXQgaXNuJ3QgZGVjb2RlIHJpZ2h0bHkgLlNvIEkg YWRkZWQgdGhlIA0KaGVhZGVyLjwvRk9OVD48L0RJVj4NCjxESVY+PEZPTlQgc2l6ZT0yPldobyBj YW4gdGVsbCBtZSZuYnNwO2hvdyBJIGNhbiBkZWNvZGUgdGhlIGZyYW1lIHJpZ2h0bHkgaW4gDQp0 aGlzIG5ldHdvcmsgYXBwbGljYXRpb24gPzwvRk9OVD48L0RJVj4NCjxESVY+PEZPTlQgc2l6ZT0y PlRoYW5rIHlvdSAhPC9GT05UPjwvRElWPg0KPERJVj48Rk9OVCBzaXplPTI+PC9GT05UPiZuYnNw OzwvRElWPg0KPERJVj48Rk9OVCBzaXplPTI+KEkgdGhpbmsgbXkgZW5nbGlzaCBpcyBwb29yLCBh bmQgZG9uJ3Qga25vdyB3aGV0aGVyIHlvdSANCnVuZGVyc3RhbmQgbXkgaWRlYSBvciBub3QpPC9G T05UPjwvRElWPg0KPERJVj48Rk9OVCBzaXplPTI+PC9GT05UPiZuYnNwOzwvRElWPg0KPERJVj48 Rk9OVCBzaXplPTI+PC9GT05UPiZuYnNwOzwvRElWPg0KPERJVj48Rk9OVCBzaXplPTI+PC9GT05U PiZuYnNwOzwvRElWPg0KPERJVj4tLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tIDwvRElWPg0K PEJMT0NLUVVPVEUgZGlyPWx0ciANCnN0eWxlPSJQQURESU5HLVJJR0hUOiAwcHg7IFBBRERJTkct TEVGVDogNXB4OyBNQVJHSU4tTEVGVDogNXB4OyBCT1JERVItTEVGVDogIzAwMDAwMCAycHggc29s aWQ7IE1BUkdJTi1SSUdIVDogMHB4Ij4NCiAgPERJViBzdHlsZT0iQkFDS0dST1VORDogI2U0ZTRl NDsgRk9OVDogOXB0IMvOzOU7IGZvbnQtY29sb3I6IGJsYWNrIj48Qj5Gcm9tOjwvQj4gDQogIDxB IHRpdGxlPXpoYW5nX3F4aWFuQGN2aWNzZS5jb20gaHJlZj0ibWFpbHRvOnpoYW5nX3F4aWFuQGN2 aWNzZS5jb20iPtXFx+zPyDwvQT4gDQogIDwvRElWPg0KICA8RElWIHN0eWxlPSJGT05UOiA5cHQg y87M5SI+PEI+VG86PC9CPiA8QSB0aXRsZT14dmlkLWRldmVsQHh2aWQub3JnIA0KICBocmVmPSJt YWlsdG86eHZpZC1kZXZlbEB4dmlkLm9yZyI+eHZpZC1kZXZlbEB4dmlkLm9yZzwvQT4gPC9ESVY+ DQogIDxESVYgc3R5bGU9IkZPTlQ6IDlwdCDLzszlIj48Qj5TZW50OjwvQj4gRnJpZGF5LCBKYW51 YXJ5IDI0LCAyMDAzIDE6NDYgUE08L0RJVj4NCiAgPERJViBzdHlsZT0iRk9OVDogOXB0IMvOzOUi PjxCPlN1YmplY3Q6PC9CPiBbWHZpRC1kZXZlbF0gYSBwcm9ibGVtPC9ESVY+DQogIDxESVY+PEJS PjwvRElWPg0KICA8RElWPjxGT05UIHNpemU9Mj5JIGFtIGEgZnJlc2htYW4mbmJzcDtpbiBYdmlk IENvZGVjIGZpZWxkLiBJIHRyeSB0byBkZWNvZGVyIA0KICBhbiBJIGZyYW1lIGJ5IHVzaW5nIHh2 aWQncyBkZWNvZGVyLjwvRk9OVD48L0RJVj4NCiAgPERJVj48Rk9OVCBzaXplPTI+SSBmZWVsIGhh cHB5IHdoZW4gSSBkZWNvZGUgaXQgYW5kIGRpc3BsYXkgaXQgdXNpbmcgDQogIERpcmVjdERyYXcu IEJ1dCBoYXZlIGEgbGl0dGxlIHJlZ3JldCwgdGhlcmUmbmJzcDthcmUgYWJvdXQgMS41IHJvd3Mg DQogIChib3R0b20pd2hpY2gmbmJzcDthcmUgZnV6enkgYW5kJm5ic3A7Jm5ic3A7cGllYmFsZC5U aGUgaW1hZ2Ugc2l6ZSBpcyAzNTIqMjg4LCANCiAgY29sb3NwYWNlIGlzIFhWSURfQ1NQX1lVWTIo IGV4Y2VwdCB0aGlzIGNvbG9yc3BhY2UsIGFsbCB0aGUgb3RoZXIgZmFpbGVkISANCiAgcHV6emxs aW5nISkuV2hvIGNhbiB0ZWxsIG1lIHRoZSByZWFzb24/PC9GT05UPjwvRElWPjwvQkxPQ0tRVU9U RT48L0JPRFk+PC9IVE1MPg0K ------=_NextPart_001_0067_01C2C3B1.931E2810-- ------=_NextPart_000_0066_01C2C3B1.931E2810 Content-Type: video/x-ms-asf; name="IFrameFull.asf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="IFrameFull.asf" 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 ------=_NextPart_000_0066_01C2C3B1.931E2810-- From xvid-devel@xvid.org Fri Jan 24 11:18:05 2003 From: xvid-devel@xvid.org (Radek Czyz) Date: Fri, 24 Jan 2003 21:48:05 +1030 Subject: Re[4]: [XviD-devel] Quality optimization In-Reply-To: References: Message-ID: <311554595.20030124214805@syskin.cjb.net> Hello, Christoph wrote > Yes. MMX has an instruction for that, other CPU ASMs might as well. > If not, prefetch using C is possible, too. There are also other basic > operations which always should be tried before immediately going to ASM: > http://cdrom.amd.com/devconn/events/gdc_2002_amd.pdf Thanks for that. It looks very useful, even though I wasn't able to get any improvement yet. Instead, I looked a bit deeper into code optimization techniques and tools. I downloaded AMD's CodeAnalyst and run some motion estimation tests. I have some questions about it. First thing I noticed: if CodeAnalyst is correct, branch prediction is horrible. In particular in d_mv_bits() there is: if (x) { // 50% incorrect prediction x = ABS(x) // ~40% incorrect prediction ... ... and the same for y. I have 2 questions now. CodeAnalyst requires the library to be built in debug mode, with no optimization. If these results are true, that means that unoptimized library is wrong - I don't care. Does it actually mean (with reasonable probablity) that optimized library has the same problem? And 2. How can I improve branch prediction? In this particular example I have a hint for the compiler: it is _not_ zero. Usually. This hint has better chances to be true than 50%... Do you know better tools to do this stuff? CodeAnalyst ignores asm-ed code, doesn't allow me to run some functions several times (don't ask for details, 300MB needed for a single call of SearchP is a hint here) and so on... Best Regards, Radek From xvid-devel@xvid.org Fri Jan 24 11:42:41 2003 From: xvid-devel@xvid.org (James Hauxwell) Date: Fri, 24 Jan 2003 11:42:41 -0000 Subject: Re[4]: [XviD-devel] Quality optimization In-Reply-To: <311554595.20030124214805@syskin.cjb.net> Message-ID: <002c01c2c39d$b3a964a0$5c0c81a4@enterprise> Hi, I don't know about CodeAnalyst, but I do use rational quantify for the same job. I know when I profile a release build I have to include some of the symbols that would normally be removed, so it's a mixture between debug and release. CodeAnalyst probably is very similar. There's not much point in benchmarking debug code :-) For the test if (x) { } this can be true/false or 50% probability of being true. You are normally best constructing conditional flow with the most probable being the fall through case (no branch). The intel compiler has a two pass compilation mode which basically records the flow and constructs the conditionals in a way to avoid branch, but you can do this by building a version with two statics counters if (x) { here++; } else { there++; } At the end of the run if you output these numbers then you will know for any given data set the probabilities of taking the branch or not and then invert your test if required. Jim -----Original Message----- From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org] On Behalf Of radoslaw@syskin.cjb.net Sent: 24 January 2003 11:18 To: xvid-devel@xvid.org Subject: Re[4]: [XviD-devel] Quality optimization Hello, Christoph wrote > Yes. MMX has an instruction for that, other CPU ASMs might as well. > If not, prefetch using C is possible, too. There are also other basic > operations which always should be tried before immediately going to ASM: > http://cdrom.amd.com/devconn/events/gdc_2002_amd.pdf Thanks for that. It looks very useful, even though I wasn't able to get any improvement yet. Instead, I looked a bit deeper into code optimization techniques and tools. I downloaded AMD's CodeAnalyst and run some motion estimation tests. I have some questions about it. First thing I noticed: if CodeAnalyst is correct, branch prediction is horrible. In particular in d_mv_bits() there is: if (x) { // 50% incorrect prediction x = ABS(x) // ~40% incorrect prediction ... ... and the same for y. I have 2 questions now. CodeAnalyst requires the library to be built in debug mode, with no optimization. If these results are true, that means that unoptimized library is wrong - I don't care. Does it actually mean (with reasonable probablity) that optimized library has the same problem? And 2. How can I improve branch prediction? In this particular example I have a hint for the compiler: it is _not_ zero. Usually. This hint has better chances to be true than 50%... Do you know better tools to do this stuff? CodeAnalyst ignores asm-ed code, doesn't allow me to run some functions several times (don't ask for details, 300MB needed for a single call of SearchP is a hint here) and so on... Best Regards, Radek _______________________________________________ XviD-devel mailing list XviD-devel@xvid.org http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Fri Jan 24 13:01:24 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sat, 25 Jan 2003 00:01:24 +1100 Subject: [XviD-devel] a new problem! In-Reply-To: <001101c2c35d$6ed67b00$7f14a8c0@zqx> References: <20030124024353.GA1858@fefe.de> <001101c2c35d$6ed67b00$7f14a8c0@zqx> Message-ID: <20030124235125.7343.SUXEN_DROL@hotmail.com> On Fri, 24 Jan 2003 12:02:36 +0800 ??? wrote: > I am studying the decoder of Xvid.When I read the following statement, I felt puzzled: > > if (!BitstreamGetBit(bs)) /* complexity_estimation_disable */ > { > DPRINTF(DPRINTF_ERROR, "complexity_estimation not supported"); > return -1; > } > > According to the bitstream syntax of MEPG4, > it likes that: > if(!complexity_estimation_disable ) > define_vop_complexity_estimation_header(); > > So I think the Xvid decoder has not supportted complexity estimation? Why? incorrect. the dev branch supports c.e. header decoding, but the current stable branch (0.9.0) does not. -- pete; life is like a box of ammo From xvid-devel@xvid.org Fri Jan 24 12:59:57 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Fri, 24 Jan 2003 13:59:57 +0100 Subject: [XviD-devel] some question about xvid and mpeg4 Message-ID: <200301241359.57255.elcabesa@inwind.it> hi i'm another time here to ask you some info aobut xvid and mpeg4 standard 1) What is GME and GMC, i can only guess Global motion camera. for gmc and Global motion estimation. if my guess is right how thyis motion is searched? only by translation, zoom and rotation of image , sometnigh more, something less,or i'm totally out of the way?? 2) qunatizer is a costant for each frame? i looked inside encoder.c and seems to me that it's a value that chagne every frame. so each frame has ony one quantizer. is possible or Mpeg4 compliant change quantizer during a frame? thank'you From xvid-devel@xvid.org Fri Jan 24 13:16:11 2003 From: xvid-devel@xvid.org (James Hauxwell) Date: Fri, 24 Jan 2003 13:16:11 -0000 Subject: [XviD-devel] some question about xvid and mpeg4 In-Reply-To: <200301241359.57255.elcabesa@inwind.it> Message-ID: <003301c2c3aa$c3c5c510$5c0c81a4@enterprise> Yes you can change the quantizer per macroblock. Table B1 has the cbp for the types of block. Section 6.2.6 in the spec describes where it fits in the macroblock() header. I would hope that the encoder is taking advantage of this, as it is the only way to do variable quantization for rate control. If the encoder is not then the quality can be much improved over what it currently is. Jim -----Original Message----- From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org] On Behalf Of elcabesa@inwind.it Sent: 24 January 2003 13:00 To: xvid-devel@xvid.org Subject: [XviD-devel] some question about xvid and mpeg4 hi i'm another time here to ask you some info aobut xvid and mpeg4 standard 1) What is GME and GMC, i can only guess Global motion camera. for gmc and Global motion estimation. if my guess is right how thyis motion is searched? only by translation, zoom and rotation of image , sometnigh more, something less,or i'm totally out of the way?? 2) qunatizer is a costant for each frame? i looked inside encoder.c and seems to me that it's a value that chagne every frame. so each frame has ony one quantizer. is possible or Mpeg4 compliant change quantizer during a frame? thank'you _______________________________________________ XviD-devel mailing list XviD-devel@xvid.org http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Fri Jan 24 13:25:18 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Fri, 24 Jan 2003 14:25:18 +0100 (CET) Subject: Re[4]: [XviD-devel] Quality optimization In-Reply-To: <002c01c2c39d$b3a964a0$5c0c81a4@enterprise> References: <002c01c2c39d$b3a964a0$5c0c81a4@enterprise> Message-ID: <1043414718.3e313ebe238c4@imp.free.fr> You can use the GNU tools from Cygwin. Enable profile (-pg), branch-probabilities (-fbranch-probabilities) and coverage (see the cygwin Makefile) for the lib and your encoder. Then run your program, it will output [source].da and [source].bbg files where the lib has been compiled. When both coevrage and branch probabilities are set, then the coverage file tells you how many times you entered/called each block of code, so you'll be able to see if you use good predictors in if blocks Then i recommend reading man gcov and man gprof. -- Edouard Gomez From xvid-devel@xvid.org Fri Jan 24 13:29:12 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 24 Jan 2003 14:29:12 +0100 (CET) Subject: [XviD-devel] max_bframes>1 (was: Re: Quality optimization) In-Reply-To: <20030124024353.GA1858@fefe.de> Message-ID: On Fri, 24 Jan 2003, Felix von Leitner wrote: > Thus spake Christoph Lampert (chl@math.uni-bonn.de): > > Use a low max_bframes number, like 2 or 3. > > The ffmpeg quality benchmarks clearly showed that setting max_bframes to > more than one was actually bad for quality. So far, my xvid tests > agree. I have found substantial visual quality loss when setting > max_bframes to 2 instead of 1. I haven't tried 3 but I can't imagine it > will be any better than 2. a) What I spoke about was a "brute force" algorithm to detect whether to use B-frames for a scene or not. The "max_bframes" would have been the _maximum_ possible number, not necessarily the number used in the end. b) ffmpeg tests were done with a rather low quantizer for bframes, bquant_factor=1.25, bquant_offset=0.6 So for a fixed quant 4, the bframes would have quant 5, maybe 6. My own tests with ffmpeg showed that a higher quant for bframes can saves enough bit such that the overall quality gets higher (because reference frames have better quality). I tested VQEG-PAL sequences with 0-3 bframes and different settings for factor and offset. A max_b value of 2 won most often. And this was without dynamical setting! gruel From xvid-devel@xvid.org Fri Jan 24 13:36:25 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 24 Jan 2003 14:36:25 +0100 (CET) Subject: Re[4]: [XviD-devel] Quality optimization In-Reply-To: <311554595.20030124214805@syskin.cjb.net> Message-ID: On Fri, 24 Jan 2003, Radek Czyz wrote: > if (x) { // 50% incorrect prediction > x = ABS(x) // ~40% incorrect prediction > ... > ... and the same for y. Where the heck in the code is this line??? > I have 2 questions now. > CodeAnalyst requires the library to be built in debug mode, with no > optimization. If these results are true, that means that unoptimized > library is wrong - I don't care. Does it actually mean (with > reasonable probablity) that optimized library has the same problem? Possibly yes. > And 2. How can I improve branch prediction? In this particular example > I have a hint for the compiler: it is _not_ zero. Usually. This hint > has better chances to be true than 50%... Easy: Remove the if completely :-) x = ABS(x) has just the same effect and should be faster, especially if we modify the ABS macro to not be (x>0):(x):(-x) but something without a branch (is there a bit-logic expression for ABS? for MMX there's this saturation trick...). At least it should become some conditional move instruction on i686 and higher. > Do you know better tools to do this stuff? CodeAnalyst ignores asm-ed > code, doesn't allow me to run some functions several times (don't ask > for details, 300MB needed for a single call of SearchP is a hint here) > and so on... ??? I never had problem with CodeAnalyst to run complete XviD (was an older version, but nevertheless...) Maybe you can switch off some options? gruel From xvid-devel@xvid.org Fri Jan 24 13:40:01 2003 From: xvid-devel@xvid.org (Klaus Post (KPO)) Date: Fri, 24 Jan 2003 14:40:01 +0100 Subject: Re[4]: [XviD-devel] Quality optimization Message-ID: <56BE759D8AF4044493AA7F20CB618903045012@s2.domain.int> Hi folks - first post after lurking some months. Regarding your results, I have some points: - Code does NOT have to be built in debug mode - you only have to create program database. Build in Release mode, with full optimizations. - This is also why you are getting horrible performance on abs(). In Release mode, a special trick is used by MSVC to get the absolute value. This code is non-branching. - In general however, branch prediction is something to be aware of. It's described as "Branching on Random data" in the AMD optimization guides, and means that you should at any time avoid doing data-based branches in inner loops. Conditional moves (cmov) and MMX-masking is a much better solution - but it's already used in most code. - I haven't used NASM for assembler code, but that may be the reason why you have problems profiling assembler code. It could however still be able to show the appropriate values, if you place the start and stop points within the C-code. You should also note that MSVC might inline some assembler, and therefore your assembler might not be triggered the place you'd expect it to be - click the '+' sign on the (assembler) function call and see if the code is actually placed there. Codeanalyst is a very, very powerful tool for finding hotspots. The only problem is that it's relatively slow, when storing data. Regards, Klaus Post AviSynth developer. -----Original Message----- From: Radek Czyz [mailto:radoslaw@syskin.cjb.net] Sent: 24. januar 2003 12:18 To: xvid-devel@xvid.org Subject: Re[4]: [XviD-devel] Quality optimization Hello, Christoph wrote > Yes. MMX has an instruction for that, other CPU ASMs might as well. > If not, prefetch using C is possible, too. There are also other basic > operations which always should be tried before immediately going to ASM: > http://cdrom.amd.com/devconn/events/gdc_2002_amd.pdf Thanks for that. It looks very useful, even though I wasn't able to get any improvement yet. Instead, I looked a bit deeper into code optimization techniques and tools. I downloaded AMD's CodeAnalyst and run some motion estimation tests. I have some questions about it. First thing I noticed: if CodeAnalyst is correct, branch prediction is horrible. In particular in d_mv_bits() there is: if (x) { // 50% incorrect prediction x = ABS(x) // ~40% incorrect prediction ... ... and the same for y. I have 2 questions now. CodeAnalyst requires the library to be built in debug mode, with no optimization. If these results are true, that means that unoptimized library is wrong - I don't care. Does it actually mean (with reasonable probablity) that optimized library has the same problem? And 2. How can I improve branch prediction? In this particular example I have a hint for the compiler: it is _not_ zero. Usually. This hint has better chances to be true than 50%... Do you know better tools to do this stuff? CodeAnalyst ignores asm-ed code, doesn't allow me to run some functions several times (don't ask for details, 300MB needed for a single call of SearchP is a hint here) and so on... Best Regards, Radek _______________________________________________ XviD-devel mailing list XviD-devel@xvid.org http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Fri Jan 24 13:49:36 2003 From: xvid-devel@xvid.org (=?utf-8?B?5byg5bqG5YWI?=) Date: Fri, 24 Jan 2003 21:49:36 +0800 Subject: [XviD-devel] a new problem! References: <20030124024353.GA1858@fefe.de> <001101c2c35d$6ed67b00$7f14a8c0@zqx> <20030124235125.7343.SUXEN_DROL@hotmail.com> Message-ID: <000901c2c3af$6f7d2200$7f14a8c0@zqx> I download the newest source code from xvid.org ! ----- Original Message ----- From: "suxen_drol" To: Sent: Friday, January 24, 2003 9:01 PM Subject: Re: [XviD-devel] a new problem! > > On Fri, 24 Jan 2003 12:02:36 +0800 ??? wrote: > > > I am studying the decoder of Xvid.When I read the following statement, I felt puzzled: > > > > if (!BitstreamGetBit(bs)) /* complexity_estimation_disable */ > > { > > DPRINTF(DPRINTF_ERROR, "complexity_estimation not supported"); > > return -1; > > } > > > > According to the bitstream syntax of MEPG4, > > it likes that: > > if(!complexity_estimation_disable ) > > define_vop_complexity_estimation_header(); > > > > So I think the Xvid decoder has not supportted complexity estimation? Why? > > incorrect. > the dev branch supports c.e. header decoding, but the current stable > branch (0.9.0) does not. > > -- pete; life is like a box of ammo > > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Fri Jan 24 14:02:19 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 24 Jan 2003 15:02:19 +0100 (CET) Subject: [XviD-devel] Return PSNR in new API? Message-ID: Hi, I admit I don't remember the new API exactly, but when thinking about bframes and adaptive learning, I though, we should extend our return values to support more than just what is needed for current two-pass. I though of a new class of flags e.g. STATS_xxx which triggers the creation of encoding statistic and Statistics structure could have entries for them. Currently, filesize and number of INTER/INTRA-blocks, etc. is always calculate, and that's okay because those can be very fast (just a few incs) But e.g. internal PSNR (or rather MSE because it can be done in integers) is also an interesting value to return, and that's not as fast to calculate, so it should only be done if the user wants it (e.g. only in first pass, not in second, or for a "learning" mode, not for final encode, etc.). Therefore a flag STATS_MSE, and the value would be calculated and return in pStats->mse (we might need this flag also during encoder generation, because we need an extra buffer). I'm sure other things are possibole, too. Do we return quantizer distribution within a frame for adaptive quant? Do we return distribution of bits needed for encoding, or average length of motion vectors? This might all be helpful to decide on ratecontrol and/or bframes, etc. MSE/PSNR code is already there, just #ifdef'ed . Any objections to turning #ifdef's into FLAGS ? gruel From xvid-devel@xvid.org Fri Jan 24 14:04:06 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sat, 25 Jan 2003 01:04:06 +1100 Subject: [XviD-devel] some question about xvid and mpeg4 In-Reply-To: <200301241359.57255.elcabesa@inwind.it> References: <200301241359.57255.elcabesa@inwind.it> Message-ID: <20030125010323.40D3.SUXEN_DROL@hotmail.com> On Fri, 24 Jan 2003 13:59:57 +0100 "Marco \"elcabesa\" Belli" wrote: > hi > i'm another time here to ask you some info aobut xvid and mpeg4 standard > > 1) What is GME and GMC, i can only guess Global motion camera. for gmc and > Global motion estimation. if my guess is right how thyis motion is searched? > only by translation, zoom and rotation of image , sometnigh more, something > less,or i'm totally out of the way?? "Global Motion" refers to the process of translating, zooming and rotating the reference frame image, it make it corresond closer to the current frame image. GME and GMC are much like ME (motion estimation) and MC (compensation). Motion estimation refers to finding the best reference macroblock for the current macroblock. Global motion estimation refers to finding the best global motion parametes. The parameters specify the level of zoom and rotation. Motion Compensation: We apply (adding) the reference macroblock (which is found using the motion vector) to the current frame image. Global Motion Compensation: The process applying (adding) the macrblock as it appears in the global-motion-transformed-image to the current frame image. > > 2) qunatizer is a costant for each frame? i looked inside encoder.c and seems > to me that it's a value that chagne every frame. so each frame has ony one > quantizer. > is possible or Mpeg4 compliant change quantizer during a frame? the quantizer can be adjusted on a macroblocck basis, but only by valies of -2,-1,0,+1,+2. xvid uses the this when lummasking/adaptive quantization is enabled. -- pete; life is like a box of ammo From xvid-devel@xvid.org Fri Jan 24 14:08:19 2003 From: xvid-devel@xvid.org (Radek Czyz) Date: Sat, 25 Jan 2003 00:38:19 +1030 Subject: Re[6]: [XviD-devel] Quality optimization In-Reply-To: References: Message-ID: <14211767681.20030125003819@syskin.cjb.net> Hi again, I'm sorry for making all the fuss about CodeAnalyst, but this is the first time I'm using such a tool and I have noone else to ask ;) I was able to run optimized code with it. >> if (x) { // 50% incorrect prediction >> x = ABS(x) // ~40% incorrect prediction >> ... >> ... and the same for y. > Where the heck in the code is this line??? Well, it looks like this: if (x) { x = ABS(x); x += (1 << (iFcode - 1)) - 1; x >>= (iFcode - 1); if (x > 32) x = 32; xb = mvtab[x] + iFcode; } else xb = 1; If I'm correctly reading the output of CodeAnalyst (not that easy, because the function is inlined) the prediction is perfect with optimized code. > I never had problem with CodeAnalyst to run complete XviD (was an older > version, but nevertheless...) Maybe you can switch off some options? Could you give me an easy solution to have access to nasm files? I really don't know how. No asm files are shown in the program, and when I do normal profiling most of cpu time is spent in function "unknown" which I guess are asm functions.... I guess Program Database from VS6 doesn't mention asm files. Best Regards, Radek From xvid-devel@xvid.org Fri Jan 24 14:10:20 2003 From: xvid-devel@xvid.org (Antonin Misek) Date: Fri, 24 Jan 2003 15:10:20 +0100 Subject: [XviD-devel] a new problem! In-Reply-To: <000901c2c3af$6f7d2200$7f14a8c0@zqx> Message-ID: <002c01c2c3b2$545b74b0$1b2ba8c0@cplus07> OK. But in CVS are two versions: 1. stable, 2. development. They are relatively independed but both are XviD. Please read CVS documentation how to choose the right "branch". Default branch is set to stable. TonyMi > -----Původní zpráva----- > Od: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org]za > uživatele ??? > Odesláno: 24. ledna 2003 14:50 > Komu: xvid-devel@xvid.org > PÅ™edmÄ›t: Re: [XviD-devel] a new problem! > > > I download the newest source code from xvid.org ! > ----- Original Message ----- > From: "suxen_drol" > To: > Sent: Friday, January 24, 2003 9:01 PM > Subject: Re: [XviD-devel] a new problem! > > > > > > On Fri, 24 Jan 2003 12:02:36 +0800 ??? wrote: > > > > > I am studying the decoder of Xvid.When I read the following > statement, I felt puzzled: > > > > > > if (!BitstreamGetBit(bs)) /* complexity_estimation_disable */ > > > { > > > DPRINTF(DPRINTF_ERROR, "complexity_estimation not supported"); > > > return -1; > > > } > > > > > > According to the bitstream syntax of MEPG4, > > > it likes that: > > > if(!complexity_estimation_disable ) > > > define_vop_complexity_estimation_header(); > > > > > > So I think the Xvid decoder has not supportted complexity > estimation? Why? > > > > incorrect. > > the dev branch supports c.e. header decoding, but the current stable > > branch (0.9.0) does not. > > > > -- pete; life is like a box of ammo > > > > > > _______________________________________________ > > XviD-devel mailing list > > XviD-devel@xvid.org > > http://list.xvid.org/mailman/listinfo/xvid-devel > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel > From xvid-devel@xvid.org Fri Jan 24 14:09:43 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Fri, 24 Jan 2003 15:09:43 +0100 Subject: [XviD-devel] some question about xvid and mpeg4 In-Reply-To: <003301c2c3aa$c3c5c510$5c0c81a4@enterprise> References: <003301c2c3aa$c3c5c510$5c0c81a4@enterprise> Message-ID: <200301241509.44033.elcabesa@inwind.it> Alle Friday 24 January 2003 14:16, James Hauxwell ha scritto: > Yes you can change the quantizer per macroblock. Table B1 has the cbp > for the types of block. Section 6.2.6 in the spec describes where it > fits in the macroblock() header. I would hope that the encoder is > taking advantage of this, as it is the only way to do variable > quantization for rate control. If the encoder is not then the quality > can be much improved over what it currently is. > > Jim macroblock is 16*16 area? sorry but i'm rather new to video coding=) changing macrobloc quant in darker or "flatter" area won't reduce filesize?? From xvid-devel@xvid.org Fri Jan 24 14:24:00 2003 From: xvid-devel@xvid.org (=?utf-8?B?5byg5bqG5YWI?=) Date: Fri, 24 Jan 2003 22:24:00 +0800 Subject: [XviD-devel] a new problem! References: <20030124024353.GA1858@fefe.de> <001101c2c35d$6ed67b00$7f14a8c0@zqx> <20030124235125.7343.SUXEN_DROL@hotmail.com> Message-ID: <002701c2c3b4$3d1fd0a0$7f14a8c0@zqx> You can tell me how to handle my network application? ----- Original Message ----- From: "suxen_drol" To: Sent: Friday, January 24, 2003 9:01 PM Subject: Re: [XviD-devel] a new problem! > > On Fri, 24 Jan 2003 12:02:36 +0800 ??? wrote: > > > I am studying the decoder of Xvid.When I read the following statement, I felt puzzled: > > > > if (!BitstreamGetBit(bs)) /* complexity_estimation_disable */ > > { > > DPRINTF(DPRINTF_ERROR, "complexity_estimation not supported"); > > return -1; > > } > > > > According to the bitstream syntax of MEPG4, > > it likes that: > > if(!complexity_estimation_disable ) > > define_vop_complexity_estimation_header(); > > > > So I think the Xvid decoder has not supportted complexity estimation? Why? > > incorrect. > the dev branch supports c.e. header decoding, but the current stable > branch (0.9.0) does not. > > -- pete; life is like a box of ammo > > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Fri Jan 24 14:21:35 2003 From: xvid-devel@xvid.org (James Hauxwell) Date: Fri, 24 Jan 2003 14:21:35 -0000 Subject: [XviD-devel] some question about xvid and mpeg4 In-Reply-To: <200301241509.44033.elcabesa@inwind.it> Message-ID: <003401c2c3b3$e735a4d0$5c0c81a4@enterprise> macroblock is 16*16 area? Yes changing macrobloc quant in darker or "flatter" area won't reduce filesize?? Yes it will, as you produce more zero value coefficients, so the VLC does a better job = fewer bits. Jim _______________________________________________ XviD-devel mailing list XviD-devel@xvid.org http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Fri Jan 24 14:40:31 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 24 Jan 2003 15:40:31 +0100 (CET) Subject: Re[6]: [XviD-devel] Quality optimization In-Reply-To: <14211767681.20030125003819@syskin.cjb.net> Message-ID: On Sat, 25 Jan 2003, Radek Czyz wrote: > >> if (x) { // 50% incorrect prediction > >> x = ABS(x) // ~40% incorrect prediction > >> ... > >> ... and the same for y. > > > Where the heck in the code is this line??? > > Well, it looks like this: > > if (x) { > x = ABS(x); > x += (1 << (iFcode - 1)) - 1; > x >>= (iFcode - 1); > if (x > 32) x = 32; > xb = mvtab[x] + iFcode; > } else xb = 1; Oh, okay, so it's more than just the "x=ABS(x)" within the if-block. Then of course, it can't simply be dropped (although one still might find a more clever solution). e.g. result would still be the same if mvtab[0]=1. Can you check how often (x) really _is_ zero? If this is small, below 10% or so, it might be better to do all the stuff regardless what x is. gruel From xvid-devel@xvid.org Fri Jan 24 15:22:02 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Fri, 24 Jan 2003 16:22:02 +0100 (CET) Subject: [XviD-devel] Return PSNR in new API? In-Reply-To: References: Message-ID: <1043421722.3e315a1a89035@imp.free.fr> En réponse à Christoph Lampert : > MSE/PSNR code is already there, just #ifdef'ed . > > Any objections to turning #ifdef's into FLAGS ? Personally, i would be very very happy with this type of stats, because PSNR calculation outside XviD is a bit difficult with bframes. -- Edouard Gomez From xvid-devel@xvid.org Fri Jan 24 15:22:18 2003 From: xvid-devel@xvid.org (Marco Al) Date: Fri, 24 Jan 2003 16:22:18 +0100 Subject: Re[4]: [XviD-devel] Quality optimization References: <56BE759D8AF4044493AA7F20CB618903045012@s2.domain.int> Message-ID: <003801c2c3bc$624210c0$bca45982@student.utwente.nl> Klaus Post (KPO) wrote: > - This is also why you are getting horrible performance on abs(). In > Release mode, a special trick is used by MSVC to get the absolute value. > This code is non-branching. Does that work only for its own instrinsic or can MSVC translate conditional assignments (maybe even if/else statements with small bodies?) to instruction sequences using CMOV instead of conditional jumps? I am pretty sure VC6 didnt do that. Marco From xvid-devel@xvid.org Fri Jan 24 15:25:05 2003 From: xvid-devel@xvid.org (Marco Al) Date: Fri, 24 Jan 2003 16:25:05 +0100 Subject: [XviD-devel] some question about xvid and mpeg4 References: <003401c2c3b3$e735a4d0$5c0c81a4@enterprise> Message-ID: <005801c2c3bc$c56761f0$bca45982@student.utwente.nl> James Hauxwell wrote: > changing macrobloc quant in darker or "flatter" area won't reduce > filesize?? > > Yes it will, as you produce more zero value coefficients, so the VLC > does a better job = fewer bits. But if you save less than 3 bits for a given MB you increase filesize of course, which isnt all that unlikely for motion compensated blocks. Marco From xvid-devel@xvid.org Fri Jan 24 15:32:25 2003 From: xvid-devel@xvid.org (Marco Al) Date: Fri, 24 Jan 2003 16:32:25 +0100 Subject: [XviD-devel] some question about xvid and mpeg4 References: <003401c2c3b3$e735a4d0$5c0c81a4@enterprise> <005801c2c3bc$c56761f0$bca45982@student.utwente.nl> Message-ID: <008401c2c3bd$cbc5fa60$bca45982@student.utwente.nl> Marco Al wrote: > James Hauxwell wrote: > >> changing macrobloc quant in darker or "flatter" area won't reduce >> filesize?? >> >> Yes it will, as you produce more zero value coefficients, so the VLC >> does a better job = fewer bits. > > But if you save less than 3 bits for a given MB you increase filesize of > course, which isnt all that unlikely for motion compensated blocks. I should add that sometimes you can still win out by spreading the bits needed for the DQUANT over multiple MBs but it is impossible to know this will happen without looking ahead. Marco From xvid-devel@xvid.org Fri Jan 24 15:37:09 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 24 Jan 2003 16:37:09 +0100 (CET) Subject: [XviD-devel] some question about xvid and mpeg4 In-Reply-To: <005801c2c3bc$c56761f0$bca45982@student.utwente.nl> Message-ID: On Fri, 24 Jan 2003, Marco Al wrote: > James Hauxwell wrote: > > > changing macrobloc quant in darker or "flatter" area won't reduce > > filesize?? > > > > Yes it will, as you produce more zero value coefficients, so the VLC > > does a better job = fewer bits. > > But if you save less than 3 bits for a given MB you increase filesize of course, > which isnt all that unlikely for motion compensated blocks. Also, you might severely reduce _quality_ when not knowing exactly which blocks to quantizer higher. Neither "flat" nor "dark" are always good choices, because in a dark scene, small errors might be much better visible due to Weber's law (especially on TVs), and in flat areas, the eye is very sensitive to structure, e.g. blocking from too high quantization. The topic of optimal choice of quantizers for every macroblock is very difficult, and not very well understood. gruel From xvid-devel@xvid.org Fri Jan 24 15:43:16 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 24 Jan 2003 16:43:16 +0100 (CET) Subject: [XviD-devel] Return PSNR in new API? In-Reply-To: <1043421722.3e315a1a89035@imp.free.fr> Message-ID: On Fri, 24 Jan 2003, Edouard Gomez wrote: > En réponse à Christoph Lampert : > > MSE/PSNR code is already there, just #ifdef'ed . > > > > Any objections to turning #ifdef's into FLAGS ? > > Personally, i would be very very happy with this type of stats, because PSNR > calculation outside XviD is a bit difficult with bframes. Also possible would be to pass a pointer to an external function to XVID with fixed API (e.g. pointer to 2 images, x/y-dim + stride) and XVID returns the numerical result(s). This could e.g. be good if somebody isn't interested in PSNR, but in "weighted PSNR" etc. Yes, that's not too bad. Add a fields "stat_function()" and "void* stat_results" to encoding API. stat_function would be called after encoding, and it writes it's values to the memory location given by stat_results. As default, stat_function would be NULL and nothing is called at all. But if somebody is interesting in something special, he has full access to all internal structures of XVID (pEnc would be passed to the function). Isn't that was made DivX3.11 survive for so long? That somebody found out how to modify/patch internal values? gruel From xvid-devel@xvid.org Fri Jan 24 18:17:08 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 24 Jan 2003 19:17:08 +0100 (CET) Subject: [XviD-devel] "Generic" plugin mechanism Message-ID: Hi, I noticed that my "idea" of passing a function pointer to XviD core is just the first part of a generic plugin system. Let me just "think aloud": There could be slots within encoding, in particular _before_ and _after_ the main encoding step, where generic functions could be called with access to internal encoder data. Either just one, doing everything it wants, or several, read from a linked list, etc. My idea are things like prefiltering of the input image e.g. with access to adaptive quantization information, maybe also with access to motion data. A PSNR-filter would also be possible (without the codec providing extra infrastructure), by using a pre-slot (buffering the input), and a post-slot (calculating PSNR) together. Of course, such filters could become a part of XVID itself, but since there are so many possible filters around, it might be easier to just write a small wrapper and use a routine which is not a part of the core. XVID could contain a "library" of default filters, but if somebody wants to add and test a new one... no problem. I would like slots for "plugins" as a part of the core, not of VfW etc, because that way, things are more portable to non-Windows plattforms. What do you think? gruel From xvid-devel@xvid.org Fri Jan 24 20:02:24 2003 From: xvid-devel@xvid.org (Marco Al) Date: Fri, 24 Jan 2003 21:02:24 +0100 Subject: [XviD-devel] "Generic" plugin mechanism References: Message-ID: <000e01c2c3e3$82fd0e10$bca45982@student.utwente.nl> Christoph Lampert wrote: > My idea are things like prefiltering of the input image e.g. with access > to adaptive quantization information, maybe also with access to motion > data. Adaptive quantization could be a plugin itself. Personally I think the plugin should be called directly after ME and it should handle everything from MC to transformation and quantization, that way you dont need pre&post slots. You could make some standard full frame MC/quantization/coding routines which would prevent replication of the several loops now present in encoder.c which handle that whenever possible, but still allow almost all pre-processing schemes including the ones interdependent with quantization (adaptive and/or R-D optimized) to use the plugin system. > I would like slots for "plugins" as a part of the core, not of VfW etc, > because that way, things are more portable to non-Windows plattforms. > > What do you think? Dont restrict it to pre-processing, simular modularity is called for for post-processing IMO. Marco From xvid-devel@xvid.org Fri Jan 24 20:35:30 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 24 Jan 2003 21:35:30 +0100 (CET) Subject: [XviD-devel] "Generic" plugin mechanism In-Reply-To: <000e01c2c3e3$82fd0e10$bca45982@student.utwente.nl> Message-ID: On Fri, 24 Jan 2003, Marco Al wrote: > Christoph Lampert wrote: > > > My idea are things like prefiltering of the input image e.g. with access > > to adaptive quantization information, maybe also with access to motion > > data. > > Adaptive quantization could be a plugin itself. Yes, but it doesn't have to. I was rather thinking of stuff that's already there, but not a part of XVID. "general interest" stuff... > Personally I think the plugin should be called directly after ME and Shouldn't ME be done on the already filtered image? Otherwise we need another ME step. > it should handle everything from MC to transformation and > quantization, that way you dont need pre&post slots. You could make > some standard full frame MC/quantization/coding routines which would > prevent replication of the several loops now present in encoder.c > which handle that whenever possible, but still allow almost all > pre-processing schemes including the ones interdependent with > quantization (adaptive and/or R-D optimized) to use the plugin system. Maybe this would be an idea for restructuring encoder_encode() ? I still find it a mess... we don't have to convert everything into function pointers, but a "simpler" encoder_encode() with calls to "modules" could be good. Some of those could be pointered later. > > I would like slots for "plugins" as a part of the core, not of VfW etc, > > because that way, things are more portable to non-Windows plattforms. > > > > What do you think? > > Dont restrict it to pre-processing, simular modularity is called for > for post-processing IMO. Yes, of course... but that's decoder and I was just planning encoder for the moment. gruel From xvid-devel@xvid.org Fri Jan 24 21:06:23 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Fri, 24 Jan 2003 22:06:23 +0100 Subject: [XviD-devel] Automatic benchmark / compile In-Reply-To: References: Message-ID: <20030124210623.GA582@leloo> --AhhlLboLdkugWU4S Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Christoph Lampert (chl@math.uni-bonn.de) wrote: > Since it's very well 20% or more of a difference between "defaults" and > "optimal", I wanted to include a small shell-script into XviD > build/generic that could do some kind of automatic benchmarking and set > compiler option accordingly (or at least output the values, so everyone > can create his own CFLAGS ).=20 Did you test 2 pas compilations with profile-arcs and branch-probabilities turned on ? Perhaps it can solve some problems with wrong random branch optimization like gcc does with 1pass. On my personnal tests with 0.9.0 core, this 2pass compilation did never speed things up (that shows that gcc does a great job with random predictions) but perhaps this is wrong with dev-api-3. You should give it a try. --=20 Edouard Gomez --AhhlLboLdkugWU4S Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+MarPR5dTYz5sWMcRAuNyAKCY0lvjIEZA48pi7lCOSQwpdWQ1mwCglSrN EKjDAZU4WxyBgPSlFT/NjDc= =IbWn -----END PGP SIGNATURE----- --AhhlLboLdkugWU4S-- From xvid-devel@xvid.org Fri Jan 24 23:03:16 2003 From: xvid-devel@xvid.org (Marco Al) Date: Sat, 25 Jan 2003 00:03:16 +0100 Subject: [XviD-devel] "Generic" plugin mechanism References: Message-ID: <005701c2c3fc$c78cbee0$bca45982@student.utwente.nl> Christoph Lampert wrote: > Yes, but it doesn't have to. I was rather thinking of stuff that's > already there, but not a part of XVID. "general interest" stuff... Like say refdivx's adaptive quantization? Or Marc's experiment where he selectively filtered the original image if there was a large DFD? >> Personally I think the plugin should be called directly after ME and > > Shouldn't ME be done on the already filtered image? Otherwise we need > another ME step. Yes, but if you filter the original image (rather than the DFD) you need to know how well MC has worked to be able to determine the filter strength ... doesnt pay to filter something for which MC works perfectly. You might as well use avisynth, the information available to a filter in your scheme is mostly irrelevant. The only remotely usefull information is the quantizer, but it seems more usefull than it is IMO again because you dont know how well MC is working (also a reason why determining DQUANT without taking into account the DFD isnt all that usefull). Now that you mention it it might sometimes be usefull to be able to do operations before the first ME, so I guess IMO all the functions in encoder.c should be plugins ;) >> it should handle everything from MC to transformation and >> quantization, that way you dont need pre&post slots. You could make >> some standard full frame MC/quantization/coding routines which would >> prevent replication of the several loops now present in encoder.c >> which handle that whenever possible, but still allow almost all >> pre-processing schemes including the ones interdependent with >> quantization (adaptive and/or R-D optimized) to use the plugin system. > > Maybe this would be an idea for restructuring encoder_encode() ? > I still find it a mess... we don't have to convert everything into > function pointers, but a "simpler" encoder_encode() with calls to > "modules" could be good. Some of those could be pointered later. Oh definately, with XviD a traditional plugin system doesnt make a whole lot of sense ... better modularization would suit most developers just as well I imagine. I would prefer versioned libcores come to think of it, with the right one being selected by the frontend (VfW or otherwise). This reminds me though of the problem of configuration ... how do you perform platform independent configuration? (A problem for the original scheme too.) Part textfiles, part GUI (in the case of VfW) is a bit ugly ... but too much work to avoid I guess. Marco From xvid-devel@xvid.org Sat Jan 25 02:40:47 2003 From: xvid-devel@xvid.org (Felix von Leitner) Date: Sat, 25 Jan 2003 03:40:47 +0100 Subject: [XviD-devel] Re: Quality optimization In-Reply-To: <311554595.20030124214805@syskin.cjb.net> References: <311554595.20030124214805@syskin.cjb.net> Message-ID: <20030125024046.GB6024@fefe.de> Thus spake Radek Czyz (radoslaw@syskin.cjb.net): > if (x) { // 50% incorrect prediction > x = ABS(x) // ~40% incorrect prediction > ... > ... and the same for y. Good to know! Here is a small piece of code for your consideration: static inline int abs(int x) { return x<0?-x:x; } static inline int newabs(int x) { return (((x>>(sizeof(int)*8-1)) & (x^(-x))) ^ x); } newabs calculates the absolute of a signed integer without branches. Now, whether this is actually faster depends on the architecture and on the actually distribution of the numbers. Here are the timings on my machines (in CPU cycles): Athlon XP Pentium 3 VIA C3 abs(-32769) 24 19 5(20) newabs(-32769) 3 3 8 abs(32769) 0 1 3 newabs(32769) 3 3 8 The VIA C3 value is misleading, because the VIA documentation says the jump takes 12 cycles if mispredicted, yet the VIA branch predictor produces more random results, so the usual outcome is 20, but it was 5 in one of the 10 test runs. The good thing about this algorithm is that it can be done in parallel using MMX, so we can theoretically do abs(X) and abs(Y) simultaneously. > Do you know better tools to do this stuff? CodeAnalyst ignores asm-ed > code, doesn't allow me to run some functions several times (don't ask > for details, 300MB needed for a single call of SearchP is a hint here) > and so on... Maybe we should talk to the Bochs people. They already have a CPU simulator including MMX and SSE, it should be easy for them to output some data about pipeline stalls and branch prediction data once one gives them a cycle profile of the different instructions on the given CPU. Felix From xvid-devel@xvid.org Sat Jan 25 03:59:54 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sat, 25 Jan 2003 14:59:54 +1100 Subject: [XviD-devel] Quality optimization In-Reply-To: <14211767681.20030125003819@syskin.cjb.net> References: <14211767681.20030125003819@syskin.cjb.net> Message-ID: <20030125143811.916E.SUXEN_DROL@hotmail.com> On Sat, 25 Jan 2003 00:38:19 +1030 Radek Czyz wrote: > Hi again, > > I'm sorry for making all the fuss about CodeAnalyst, but this is the > first time I'm using such a tool and I have noone else to ask ;) > I was able to run optimized code with it. > > >> if (x) { // 50% incorrect prediction > >> x = ABS(x) // ~40% incorrect prediction > >> ... > >> ... and the same for y. > > > Where the heck in the code is this line??? > > Well, it looks like this: > > if (x) { > x = ABS(x); > x += (1 << (iFcode - 1)) - 1; > x >>= (iFcode - 1); > if (x > 32) x = 32; > xb = mvtab[x] + iFcode; > } else xb = 1; > > If I'm correctly reading the output of CodeAnalyst (not that easy, > because the function is inlined) the prediction is perfect with > optimized code. > > > I never had problem with CodeAnalyst to run complete XviD (was an older > > version, but nevertheless...) Maybe you can switch off some options? > > Could you give me an easy solution to have access to nasm files? I > really don't know how. No asm files are shown in the program, and when > I do normal profiling most of cpu time is spent in function "unknown" > which I guess are asm functions.... > I guess Program Database from VS6 doesn't mention asm files. nasm has no debug info support, and therefore name function do not appear within code analyst. this is the *only* disadvantage nasm has over inlined assembly. interesting: http://www.tortall.net/projects/yasm/ -- pete; life is like a box of ammo From xvid-devel@xvid.org Sat Jan 25 06:59:04 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sat, 25 Jan 2003 17:59:04 +1100 Subject: [XviD-devel] Makefile.ia64, Makefile.vc In-Reply-To: <20030122213402.2E68.SUXEN_DROL@hotmail.com> References: <20030122213402.2E68.SUXEN_DROL@hotmail.com> Message-ID: <20030125175649.3184.SUXEN_DROL@hotmail.com> On Wed, 22 Jan 2003 21:42:59 +1100 suxen_drol wrote: > also, the following has been iritating for me some time. > Makefile.inc includes a gnu make ifeq() conditional used for ia64. > this breaks non-gnu makes, such as the sgi make or microsoft nmake. > > ive attached a patch, which moves the conditional into Makefile.ia64. > could someone please confirm it works. it looks okay to me, but i need > reassurance. since no one responded, i have applied the patch and added Makefile.vc (for building libxvidcore.a using msvc on the cmd line). ive added xvidcore/INSTALL which describes how to build libxvidcore.[a,so] using make or visual studio. i really do believe we need ./configure now (and a few makefiles for platforms without sh&friends). -- pete From xvid-devel@xvid.org Sat Jan 25 06:12:20 2003 From: xvid-devel@xvid.org (Venkata Tumati) Date: Sat, 25 Jan 2003 01:12:20 -0500 Subject: [XviD-devel] SGI: ERROR 33: Unresolved text symbol "sqrt" In-Reply-To: <20030124230401.833.40574.Mailman@edu.bnhof.de> Message-ID: <001701c2c438$b80a2340$58783b18@hanuman> Hey, When I ran the examples I got the following error. Everything else seemed to work well as far as compiling. I have gcc 3.0.4 and latest version of gmake. > make /usr/sbin/gcc -Wall -Os -I ../src -c xvid_stat.c /usr/sbin/gcc -lc -lm -o xvid_stat xvid_stat.o ../build/generic/libxvidcore.a ld32: WARNING 84: /usr/lib32/libm.so is not used for resolving any symbol. ld32: WARNING 127: Two shared objects with the same soname, /usr/lib32/mips3/libc.so and /usr/lib32/libc.so, have been been linked. This is probably due to a missing -L specification. Ignoring the latter. ld32: ERROR 33: Unresolved text symbol "sqrt" -- 1st referenced by xvid_stat.o. Use linker option -v to see when and which objects, archives and dsos are loaded. ld32: ERROR 33: Unresolved text symbol "log10" -- 1st referenced by xvid_stat.o. Use linker option -v to see when and which objects, archives and dsos are loaded. ld32: INFO 152: Output file removed because of error. collect2: ld returned 2 exit status make: *** [xvid_stat] Error 1 Venkata From xvid-devel@xvid.org Sat Jan 25 10:39:42 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 25 Jan 2003 11:39:42 +0100 (CET) Subject: [XviD-devel] "Generic" plugin mechanism In-Reply-To: <005701c2c3fc$c78cbee0$bca45982@student.utwente.nl> Message-ID: On Sat, 25 Jan 2003, Marco Al wrote: > I would prefer versioned libcores come to think of it, with the right one being > selected by the frontend (VfW or otherwise). This reminds me though of the > problem of configuration ... how do you perform platform independent > configuration? (A problem for the original scheme too.) Part textfiles, part GUI > (in the case of VfW) is a bit ugly ... but too much work to avoid I guess. Simple: Let every GUI write a textfile and things are compatible again. gruel From xvid-devel@xvid.org Sat Jan 25 10:40:23 2003 From: xvid-devel@xvid.org (Stephan Krause) Date: Sat, 25 Jan 2003 11:40:23 +0100 Subject: [XviD-devel] Makefile.ia64, Makefile.vc In-Reply-To: <20030125175649.3184.SUXEN_DROL@hotmail.com> References: <20030122213402.2E68.SUXEN_DROL@hotmail.com> <20030125175649.3184.SUXEN_DROL@hotmail.com> Message-ID: suxen_drol wrote: > since no one responded, i have applied the patch and added Makefile.vc > (for building libxvidcore.a using msvc on the cmd line). > ive added xvidcore/INSTALL which describes how to build > libxvidcore.[a,so] using make or visual studio. Sorry for not answering (Yes, there is still someone alive who cares about the ia64 stuff, but not with much time...) The patch seems ok to me, it's much better that way. Stephan -- Sig fault. (core dumped) From xvid-devel@xvid.org Sat Jan 25 10:41:55 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 25 Jan 2003 11:41:55 +0100 (CET) Subject: [XviD-devel] Re: Quality optimization In-Reply-To: <20030125024046.GB6024@fefe.de> Message-ID: On Sat, 25 Jan 2003, Felix von Leitner wrote: > Here is a small piece of code for your consideration: > > static inline int abs(int x) { return x<0?-x:x; } > > static inline int newabs(int x) { > return (((x>>(sizeof(int)*8-1)) & (x^(-x))) ^ x); > } > > newabs calculates the absolute of a signed integer without branches. > > ... > The good thing about this algorithm is that it can be done in parallel > using MMX, so we can theoretically do abs(X) and abs(Y) simultaneously. Since MMX can subtract with saturation, calcuting several abs with MMX is very simple and fast already. gruel From xvid-devel@xvid.org Sat Jan 25 10:43:32 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 25 Jan 2003 11:43:32 +0100 (CET) Subject: [XviD-devel] SGI: ERROR 33: Unresolved text symbol "sqrt" In-Reply-To: <001701c2c438$b80a2340$58783b18@hanuman> Message-ID: On Sat, 25 Jan 2003, Venkata Tumati wrote: > Hey, > When I ran the examples I got the following error. Everything else > seemed to work well as far as compiling. I have gcc 3.0.4 and latest > version of gmake. You have to compile with math-lib, gcc -lm ... gruel From xvid-devel@xvid.org Sat Jan 25 14:10:10 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 25 Jan 2003 15:10:10 +0100 (CET) Subject: [XviD-devel] Something to read: Rate-Distorsion optimization Message-ID: Hi, since I know that all of you are extremely eager to learn new stuff >;-> so here are a few links if you are interested in "Rate Distorsion Optimization" which covers e.g. "Optimal" Adaptive Quantization, "Optimal" Quantization (like ffmpeg's trellis) and "Optimal" Mode Decision. It's also the background for the constants we penalize long vectors in motion estimation etc. http://citeseer.nj.nec.com/sullivan98ratedistortion.html (rather good overview in the beginning) ftp://standards.pictel.com/video-site/9804_Tam/q15d40.doc (Trellis) http://bs.hhi.de/~wiegand/ICG-Project-RDO.html (full RD0, have a look at the link to "MPEG-4 (Download proposal)" ) gruel From xvid-devel@xvid.org Sat Jan 25 14:12:04 2003 From: xvid-devel@xvid.org (Marco Al) Date: Sat, 25 Jan 2003 15:12:04 +0100 Subject: [XviD-devel] "Generic" plugin mechanism References: Message-ID: <003601c2c47b$bc8576c0$bca45982@student.utwente.nl> Christoph Lampert wrote: > On Sat, 25 Jan 2003, Marco Al wrote: >> I would prefer versioned libcores come to think of it, with the right one >> being selected by the frontend (VfW or otherwise). This reminds me though of >> the problem of configuration ... how do you perform platform independent >> configuration? (A problem for the original scheme too.) Part textfiles, part >> GUI (in the case of VfW) is a bit ugly ... but too much work to avoid I >> guess. > > Simple: Let every GUI write a textfile and things are compatible again. Programming a GUI which could configure any version/plugin (all with different sets of relevant parameters) would be a nightmare, unless you intend to create a plugin system for the front ends :) Marco From xvid-devel@xvid.org Sat Jan 25 14:11:33 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Sat, 25 Jan 2003 15:11:33 +0100 Subject: [XviD-devel] PSNR question/bug Message-ID: <200301251511.33725.elcabesa@inwind.it> looking inside image.c i found psnr fouction, after calc of sum of (diff)^2 you make psnr_y=255*255/result andthen SNR = 10 log10(psnr_y) is this right?? isn't better do psnr_y =sum (diff)^2 s= sum (original pixel) ^2 snr= s/psnr; SNR =10 log10(snr); a code doing this is this image_psnr(IMAGE * orig_image, IMAGE * recon_image, uint16_t stride, uint16_t width, uint16_t height) { int32_t diff, x, y, quad = 0; uint8_t *orig = orig_image->y; uint8_t *recon = recon_image->y; float psnr_y; float s=0; for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { diff = *(orig + x) - *(recon + x); quad += diff * diff; s+=*(orig + x)**(orig + x); } orig += stride; recon += stride; } psnr_y = quad; if (psnr_y) { psnr_y = s/psnr_y; psnr_y = 10 * (float) log10(psnr_y); } else psnr_y = (float) 99.99; return psnr_y; } From xvid-devel@xvid.org Sat Jan 25 14:50:58 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 25 Jan 2003 15:50:58 +0100 (CET) Subject: [XviD-devel] PSNR question/bug In-Reply-To: <200301251511.33725.elcabesa@inwind.it> Message-ID: On Sat, 25 Jan 2003, Marco "elcabesa" Belli wrote: > looking inside image.c i found psnr fouction, after calc of sum of (diff)^2 > you make psnr_y=255*255/result > andthen SNR = 10 log10(psnr_y) > > is this right?? > > isn't better do > > psnr_y =sum (diff)^2 > s= sum (original pixel) ^2 > > snr= s/psnr; > SNR =10 log10(snr); ^^^^^^^^^^ That's indeed "SNR". PSNR (if you translate it as "Peak Signal-to-Noise-Ratio", not "Picture Signal-to-Noise-Ratio") is with 255, because that's the maximal=peak value. SNR might fail misably, because an error of 64 in a medium grey area (128) would get the same error value as an error of 1 in an almost black area(2). It's the usual difference, whether you want to consider "absolute" error, or "relative error". gruel From xvid-devel@xvid.org Sat Jan 25 14:54:09 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 25 Jan 2003 15:54:09 +0100 (CET) Subject: [XviD-devel] "Generic" plugin mechanism In-Reply-To: <003601c2c47b$bc8576c0$bca45982@student.utwente.nl> Message-ID: On Sat, 25 Jan 2003, Marco Al wrote: > Christoph Lampert wrote: > > On Sat, 25 Jan 2003, Marco Al wrote: > >> I would prefer versioned libcores come to think of it, with the right one > >> being selected by the frontend (VfW or otherwise). This reminds me though of > >> the problem of configuration ... how do you perform platform independent > >> configuration? (A problem for the original scheme too.) Part textfiles, part > >> GUI (in the case of VfW) is a bit ugly ... but too much work to avoid I > >> guess. > > > > Simple: Let every GUI write a textfile and things are compatible again. > > Programming a GUI which could configure any version/plugin (all with > different sets of relevant parameters) would be a nightmare, unless > you intend to create a plugin system for the front ends :) Oh, you meant the configuration of plugins? I don't know. I wanted to have the calling application take care of that, as it's done now with Codec configuration. I guess having a textfile for every plugin would be simplest solution. If this cannot be handled conveniently by a GUI, then users at least have to choice of using "notepad.exe" ;-) gruel From xvid-devel@xvid.org Sat Jan 25 15:01:43 2003 From: xvid-devel@xvid.org (Venkata Tumati) Date: Sat, 25 Jan 2003 10:01:43 -0500 Subject: [XviD-devel] SGI: ERROR 33: Unresolved text symbol "sqrt" In-Reply-To: <20030125110002.27370.59424.Mailman@edu.bnhof.de> Message-ID: <001e01c2c482$ac566190$58783b18@hanuman> >You have to compile with math-lib, gcc -lm ... The makefile already has that set so when I compile. LDFLAGS = -lc -lm /usr/sbin/gcc -Wall -Os -I ../src -c xvid_stat.c /usr/sbin/gcc -lc -lm -o xvid_stat xvid_stat.o is there something else I am supposed to do? -venkata -----Original Message----- From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org] On Behalf Of xvid-devel-request@xvid.org Sent: Saturday, January 25, 2003 6:00 AM To: xvid-devel@xvid.org Subject: XviD-devel digest, Vol 1 #283 - 8 msgs Send XviD-devel mailing list submissions to xvid-devel@xvid.org To subscribe or unsubscribe via the World Wide Web, visit http://list.xvid.org/mailman/listinfo/xvid-devel or, via email, send a message with subject or body 'help' to xvid-devel-request@xvid.org You can reach the person managing the list at xvid-devel-admin@xvid.org When replying, please edit your Subject line so it is more specific than "Re: Contents of XviD-devel digest..." Today's Topics: 1. Re: Quality optimization (Felix von Leitner) 2. Re: Quality optimization (suxen_drol) 3. Makefile.ia64, Makefile.vc (suxen_drol) 4. SGI: ERROR 33: Unresolved text symbol "sqrt" (Venkata Tumati) 5. Re: "Generic" plugin mechanism (Christoph Lampert) 6. Re: Makefile.ia64, Makefile.vc (Stephan Krause) 7. Re: Re: Quality optimization (Christoph Lampert) 8. Re: SGI: ERROR 33: Unresolved text symbol "sqrt" (Christoph Lampert) --__--__-- Message: 1 Date: Sat, 25 Jan 2003 03:40:47 +0100 From: Felix von Leitner To: xvid-devel@xvid.org Subject: [XviD-devel] Re: Quality optimization Reply-To: xvid-devel@xvid.org Thus spake Radek Czyz (radoslaw@syskin.cjb.net): > if (x) { // 50% incorrect prediction > x = ABS(x) // ~40% incorrect prediction > ... > ... and the same for y. Good to know! Here is a small piece of code for your consideration: static inline int abs(int x) { return x<0?-x:x; } static inline int newabs(int x) { return (((x>>(sizeof(int)*8-1)) & (x^(-x))) ^ x); } newabs calculates the absolute of a signed integer without branches. Now, whether this is actually faster depends on the architecture and on the actually distribution of the numbers. Here are the timings on my machines (in CPU cycles): Athlon XP Pentium 3 VIA C3 abs(-32769) 24 19 5(20) newabs(-32769) 3 3 8 abs(32769) 0 1 3 newabs(32769) 3 3 8 The VIA C3 value is misleading, because the VIA documentation says the jump takes 12 cycles if mispredicted, yet the VIA branch predictor produces more random results, so the usual outcome is 20, but it was 5 in one of the 10 test runs. The good thing about this algorithm is that it can be done in parallel using MMX, so we can theoretically do abs(X) and abs(Y) simultaneously. > Do you know better tools to do this stuff? CodeAnalyst ignores asm-ed > code, doesn't allow me to run some functions several times (don't ask > for details, 300MB needed for a single call of SearchP is a hint here) > and so on... Maybe we should talk to the Bochs people. They already have a CPU simulator including MMX and SSE, it should be easy for them to output some data about pipeline stalls and branch prediction data once one gives them a cycle profile of the different instructions on the given CPU. Felix --__--__-- Message: 2 Date: Sat, 25 Jan 2003 14:59:54 +1100 From: suxen_drol To: xvid-devel@xvid.org Subject: Re: [XviD-devel] Quality optimization Reply-To: xvid-devel@xvid.org On Sat, 25 Jan 2003 00:38:19 +1030 Radek Czyz wrote: > Hi again, > > I'm sorry for making all the fuss about CodeAnalyst, but this is the > first time I'm using such a tool and I have noone else to ask ;) > I was able to run optimized code with it. > > >> if (x) { // 50% incorrect prediction > >> x = ABS(x) // ~40% incorrect prediction > >> ... > >> ... and the same for y. > > > Where the heck in the code is this line??? > > Well, it looks like this: > > if (x) { > x = ABS(x); > x += (1 << (iFcode - 1)) - 1; > x >>= (iFcode - 1); > if (x > 32) x = 32; > xb = mvtab[x] + iFcode; > } else xb = 1; > > If I'm correctly reading the output of CodeAnalyst (not that easy, > because the function is inlined) the prediction is perfect with > optimized code. > > > I never had problem with CodeAnalyst to run complete XviD (was an older > > version, but nevertheless...) Maybe you can switch off some options? > > Could you give me an easy solution to have access to nasm files? I > really don't know how. No asm files are shown in the program, and when > I do normal profiling most of cpu time is spent in function "unknown" > which I guess are asm functions.... > I guess Program Database from VS6 doesn't mention asm files. nasm has no debug info support, and therefore name function do not appear within code analyst. this is the *only* disadvantage nasm has over inlined assembly. interesting: http://www.tortall.net/projects/yasm/ -- pete; life is like a box of ammo --__--__-- Message: 3 Date: Sat, 25 Jan 2003 17:59:04 +1100 From: suxen_drol To: xvid-devel@xvid.org Subject: [XviD-devel] Makefile.ia64, Makefile.vc Reply-To: xvid-devel@xvid.org On Wed, 22 Jan 2003 21:42:59 +1100 suxen_drol wrote: > also, the following has been iritating for me some time. > Makefile.inc includes a gnu make ifeq() conditional used for ia64. > this breaks non-gnu makes, such as the sgi make or microsoft nmake. > > ive attached a patch, which moves the conditional into Makefile.ia64. > could someone please confirm it works. it looks okay to me, but i need > reassurance. since no one responded, i have applied the patch and added Makefile.vc (for building libxvidcore.a using msvc on the cmd line). ive added xvidcore/INSTALL which describes how to build libxvidcore.[a,so] using make or visual studio. i really do believe we need ./configure now (and a few makefiles for platforms without sh&friends). -- pete --__--__-- Message: 4 From: "Venkata Tumati" To: Date: Sat, 25 Jan 2003 01:12:20 -0500 Subject: [XviD-devel] SGI: ERROR 33: Unresolved text symbol "sqrt" Reply-To: xvid-devel@xvid.org Hey, When I ran the examples I got the following error. Everything else seemed to work well as far as compiling. I have gcc 3.0.4 and latest version of gmake. > make /usr/sbin/gcc -Wall -Os -I ../src -c xvid_stat.c /usr/sbin/gcc -lc -lm -o xvid_stat xvid_stat.o ../build/generic/libxvidcore.a ld32: WARNING 84: /usr/lib32/libm.so is not used for resolving any symbol. ld32: WARNING 127: Two shared objects with the same soname, /usr/lib32/mips3/libc.so and /usr/lib32/libc.so, have been been linked. This is probably due to a missing -L specification. Ignoring the latter. ld32: ERROR 33: Unresolved text symbol "sqrt" -- 1st referenced by xvid_stat.o. Use linker option -v to see when and which objects, archives and dsos are loaded. ld32: ERROR 33: Unresolved text symbol "log10" -- 1st referenced by xvid_stat.o. Use linker option -v to see when and which objects, archives and dsos are loaded. ld32: INFO 152: Output file removed because of error. collect2: ld returned 2 exit status make: *** [xvid_stat] Error 1 Venkata --__--__-- Message: 5 Date: Sat, 25 Jan 2003 11:39:42 +0100 (CET) From: Christoph Lampert To: xvid-devel@xvid.org Subject: Re: [XviD-devel] "Generic" plugin mechanism Reply-To: xvid-devel@xvid.org On Sat, 25 Jan 2003, Marco Al wrote: > I would prefer versioned libcores come to think of it, with the right one being > selected by the frontend (VfW or otherwise). This reminds me though of the > problem of configuration ... how do you perform platform independent > configuration? (A problem for the original scheme too.) Part textfiles, part GUI > (in the case of VfW) is a bit ugly ... but too much work to avoid I guess. Simple: Let every GUI write a textfile and things are compatible again. gruel --__--__-- Message: 6 From: Stephan Krause To: xvid-devel@xvid.org Subject: Re: [XviD-devel] Makefile.ia64, Makefile.vc Date: Sat, 25 Jan 2003 11:40:23 +0100 Reply-To: xvid-devel@xvid.org suxen_drol wrote: > since no one responded, i have applied the patch and added Makefile.vc > (for building libxvidcore.a using msvc on the cmd line). > ive added xvidcore/INSTALL which describes how to build > libxvidcore.[a,so] using make or visual studio. Sorry for not answering (Yes, there is still someone alive who cares about the ia64 stuff, but not with much time...) The patch seems ok to me, it's much better that way. Stephan -- Sig fault. (core dumped) --__--__-- Message: 7 Date: Sat, 25 Jan 2003 11:41:55 +0100 (CET) From: Christoph Lampert To: xvid-devel@xvid.org Subject: Re: [XviD-devel] Re: Quality optimization Reply-To: xvid-devel@xvid.org On Sat, 25 Jan 2003, Felix von Leitner wrote: > Here is a small piece of code for your consideration: > > static inline int abs(int x) { return x<0?-x:x; } > > static inline int newabs(int x) { > return (((x>>(sizeof(int)*8-1)) & (x^(-x))) ^ x); > } > > newabs calculates the absolute of a signed integer without branches. > > ... > The good thing about this algorithm is that it can be done in parallel > using MMX, so we can theoretically do abs(X) and abs(Y) simultaneously. Since MMX can subtract with saturation, calcuting several abs with MMX is very simple and fast already. gruel --__--__-- Message: 8 Date: Sat, 25 Jan 2003 11:43:32 +0100 (CET) From: Christoph Lampert To: xvid-devel@xvid.org Subject: Re: [XviD-devel] SGI: ERROR 33: Unresolved text symbol "sqrt" Reply-To: xvid-devel@xvid.org On Sat, 25 Jan 2003, Venkata Tumati wrote: > Hey, > When I ran the examples I got the following error. Everything else > seemed to work well as far as compiling. I have gcc 3.0.4 and latest > version of gmake. You have to compile with math-lib, gcc -lm ... gruel --__--__-- _______________________________________________ XviD-devel mailing list XviD-devel@xvid.org http://list.xvid.org/mailman/listinfo/xvid-devel End of XviD-devel Digest From xvid-devel@xvid.org Sat Jan 25 14:59:12 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Sat, 25 Jan 2003 15:59:12 +0100 Subject: [XviD-devel] PSNR question/bug In-Reply-To: References: Message-ID: <200301251559.12187.elcabesa@inwind.it> understood.. but i doesn't like it too much... =) another question. what is a good psnr you can achieve?? couse i'm triing fixed quant =1 and i can only get a 30-40 psnr From xvid-devel@xvid.org Sat Jan 25 15:05:57 2003 From: xvid-devel@xvid.org (=?iso-8859-1?Q?R=E9mi?= Guyomarch) Date: Sat, 25 Jan 2003 16:05:57 +0100 Subject: [XviD-devel] Re: PSNR question/bug In-Reply-To: <200301251511.33725.elcabesa@inwind.it> References: <200301251511.33725.elcabesa@inwind.it> Message-ID: <20030125150557.GB66257@diabolic-cow.chatgris.net> On Sat, Jan 25, 2003 at 03:11:33PM +0100, Marco elcabesa Belli wrote: > looking inside image.c i found psnr fouction, after calc of sum of (diff)^2 > you make psnr_y=255*255/result > andthen SNR = 10 log10(psnr_y) > > is this right?? > > isn't better do > > psnr_y =sum (diff)^2 > s= sum (original pixel) ^2 > > snr= s/psnr; > SNR =10 log10(snr); Why an error of X in a realtively bright pixel whould be more "important" than the same X error on a relatively dark pixel ? (or the reverse, I don't recall if Y=255 means white or black) Even if it was the case, think about Cb and Cr ... -- Rémi From xvid-devel@xvid.org Sat Jan 25 15:11:15 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Sat, 25 Jan 2003 16:11:15 +0100 Subject: [XviD-devel] PSNR question/bug In-Reply-To: <200301251559.12187.elcabesa@inwind.it> References: <200301251559.12187.elcabesa@inwind.it> Message-ID: <200301251611.15736.elcabesa@inwind.it> after some calc.. i understood that 40 is a good PSNR using only 8 bit for y=) From xvid-devel@xvid.org Sat Jan 25 15:28:15 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 25 Jan 2003 16:28:15 +0100 (CET) Subject: [XviD-devel] SGI: ERROR 33: Unresolved text symbol "sqrt" In-Reply-To: <001e01c2c482$ac566190$58783b18@hanuman> Message-ID: On Sat, 25 Jan 2003, Venkata Tumati wrote: > >You have to compile with math-lib, gcc -lm ... > The makefile already has that set so when I compile. Yes, that would have been my first guess, too. > LDFLAGS = -lc -lm > /usr/sbin/gcc -Wall -Os -I ../src -c xvid_stat.c > /usr/sbin/gcc -lc -lm -o xvid_stat xvid_stat.o > > is there something else I am supposed to do? Hm, strange. Maybe you have to use a different order? Try if /usr/sbin/gcc -o xvid_stat xvid_stat.o -lm -lc is different from /usr/sbin/gcc -lc -lm -o xvid_stat xvid_stat.o On gcc Linux, it sometimes matters... :( gruel From xvid-devel@xvid.org Sat Jan 25 15:32:45 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 25 Jan 2003 16:32:45 +0100 (CET) Subject: [XviD-devel] PSNR question/bug In-Reply-To: <200301251611.15736.elcabesa@inwind.it> Message-ID: On Sat, 25 Jan 2003, Marco "elcabesa" Belli wrote: > after some calc.. i understood that 40 is a good PSNR using only 8 bit for y=) I guess PSNR above 40 has hardly any visible erorr (in realistic scenarios; it's surely possible to create a picture where PSNR of 40 looks horrible). But you cannot really say PSNR of 36 for one scene is better than 33 for another etc., that depends on too many factors. In generally, clips with more "structure" (hair, grass) have lower PSNR, because more high frequencies are quantized away, but these are also less visible, so the visual quality might even be better. Compare PSNR only for different encodings of the same clip, and you are on the safe side. gruel From xvid-devel@xvid.org Sat Jan 25 15:35:25 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 25 Jan 2003 16:35:25 +0100 (CET) Subject: [XviD-devel] Deblocking metrics Message-ID: Hi, did anyone ever test "deblocking" in DCT domain? Or maybe in image domain, but with direct effect on the resulting bitstream (supposed to mean: not only in postpressing). gruel From xvid-devel@xvid.org Sat Jan 25 16:56:46 2003 From: xvid-devel@xvid.org (Stephan Krause) Date: Sat, 25 Jan 2003 17:56:46 +0100 Subject: [XviD-devel] ia64-Patch Message-ID: --------------Boundary-00=_ME4AM1EJX5Q30ULR7O5B Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 8bit Hi, after a longer time i checked the code for ia64 compatibility, and it did segfault in mbcoding. Reason was a uint32 which became -1. On 32bit-Platforms this is not a Problem, but on ia64 this isn't a really good idea. Using ptr_t instead of uint32 does help (on x86, ptr_t is just the same as uint32_t) And for it seems I (ia64p) have lost my write access to the cvs, patch is attached. Stephan -- Sig fault. (core dumped) --------------Boundary-00=_ME4AM1EJX5Q30ULR7O5B Content-Type: text/x-diff; charset="iso-8859-15"; name="ia64patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ia64patch" SW5kZXg6IHNyYy9iaXRzdHJlYW0vbWJjb2RpbmcuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAveHZp ZC94dmlkY29yZS9zcmMvYml0c3RyZWFtL21iY29kaW5nLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9u IDEuMzgKZGlmZiAtcjEuMzggbWJjb2RpbmcuYwo5N2M5Nwo8ICAgICAgIHVpbnQzMl90IGksIGos IGludHJhLCBsYXN0LCBydW4sICBydW5fZXNjLCBsZXZlbCwgbGV2ZWxfZXNjLCBlc2NhcGUsIGVz Y2FwZV9sZW4sIG9mZnNldDsKLS0tCj4gICAgICAgcHRyX3QgaSwgaiwgaW50cmEsIGxhc3QsIHJ1 biwgcnVuX2VzYywgbGV2ZWwsIGxldmVsX2VzYywgZXNjYXBlLCBlc2NhcGVfbGVuLCBvZmZzZXQ7 Cg== --------------Boundary-00=_ME4AM1EJX5Q30ULR7O5B-- From xvid-devel@xvid.org Sat Jan 25 17:42:46 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sat, 25 Jan 2003 18:42:46 +0100 (CET) Subject: [XviD-devel] ia64-Patch In-Reply-To: Message-ID: On Sat, 25 Jan 2003, Stephan Krause wrote: > Hi, > > after a longer time i checked the code for ia64 compatibility, and it did > segfault in mbcoding. Reason was a uint32 which became -1. On 32bit-Platforms > this is not a Problem, but on ia64 this isn't a really good idea. Using ptr_t > instead of uint32 does help (on x86, ptr_t is just the same as uint32_t) Yes, we should really take more care about correct types, in particular with "64bit for everybody" around the corner: My suggestion: * Use "natural" types where possible. Use "int" instead of int32_t, etc., unless the size matters (which it almost never does). The _size_ of structures doesn't have to be the same on every plattform... * Of course, things like "uint8_t" for 8bit images and "int16_t" for DCT data must be the same, but e.g. length of MV entries doesn't have to. I doubt that XVID will ever run successfully on a machine with 16bit integers, so range should always be sufficient... * Use unsigned int for loop counters (I read somewhere that it's faster), unless they become negative, of course. * When in doubt, use signed types (in particular SAD-values, MVs) * For status values, used signed types (speed doesn't matter there, and often negative values are useful to indicate errors. * Use _signed_ for stride values, they are a "relative" value and might become negative. * For hacks which use bit-patterns etc. to speed up calculation, use "sizeof()", or define plattform dependent macros in portab.h Better ideas? gruel From xvid-devel@xvid.org Sat Jan 25 21:58:40 2003 From: xvid-devel@xvid.org (Marco Al) Date: Sat, 25 Jan 2003 22:58:40 +0100 Subject: [XviD-devel] Something to read: Rate-Distorsion optimization References: Message-ID: <008501c2c4bc$eb8e1c10$bca45982@student.utwente.nl> Christoph Lampert wrote: > ftp://standards.pictel.com/video-site/9804_Tam/q15d40.doc (Trellis) Their papers are on http://www.icsl.ucla.edu/~ipl/ BTW. Marco From xvid-devel@xvid.org Sat Jan 25 22:16:11 2003 From: xvid-devel@xvid.org (Marco Al) Date: Sat, 25 Jan 2003 23:16:11 +0100 Subject: [XviD-devel] Deblocking metrics References: Message-ID: <009f01c2c4bf$5e4fa230$bca45982@student.utwente.nl> Christoph Lampert wrote: > did anyone ever test "deblocking" in DCT domain? Or maybe in image domain, > but with direct effect on the resulting bitstream (supposed to mean: not > only in postpressing). Some people have added noise to prevent blocking, look around the Doom9 boards, a possible theoretical justification for doing so can be found at http://www.nd.edu/~lisa/mrobert2/icip2001.pdf Personally I find the whole thing icky though ... Id rather see the approach from http://www-it.et.tudelft.nl/~inald/pubs/Image%20Quality/Adaptive%20spatial%20noi se%20shaping%20for%20DCT%20based%20image%20compression%201996.pdf Or possibly the approach from"Spatial shaping: a fully compatible improvement of DCT coding" which it references. But I cant get a hold of that paper online (well I could, but it would cost me a couple of euros :). Marco From xvid-devel@xvid.org Sat Jan 25 23:27:39 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 26 Jan 2003 00:27:39 +0100 (CET) Subject: [XviD-devel] Return PSNR in new API? In-Reply-To: <1043421722.3e315a1a89035@imp.free.fr> Message-ID: On Fri, 24 Jan 2003, Edouard Gomez wrote: > En réponse à Christoph Lampert : > > MSE/PSNR code is already there, just #ifdef'ed . > > > > Any objections to turning #ifdef's into FLAGS ? > > Personally, i would be very very happy with this type of stats, because PSNR > calculation outside XviD is a bit difficult with bframes. It seems to be difficult within XVID, too. Internal PSNR doesn't work for Bframes (or I do something wrong...). gruel From xvid-devel@xvid.org Sun Jan 26 00:29:18 2003 From: xvid-devel@xvid.org (Marco Al) Date: Sun, 26 Jan 2003 01:29:18 +0100 Subject: [XviD-devel] More to read, Global Motion Estimation (and pre/post-processing) Message-ID: <00e501c2c4d1$f6ac9670$bca45982@student.utwente.nl> Stumbled across the following paper, and it was so close to what Gruel is trying to do in XviD that I thought Id point it out ... http://www.lnt.de/~kaup/paper/acm-99.pdf Marco PS. Also off note from the same author is a bit stream compatible pre/post processing method to mitigate DCT coding artifacts simular to the Dolby system for audio (ie. pre-emphasis at the encoder and de-emphasis at the decoder) and a paper on a generic post-processing method which seems to work pretty well : http://www.lnt.de/~kaup/paper/digicomp-96.pdf http://www.lnt.de/~kaup/paper/sp-2000.pdf From xvid-devel@xvid.org Sun Jan 26 00:56:53 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sun, 26 Jan 2003 11:56:53 +1100 Subject: [XviD-devel] Return PSNR in new API? In-Reply-To: References: <1043421722.3e315a1a89035@imp.free.fr> Message-ID: <20030126114037.08D3.SUXEN_DROL@hotmail.com> On Sun, 26 Jan 2003 00:27:39 +0100 (CET) Christoph Lampert wrote: > On Fri, 24 Jan 2003, Edouard Gomez wrote: > > > En réponse à Christoph Lampert : > > > MSE/PSNR code is already there, just #ifdef'ed . > > > > > > Any objections to turning #ifdef's into FLAGS ? > > > > Personally, i would be very very happy with this type of stats, because PSNR > > calculation outside XviD is a bit difficult with bframes. > > It seems to be difficult within XVID, too. Internal PSNR doesn't work for > Bframes (or I do something wrong...). > > gruel it doesnt work with bframes because we perform psnr calcs inside the scheduler (the encoder_encoder and encoder_encode_bframes). possible solutions: a) call image_copy and image_psnr inside FrameCodeI/P/B, or b) place an intermediate function between the scheduler and FrameCodeI/P/B. ie. FrameCode(FrameCodeXFunc * FrameCodeX ..., FRAMEINFO * frame) { #ifdef _DEBUG_PSNR image_copy(&pEnc->sOriginal, &pEnc->frame, pEnc->mbParam.edged_width, pEnc->mbParam.height); #endif FrameCodeX( ... ); /* or we could use a vop_type switch */ #ifdef _DEBUG_PSNR frame->psnr = image_psnr(&pEnc->sOriginal, &frame->image, pEnc->mbParam.edged_width, pEnc->mbParam.width, pEnc->mbParam.height); #emdif } option b) is better imho. also: i have some code ready which moves the BitstreamInit & BitstreamLength stuff into a similar generic-FrameCode function, and store the frame length into FRAMEINFO->length. the idea being that we call the "new/coming-soon" RateControlUpdate() function purely with the FRAMEINFO struct. -- pete; life is like a box of ammo From xvid-devel@xvid.org Sun Jan 26 00:57:31 2003 From: xvid-devel@xvid.org (Venkata Tumati) Date: Sat, 25 Jan 2003 19:57:31 -0500 Subject: [XviD-devel] SGI: xvid_decraw core dump In-Reply-To: <20030125174301.14949.28822.Mailman@edu.bnhof.de> Message-ID: <001901c2c4d5$e80c6600$0802a8c0@hanuman> I got the examples to compile after changing where the -lc and -lm went but now I have a new problem the xvid_encraw works well in SGI but the xvid_decraw core dumps it decodes the first frame but after that it sits around. Any suggestions? -venkata > ./xvid_decraw -w 352 -h 240 -t 0 -i cactus.mp4u -d 1 xvid_decraw - raw mpeg4 bitstream decoder written by Christoph Lampert 2002 Frame 0: dectime = 113.9 ms length= 12465 bytes Bus error (core dumped) Thank you, Venkata Tumati. From xvid-devel@xvid.org Sun Jan 26 01:11:45 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Sun, 26 Jan 2003 02:11:45 +0100 Subject: [XviD-devel] SGI: xvid_decraw core dump In-Reply-To: <001901c2c4d5$e80c6600$0802a8c0@hanuman> References: <20030125174301.14949.28822.Mailman@edu.bnhof.de> <001901c2c4d5$e80c6600$0802a8c0@hanuman> Message-ID: <20030126011145.GA715@leloo> --XsQoSWH+UP9D9v3l Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Venkata Tumati (vt35@cornell.edu) wrote: > I got the examples to compile after changing where the -lc and -lm went > but now I have a new problem the xvid_encraw works well in SGI but the > xvid_decraw core dumps it decodes the first frame but after that it sits > around. Any suggestions?=20 What cvs tree are you using ? > > ./xvid_decraw -w 352 -h 240 -t 0 -i cactus.mp4u -d 1 > xvid_decraw - raw mpeg4 bitstream decoder written by Christoph Lampert > 2002 >=20 > Frame 0: dectime =3D 113.9 ms length=3D 12465 bytes=20 > Bus error (core dumped) Could you run it into gdb ? (of course compile XviD lib with -g option so gdb will tell you exactly what line causes the segfault) --=20 Edouard Gomez --XsQoSWH+UP9D9v3l Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+MzXRR5dTYz5sWMcRArUzAJ9rvLkqRHw5lgRXFoJkhxUWmmjSGQCg5V1p NbLjmo0o5ZUCwwqlbTduJG8= =uX2p -----END PGP SIGNATURE----- --XsQoSWH+UP9D9v3l-- From xvid-devel@xvid.org Sun Jan 26 01:55:27 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sun, 26 Jan 2003 12:55:27 +1100 Subject: [XviD-devel] ia64-Patch In-Reply-To: References: Message-ID: <20030126124450.23A4.SUXEN_DROL@hotmail.com> On Sat, 25 Jan 2003 18:42:46 +0100 (CET) Christoph Lampert wrote: > On Sat, 25 Jan 2003, Stephan Krause wrote: > > > Hi, > > > > after a longer time i checked the code for ia64 compatibility, and it did > > segfault in mbcoding. Reason was a uint32 which became -1. On 32bit-Platforms > > this is not a Problem, but on ia64 this isn't a really good idea. Using ptr_t > > instead of uint32 does help (on x86, ptr_t is just the same as uint32_t) i have applied the patch. but i wonder why it was crashing, because most (if not all) of the varibles are used to index an array (so these really arent pointers, just indexs) ie. level = some_table[i][j][k]; currenlty ptr_t is defined as an unsinged integer, but i noticed a warning in mbcoding.c when we do -level (where level is a ptr_t). > Yes, we should really take more care about correct types, in particular > with "64bit for everybody" around the corner: > > My suggestion: > > * Use "natural" types where possible. Use "int" instead of int32_t, etc., > unless the size matters (which it almost never does). The _size_ of > structures doesn't have to be the same on every plattform... yes i agree. > * Of course, things like "uint8_t" for 8bit images and "int16_t" for > DCT data must be the same, but e.g. length of MV entries doesn't have > to. I doubt that XVID will ever run successfully on a machine with > 16bit integers, so range should always be sufficient... i wonder if we should support different types for dct samples. ie. on a non-simd machine, the dct-operations would be better perform in the natural int type (rather than int16_t). > * Use unsigned int for loop counters (I read somewhere that it's > faster), unless they become negative, of course. it might be faster on some obsure platform. or unsigned loops may be less confusing for the compiler. but, if a functions speed if affected by loop performance then it really should be hand-optimized in assembly. > * When in doubt, use signed types (in particular SAD-values, MVs) > > * For status values, used signed types (speed doesn't matter there, and > often negative values are useful to indicate errors. > > * Use _signed_ for stride values, they are a "relative" value and might > become negative. yep. > * For hacks which use bit-patterns etc. to speed up calculation, use > "sizeof()", or define plattform dependent macros in portab.h i dont follow. can u elaborate chirstoph? -- pete; life is like a box of ammo From xvid-devel@xvid.org Sun Jan 26 06:07:37 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sun, 26 Jan 2003 17:07:37 +1100 Subject: [XviD-devel] "Generic" plugin mechanism In-Reply-To: References: Message-ID: <20030126170700.D79D.SUXEN_DROL@hotmail.com> On Fri, 24 Jan 2003 19:17:08 +0100 (CET) Christoph Lampert wrote: > > Hi, > > I noticed that my "idea" of passing a function pointer to XviD core > is just the first part of a generic plugin system. Let me just "think > aloud": > > There could be slots within encoding, in particular _before_ and _after_ > the main encoding step, where generic functions could be called with > access to internal encoder data. Either just one, doing everything it > wants, or several, read from a linked list, etc. several would be good. > My idea are things like prefiltering of the input image e.g. with access > to adaptive quantization information, maybe also with access to motion > data. > A PSNR-filter would also be possible (without the codec providing extra > infrastructure), by using a pre-slot (buffering the input), and a > post-slot (calculating PSNR) together. > > Of course, such filters could become a part of XVID itself, but since > there are so many possible filters around, it might be easier to just > write a small wrapper and use a routine which is not a part of the core. > XVID could contain a "library" of default filters, but if somebody wants > to add and test a new one... no problem. > > I would like slots for "plugins" as a part of the core, not of VfW etc, > because that way, things are more portable to non-Windows plattforms. > > What do you think? sounds good, although i think getting dev-api-3 back into the trunk deserves higher priority. the difficult part is defining the api. here's my suggestions plugin_before(void * private, xvid_enc_plugin_t * p); plugin_after(void * private, xvid_enc_plugin_t * p, xvid_enc_stats_t * s); typedef struct { uint8_t planes[4]; /* y,u,v,alpha */ int stride[4]; }xvid_image_t; typedef struct { int version; // [...] our "new" stats structure, which indicates frame bitstream length, etc. } xvid_enc_stats_t; typedef struct { int version; int width, height; xvid_image_t reference; xvid_image_t current; xvid_image_t original; /* plugin_after only: points the original (uncompressed) copy of the current frame */ int * qtable /* plugin_before: quantization table for implementing adaptive quantization */ } xvid_enc_plugin_t; * plugins declare flags at XVID_ENC_CREATE time which indicate if they require 'original'. so if none of the plugins require original, we dont waste cycles making the original image copy. * iam unsure about macroblocks and motion vectors. how would this fit in with the motion estimation engine? would m.e then become a plugin? * and in theory, ratecontrol could become a plugin too. (which would be really swell). before and after translate to RateControlGet and RateconrolUpdate. -- pete; life is like a box of ammo From xvid-devel@xvid.org Sun Jan 26 06:29:17 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sun, 26 Jan 2003 17:29:17 +1100 Subject: [XviD-devel] function pointer deref appearance? Message-ID: <20030126172121.D79F.SUXEN_DROL@hotmail.com> hi, ive noticed in motion_est.c calls to function points all take the form: (*somefunc)(arg) intead of somefunc(args...) they are perform the same thing; theres no difference. the first style indicates clearly (to the code) that somefunc is function pointer, but also makes it look messy. i suggest we get remove the first style, and add this to docs/CodingStyle. any comments? -- pete; life is like a box of ammo From xvid-devel@xvid.org Sun Jan 26 11:35:03 2003 From: xvid-devel@xvid.org (Stephan Krause) Date: Sun, 26 Jan 2003 12:35:03 +0100 Subject: [XviD-devel] ia64-Patch In-Reply-To: <20030126124450.23A4.SUXEN_DROL@hotmail.com> References: <20030126124450.23A4.SUXEN_DROL@hotmail.com> Message-ID: suxen_drol wrote: > i have applied the patch. but i wonder why it was crashing, because most > (if not all) of the varibles are used to index an array (so these really > arent pointers, just indexs) > > ie. level = some_table[i][j][k]; > > currenlty ptr_t is defined as an unsinged integer, but i noticed a > warning in mbcoding.c when we do -level (where level is a ptr_t). It was a line exactly like this, (max_level[intra][last][run_esc]), but run_esc had a negative value (-1, to be exact), or (because it was uint32) a value of 2^32-2. On x86, this is much the same, on ia64 it tries to reference memory at max_level+4GB... Stephan -- Sig fault. (core dumped) From xvid-devel@xvid.org Sun Jan 26 11:45:18 2003 From: xvid-devel@xvid.org (Stephan Krause) Date: Sun, 26 Jan 2003 12:45:18 +0100 Subject: [XviD-devel] ia64-Patch In-Reply-To: References: Message-ID: Christoph Lampert wrote: > * Use "natural" types where possible. Use "int" instead of int32_t, etc., > unless the size matters (which it almost never does). The _size_ of > structures doesn't have to be the same on every plattform... [...] > * Use unsigned int for loop counters (I read somewhere that it's > faster), unless they become negative, of course. [...] > * Use _signed_ for stride values, they are a "relative" value and might > become negative. You indeed can use a uint for stride or loop counters, even if they may become negative, but in that case you have to use ptr_t instead of uint32_t. In fact, the code sometimes uses ptr_t for array-indices with negative values. But of course i agree that it may be better to use signed variables for signed values if possible. To use "natural" types should be a goot thing, too, because a 32bit-Integer isn't that fast on a 64bit-Machine. Stephan -- Sig fault. (core dumped) From xvid-devel@xvid.org Sun Jan 26 11:56:41 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Sun, 26 Jan 2003 12:56:41 +0100 Subject: [XviD-devel] skal simple dct patch Message-ID: <200301261256.41543.elcabesa@inwind.it> could someone told me where to apply skal patch to enable his simple dct? i tried to enable it but i'm not too sure about my code so if osmeone oculd give me a xvid.c modified verison , couse i atn to make some test. the ocde i build with skal dct seems to not work perfectly, or it doesn't work perfectly on my pc.. 'couse having an athlon cpu i use skal cdt and 3dnow_en idct.. and the result seems to me to be a worst image From xvid-devel@xvid.org Sun Jan 26 12:51:34 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 26 Jan 2003 13:51:34 +0100 (CET) Subject: [XviD-devel] Transcode Module Parameters In-Reply-To: <20030126011145.GA715@leloo> Message-ID: Hi Edouard, would it be much work to add XVID-flags to let export_xvidcvs read transcode-command line in addition to xvid.cfg. Of course the flags line would become very long, but it would only be for automatic scripting, like the ffmpeg-script does. It would be easier than creating a new xvid.cfg for every run. gruel From xvid-devel@xvid.org Sun Jan 26 17:26:30 2003 From: xvid-devel@xvid.org (Marco Al) Date: Sun, 26 Jan 2003 18:26:30 +0100 Subject: [XviD-devel] "Generic" plugin mechanism References: <20030126170700.D79D.SUXEN_DROL@hotmail.com> Message-ID: <007101c2c560$1069d9e0$bca45982@student.utwente.nl> suxen_drol wrote: >> There could be slots within encoding, in particular _before_ and _after_ >> the main encoding step, where generic functions could be called with >> access to internal encoder data. Either just one, doing everything it >> wants, or several, read from a linked list, etc. > > several would be good. Just for completenes make the top level functions in encoder.c pluggable too, it would be a shame to have a needlessly constricted plugin system. I know of more examples of existing experiments which wouldnt have fit in the > * iam unsure about macroblocks and motion vectors. how would this fit > in with the motion estimation engine? would m.e then become a plugin? Make everything which already uses function pointers anyway pluggable, that requires minimal changes to the code. Marco From xvid-devel@xvid.org Sun Jan 26 17:38:33 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 26 Jan 2003 18:38:33 +0100 (CET) Subject: [XviD-devel] DivX5.03 rounding? Message-ID: Hi new DivX5.03 is there, and changelog says it corrected some rounding issues, including QPel. http://www.divx.com/divx/divx_win_versions.php http://www.divx.com/divx/divxpro_win_versions.php Can someone check if it's compatible with XVID decoder now? gruel From xvid-devel@xvid.org Sun Jan 26 21:45:18 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Sun, 26 Jan 2003 22:45:18 +0100 (CET) Subject: [XviD-devel] Better idea for transcode config In-Reply-To: <20030126011145.GA715@leloo> Message-ID: Hi Edouard, maybe passing XVID options via transcode isn't too good, but how about environment variables? That should be compatible and easy to check via getenv(). At least an alternative name instead of "xvid.cfg" would be good to support. Christoph From xvid-devel@xvid.org Sun Jan 26 22:34:56 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Sun, 26 Jan 2003 23:34:56 +0100 Subject: [XviD-devel] Better idea for transcode config In-Reply-To: References: <20030126011145.GA715@leloo> Message-ID: <20030126223456.GB4481@leloo> --vGgW1X5XWziG23Ko Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Christoph Lampert (chl@math.uni-bonn.de) wrote: > Hi Edouard, >=20 > maybe passing XVID options via transcode isn't too good That's the conclusion i had when i proposed the xvid.cfg idea. If we wanted to keep things human understandable and _usable_, i had to use a file. > but=20 > how about environment variables? That should be compatible and=20 > easy to check via getenv(). It's feasible. > At least an alternative name instead of "xvid.cfg" would be good to > support.=20 That one seems more logical, and someone proposed an option into transcode to pass the config filename to modules. I did never implemented it because the only thing i know in transcode internals is the export module part. I never looked at other parts of transcode. Btw, if you want to script things it's not that hard to generate a config file the same way you generate a command line. for i in `seq $number_of_tests` ; do # Get here the parameters from somewhere # ${FRAME_OPTIONS} ${FRAME_GENERAL} ... ${MAX_BFRAMES} cat > ~/.xvidcvs.cfg << EOF [quality0] frame.motion =3D ${FRAME_OPTIONS} frame.general =3D ${FRAME_GENERAL} param.max_bframes =3D ${MAX_BFRAMES} param.bquant_ratio =3D ${BQUANT_RATIO} param.bquant_offset =3D ${BQUANT_OFFSET} param.global =3D ${GLOBAL} EOF transcode -i ${input_file} -o ${output_file} -x ... -y xvidcvs,null -Q 0 done Btw, if you tell me exactly what you want then i could adapt the module for your needs. --=20 Edouard Gomez --vGgW1X5XWziG23Ko Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+NGKQR5dTYz5sWMcRAjidAKDqL77qX3+5JMfhja9IRxWOPccgHQCg1YG3 G+isg1FER6O57sK4mT+QqNo= =py3T -----END PGP SIGNATURE----- --vGgW1X5XWziG23Ko-- From xvid-devel@xvid.org Mon Jan 27 04:43:14 2003 From: xvid-devel@xvid.org (YH) Date: Mon, 27 Jan 2003 15:43:14 +1100 Subject: [XviD-devel] Better idea for transcode config References: Message-ID: <3E34B8E2.CB1789B6@bigpond.com> I reckon that a text config file xvid.cfg will be a better solution. yh Christoph Lampert wrote: > > Hi Edouard, > > maybe passing XVID options via transcode isn't too good, but > how about environment variables? That should be compatible and > easy to check via getenv(). At least an alternative name instead of > "xvid.cfg" would be good to support. > > Christoph > > _______________________________________________ > XviD-devel mailing list > XviD-devel@xvid.org > http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Mon Jan 27 06:35:20 2003 From: xvid-devel@xvid.org (Cami) Date: Mon, 27 Jan 2003 08:35:20 +0200 Subject: [XviD-devel] DivX5.03 Nth Pass encoding References: Message-ID: <01db01c2c5ce$44bf7c90$803102c4@lonewolf> Looking through the divx 5.03 changelog: :::: .. Nth PassT encoding. Another new addition to the rate control arsenal, Nth PassT encoding takes advantage of information available from previous analysis (or analyses) of the video sequence. Nth Pass encoding uses information garnered from previous passes through the video sequence, which can improve quality with each pass. There are four main steps to Nth Pass encoding: 1.. Analysis (the first pass) 2.. Map generation (where the results of analyses are processed) 3.. Strategy generation (strategist examines map of the video sequence and creates a strategy that will best achieve the three VBV RC requirements) 4.. In-loop nth pass rate control (uses information from the map and strategy to effect rate control that best fulfills the three requirements) :::: Can anyone tell me if xvid having such a feature will improve image quality? or is it not nessasary / wont make any difference? ++C From xvid-devel@xvid.org Mon Jan 27 06:50:41 2003 From: xvid-devel@xvid.org (Dirk Knop) Date: Mon, 27 Jan 2003 07:50:41 +0100 Subject: [XviD-devel] dev-api-3 vfw 2pass fix Message-ID: <3E34D6C1.5050905@gwdg.de> This is a multi-part message in MIME format. --------------050308070706000200050507 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Good morning everyone, good news! I hacked an ugly fix for our issue that 2pass is broken in dev-api-3/vfw since the xvid-core pFrame->intra reports are "messed up". Just use this 2pass.c which treats all frame types different from intra/inter as bframes - thus scaling correctly again. This is only a temporary solution as the core does dynamic I/P/B-decision even in 2nd pass, it'll sure break things when this behaviour of the core gets fixed. This is no permanent solution, but it works for me (and now). Regards Koepi --------------050308070706000200050507 Content-Type: application/x-zip-compressed; name="2pass.zip" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="2pass.zip" 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 cy5jUEsFBgAAAAABAAEAOQAAALIgAAAAAA== --------------050308070706000200050507-- From xvid-devel@xvid.org Mon Jan 27 07:28:24 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Mon, 27 Jan 2003 18:28:24 +1100 Subject: [XviD-devel] dev-api-3 vfw 2pass fix In-Reply-To: <3E34D6C1.5050905@gwdg.de> References: <3E34D6C1.5050905@gwdg.de> Message-ID: <20030127182638.FA91.SUXEN_DROL@hotmail.com> On Mon, 27 Jan 2003 07:50:41 +0100 Dirk Knop wrote: > Good morning everyone, > > good news! > I hacked an ugly fix for our issue that 2pass is broken in dev-api-3/vfw > since the xvid-core pFrame->intra reports are "messed up". Just use this > 2pass.c which treats all frame types different from intra/inter as > bframes - thus scaling correctly again. > This is only a temporary solution as the core does dynamic > I/P/B-decision even in 2nd pass, it'll sure break things when this > behaviour of the core gets fixed. > This is no permanent solution, but it works for me (and now). i havent really been following this (or doing any 2pass tests lately), but what exactly is broken? fixing it at the core is a better solution. Index: 2pass.c =================================================================== RCS file: /xvid/vfw/src/2pass.c,v retrieving revision 1.7.2.7 diff -u -r1.7.2.7 2pass.c --- 2pass.c 20 Dec 2002 05:35:56 -0000 1.7.2.7 +++ 2pass.c 27 Jan 2003 07:26:13 -0000 @@ -285,12 +285,12 @@ memcpy(&twopass->nns2, &twopass->nns2_array[twopass->nns_array_pos], sizeof(NNSTATS)); twopass->nns_array_pos++; - // skip unnecessary frames. +/* // skip unnecessary frames. if (twopass->nns1.dd_v & NNSTATS_SKIPFRAME || twopass->nns1.dd_v & NNSTATS_PADFRAME || twopass->nns1.dd_v & NNSTATS_DELAYFRAME) continue; - +*/ // we need to treat it like usual frames now - someone broke core's reports if (!codec_is_in_credits(&codec->config, frames)) { if (twopass->nns1.quant & NNSTATS_KEYFRAME) @@ -302,7 +302,10 @@ } else { - if (twopass->nns1.dd_v & NNSTATS_BFRAME) + if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) { bframe_total += twopass->nns1.bytes; bframe_total_ext += twopass->nns2.bytes; @@ -434,19 +437,22 @@ twopass->minisize = recminisize; } - // skip unnecessary frames. +/* // skip unnecessary frames. if (twopass->nns1.dd_v & NNSTATS_SKIPFRAME || twopass->nns1.dd_v & NNSTATS_PADFRAME || twopass->nns1.dd_v & NNSTATS_DELAYFRAME) continue; - +*/ // broken in core, need to treat it differently now :-( if (!codec_is_in_credits(&codec->config, frames) && !(twopass->nns1.quant & NNSTATS_KEYFRAME)) { dbytes = twopass->nns2.bytes / twopass->movie_curve; total1 += dbytes; - if (twopass->nns1.dd_v & NNSTATS_BFRAME) + if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) dbytes *= twopass->average_pframe / twopass->average_bframe; if (codec->config.use_alt_curve) @@ -510,7 +516,10 @@ } } - if (twopass->nns1.dd_v & NNSTATS_BFRAME) + if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) { dbytes2 *= twopass->average_bframe / twopass->average_pframe; if (dbytes2 < twopass->minbsize) @@ -553,12 +562,12 @@ memcpy(&twopass->nns1, &twopass->nns1_array[twopass->nns_array_pos], sizeof(NNSTATS)); twopass->nns_array_pos++; - // skip unnecessary frames. +/* // skip unnecessary frames. if (twopass->nns1.dd_v & NNSTATS_SKIPFRAME || twopass->nns1.dd_v & NNSTATS_PADFRAME || twopass->nns1.dd_v & NNSTATS_DELAYFRAME) continue; - +*/ // broken in core, have to treat this stuff differently now if (codec_is_in_credits(&codec->config, frames) == CREDITS_START) { start += twopass->nns1.bytes; @@ -577,7 +586,10 @@ } else { - if (twopass->nns1.dd_v & NNSTATS_BFRAME) + if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) { bframe_total += twopass->nns1.bytes; bframes++; @@ -595,7 +607,10 @@ if (!(twopass->nns1.kblk + twopass->nns1.mblk)) recminisize = twopass->nns1.bytes; } - else if (twopass->nns1.dd_v & NNSTATS_BFRAME) + else if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) { if (!(twopass->nns1.kblk + twopass->nns1.mblk)) recminbsize = twopass->nns1.bytes; @@ -752,19 +767,22 @@ twopass->minisize = recminisize; } - // skip unnecessary frames. +/* // skip unnecessary frames. if (twopass->nns1.dd_v & NNSTATS_SKIPFRAME || twopass->nns1.dd_v & NNSTATS_PADFRAME || twopass->nns1.dd_v & NNSTATS_DELAYFRAME) continue; - +*/ // broken in core, we need to handle it differently now :-(( if (!codec_is_in_credits(&codec->config, frames) && !(twopass->nns1.quant & NNSTATS_KEYFRAME)) { dbytes = twopass->nns1.bytes / twopass->movie_curve; total1 += dbytes; - if (twopass->nns1.dd_v & NNSTATS_BFRAME) + if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) dbytes *= twopass->average_pframe / twopass->average_bframe; if (codec->config.use_alt_curve) @@ -828,7 +846,10 @@ } } - if (twopass->nns1.dd_v & NNSTATS_BFRAME) + if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) { dbytes2 *= twopass->average_bframe / twopass->average_pframe; if (dbytes2 < twopass->minbsize) @@ -1013,7 +1034,7 @@ bytes1 = twopass->nns1.bytes; - // skip unnecessary frames. +/* // skip unnecessary frames. if (twopass->nns1.dd_v & NNSTATS_SKIPFRAME) { twopass->bytes1 = bytes1; @@ -1038,13 +1059,16 @@ frame->intra = 5; return ICERR_OK; } - +*/ // broken in core, need to treat it differently :-(( overflow = twopass->overflow / 8; // override codec i-frame choice (reenable in credits) if (twopass->nns1.quant & NNSTATS_KEYFRAME) frame->intra=1; - else if (twopass->nns1.dd_v & NNSTATS_BFRAME) + else if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) frame->intra=2; else frame->intra=0; @@ -1136,7 +1160,10 @@ dbytes = bytes2 / twopass->movie_curve; } - if (twopass->nns1.dd_v & NNSTATS_BFRAME) + if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) dbytes *= twopass->average_pframe / twopass->average_bframe; // spread the compression error across payback_delay frames @@ -1205,7 +1232,10 @@ } } } - if (twopass->nns1.dd_v & NNSTATS_BFRAME) + if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) curve_temp *= twopass->average_bframe / twopass->average_pframe; curve_temp = curve_temp * twopass->curve_comp_scale + twopass->curve_bias_bonus; @@ -1215,7 +1245,10 @@ } else { - if (twopass->nns1.dd_v & NNSTATS_BFRAME) + if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) dbytes *= twopass->average_bframe / twopass->average_pframe; bytes2 += ((int)dbytes); @@ -1238,7 +1271,10 @@ codec->config.curve_compression_low / 100.0); } - if (twopass->nns1.dd_v & NNSTATS_BFRAME) + if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) curve_temp *= twopass->average_bframe / twopass->average_pframe; bytes2 += ((int)curve_temp); @@ -1246,7 +1282,10 @@ } else { - if (twopass->nns1.dd_v & NNSTATS_BFRAME) + if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) dbytes *= twopass->average_bframe / twopass->average_pframe; bytes2 += ((int)dbytes); @@ -1269,7 +1308,10 @@ bytes2 = twopass->minisize; } } - else if (twopass->nns1.dd_v & NNSTATS_BFRAME) + else if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) { if (bytes2 < twopass->minbsize) bytes2 = twopass->minbsize; @@ -1347,7 +1389,10 @@ if (bytes2 < twopass->minisize) bytes2 = twopass->minisize; } - else if (twopass->nns1.dd_v & NNSTATS_BFRAME) + else if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) { if (bytes2 < twopass->minbsize) bytes2 = twopass->minbsize; @@ -1375,7 +1420,10 @@ else if (!(frame->intra==1)) { // Foxer: aid desired quantizer precision by accumulating decision error - if (twopass->nns1.dd_v & NNSTATS_BFRAME) + if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) { bquant_error[frame->quant] += ((double)((twopass->nns1.quant & ~NNSTATS_KEYFRAME) * bytes1) / bytes2) - frame->quant; @@ -1432,7 +1480,10 @@ // subsequent frame quants can only be +- 2 if ((last_pquant || last_bquant) && capped_to_max_framesize == 0) { - if (twopass->nns1.dd_v & NNSTATS_BFRAME) + if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) { // this bframe quantizer variation // restriction needs to be redone. @@ -1470,7 +1521,10 @@ last_bquant = frame->quant; last_pquant = frame->quant; } - else if (twopass->nns1.dd_v & NNSTATS_BFRAME) + else if (twopass->nns1.dd_v & NNSTATS_BFRAME || + twopass->nns1.dd_v & NNSTATS_SKIPFRAME || + twopass->nns1.dd_v & NNSTATS_PADFRAME || + twopass->nns1.dd_v & NNSTATS_DELAYFRAME) last_bquant = frame->quant; else last_pquant = frame->quant; @@ -1565,10 +1619,10 @@ case DLG_MODE_2PASS_2_INT : case DLG_MODE_2PASS_2_EXT : credits_pos = codec_is_in_credits(&codec->config, codec->framenum); - if (!(codec->twopass.nns1.dd_v & NNSTATS_SKIPFRAME) && +/* if (!(codec->twopass.nns1.dd_v & NNSTATS_SKIPFRAME) && !(codec->twopass.nns1.dd_v & NNSTATS_PADFRAME) && !(codec->twopass.nns1.dd_v & NNSTATS_DELAYFRAME)) - { + { */ if (!credits_pos) { codec->twopass.quant_count[frame->quant]++; @@ -1616,16 +1670,19 @@ codec->twopass.KFoverflow_partial = 0; // end of ugly fix. } - } +// } frame_type="inter"; if (frame->intra==1) { frame_type="intra"; } - else if (codec->twopass.nns1.dd_v & NNSTATS_BFRAME) { + else if (codec->twopass.nns1.dd_v & NNSTATS_BFRAME || + codec->twopass.nns1.dd_v & NNSTATS_SKIPFRAME || + codec->twopass.nns1.dd_v & NNSTATS_PADFRAME || + codec->twopass.nns1.dd_v & NNSTATS_DELAYFRAME) { frame_type="bframe"; } - else if (codec->twopass.nns1.dd_v & NNSTATS_SKIPFRAME) { +/* else if (codec->twopass.nns1.dd_v & NNSTATS_SKIPFRAME) { frame_type="skipped"; frame->quant = 2; codec->twopass.bytes1 = 1; @@ -1645,8 +1702,8 @@ codec->twopass.bytes1 = 1; codec->twopass.desired_bytes2 = 1; frame->length = 1; - } - + } +*/ // all broken in core... *grmblfx* DEBUG2ND(frame->quant, quant_type, frame_type, codec->twopass.bytes1, codec->twopass.desired_bytes2, frame->length, codec->twopass.overflow, credits_pos) break; -- pete; life is like a box of ammo From xvid-devel@xvid.org Mon Jan 27 08:54:28 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Mon, 27 Jan 2003 09:54:28 +0100 (CET) Subject: [XviD-devel] DivX5.03 Nth Pass encoding In-Reply-To: <01db01c2c5ce$44bf7c90$803102c4@lonewolf> Message-ID: On Mon, 27 Jan 2003, Cami wrote: > Looking through the divx 5.03 changelog: > > :::: > .. Nth PassT encoding. Another new addition to the rate control arsenal, Nth PassT encoding takes advantage of information > available from previous analysis (or analyses) of the video sequence. Nth Pass encoding uses information garnered from previous > passes through the video sequence, which can improve quality with each pass. There are four main steps to Nth Pass encoding: > 1.. Analysis (the first pass) > 2.. Map generation (where the results of analyses are processed) > 3.. Strategy generation (strategist examines map of the video sequence and creates a strategy that will best achieve the three VBV > RC requirements) > 4.. In-loop nth pass rate control (uses information from the map and strategy to effect rate control that best fulfills the three > requirements) > :::: > > Can anyone tell me if xvid having such a feature will > improve image quality? or is it not nessasary / wont make any difference? I don't see the difference to two-pass, except for fancy "strategy"-talk, which doesn't mean a thing. Possibly three-pass would be better than two, if we analysed e.g. blocking artefacts from second pass. But if it's worth the extra time? I don't know. What might be cool is a new feature from transcode: "On the fly parameters changes". Create a logfile with encoding setting in advance (not only "start of credit, end of credit", more like a movie script, including not only quantizers, but also things like motion search method, GMC, maybe quant matrix (ratecontrol could of course still modify quantizers). In a faster "0th-pass" we could analyse the material for this, also detect keyframes etc. In particular, since we don't encode, we could use multiple-frames read-ahead, etc. do decide on b-frames. Then we do ordinary two-pass with this "script". But I don't think that's what DivX does... gruel From xvid-devel@xvid.org Mon Jan 27 09:21:03 2003 From: xvid-devel@xvid.org (Cami) Date: Mon, 27 Jan 2003 11:21:03 +0200 Subject: [XviD-devel] DivX5.03 Nth Pass encoding References: Message-ID: <001d01c2c5e5$6c128190$803102c4@lonewolf> | | Can anyone tell me if xvid having such a feature will | | improve image quality? or is it not nessasary / wont make any difference? | | Possibly three-pass would be better than two, if we analysed e.g. blocking | artefacts from second pass. But if it's worth the extra time? I don't | know. I'm sure everyone will have their own opinion here, mine personally, would be to have that possibility, considering a 2 hour movie takes a little over an hour to encode (2pass+qpel+chroma), so an extra pass wouldnt hurt at all.. | What might be cool is a new feature from transcode: "On the fly parameters | changes". Create a logfile with encoding setting in advance (not only | "start of credit, end of credit", more like a movie script, including | not only quantizers, but also things like motion search method, GMC, | maybe quant matrix (ratecontrol could of course still modify | quantizers). Can anyone tell me if GMC improves or degrades image quality? Half the people i've spoken to say its a good thing, the other half dont.. While i'm babbling away here, the credits encoding part of xvid, more specifically the 'Encode credits in greyscale', is that suppose to encode the selected frames in _completely_ black and white? If so, its not working very well.. Its leaving green smudges/artifacts over some of the letters.. ++C From xvid-devel@xvid.org Mon Jan 27 12:01:08 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Mon, 27 Jan 2003 13:01:08 +0100 (CET) Subject: [XviD-devel] DivX5.03 Nth Pass encoding In-Reply-To: <001d01c2c5e5$6c128190$803102c4@lonewolf> Message-ID: On Mon, 27 Jan 2003, Cami wrote: > Can anyone tell me if GMC improves or degrades image quality? > Half the people i've spoken to say its a good thing, the other half > dont.. Answer a) that depends. No, I don't know on what. Answer b) at the moment, it's "experimental". It will get better... gruel From xvid-devel@xvid.org Mon Jan 27 11:58:17 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Mon, 27 Jan 2003 12:58:17 +0100 Subject: [XviD-devel] adaptive quant question Message-ID: <200301271258.17196.elcabesa@inwind.it> im' looking at adaptive quant/lumi_mask code if i'm right you calc image average luminance macrobloc average luminance and then raise quantizer for very dark and very bright area then normalize each difference between consecutive quantizer due to mpeg 4 restriction am i wrong? lower quantiuzer (1,2 ) mean an image full of detail, high quantizer (30,31) image where only low frequency detail are represented. why not bootst quantizer for mblock with lot's of DFT coefficient. i think this can be doing somethink like lumi mask, using variance, doing lumi mask in dft trasformed image.. i don't precisely know.. but i think this would give more bit at mblock with lot's of detail , like object edge , and saving some bit for plain block From xvid-devel@xvid.org Mon Jan 27 12:46:15 2003 From: xvid-devel@xvid.org (Klaus Post (KPO)) Date: Mon, 27 Jan 2003 13:46:15 +0100 Subject: Re[4]: [XviD-devel] Quality optimization Message-ID: <56BE759D8AF4044493AA7F20CB618903045013@s2.domain.int> Hi! Actually it doesn't use cmov. Here is the code, MSVC generated for: eax = abs(edx - eax) -------------- sub eax,edx ;Difference one way ( = abs(Luma1-Luma2)) cdq xor eax,edx sub eax,edx ; eax=absolute difference -------------- For a simple abs() the code is even simpler. This code was generated by MSVC with full optimizations on. Are you overriding the abs() function anywhere? That could be the reason it branches. Regards, Klaus Post Producer -----Original Message----- From: Marco Al [mailto:marco@simplex.nl] Sent: 24. januar 2003 16:22 To: xvid-devel@xvid.org Subject: Re: Re[4]: [XviD-devel] Quality optimization Klaus Post (KPO) wrote: > - This is also why you are getting horrible performance on abs(). In > Release mode, a special trick is used by MSVC to get the absolute value. > This code is non-branching. Does that work only for its own instrinsic or can MSVC translate conditional assignments (maybe even if/else statements with small bodies?) to instruction sequences using CMOV instead of conditional jumps? I am pretty sure VC6 didnt do that. Marco _______________________________________________ XviD-devel mailing list XviD-devel@xvid.org http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Mon Jan 27 13:13:24 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Mon, 27 Jan 2003 14:13:24 +0100 (CET) Subject: Re[4]: [XviD-devel] Quality optimization In-Reply-To: <56BE759D8AF4044493AA7F20CB618903045013@s2.domain.int> Message-ID: On Mon, 27 Jan 2003, Klaus Post (KPO) wrote: > Hi! > > Actually it doesn't use cmov. > > Here is the code, MSVC generated for: > > eax = abs(edx - eax) > > -------------- > sub eax,edx ;Difference one way ( = abs(Luma1-Luma2)) > cdq > xor eax,edx > sub eax,edx ; eax=absolute difference > -------------- Clever! I'll have to remember that. Register: eax edx Value: A B > sub eax,edx # A-B B > cdq (signed extend EAX to EDX:EAX) bis 0-31 bis 32-63 of (A-B) so edx == 0x00000000 if A-B is non-negative, (pos) and edx == 0x11111111=-1 if A-B is negative (neg) > xor eax,edx A-B if (pos) 0 if (pos) -(A-B)-1 if (neg) -1 if (neg) > sub eax,edx A-B if (pos) 0 if (pos) -(A-B) if (neg) -1 if (neg) = abs(A-B) "sign bit" of (A-B) Clever indeed, to extract the sign by extension and continue calculation with that... I guess it has to assume _unsigned_ operands to start with to prevent overflow, or am I wrong? gruel From xvid-devel@xvid.org Mon Jan 27 13:53:00 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Mon, 27 Jan 2003 14:53:00 +0100 (CET) Subject: Re[4]: [XviD-devel] Quality optimization In-Reply-To: <56BE759D8AF4044493AA7F20CB618903045013@s2.domain.int> Message-ID: On Mon, 27 Jan 2003, Klaus Post (KPO) wrote: > Hi! > > Actually it doesn't use cmov. > > Here is the code, MSVC generated for: > > eax = abs(edx - eax) > > -------------- > sub eax,edx ;Difference one way ( = abs(Luma1-Luma2)) > cdq > xor eax,edx > sub eax,edx ; eax=absolute difference > -------------- Btw. I looked into the "Intel Optimization guide" and it tells not to use CDQ, but copy&shift. Shouldn't MSVC know that? Or has scheduling changed in P3++ ? > Typically, an integer divide is preceded by a cdq instruction (divide > instructions use EDX:EAX as the dividend and cdq sets up EDX). It is > better to copy EAX into EDX, then right shift EDX 31 places to > sign-extend. The copy/shift takes the same number of clocks as cdq on > Pentium processors, but the copy/shift scheme allows two other > instructions to execute at the same time on the Pentium processor. If > you know that the value is positive, use xor edx, edx. On Pentium Pro > and Pentium II processors the cdq instruction is faster since cdq is a > single op instruction as opposed to two instructions for the copy/shift > sequence. GCC 2.95.2 (Linux) uses conditional move for -march=i686 > subl %edx,%eax > movl %eax,%edx > negl %eax > cmpl $-1,%edx > cmovg %edx,%eax > movl %ebp,%esp but a jump for i586 and lower. > movl %esp,%ebp > subl %edx,%eax > jns .L33 > negl %eax > .L33: gcc 3.2 has slightly different routines, but the basics are the same: cmov for 686 and higher (including athlons), a jump for 586. No cbq, no shifting... gruel From xvid-devel@xvid.org Mon Jan 27 13:59:31 2003 From: xvid-devel@xvid.org (James Hauxwell) Date: Mon, 27 Jan 2003 13:59:31 -0000 Subject: Re[4]: [XviD-devel] Quality optimization In-Reply-To: Message-ID: <002501c2c60c$507b72d0$5c0c81a4@enterprise> I did some tests with MSVC vs Intel compiler version of abs(). MSVC generates code as discussed; however the Intel compiler just used plain old fashioned jumps when set to P4 optimizations. I profiled them both, and the MSVC version is slower on the P4. Jim -----Original Message----- From: xvid-devel-admin@xvid.org [mailto:xvid-devel-admin@xvid.org] On Behalf Of chl@math.uni-bonn.de Sent: 27 January 2003 13:53 To: xvid-devel@xvid.org Subject: RE: Re[4]: [XviD-devel] Quality optimization On Mon, 27 Jan 2003, Klaus Post (KPO) wrote: > Hi! > > Actually it doesn't use cmov. > > Here is the code, MSVC generated for: > > eax = abs(edx - eax) > > -------------- > sub eax,edx ;Difference one way ( = abs(Luma1-Luma2)) > cdq > xor eax,edx > sub eax,edx ; eax=absolute difference > -------------- Btw. I looked into the "Intel Optimization guide" and it tells not to use CDQ, but copy&shift. Shouldn't MSVC know that? Or has scheduling changed in P3++ ? > Typically, an integer divide is preceded by a cdq instruction (divide > instructions use EDX:EAX as the dividend and cdq sets up EDX). It is > better to copy EAX into EDX, then right shift EDX 31 places to > sign-extend. The copy/shift takes the same number of clocks as cdq on > Pentium processors, but the copy/shift scheme allows two other > instructions to execute at the same time on the Pentium processor. If > you know that the value is positive, use xor edx, edx. On Pentium Pro > and Pentium II processors the cdq instruction is faster since cdq is a > single op instruction as opposed to two instructions for the copy/shift > sequence. GCC 2.95.2 (Linux) uses conditional move for -march=i686 > subl %edx,%eax > movl %eax,%edx > negl %eax > cmpl $-1,%edx > cmovg %edx,%eax > movl %ebp,%esp but a jump for i586 and lower. > movl %esp,%ebp > subl %edx,%eax > jns .L33 > negl %eax > .L33: gcc 3.2 has slightly different routines, but the basics are the same: cmov for 686 and higher (including athlons), a jump for 586. No cbq, no shifting... gruel _______________________________________________ XviD-devel mailing list XviD-devel@xvid.org http://list.xvid.org/mailman/listinfo/xvid-devel From xvid-devel@xvid.org Tue Jan 28 16:48:43 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Tue, 28 Jan 2003 17:48:43 +0100 Subject: [XviD-devel] adaptive quant improvement Message-ID: <200301281748.43837.elcabesa@inwind.it> i'm worknig on a new adaptive quant to give more bit to mblock where there are more details or edge. i am testing it and it seems to work.. but i doesn't know how to make enance his performance. how can i enable psnr after extrastats has beeen added to cvs? and ia question adaptive quant is done before of after motion estimaiton/compensation? or better adaprive quant is done on original image or to the image that will be quantized? From xvid-devel@xvid.org Tue Jan 28 18:24:34 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Tue, 28 Jan 2003 19:24:34 +0100 (CET) Subject: [XviD-devel] adaptive quant improvement In-Reply-To: <200301281748.43837.elcabesa@inwind.it> Message-ID: On Tue, 28 Jan 2003, Marco "elcabesa" Belli wrote: > i'm worknig on a new adaptive quant to give more bit to mblock where there are > more details or edge. > i am testing it and it seems to work.. but i doesn't know how to make enance > his performance. > how can i enable psnr after extrastats has beeen added to cvs? You have to pass XVID_GLOBAL_EXTRASTATS to param.global at encoder creation (needed to allocate memory). Then pass XVID_EXTRASTATS as a general option when encoding the frame and it will return SSE values for Y,Cb,Cr in Statistics structure. If you want PSNR from this, use to SSE_to_PSNR() function from image.c (I hope, I put it there... if not, it's just the usual formula: PSNR = 48.131 - 10*log10((float)sse/numpixels) ; // where 48.131 = 10*log10(255*255) Sorry, I should have explained that earlier. > and ia question > adaptive quant is done before of after motion estimaiton/compensation? or > better adaprive quant is done on original image or to the image that will be > quantized? At the moment, it's done before estimation, which is useful in order to have quant values ready for penalties of vector legnth during ME. It would however also be possible to use a fixed quant for that and do adaptive quant afterwards, using the information from ME (however that may be useful). You can't do adaptive quant after MC, because MC is done with the dequantized coefficients, so you have to know the quantizer before MC. gruel From xvid-devel@xvid.org Tue Jan 28 18:56:44 2003 From: xvid-devel@xvid.org (Marco Al) Date: Tue, 28 Jan 2003 19:56:44 +0100 Subject: [XviD-devel] adaptive quant improvement References: Message-ID: <006401c2c6ff$009b8ef0$bca45982@student.utwente.nl> Christoph Lampert wrote: > You can't do adaptive quant after MC, because MC is done with the > dequantized coefficients, so you have to know the quantizer before MC. Sounds reasonable, then again ... you cant make a good decision about DQUANT without knowing the residual, so you have to know the motion field before determining the quantizers. They are both true ... you cannot make the decision about the rate optimal MV and the rate optimal quantizers in a single pass, fundamentally impossible. Iterative solutions can work of course, but to make a choice what to put first with only a single pass you need to know the potential rate reduction for both mechanisms and the hit they will take by not having all the information they need. Personally I think assuming a slightly different quantizer than the real one will hurt ME less than having no DFD to work with will hurt "good" adaptive quantization methods. Marco From xvid-devel@xvid.org Tue Jan 28 20:27:33 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Tue, 28 Jan 2003 21:27:33 +0100 Subject: [XviD-devel] [RFC] unified Makefile for *nix environments Message-ID: <20030128202733.GA655@leloo> --LQksG6bCIzRHxTLp Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable I've been working on a new build process for the lib (sunday afternoon and this evening). I would like to know what "make" program we are supposed to support in XviD. My unified Makefile + configure works very well with GNU make, but I still have problems with pmake (because of generic rules for .c and =2Easm/.s and the final linking rule, but that only small details) However it's close to be ready as a stable patch and with small amount of work for unstable. It builds well on Debian GNU/Linux systems (ia32, sparc64), Red Hat 7.2 (ia32), solaris8 + GNU make (sparc32). I still lack some access to a freebsd/openbsd?/netbsd? boxes to try the Makefile with BSD make (which is rougly pmake afaik) Same thing for a BeOS box. PS: djgpp and mingw32 (w/o min system) will be supported using a template for the platform.inc file (it defines all important variables so the Makefile is common to all platforms) # mv platform.mingw platform.inc # make=20 will do the stuff --=20 Edouard Gomez --LQksG6bCIzRHxTLp Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+Nue1R5dTYz5sWMcRAi1NAKCSznjXcHk8xk3ba+FAoPFGx097lACdEf5h szsG0LWfTYh+XV4rZKrFpj4= =F8gm -----END PGP SIGNATURE----- --LQksG6bCIzRHxTLp-- From xvid-devel@xvid.org Tue Jan 28 21:04:55 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Tue, 28 Jan 2003 22:04:55 +0100 Subject: [XviD-devel] adaptive quant improvement In-Reply-To: <006401c2c6ff$009b8ef0$bca45982@student.utwente.nl> References: <006401c2c6ff$009b8ef0$bca45982@student.utwente.nl> Message-ID: <200301282204.56126.elcabesa@inwind.it> > you cant make a good decision about > DQUANT without knowing the residual, so you have to know the motion field > before determining the quantizers. yes i would do it on residual image=) this is the right word RESIDUAL thanks for the word=) my english is still so puor =( but my c skill raise faster than english skill and my image coding too=) so i have some result from my adaptive quant fuction where sohuld i post my result... can i attach some image to email or is better if i upload them somewhere on the web? From xvid-devel@xvid.org Tue Jan 28 22:50:29 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Tue, 28 Jan 2003 23:50:29 +0100 Subject: [XviD-devel] [RFC] unified Makefile for *nix environments In-Reply-To: <20030128202733.GA655@leloo> References: <20030128202733.GA655@leloo> Message-ID: <20030128225029.GB655@leloo> --BwCQnh7xodEAoBMC Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Ok ok ok I succeeded in building the lib with both pmake and gmake, but it seems the "make" shiped with solaris is still resisting me, and refuses to do some variables substitions. The only target I have still to test is the FreeBSD one, but it seems sourceforge has shutted it down at the moment. If someone could give access to a freebsd box via ssh, i would be very happy (mail me directly for that). Thanks. PS: Irix boxes are somewhat uncommon so this type of distant access interest me as well :-) PPS: some fixes are needed in order to be 64bit compliant in bitstream.h inline functions, i'll have a look at that. --=20 Edouard Gomez --BwCQnh7xodEAoBMC Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+Nwk1R5dTYz5sWMcRAmxSAJ9bpX0OoRl2AeaQMHyKK2sareRPuwCgnlGB nLEmvYueSWMsGYaWgpkCCIw= =gWWu -----END PGP SIGNATURE----- --BwCQnh7xodEAoBMC-- From xvid-devel@xvid.org Tue Jan 28 23:47:25 2003 From: xvid-devel@xvid.org (Marco Al) Date: Wed, 29 Jan 2003 00:47:25 +0100 Subject: [XviD-devel] adaptive quant improvement References: <006401c2c6ff$009b8ef0$bca45982@student.utwente.nl> <200301282204.56126.elcabesa@inwind.it> Message-ID: <00be01c2c727$9be519d0$bca45982@student.utwente.nl> Marco wrote: > where sohuld i post my result... can i attach some image to email or is better > if i upload them somewhere on the web? My personal opinion on how Id like to see something like this tested : Ideal would be if you could post two AVIs on the web resulting from two pass encoding with/without adaptive quantization, if you can find a situation where you can show noticable visual gain from the adaptive quantization that is. Alternatively/additionally two fixed quant AVIs with/without adaptive quantization to show it can save bits without detiriorating the quality, ideally with a third where you try to approach the size of the one with adaptive quantization by using 1-pass quality while tweaking the quality setting. Images from such comparisons would do if you cant put up AVIs anywhere, but images tend to lie :) Marco From xvid-devel@xvid.org Wed Jan 29 01:34:15 2003 From: xvid-devel@xvid.org (Felix von Leitner) Date: Wed, 29 Jan 2003 02:34:15 +0100 Subject: [XviD-devel] optimizing branches away (was: Re: Re[4]: Quality optimization) In-Reply-To: <002501c2c60c$507b72d0$5c0c81a4@enterprise> References: <002501c2c60c$507b72d0$5c0c81a4@enterprise> Message-ID: <20030129013415.GA26411@fefe.de> Thus spake James Hauxwell (james.hauxwell@st.com): > I did some tests with MSVC vs Intel compiler version of abs(). Eliminating branches is normally a good thing, however history based branch prediction (as used on all modern CPUs) on clamping code will result in perfect prediction, so the expensive case of misprediction that we are trying to avoid never happens. I learned this the hard way yesterday when I found this obfuscated branchless code for clamping: i+=((-i+127)>>31)&(-i+127); i-=((i+128)>>31)&(i+128); It turned out to be slower than the version with branches on my Athlon, because the clamping case never happened and the branches were all predicted correctly. Well, it was a day well spent -- I learned a lot, although my optimizations turned out to be pessimizations in the end. In case any one of you has fun with stuff like this, here is my optimized float-to-int-with-saturation code: Original: static int old(float* flt) { int off=32768; int val; val=vorbis_ftoi(*flt*32768.f); if(val>32767)val=32767; else if(val<-32768)val=-32768; return val+off; } Mine: static int test(float* flt) { int off=32768; unsigned int tmp=*(unsigned int*)flt; int x=(tmp&0x7fffff); char e=(tmp>>23)-128; x|=(-x)&0x800000; /* if (e<0) x>>=-e; else x<<=e; */ x<<=(-e>>7)&e; x>>=((e>>7)&-e)+(23-16); /* if (s) x=-x; */ x-=(((signed int)tmp>>31)&(x<<1)) + (((x+32768)>>31)&(x+32768)); x+=((-x+32767)>>31)&(-x+32767); return x+off; } Felix From xvid-devel@xvid.org Wed Jan 29 11:43:12 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Wed, 29 Jan 2003 12:43:12 +0100 Subject: [XviD-devel] adaptive quant improvement In-Reply-To: <00be01c2c727$9be519d0$bca45982@student.utwente.nl> References: <200301282204.56126.elcabesa@inwind.it> <00be01c2c727$9be519d0$bca45982@student.utwente.nl> Message-ID: <200301291243.12497.elcabesa@inwind.it> > My personal opinion on how Id like to see something like this tested : > > Ideal would be if you could post two AVIs on the web resulting from two > pass encoding with/without adaptive quantization, if you can find a > situation where you can show noticable visual gain from the adaptive > quantization that is. > > Alternatively/additionally two fixed quant AVIs with/without adaptive > quantization to show it can save bits without detiriorating the quality, > ideally with a third where you try to approach the size of the one with > adaptive quantization by using 1-pass quality while tweaking the quality > setting. > > Images from such comparisons would do if you cant put up AVIs anywhere, but > images tend to lie :) yes you are right.. but a 56k modem without flat connection .. cost too much to do what you say=) may be i'll upload some photo.. and the code. then if you like it you can test it and may be hack it and upload it ( hmmm last thingh will make me very happy hehehe ) byeeee i can nly test it with ONE DVD ..so my test will result poor.. i think that if you like it.. you should test it and make it teast by a lot of user=) From xvid-devel@xvid.org Wed Jan 29 12:03:21 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Wed, 29 Jan 2003 13:03:21 +0100 (CET) Subject: [XviD-devel] adaptive quant improvement In-Reply-To: <200301291243.12497.elcabesa@inwind.it> Message-ID: On Wed, 29 Jan 2003, Marco "elcabesa" Belli wrote: > > yes you are right.. but a 56k modem without flat connection .. cost too much > to do what you say=) > > may be i'll upload some photo.. and the code. then if you like it you can test > it and may be hack it and upload it ( hmmm last thingh will make me very > happy hehehe ) Don't send images to the list, but you can simply attach the source code. Then somebody else with a faster connection can test as well. gruel From xvid-devel@xvid.org Wed Jan 29 14:28:49 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Wed, 29 Jan 2003 15:28:49 +0100 Subject: [XviD-devel] adaptive quant improvement In-Reply-To: References: Message-ID: <200301291528.49115.elcabesa@inwind.it> p.s. i use to put this line of code inside if{ } to see which mb quantizer were changed by my code ptr[7 * stride + 7]=255; ptr[7 * stride + 8]=255; ptr[8 * stride + 7]=255; ptr[8 * stride + 8]=255; this is the code that only replace adaptive quant code changing the min_level, medium_level mhlevel and huighleve you can change threshold int adaptive_quantization(unsigned char *buf, int stride, int *intquant, int framequant, int min_quant, int max_quant, int mb_width, int mb_height) // no qstride because normalization { int i, j, k, l; float *quant; unsigned char *ptr; float *val; float *quad; float global = 0.; float media=0.; float min_level=0.0001; //3 float medium_level=0.0003; // 4 float mh_level=0.003; float high_level=0.009; // 5 float result; if (!(quant = (float *) malloc(mb_width * mb_height * sizeof(float)))) return(-1); if (!(quad = (float *) malloc(mb_width * mb_height * sizeof(float)))) return(-1); if(!(val = (float *) malloc(mb_width * mb_height * sizeof(float)))) return(-1); for (k = 0; k < mb_height; k++) { for (l = 0; l < mb_width; l++) // do this for all macroblocks individually { quant[k * mb_width + l] = (float) framequant; // calculate luminance-masking ptr = &buf[16 * k * stride + 16 * l]; // address of MB val[k * mb_width + l] = 0.; quad[k * mb_width + l] = 0.; for (i = 0; i < 16; i++) for (j = 0; j < 16; j++) val[k * mb_width + l] += ptr[i * stride + j]; val[k * mb_width + l] /= 256.; media=val[k * mb_width + l]; for (i = 0; i < 16; i++) for (j = 0; j < 16; j++) quad[k * mb_width + l]+=(ptr[i * stride + j]-media)*(ptr[i * stride + j]-media); quad[k * mb_width + l]/=65536.; result=quad[k * mb_width + l]/media; if(resultmax_quant) quant[k * mb_width + l]=max_quant; } } i = normalize_quantizer_field(quant, intquant, mb_width * mb_height, min_quant, max_quant); free(val); free(quant); free(quad); return(i); } From xvid-devel@xvid.org Wed Jan 29 15:23:32 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Wed, 29 Jan 2003 16:23:32 +0100 (CET) Subject: [XviD-devel] adaptive quant improvement In-Reply-To: <200301291528.49115.elcabesa@inwind.it> References: <200301291528.49115.elcabesa@inwind.it> Message-ID: <1043853812.3e37f1f471ecf@imp.free.fr> En réponse à "Marco \"elcabesa\" Belli" : > [CODE SAMPLE] I tested it on a 30x cactus file (not a serious test), btw your code gives better PSNR at same bitrate. I'll do more tests this evening. Anyway, my answer is more a good way to ask everyone here, why the luminance masking is done in YUV while in DCT space the DC component of each block is already the average of the block (vertical and horyzontal null frequencies == average). It's just scaled by a N/sqrt(2) or something very close to that. Would not it be more logical to do luminance masking just after fDCT to avoid a "let's do computations in plain C now and then do them again in optimized assembly" ? This suggestion is at least right for your(marco) implementation and the one in 0.9.x tree. I did not have time to look at refdivx's implementation yet. Avg. Q6 br 0900 (0.43 bpp) size 3562 (712kbps) enc: 26.2 fps, dec: 183.2 fps PSNR P(89): 49.35 (40.65, 50.74) I(1): 40.41 (40.41, 40.41) Avg. Q6 br 0795 (0.38 bpp) size 3566 (713 kbps) enc: 24.0 fps, dec: 190.1 fps PSNR P(89): 49.62 (40.90 , 51.59) I(1): 40.74 (40.74 , 40.74) -- Edouard Gomez From xvid-devel@xvid.org Wed Jan 29 16:24:38 2003 From: xvid-devel@xvid.org (josse) Date: Wed, 29 Jan 2003 17:24:38 +0100 Subject: [XviD-devel] timer.c File Message-ID: <3E380046.6000604@epost.de> Hi, i read in the File "timer.c" that i need the funktions in this file only for debug mode. Then can compile the code without the "timer.c, timer.h and the time.h file" if compile a release version not a debug version. Is the idea ok or can i do this not. josse From xvid-devel@xvid.org Wed Jan 29 18:10:09 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Wed, 29 Jan 2003 19:10:09 +0100 Subject: [XviD-devel] timer.c File In-Reply-To: <3E380046.6000604@epost.de> References: <3E380046.6000604@epost.de> Message-ID: <20030129181009.GB534@leloo> --LpQ9ahxlCli8rRTG Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable josse (josse11@epost.de) wrote: > i read in the File "timer.c" that i need the funktions in this file=20 > only for debug mode. > Then can compile the code without the "timer.c, timer.h and the time.h=20 > file" if compile a release version > not a debug version. > Is the idea ok or can i do this not. hi, by default the timer.c file does compile but is not usefull at all as it is enclosed in a #ifdef _PROFILE_ #endif preprocessor directive. And by default _PROFILE_ is not set. So don't remove the files, you have just to compile the sources as they are packaged. --=20 Edouard Gomez --LpQ9ahxlCli8rRTG Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+OBkBR5dTYz5sWMcRAmqbAKDx0gECqvMP67WPSzvIkhJaubd+rwCeMNUm 5eFVmdpEjx/fcNO2fd3a8Bw= =T4XB -----END PGP SIGNATURE----- --LpQ9ahxlCli8rRTG-- From xvid-devel@xvid.org Wed Jan 29 20:10:28 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Wed, 29 Jan 2003 21:10:28 +0100 Subject: [XviD-devel] adaptive quant improvement In-Reply-To: <200301291528.49115.elcabesa@inwind.it> References: <200301291528.49115.elcabesa@inwind.it> Message-ID: <20030129201028.GC534@leloo> --jL2BoiuKMElzg3CS Content-Type: multipart/mixed; boundary="DIOMP1UsTsWJauNi" Content-Disposition: inline --DIOMP1UsTsWJauNi Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hello again, i worked a bit on the code to understand it from the "math" point of view, i cleaned it up a bit making clearer math formulas. One of the formulas is also an optimization because it avoids some substraction and allows variance and mean values computation at the same time. Now i'll perform some tests @marco: where do these magic numbers come from ? the 256 divisor and thresholds ? --=20 Edouard Gomez --DIOMP1UsTsWJauNi Content-Type: text/x-csrc; charset=us-ascii Content-Disposition: attachment; filename="adapt.c" int adaptive_quantization(unsigned char *buf, int stride, int *intquant, int framequant, int min_quant, int max_quant, int mb_width, int mb_height) { int i, j, k, l; float *quant; unsigned char *ptr; float *avg; float *var; const float min_level = 0.0001; const float medium_level = 0.0003; const float mh_level = 0.003; const float high_level = 0.009; float result; /* Allocate buffers */ if ((quant = (float *)malloc(mb_width*mb_height*sizeof(float))) == NULL) return(-1); if((var = (float *)malloc(mb_width*mb_height*sizeof(float))) == NULL) { free(quant); return(-1); } if((avg = (float *)malloc(mb_width*mb_height*sizeof(float))) == NULL) { free(quant); free(var); return(-1); } /* Do luminance masking for all MBs */ for(k = 0; k < mb_height; k++) { for(l = 0; l < mb_width; l++) { quant[MB] = (float)framequant; /* Get current MB */ ptr = &buf[16 * k * stride + 16 * l]; /* Initialize average and variance */ avg[k*mb_width + l] = 0.; var[k*mb_width + l] = 0.; /* * Compute both at a time using the relation : * E[(X-m)^2] = E[X^2] - m^2 * * where m = E[X] == average(mean?) value */ for (i = 0; i < 16; i++) { for (j = 0; j < 16; j++) { /* Accumulate E[X] */ avg[k*mb_width + l] += ptr[i*stride + j]; /* Accumulate E[X^2] */ var[k*mb_width + l] += ptr[i*stride + j]*ptr[i*stride + j]; } } /* Finishes to compute the average == E[X]*/ avg[k*mb_width + l] /= 16.0*16.0; /* Finishes to compute the sum of square values == E[X^2] */ var[k*mb_width + l] /= 16.0*16.0; /* Now turn it into variance == E[(X-m)^2] */ var[k*mb_width + l]-=avg[k*mb_width + l]*avg[k*mb_width + l]; /* Compute the result */ result = var[k*mb_width + l]/(256.0*avg[k*mb_width + l]); /* Ok - Boost or Penalize quantizer */ if(result < min_level) { quant[k*mb_width + l] += 4; } else if(result < medium_level) { quant[k*mb_width + l] += 2; } else if(result < mh_level) { } else if(result < high_level) { quant[k*mb_width + l] -= 2; } else { quant[k*mb_width + l] -= 4; } /* Clamp the result to valid range */ if(quant[k*mb_width + l] < min_quant) quant[k*mb_width + l] = min_quant; if(quant[k*mb_width + l] > max_quant) quant[k*mb_width + l]=max_quant; } } /* Normalize the quantizer field */ i = normalize_quantizer_field(quant, intquant, mb_width * mb_height, min_quant, max_quant); /* Free memory */ free(avg); free(var); free(quant); return(i); } --DIOMP1UsTsWJauNi-- --jL2BoiuKMElzg3CS Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+ODU0R5dTYz5sWMcRAh/+AJ9sEFQLxd1I/PmoJZOgT3ACmmIkHgCfQ0Vd Hi6ea34PyTJDHeClq0XIAng= =jHeA -----END PGP SIGNATURE----- --jL2BoiuKMElzg3CS-- From xvid-devel@xvid.org Thu Jan 30 08:17:34 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Thu, 30 Jan 2003 09:17:34 +0100 (CET) Subject: [XviD-devel] adaptive quant improvement In-Reply-To: <200301281748.43837.elcabesa@inwind.it> Message-ID: On Tue, 28 Jan 2003, Marco "elcabesa" Belli wrote: > i'm worknig on a new adaptive quant to give more bit to mblock where > there are more details or edge. i am testing it and it seems to work.. > but i doesn't know how to make enance his performance. Can you explain a little what you did? Others might be interested in adaptive quant as well. And since I just read "details or edge". I think it's commonly agree that a good strategy is to give more bits to edges (to prevent mosquito noise), but less bits to "highly structured areas", because errors are much less visible there. Maybe also more bits to flat areas, because errors are very well visible there, and also, there aren't many bits to safe there anyway. In case you didn't check, Dirk Farin did some research on this for his MPEG-2 encoder. I don't know an english language URL for this, but it's surely in the sources http://rachmaninoff.informatik.uni-mannheim.de/sampeg/ I guess what he uses is called "luminance masking" and "activity masking". P.S. Even with EXTRASTATS, don't rely on PSNR to judge your routines. Adaptive quant normally _lowers_ PSNR while it can still improve visual quality. gruel From xvid-devel@xvid.org Thu Jan 30 09:12:15 2003 From: xvid-devel@xvid.org (josse) Date: Thu, 30 Jan 2003 10:12:15 +0100 Subject: [XviD-devel] timer.c File In-Reply-To: <20030129181009.GB534@leloo> References: <3E380046.6000604@epost.de> <20030129181009.GB534@leloo> Message-ID: <3E38EC6F.9000906@epost.de> Edouard Gomez schrieb: >josse (josse11@epost.de) wrote: > > >>i read in the File "timer.c" that i need the funktions in this file >>only for debug mode. >>Then can compile the code without the "timer.c, timer.h and the time.h >>file" if compile a release version >>not a debug version. >>Is the idea ok or can i do this not. >> >> > >hi, > >by default the timer.c file does compile but is not usefull at all as it >is enclosed in a #ifdef _PROFILE_ #endif preprocessor directive. And by >default _PROFILE_ is not set. > >So don't remove the files, you have just to compile the sources as they >are packaged. > > > Hi the problem is that the destination plattform is a DSP and the header file "time.h" is from MS an i don't no if it works correct whit this file. From xvid-devel@xvid.org Thu Jan 30 10:41:19 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Thu, 30 Jan 2003 11:41:19 +0100 Subject: [XviD-devel] adaptive quant improvement In-Reply-To: <20030129201028.GC534@leloo> References: <200301291528.49115.elcabesa@inwind.it> <20030129201028.GC534@leloo> Message-ID: <200301301141.19596.elcabesa@inwind.it> Wednesday 29 January 2003 21:10, Edouard Gomez wrote: > Hello again, > > i worked a bit on the code to understand it from the "math" point of > view, i cleaned it up a bit making clearer math formulas. > > One of the formulas is also an optimization because it avoids some > substraction and allows variance and mean values computation at the same > time. > > Now i'll perform some tests > yeah you are right variance is e(x^2)-m^2 so the code should be faster now a reply ofr you and for Gruel my code, that should work better if joint with your lumi_mask/weber_law, only calc for each mbloc variance/mean and the if result is a higher thant a threshold value it decrease the quanitzer, if it's lower it raise it some test told me that variance /mean is a simple way to see where are edge or high detail area, since flat area have a low variance. > @marco: where do these magic numbers come from ? > the 256 divisor and thresholds ? 256 divisor is to calc average but 65536 division is wrong..... 'couse mean is e[x]= 1/(16*16) sum { lum[x,y] } x:0 to 15 y:0 to 15 but variance is 1/(16*16) sum { (lum[x,y]-e[x])^2 } x:0 to 15 y:0 to 15 so my divsion by 65536 is wrong BUT this will not make us go to a wrong quantizer setting..couse threshold are not calc value.. but experimentally tuned over image=) so all division inside code can be move inside the treshold value=) the way i get this threshold value is this: i changed my code to something like this if(result < min_level) { quant[k*mb_width + l] += 4; ptr[7 * stride + 7]=255; ptr[7 * stride + 8]=255; ptr[8 * stride + 7]=255; ptr[8 * stride + 8]=255; } then i do a encode with quant=0 and graphically see which mblock quantizer has been changed. i think i have reply to all your question. if more please tell me=) thank gruel for the paper i'll look at it asap >Anyway, my answer is more a good way to ask everyone here, why the luminance >masking is done in YUV while in DCT space the DC component of each block is >already the average of the block (vertical and horyzontal null frequencies == >average). It's just scaled by a N/sqrt(2) or something very close to that. > >Would not it be more logical to do luminance masking just after fDCT to avoid >a "let's do computations in plain C now and then do them again in optimized >assembly" ? i know it and i think that lumi maskk too should be done this way, but i wanted not change all codec to do my test , and i don0t know mpeg4 standard.. so i don't know when i broke standards changing something in code=) if you like i could try to move lumi mask after dct, but i don't know how many fuction i need to change =) a quesiton e[x]= sqrt(2)/16 *dct[0,0] ? From xvid-devel@xvid.org Thu Jan 30 13:59:19 2003 From: xvid-devel@xvid.org (skal) Date: 30 Jan 2003 14:59:19 +0100 Subject: [XviD-devel] sources for my MPEG4 codec here Message-ID: <1043935159.1456.10.camel@latitude344> Hi, I think it's good to have an "alternative" interpretation of the norm, in order to compare bitstreams => my codec sources are available here: http://skal.planet-d.net/coding/mpeg4codec.html the encoder/analyzer is a full mess, but the decoder can be of some help, I think... take care, Skal From xvid-devel@xvid.org Thu Jan 30 15:42:10 2003 From: xvid-devel@xvid.org (richard Marin) Date: Thu, 30 Jan 2003 16:42:10 +0100 Subject: [XviD-devel] another Platform supporting Xvid :o) Message-ID: just for info, in your FAQ i can see this: "·  What platforms is XviD ported to now? Core library is higly portable. Known working platforms : - Win32 + MSVC - Win32 + cygwin (both cygwin and -mno-cygwin targets) - Win32 + mingw - GNU/Linux x86/ppc/sparc 64bit/ia64 - Solaris 8 sparc 64bit Makefiles are available for these platforms but we have no feedback : - FreeBSD x86 - DOS + Djgpp" But i'd like to announce you that i'm under MacOS X (10.2) and i can play and encode Xvid... and i'm so glad of that !! Thanx for your developments. :o))) From xvid-devel@xvid.org Thu Jan 30 21:23:33 2003 From: xvid-devel@xvid.org (Edouard Gomez) Date: Thu, 30 Jan 2003 22:23:33 +0100 Subject: [XviD-devel] [RFC] What about a 0.9.1 release ? Message-ID: <20030130212333.GA15948@leloo> --BXVAT5kNtrzKuDFl Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hello, I wonder if it would make sense to release a last 0.9.x XviD core before we put dev-api-3 back into CVS_HEAD ? Functionality ChangeLog is null, but there have been some bugfixes and the VLC code change that saves lot of memory. Plus ANSI C comliance. I think we should do a 0.9.1 release. What's your opinion ? --=20 Edouard Gomez --BXVAT5kNtrzKuDFl Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+OZfVR5dTYz5sWMcRAiS5AJ4wDaGM1aLwiMYvBot7L676+Y2g6QCdH1gs g50nS439fjZ7DRx6TxPnhYE= =KkY3 -----END PGP SIGNATURE----- --BXVAT5kNtrzKuDFl-- From xvid-devel@xvid.org Thu Jan 30 23:16:03 2003 From: xvid-devel@xvid.org (Jason Lunz) Date: Thu, 30 Jan 2003 23:16:03 +0000 (UTC) Subject: [XviD-devel] Re: [RFC] What about a 0.9.1 release ? References: <20030130212333.GA15948@leloo> Message-ID: ed.gomez@free.fr said: > I wonder if it would make sense to release a last 0.9.x XviD core before > we put dev-api-3 back into CVS_HEAD ? > > Functionality ChangeLog is null, but there have been some bugfixes and > the VLC code change that saves lot of memory. Plus ANSI C comliance. > > I think we should do a 0.9.1 release. What's your opinion ? I think you should do it too. That way, users who aren't closely following new developments don't need to figure out the new API or update their software for it until they're ready, but they can still at least get bugfixes. Jason From xvid-devel@xvid.org Fri Jan 31 10:47:41 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Fri, 31 Jan 2003 11:47:41 +0100 Subject: [XviD-devel] adaptive quant improvement In-Reply-To: References: Message-ID: <200301311147.41323.elcabesa@inwind.it> > Can you explain a little what you did? Others might be interested in > adaptive quant as well. i have reply in another one mail=) > In case you didn't check, Dirk Farin did some research on this for his > MPEG-2 encoder. I don't know an english language URL for this, but it's > surely in the sources > > http://rachmaninoff.informatik.uni-mannheim.de/sampeg/ thanks for this if you have some free time can you explain how it activity work? i look doc.. and understood nothing else than formula i read code and found a different formula so i cna't undestodd very well what it has done=) this is what i can understood. activity = edge detection using diffrence between adiacent pixel then it work on this activity making average activiti and something else i cant' understood.. then it use an expression to comute the value of quantizer am i right? From xvid-devel@xvid.org Fri Jan 31 11:21:12 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 31 Jan 2003 12:21:12 +0100 (CET) Subject: [XviD-devel] adaptive quant improvement In-Reply-To: <200301311147.41323.elcabesa@inwind.it> Message-ID: On Fri, 31 Jan 2003, Marco "elcabesa" Belli wrote: > > In case you didn't check, Dirk Farin did some research on this for his > > MPEG-2 encoder. I don't know an english language URL for this, but it's > > surely in the sources > > > > http://rachmaninoff.informatik.uni-mannheim.de/sampeg/ > > thanks for this > if you have some free time can you explain how it activity work? Sorry, I'm extremely busy at the moment. Maybe somebody else can? gruel From xvid-devel@xvid.org Fri Jan 31 17:17:24 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 31 Jan 2003 18:17:24 +0100 (CET) Subject: [XviD-devel] HVS, Adaptive Quant, "activity" Message-ID: Hi, did anyone ever have a look at MPQM (Moving Picture Quality Metric)? http://citeseer.nj.nec.com/basso96study.html http://citeseer.nj.nec.com/vandenbrandenlambrec96working.html http://citeseer.nj.nec.com/verscheure96perceptual.html For some reasons, it seems to disappears after '97, but some parts seem familiar, e.g. "activity" masking gruel From xvid-devel@xvid.org Fri Jan 31 18:35:04 2003 From: xvid-devel@xvid.org (Marco "elcabesa" Belli) Date: Fri, 31 Jan 2003 19:35:04 +0100 Subject: [XviD-devel] XVID_REDUCED question/bug Message-ID: <200301311935.04347.elcabesa@inwind.it> i'm testing my adaptive quant code and it suddenly stop working when used with XVID_REDUCED i think that this is a xvid bug becouse inside FRAMECODEI fuction i find if ((pEnc->current->global_flags & XVID_REDUCED)) { mb_width = (pEnc->mbParam.width + 31) / 32; mb_height = (pEnc->mbParam.height + 31) / 32; /* 16x16->8x8 downsample requires 1 additional edge pixel*/ /* XXX: setedges is overkill */ start_timer(); image_setedges(&pEnc->current->image, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height, pEnc->mbParam.width, pEnc->mbParam.height); stop_edges_timer(); } so if reduced size it calc a new number of mblock for image to be encoded but then after few line i found for (y = 0; y < mb_height; y++) for (x = 0; x < mb_width; x++) { MACROBLOCK *pMB = &pEnc->current->mbs[x + y * pEnc->mbParam.mb_width]; CodeIntraMB(pEnc, pMB); MBTransQuantIntra(&pEnc->mbParam, pEnc->current, pMB, x, y, dct_codes, qcoeff); start_timer(); MBPrediction(pEnc->current, x, y, pEnc->mbParam.mb_width, qcoeff); stop_prediction_timer(); start_timer(); if (pEnc->current->global_flags & XVID_GREYSCALE) { pMB->cbp &= 0x3C; /* keep only bits 5-2 */ qcoeff[4*64+0]=0; /* zero, because for INTRA MBs DC value is saved */ qcoeff[5*64+0]=0; } MBCoding(pEnc->current, pMB, qcoeff, bs, &pEnc->current->sStat); stop_coding_timer(); } where MACROBLOCK *pMB = &pEnc->current->mbs[x + y * pEnc->mbParam.mb_width]; mblock data are the old one calc by NOT_REDUCED code so quantizer that have benn calc were all woring, we sohuld take quant witha 1/4 frequency i don0t know why but old lumi_mask work, or it change less the quant table or i'm totally wrong and this mail has only to be removed form your memory =) From xvid-devel@xvid.org Fri Jan 31 19:36:37 2003 From: xvid-devel@xvid.org (Christoph Lampert) Date: Fri, 31 Jan 2003 20:36:37 +0100 (CET) Subject: [XviD-devel] XVID_REDUCED question/bug In-Reply-To: <200301311935.04347.elcabesa@inwind.it> Message-ID: On Fri, 31 Jan 2003, Marco "elcabesa" Belli wrote: > i'm testing my adaptive quant code and it suddenly stop working when used > with XVID_REDUCED > i think that this is a xvid bug becouse inside FRAMECODEI fuction i find XVID_REDUCED is not a part of any MPEG-4 profile. it's not clear if it will be decodable with anything but what encoded it, and support in XVID isn't perfect, as far as I know... gruel From xvid-devel@xvid.org Fri Jan 31 21:54:59 2003 From: xvid-devel@xvid.org (suxen_drol) Date: Sat, 01 Feb 2003 08:54:59 +1100 Subject: [XviD-devel] XVID_REDUCED question/bug In-Reply-To: <200301311935.04347.elcabesa@inwind.it> References: <200301311935.04347.elcabesa@inwind.it> Message-ID: <20030201083912.7AD0.SUXEN_DROL@hotmail.com> hi. reduced encoding works fine here. there are NO compatibility issues with other software: fdam and envivio decode xvid-reduced streams correctly. On Fri, 31 Jan 2003 19:35:04 +0100 "Marco \"elcabesa\" Belli" wrote: > pEnc->current->mbs[x + y * pEnc->mbParam.mb_width]; we reduce mb_width and mb_height for the purpose of the x,y loop. the stride of the macroblock array remains the same. > i don0t know why but old lumi_mask work, or it change less the quant table or > i'm totally wrong and this mail has only to be removed form your memory =) lumimasking doesn't work with reduced resolution yet; it needs some minor changes. btw. you should not combine reduced with ASP profile features: ie. * bvops * quarterpel * gmc * interlacing -- pete; life is like a box of ammo