Hi Torben,

It is not amazing if binray streams result in a larger size,
especially when saving simple scenes. A possible reason is because the
ascii format will only record properties that are non-default, but the
binary one always saves all the properties of a class.

By the way, please note that only the binary format supports
compressor option. So the osgt and osgx files will not be affected by
the zlib compressor.

Wang Rui


2010/4/5 Torben Dannhauer <z...@saguaro-fight-club.de>:
> Hi,
>
> I'm working again on my serializer problem and I don't unterstand why my 
> binary stream is as long as my ascii stream. binary should be smaller as 
> ascii I suppose
>
> My Testcode code is:
>
> Code:
>
>        // Writing object to stream
>        std::stringstream myOstream;
>        std::string extension = "osgb";
>        bool compressed = true;
>        osgDB::ReaderWriter* rw = 
> osgDB::Registry::instance()->getReaderWriterForExtension(extension.c_str());
>        if ( rw )
>        {
>                osgDB::ReaderWriter::WriteResult wr;
>
>                if (extension == "osgb")
>                {
>                        if (compressed)
>                                wr = rw->writeObject( *test, myOstream, new 
> osgDB::Options("Compressor=zlib") );
>                        else
>                                wr = rw->writeObject( *test, myOstream );
>                }
>
>                if (extension == "osgt")
>                {
>                        if (compressed)
>                                wr = rw->writeObject( *test, myOstream, new 
> osgDB::Options("Ascii Compressor=zlib") );
>                        else
>                                wr = rw->writeObject( *test, myOstream, new 
> osgDB::Options("Ascii") );
>                }
>
>                if (extension == "osgx")
>                {
>                        if (compressed)
>                                wr = rw->writeObject( *test, myOstream, new 
> osgDB::Options("XML Compressor=zlib") );
>                        else
>                                wr = rw->writeObject( *test, myOstream, new 
> osgDB::Options("XML") );
>                }
>
>
>                if (!wr.success() )     OSG_NOTIFY( osg::WARN ) << "ERROR: 
> Save failed: " << wr.message() << std::endl;
>        }
>        else
>                OSG_NOTIFY( osg::WARN ) << "error getting readerWriter for 
> osgt" << std::endl;
>
>        // Get size.
>        stringbuf *pbuf;
>        pbuf = myOstream.rdbuf();
>        OSG_NOTIFY( osg::WARN ) << "PBUF Bytes available: " << 
> pbuf->in_avail() << std::endl;
>        OSG_NOTIFY( osg::ALWAYS ) << "STRING Bytes available: " << 
> myOstream.str().length() << std::endl;
>        OSG_NOTIFY( osg::ALWAYS ) << "STRING content: " << myOstream.str() << 
> std::endl;
>
>        //Reading Stream to node
>        if ( rw )
>        {
>                osgDB::ReaderWriter::ReadResult rr = rw->readObject( myOstream 
> );
>                osg::ref_ptr<osgVisual::dataIO_transportContainer> test2 = 
> dynamic_cast<osgVisual::dataIO_transportContainer*>(rr.takeObject());
>                if (test2)
>                {
>                        OSG_NOTIFY( osg::WARN ) << "TEST::FrameID is: " << 
> test->getFrameID() << std::endl;
>                }
>                else
>                        OSG_NOTIFY( osg::WARN ) << "Error converting stream to 
> Node" << std::endl;
>        }
>
>
>
>
>
> My Question is: What is the real stream size:
> The value pbuf->in_avail() or the value myOstream.str().length()?
> Because it always differs up to 60 bytes.
>
> My stream sizes (  myOstream.str().length() ) of my object ot transfer are:
>
> xml: 739 bytes
> ASCII: 389 bytes
> binaryy uncompressed: 353 bytes
> binary compressed: 176 bytes
>
> Can anyone give me a hint what the problem in my serializer / stream usage, 
> that causes my binary stream to be as large as my ascii stream?
>
> Thank you very much!
>
> Cheers,
> Torben
>
> ------------------
> Read this topic online here:
> http://forum.openscenegraph.org/viewtopic.php?p=26454#26454
>
>
>
>
>
> _______________________________________________
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to