aMSN Forums
May 23, 2013, 04:12:56 am *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: New forum for aMSN !!
 
   Home   Help Search Login Register  
Pages: 1 ... 19 20 [21] 22 23 ... 46
  Print  
Author Topic: Audio/Video conversation  (Read 369934 times)
kakaroto
Administrator
Super Power User
*****
Offline Offline

Posts: 9428


View Profile WWW
« Reply #300 on: October 16, 2008, 12:10:17 am »

Hi Kalinda,
the voice chat is ready, but I haven't released libnice yet, so I'm waiting until we release the 0.0.2 version of libnice and 0.0.4 version of farsight2 (which will support libnice). It should be done sometime next week.
Once it's all done, then you can probably request ubuntu to make a package out of those... if they are too slow, I can make one...
But note that ubuntu hardy has old dependencies, so even if they create libnice and farsight2 packages, there dependencies will be too old to work, so you will need to change your apt source to Intrepid instead of Hardy... or just use the Intrepid packages as they should work on Hardy...
either way, packaging is not my concern :p
Logged

KaKaRoTo
trv
Super Power User
**
Offline Offline

Posts: 154


View Profile WWW
« Reply #301 on: October 16, 2008, 03:11:38 pm »

or just upgrade to Intrepid, it's pretty stable even now. Or just way 2 weeks until it's released. Once you're on intrepid, then you will need just the libnice and farsight2 debs (made from the packages kakaroto will release next week)
Logged
farseeing
Newbie

Offline Offline

Posts: 12


View Profile
« Reply #302 on: October 16, 2008, 03:48:48 pm »

Hi Kakaroto,
(been busy for a while sorry for answering 2 pages late !). Thanks you for this, that sounds useful. I will try new svn version and be careful with sound mixing.

 

Quote
@farseeing :
ok, i got some news for you :
1 - the freezing seems to happen when someone sends you an invite and cancels it right away, so I'm guessing that while you were having that audio call, someone sent you an invite and canceled it (or something similar happened) and that made amsn freeze... that issue is now fixed in the latest SVN version of amsn.
2 - The problem where amsn says you don't have farsight because it reports :

Quote:
** (<unknown>:8314): DEBUG: Got an error on the BUS (4): Could not open audio device for recording. Device is being used by another application. (gstalsasrc.c(635): gst_alsasrc_open (): /pipeline/gconfaudiosrc1/bin5/alsasrc1:
Device 'hw:1,0' is busy)

this happens when amsn tries to launch farsight at the same time as it's playing a sound, so if for example, you start a call, cancel it right away, then try to start it again (before the 'ringing' sound has finished playing), then it will have this error..
If you try to launch amsn at the same time as someone connects/changes state or whatever that causes amsn to play a sound, then it will fail... so that's the trick! Hopefully, we'll have sometime in the future a better system for all of this, don't worry.

p.s.: I still get the memory corruption, but it seems much harder to reproduce...
Logged
Kalinda
Power user
*
Offline Offline

Posts: 97


View Profile
« Reply #303 on: October 16, 2008, 03:59:19 pm »

Quote from: "kakaroto"
Hi Kalinda,
the voice chat is ready, but I haven't released libnice yet, so I'm waiting until we release the 0.0.2 version of libnice and 0.0.4 version of farsight2 (which will support libnice). It should be done sometime next week.
Once it's all done, then you can probably request ubuntu to make a package out of those... if they are too slow, I can make one...
But note that ubuntu hardy has old dependencies, so even if they create libnice and farsight2 packages, there dependencies will be too old to work, so you will need to change your apt source to Intrepid instead of Hardy... or just use the Intrepid packages as they should work on Hardy...
either way, packaging is not my concern :p

Alrighty, sounds good Smiley Thanks

Quote from: "trv"
or just upgrade to Intrepid, it's pretty stable even now. Or just way 2 weeks until it's released. Once you're on intrepid, then you will need just the libnice and farsight2 debs (made from the packages kakaroto will release next week)

Yeeeah... I could... buuuut... I use Kubuntu... and KDE 4 is not ready for me yet... perhaps in January when they release 4.2. I'm glad the release I'm stuck with is LTS, though. That doesn't matter too much anyhow, as Intrepid packages will work in Hardy.
Logged
lordamus
Power user
*
Offline Offline

Posts: 85


View Profile
« Reply #304 on: October 17, 2008, 04:44:43 am »

I did everything in your post but amsn svn cant find farsight2 to compile sadly Sad   I`m on F9 x86_64    Any clue ?       (I did ldconfig thing as writed)

checking for GLIB... yes                                        
checking for GST... yes                                        
checking for FARSIGHT2... no                                    
checking for LIBV4L... no                                      
configure: creating ./config.status                            
config.status: creating Makefile                                
config.status: creating utils/linux/capture/config.h            
config.status: utils/linux/capture/config.h is unchanged        

compile time options summary
============================

    X11          : yes
    Tcl          : 8.5
    TK           : 8.5
    DEBUG        : no
    STATIC       : no
    FARSIGHT     : no
    LIBV4L       : no




Quote from: "MastaG"
Quote from: "farseeing"
Got it work on Fedora 9 !
Spent hours with snack2.2 and finally gave up and tried farsight. So for those who may be helped by that, here are some tips I had to do to adapt the procedure on the beginning of this thread to my needs.

I'm using :
- fedora 9 with kernel 1.6.25 (due to graphic driver issues, hum, well...anyway)
-pulse-audio, alsa and all this stuff I don't understand anything in !
-aMSN from svn : v.10479 at this very second
- farsight 2 : 0.0.3 (had to cheat see below) --> http://farsight.freedesktop.org/releases/farsight2/farsight2-0.0.3.tar.gz
- gst-plugins : 0.12.9  --> use yum or add/remove software, all plugins available for F9 in my configured repositories (usuals + livna)
- libnice.


I've just followed the above procedure (obviously using yum instead of apt)  except for several points where I had to struggle with versions problems :

# I followed the procedure using git but the version of farsight2 there didn't seem to work.
so I downloaded farsight2-0.0.3.tar.gz (see link above), unpacked and manually copy files in farsight2-0.0.3/common from the git tree of farsight2 I created : gst-autogen.sh, gst.supp. -I have 4 files & 1 folder in this directory). I'm then using this version of farsight2 instead of the git tree version

# After the ./configure step in farsight2-0.0.3 installation and just before the make, I edited farsight2.pc and farsight2-0.10.pc and change version 0.0.3 by 0.0.3.1. then go back to the procedure and perform make and make install. (otherwise aMSN doesn't recognized farsight.).

#  (yes, don't forget to do the ldconfig as prescribed !)

# then I installed aMSN

AND THAT'S WORKIN DAMN FINE RIGHT NOW !!!!
[/url]
[/img]


Hell yes!
Same here Smiley

So to sum things up:

Install the following packages from the repo's:
Code:

gstreamer-plugins-bad-0.10.7-1.lvn9.i386
gstreamer-0.10.19-1.fc9.i386
gstreamer-plugins-good-0.10.8-8.fc9.i386
gstreamer-tools-0.10.19-1.fc9.i386
gstreamer-plugins-pulse-0.9.5-0.5.svn20070924.fc9.i386
gstreamer-plugins-base-devel-0.10.19-2.fc9.i386
gstreamer-plugins-bad-extras-0.10.7-1.lvn9.i386
gstreamer-plugins-base-0.10.19-2.fc9.i386
gstreamer-plugins-bad-devel-0.10.7-1.lvn9.i386
gstreamer-devel-0.10.19-1.fc9.i386
gstreamer-plugins-good-devel-0.10.8-8.fc9.i386
gstreamer-plugins-ugly-0.10.8-1.lvn9.i386


Install the latest gst-plugins-farsight (the one from the repo's is outdated).
Code:

wget http://farsight.freedesktop.org/releases/gst-plugins-farsight/gst-plugins-farsight-0.12.9.tar.gz
tar zxfv gst-plugins-farsight-0.12.9.tar.gz
cd gst-plugins-farsight-0.12.9
./configure --prefix=/usr
make
sudo make install
cd ..


Obtain and install libnice (be sure to have git installed: sudo yum install git)
Code:

git clone git://git.collabora.co.uk/git/user/kakaroto/nice.git libnice
cd libnice
git checkout -b nice-kakaroto origin/nice-kakaroto
./autogen.sh --prefix=/usr
make
sudo make install
cd ..


Install farsight2
Code:

git clone git://git.collabora.co.uk/git/user/kakaroto/farsight2.git farsight2
cd farsight2
git checkout -b nice origin/nice
cd ..
wget http://farsight.freedesktop.org/releases/farsight2/farsight2-0.0.3.tar.gz
tar zxfv farsight2-0.0.3.tar.gz
cd farsight2-0.0.3
cp -f ../farsight2/common/check.mak ./common/
cp -f ../farsight2/common/gst.supp ./common/
cp -f ../farsight2/common/gst-autogen.sh ./common/
cp -f ../farsight2/common/gtk-doc.mak ./common/
./autogen --prefix=/usr --disable-python
nano -w farsight2.pc

Now change the version from 0.0.3 to 0.0.3.1
Press CTRL+O to save and CTRL+X to quit nano.
Code:

make
sudo make install
sudo /sbin/ldconfig
cd ..


Voila, check out the latest svn of amsn and you should be able to make voice calls:)
Logged
kakaroto
Administrator
Super Power User
*****
Offline Offline

Posts: 9428


View Profile WWW
« Reply #305 on: October 17, 2008, 07:07:36 am »

make sure you used the GIT repository of farsight2, that you did the checkout of the appropriate branch, and that you configured it with --prefix=/usr...
Many people seem to screw it up, but then when they retry everything and make sure they follow my step by step guide, it works fine for them in the end...
Logged

KaKaRoTo
lordamus
Power user
*
Offline Offline

Posts: 85


View Profile
« Reply #306 on: October 17, 2008, 05:22:34 pm »

yeah First I tryed farsight2.0.0.3 then your GIT repository but farsight2 cant find libnice to compile error..LIbnice compiled well from your repository(I use ./autogen.sh --prefix=/usr )

here is libnice compile info    http://pastebin.com/d477f45bb     some incompatible warnings there..

 farsight2]# ./autogen.sh --prefix=/usr --disable-python
+ passing argument --prefix=/usr to configure                      
+ passing argument --disable-python to configure                    
+ options passed to configure:  --prefix=/usr --disable-python      
+ check for build tools                                            
  checking for autoconf >= 2.52 ... found 2.61, ok.                
  checking for automake >= 1.7 ... found 1.10.1, ok.                
  checking for libtoolize >= 1.5.0 ... found 1.5.24, ok.            
  checking for pkg-config >= 0.8.0 ... found 0.23, ok.              
+ running aclocal -I common/m4 ...                                  
+ running libtoolize --copy --force...                              
+ running autoheader ...                                            
+ running autoconf ...                                              
+ running automake -a -c -Wno-portability...                        
+ running configure ...                                            
  ./configure default flags: --enable-gtk-doc --enable-plugin-docs  
  ./configure external flags:  --prefix=/usr --disable-python      

checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes          
checking for a thread-safe mkdir -p... /bin/mkdir -p        
checking for gawk... gawk                                  
checking whether make sets $(MAKE)... yes                  
checking nano version... 1                                  
checking build system type... x86_64-unknown-linux-gnu      
checking host system type... x86_64-unknown-linux-gnu      
checking for style of include used by make... GNU          
checking for gcc... gcc                                    
checking for C compiler default output file name... a.out  
checking whether the C compiler works... yes                
checking whether we are cross compiling... no              
checking for suffix of executables...                                                                          
checking for suffix of object files... o                                                                        
checking whether we are using the GNU C compiler... yes                                                        
checking whether gcc accepts -g... yes                                                                          
checking for gcc option to accept ISO C89... none needed                                                        
checking dependency style of gcc... gcc3                                                                        
checking for a sed that does not truncate output... /bin/sed                                                    
checking for grep that handles long lines and -e... /bin/grep                                                  
checking for egrep... /bin/grep -E                                                                              
checking for ld used by gcc... /usr/bin/ld                                                                      
checking if the linker (/usr/bin/ld) is GNU ld... yes                                                          
checking for /usr/bin/ld option to reload object files... -r                                                    
checking for BSD-compatible nm... /usr/bin/nm -B                                                                
checking whether ln -s works... yes                                                                            
checking how to recognize dependent libraries... pass_all                                                      
checking how to run the C preprocessor... gcc -E                                                                
checking for ANSI C header files... yes                                                                        
checking for sys/types.h... yes                                                                                
checking for sys/stat.h... yes                                                                                  
checking for stdlib.h... yes                                                                                    
checking for string.h... yes                                                                                    
checking for memory.h... yes                                                                                    
checking for strings.h... yes                                                                                  
checking for inttypes.h... yes                                                                                  
checking for stdint.h... yes                                                                                    
checking for unistd.h... yes                                                                                    
checking dlfcn.h usability... yes                                                                              
checking dlfcn.h presence... yes                                                                                
checking for dlfcn.h... yes                                                                                    
checking for g++... g++                                                                                        
checking whether we are using the GNU C++ compiler... yes                                                      
checking whether g++ accepts -g... yes                                                                          
checking dependency style of g++... gcc3                                                                        
checking how to run the C++ preprocessor... g++ -E                                                              
checking for g77... no                                                                                          
checking for xlf... no                                                                                          
checking for f77... no                                                                                          
checking for frt... no                                                                                          
checking for pgf77... no                                                                                        
checking for cf77... no                                                                                        
checking for fort77... no                                                                                      
checking for fl32... no                                                                                        
checking for af77... no                                                                                        
checking for xlf90... no                                                                                        
checking for f90... no                                                                                          
checking for pgf90... no                                                                                        
checking for pghpf... no                                                                                        
checking for epcf90... no                                                                                      
checking for gfortran... gfortran                                                                              
checking whether we are using the GNU Fortran 77 compiler... yes                                                
checking whether gfortran accepts -g... yes                                                                    
checking the maximum length of command line arguments... 1966080                                                
checking command to parse /usr/bin/nm -B output from gcc object... ok                                          
checking for objdir... .libs                                                                                    
checking for ar... ar                                                                                          
checking for ranlib... ranlib                                                                                  
checking for strip... strip                                                                                    
checking if gcc supports -fno-rtti -fno-exceptions... no                                                        
checking for gcc option to produce PIC... -fPIC                                                                
checking if gcc PIC flag -fPIC works... yes                                                                    
checking if gcc static flag -static works... yes                                                                
checking if gcc supports -c -o file.o... yes                                                                    
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes                    
checking whether -lc should be explicitly linked in... no                                                      
checking dynamic linker characteristics... GNU/Linux ld.so                                                      
checking how to hardcode library paths into programs... immediate                                              
checking whether stripping libraries is possible... yes                                                        
checking for shl_load... no                                                                                    
checking for shl_load in -ldld... no
checking for dlopen... no
checking for dlopen in -ldl... yes
checking whether a program can dlopen itself... yes
checking whether a statically linked program can dlopen itself... no
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
configure: creating libtool
appending configuration tag "CXX" to libtool
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC
checking if g++ PIC flag -fPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
appending configuration tag "F77" to libtool
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for gfortran option to produce PIC... -fPIC
checking if gfortran PIC flag -fPIC works... yes
checking if gfortran static flag -static works... yes
checking if gfortran supports -c -o file.o... yes
checking whether the gfortran linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for VALGRIND... no
no
configure: Using Farsight2 source release as package name
configure: Using Unknown package origin as package origin
configure: Using /usr/libexec/gst-install-plugins-helper as plugin install helper

configure: *** checking feature: enable building of plug-ins with external deps ***
configure: building external plug-ins
checking for NICE... no
configure: error: Could not build libnice plugin because libnice is not installed
  configure failed


Quote from: "kakaroto"
make sure you used the GIT repository of farsight2, that you did the checkout of the appropriate branch, and that you configured it with --prefix=/usr...
Many people seem to screw it up, but then when they retry everything and make sure they follow my step by step guide, it works fine for them in the end...
Logged
kakaroto
Administrator
Super Power User
*****
Offline Offline

Posts: 9428


View Profile WWW
« Reply #307 on: October 17, 2008, 06:03:21 pm »

hummm... libnice seems to install correctly.
Can you please see if there's a file  /usr/lib/pkgconfig/nice.pc on your system.
and type
Code:
pkg-config nice --modversion
and paste here the output...
this should tell us if pkg-config can find libnice or not.
thanks!
Logged

KaKaRoTo
lordamus
Power user
*
Offline Offline

Posts: 85


View Profile
« Reply #308 on: October 17, 2008, 09:40:44 pm »

farsight2]# pkg-config nice --modversion
Package nice was not found in the pkg-config search path.
Perhaps you should add the directory containing `nice.pc'
to the PKG_CONFIG_PATH environment variable
No package 'nice' found

yea there is a file nice.pc  in  /usr/lib/pkgconfig/    

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: libnice
Description: ICE library
Requires: glib-2.0 >= 2.10.0
Version: 0.0.1
Libs: -L${libdir} -lnice -pthread -lgobject-2.0 -lgthread-2.0 -lrt -lglib-2.0
Cflags: -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include   -I${includedir} -I${includedir}/nice

Maybe some shared lib problem on my x86_64 fedora  ?


Quote from: "kakaroto"
hummm... libnice seems to install correctly.
Can you please see if there's a file  /usr/lib/pkgconfig/nice.pc on your system.
and type
Code:
pkg-config nice --modversion
and paste here the output...
this should tell us if pkg-config can find libnice or not.
thanks!
Logged
kakaroto
Administrator
Super Power User
*****
Offline Offline

Posts: 9428


View Profile WWW
« Reply #309 on: October 18, 2008, 06:05:29 pm »

humm... :
Code:
echo $PKG_CONFIG_PATH

? in theory /usr/lib/pkgconfig should be the default.. maybe something is different on your system.
Logged

KaKaRoTo
lordamus
Power user
*
Offline Offline

Posts: 85


View Profile
« Reply #310 on: October 19, 2008, 12:51:59 pm »

that command shows nothing... I`ve  /usr/lib/pkgconfig  and /usr/lib64/pkgconfig   /usr/share/pkgconfig...   also  /usr/local/lib/pkgconfig/nice.pc     Any clue ?

Quote from: "kakaroto"
humm... :
Code:
echo $PKG_CONFIG_PATH

? in theory /usr/lib/pkgconfig should be the default.. maybe something is different on your system.
Logged
kakaroto
Administrator
Super Power User
*****
Offline Offline

Posts: 9428


View Profile WWW
« Reply #311 on: October 19, 2008, 07:06:17 pm »

nope!, no clue at all! try pasting here the output of
Code:
pkg-config --debug --print-errors nice --modversion
with this --debug option, it should give you the list of all files it scans! if there's anything wrong, then you'll find it with it.. maybe try to see if it searches for .pc files in /usr/lib/pkgconfig or if it looks in another directory...
either way, in theory if you do "export PKG_CONFIG_PATH=/usr/lib/pkgconfig" (since you said the file /usr/lib/pkgconfig/nice.pc exists there) then it should work....
make sure btw that the file is readable!
Logged

KaKaRoTo
lordamus
Power user
*
Offline Offline

Posts: 85


View Profile
« Reply #312 on: October 19, 2008, 09:55:49 pm »

here is the output   http://pastebin.com/d2302dd38      package nice not found...it looks directly to /usr/lib64/pkgconfig   so I`m on 64bit system... Maybe if I change pkg_config_path to /usr/lib/pkgconfig  there will be problems

Edit:  I did  export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/lib/pkgconfig/  and then farsight2 compiled well with no errors and I did ldconfig then compiled amsn svn 10606 without errors it found farsight well..But when I open amsn audio/video config it cant find farsight module ?  I did package require Farsight in amsn console it returns "0.1" and then farsight Prepare 1 it returns "Couldn't create fsrtpconference"   what can I do ?   I`m using gst-plugins-farsight-0.12.9  (compiled)


Quote from: "kakaroto"
nope!, no clue at all! try pasting here the output of
Code:
pkg-config --debug --print-errors nice --modversion
with this --debug option, it should give you the list of all files it scans! if there's anything wrong, then you'll find it with it.. maybe try to see if it searches for .pc files in /usr/lib/pkgconfig or if it looks in another directory...
either way, in theory if you do "export PKG_CONFIG_PATH=/usr/lib/pkgconfig" (since you said the file /usr/lib/pkgconfig/nice.pc exists there) then it should work....
make sure btw that the file is readable!
Logged
kakaroto
Administrator
Super Power User
*****
Offline Offline

Posts: 9428


View Profile WWW
« Reply #313 on: October 19, 2008, 11:48:56 pm »

you're missing gstreamer-plugins-bad.
Again.. like I said, make sure you follow the wiki and don't forget any dependency!!!!

EDIT: it looks like it actually can't find the farsight2 plugin.. make sure you installed farsight2 with --prefix=/usr... again, read the guide correctly and do everything as it tells you to...
Logged

KaKaRoTo
lordamus
Power user
*
Offline Offline

Posts: 85


View Profile
« Reply #314 on: October 20, 2008, 03:15:00 am »

that is allready installed gstreamer-plugins-bad-0.10.7-1.lvn9.x86_64    I compiled farsight2 with ./autogen.sh --prefix=/usr --disable-python and then I did ldconfig

rpm -qa |grep gstreamer
gstreamer-0.10.21-1.fc10.x86_64
gstreamer-devel-0.10.21-1.fc10.i386
gstreamer-plugins-good-0.10.8-8.fc9.x86_64
gstreamer-plugins-base-0.10.21-2.fc10.x86_64
gstreamer-plugins-base-devel-0.10.21-2.fc10.i386
gstreamer-plugins-base-0.10.21-2.fc10.i386
gstreamer-plugins-pulse-0.9.5-0.5.svn20070924.fc9.x86_64
gstreamer-plugins-flumpegdemux-0.10.15-2.fc9.x86_64
gstreamer-plugins-good-devel-0.10.8-8.fc9.x86_64
totem-gstreamer-2.23.2-7.fc9.x86_64
gstreamer-plugins-bad-devel-0.10.7-1.lvn9.x86_64
gstreamer-python-0.10.11-2.fc9.x86_64
gstreamer-plugins-good-devel-0.10.8-8.fc9.i386
gstreamer-devel-0.10.21-1.fc10.x86_64
gstreamer-plugins-bad-0.10.7-1.lvn9.x86_64
gstreamer-tools-0.10.21-1.fc10.x86_64
gstreamer-plugins-bad-extras-0.10.7-1.lvn9.x86_64
gstreamer-plugins-ugly-0.10.8-1.lvn9.x86_64
gstreamer-0.10.21-1.fc10.i386
gstreamer-plugins-base-devel-0.10.21-2.fc10.x86_64

Quote from: "kakaroto"
you're missing gstreamer-plugins-bad.
Again.. like I said, make sure you follow the wiki and don't forget any dependency!!!!

EDIT: it looks like it actually can't find the farsight2 plugin.. make sure you installed farsight2 with --prefix=/usr... again, read the guide correctly and do everything as it tells you to...
Logged
Pages: 1 ... 19 20 [21] 22 23 ... 46
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!