gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog plugin/Makefile.am libamf/amf.c...


From: Rob Savoye
Subject: [Gnash-commit] gnash ChangeLog plugin/Makefile.am libamf/amf.c...
Date: Wed, 02 Aug 2006 01:23:00 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Rob Savoye <rsavoye>    06/08/02 01:22:59

Modified files:
        .              : ChangeLog 
        plugin         : Makefile.am 
        libamf         : amf.cpp amf.h rtmp.cpp rtmp.h 
        macros         : kde.m4 

Log message:
                * libamf/amf.cpp, amf.h: Changes for cleaner 64 bit support.
                * libamf/rtmp.cpp, rtmp.h: Read multiple packets till the entire
                body is read in.
                * macros/kde.m4: Remove 64 libraries as weel as 32 bit ones for
                sed.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.572&r2=1.573
http://cvs.savannah.gnu.org/viewcvs/gnash/plugin/Makefile.am?cvsroot=gnash&r1=1.29&r2=1.30
http://cvs.savannah.gnu.org/viewcvs/gnash/libamf/amf.cpp?cvsroot=gnash&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/gnash/libamf/amf.h?cvsroot=gnash&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/gnash/libamf/rtmp.cpp?cvsroot=gnash&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/gnash/libamf/rtmp.h?cvsroot=gnash&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/gnash/macros/kde.m4?cvsroot=gnash&r1=1.10&r2=1.11

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.572
retrieving revision 1.573
diff -u -b -r1.572 -r1.573
--- ChangeLog   1 Aug 2006 23:12:48 -0000       1.572
+++ ChangeLog   2 Aug 2006 01:22:59 -0000       1.573
@@ -1,3 +1,11 @@
+2006-08-01  Rob Savoye  <address@hidden>
+
+       * libamf/amf.cpp, amf.h: Changes for cleaner 64 bit support.
+       * libamf/rtmp.cpp, rtmp.h: Read multiple packets till the entire
+       body is read in.
+       * macros/kde.m4: Remove 64 libraries as weel as 32 bit ones for
+       sed.
+
 2006-08-02 Sandro Santilli <address@hidden>
 
        * gui/Makefile.am: use a GNASH_LIBS variable, to make future

Index: plugin/Makefile.am
===================================================================
RCS file: /sources/gnash/gnash/plugin/Makefile.am,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -b -r1.29 -r1.30
--- plugin/Makefile.am  29 Jul 2006 23:12:53 -0000      1.29
+++ plugin/Makefile.am  2 Aug 2006 01:22:59 -0000       1.30
@@ -137,7 +137,7 @@
        ../server/asobj/libgnashasobjs.la \
        ../server/libgnashserver.la\
        ../libgeometry/libgnashgeo.la\
-       ../libbase/libgnashbase.la
+       ../libamf/libgnashamf.la
 
 #      -lXi -lX11
 #      -lXmu

Index: libamf/amf.cpp
===================================================================
RCS file: /sources/gnash/gnash/libamf/amf.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- libamf/amf.cpp      1 Aug 2006 20:09:00 -0000       1.5
+++ libamf/amf.cpp      2 Aug 2006 01:22:59 -0000       1.6
@@ -144,7 +144,7 @@
     switch (type) {
       case Number:
           num = *(amfnum_t *)swapBytes(x+1, 8);
-          log_msg("Number is %lld", num);
+          log_msg("Number is " AMFNUM_F, num);
           return 8;
           break;
       case Boolean:
@@ -161,7 +161,7 @@
           // *src to a sequence of wide characters as if by repeated
           // calls of the form:
 //          mbsrtowcs
-          log_msg("String is %s\n", mstr);
+//          log_msg("String is %s\n", mstr);
           break;
       case Object:
 //        log_msg("Object is unimplemented\n");
@@ -189,12 +189,8 @@
 //          log_msg("StrictArray is unimplemented\n");
           break;
       case Date:
-# if __WORDSIZE == 64
-          nanosecs = *(long *)swapBytes(x+1, 8);
-#else
-          nanosecs= *(long long *)swapBytes(x+1, 8);
-#endif
-           log_msg("Date is %lld nanoseconds\n", nanosecs);
+          nanosecs = *(amfnum_t *)swapBytes(x+1, 8);
+          log_msg("Date is " AMFNUM_F " nanoseconds\n", nanosecs);
           return 8;
           break;
       case LongString:
@@ -241,7 +237,7 @@
 void *
 AMF::encodeElement(astype_e type, void *in, int nbytes)
 {
-    char *out, *x;
+    char *out = NULL, *x;
     amfnum_t num;
     int pktsize;
 
@@ -436,14 +432,14 @@
           log_msg("Reference unimplemented");
           break;
       case ECMAArray:
-          return (int)x - (int)strchr(x, TERMINATOR);
+          return x - strchr(x, TERMINATOR);
           break;
       case ObjectEnd:
           return -1;
           log_msg("ObjectEnd unimplemented");
           break;
       case StrictArray:         // the length is a 4 byte value
-          return (int)*(int *)x;
+//          return (int *)x;
           break;
       case Date:              // a 64 bit numeric value
           return 8;
@@ -461,10 +457,10 @@
           log_msg("Recordset unimplemented");
           break;
       case XMLObject:           // the length is a 4 byte value
-          return (int)*(int *)x;
+//          return (int)*(int *)x;
           break;
       case TypedObject:
-          return (int)x - (int)strchr(x, TERMINATOR);
+          return x - strchr(x, TERMINATOR);
           break;
     };
     
@@ -487,7 +483,7 @@
     memset(buf, 0, length);
     ptr = buf;
 
-    // The first two bytes are the byte ciount for the UTF8 string,
+    // The first two bytes are the byte count for the UTF8 string,
     // which is in big-endian format.
     length = name->length;
     swapBytes(&length, sizeof(AMF_Int_t));

Index: libamf/amf.h
===================================================================
RCS file: /sources/gnash/gnash/libamf/amf.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- libamf/amf.h        1 Aug 2006 16:57:35 -0000       1.4
+++ libamf/amf.h        2 Aug 2006 01:22:59 -0000       1.5
@@ -51,8 +51,10 @@
 
 # if __WORDSIZE == 64
 typedef long amfnum_t;
+#define AMFNUM_F "%ld"
 #else
 typedef long long amfnum_t;
+#define AMFNUM_F "%lld"
 #endif
 
 // These are the data types defined by AMF

Index: libamf/rtmp.cpp
===================================================================
RCS file: /sources/gnash/gnash/libamf/rtmp.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- libamf/rtmp.cpp     1 Aug 2006 16:57:35 -0000       1.1
+++ libamf/rtmp.cpp     2 Aug 2006 01:22:59 -0000       1.2
@@ -215,6 +215,7 @@
 int
 RTMPproto::headerSize(char header)
 {
+    unsigned char hexint[2];
     switch (header & RTMP_HEADSIZE_MASK) {
       case HEADER_12:
           return(12);
@@ -229,7 +230,9 @@
           return(1);
           break;
       default:
-          dbglogfile << "ERROR: Header size bits out of range!" << endl;
+          hexify((unsigned char *)hexint, (unsigned char *)&header, 1);
+          dbglogfile << "ERROR: Header size bits out of range! was 0x"
+                     << hexint << endl;
           return -1;
           break;
     };
@@ -305,6 +308,8 @@
         dbglogfile << "The body size is: " << _bodysize
                    << " Hex value is: 0x" << hexint << endl;
     }
+//    _amf_data[_amf_number] = new unsigned char(_bodysize);
+    _amf_size[_amf_number] = 0;
 
     if (_headersize >= 8) {
         hexify((unsigned char *)hexint, (unsigned char *)tmpptr, 1);
@@ -360,13 +365,15 @@
     }
 #endif
     
-    packetReadAMF(0);
+    while ((ret = packetReadAMF(0)) > 0) {
+        dbglogfile << "Reading AMF packetes till we're done..." << endl;
+    }
     
 //    _amf_data
     return true;
 }
 
-bool
+int
 RTMPproto::packetReadAMF(int bytes)
 {
     GNASH_REPORT_FUNCTION;
@@ -376,45 +383,63 @@
     unsigned char hexint[(AMFBODY_PACKET_SIZE*2)+1];
     char *tmpptr;
     unsigned char *amfdata;
+    int amf_index;
 
     if (bytes == 0) {
         bytes = AMFBODY_PACKET_SIZE;
     }
     
     memset(buffer, 0, AMFBODY_PACKET_SIZE+1);
-    if ((ret = readNet(buffer, bytes)) > 0) {
+    if ((ret = readNet(buffer, bytes)) >= 0) {
+        if (ret == 0) {
+            dbglogfile << "Done reading AMF message" << endl;
+            return ret;
+        }
         dbglogfile << "Read AMF packet, " << ret
                    << " bytes in size." << endl;
     } else {
         dbglogfile << "ERROR: Couldn't read AMF packet!" << endl;
-        return false;
+        return -1;
     }
+    
     tmpptr = buffer;
 
-//     hexify((unsigned char *)hexint, (unsigned char *)tmpptr, bytes);
-//     dbglogfile << "AMF packet: 0x" << hexint << endl;
+    hexify((unsigned char *)hexint, (unsigned char *)tmpptr, 40);
+    dbglogfile << "AMF packet: 0x" << hexint << endl;
+
+    switch (*tmpptr & RTMP_HEADSIZE_MASK) {
+      case 0x02:
+      case 0x03:
+          _headersize = 12;
+          break;
+      case 0x43:
+          _headersize  = 8;
+          break;
+      case 0x83:
+          _headersize  = 4;
+          break;
+      case 0xc3:
+          _headersize = 1;
+          break;
+      default:
+          hexify((unsigned char *)hexint, (unsigned char *)tmpptr, 1);
+          dbglogfile << "ERROR: Header size bits out of range! was 0x"
+                     << hexint << endl;
+          _headersize = 1;
+          break;
+    };
     
-    _headersize = headerSize(*tmpptr);
-    _amf_number = *tmpptr & RTMP_AMF_INDEX;
+    amf_index = *tmpptr & RTMP_AMF_INDEX;
     tmpptr++;
     dbglogfile << "The Header size is: " << _headersize << endl;
-    dbglogfile << "The AMF index is: 0x" << _amf_number << endl;
+    dbglogfile << "The AMF index is: 0x" << amf_index << endl;
+    dbglogfile << "Read " << ret << " bytes" << endl;
 
-    if (_amf_size[_amf_number] == 0) {
-//        unsigned char *amfdata = new unsigned char(_bodysize);
-//         memcpy(amfdata, tmpptr, _bodysize);
-//         _amf_data[_amf_number] = amfdata;
-        _amf_size[_amf_number] = _bodysize;
-    } else {
-//         unsigned char *amfdata = new unsigned
-//             char(_amf_size[_amf_number] + _bodysize);
-//         memcpy(amfdata, _amf_data[_amf_number], _amf_size[_amf_number]);
-//         memcpy(amfdata +_amf_size[_amf_number], tmpptr, _bodysize);
-        _amf_size[_amf_number] += _bodysize;
+//     memcpy(_amf_data[_amf_index]+_amf_size[amf_index],
+//            AMFBODY_PACKET_SIZE);
+    _amf_size[amf_index] += ret;
         
-//         delete _amf_data[_amf_number];
-//         _amf_data[_amf_number] = amfdata;
-    }
+    return ret;
 }
 
 

Index: libamf/rtmp.h
===================================================================
RCS file: /sources/gnash/gnash/libamf/rtmp.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- libamf/rtmp.h       1 Aug 2006 16:57:35 -0000       1.1
+++ libamf/rtmp.h       2 Aug 2006 01:22:59 -0000       1.2
@@ -106,12 +106,12 @@
     virtual bool packetSend();
     virtual bool packetRead();
     int headerSize(char header);
-    bool packetReadAMF(int bytes);
+    int packetReadAMF(int bytes);
 private:
     int         _headersize;
     int         _amf_number;
     char        *_body;
-    unsigned int _bodysize;
+    int         _bodysize;
     rtmp_types_e _type;
     unsigned char *_amf_data[MAX_AMF_INDEXES];
     int         _amf_size[MAX_AMF_INDEXES];

Index: macros/kde.m4
===================================================================
RCS file: /sources/gnash/gnash/macros/kde.m4,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- macros/kde.m4       28 Jul 2006 16:45:53 -0000      1.10
+++ macros/kde.m4       2 Aug 2006 01:22:59 -0000       1.11
@@ -1869,7 +1869,7 @@
 
 KDE_DEFAULT_CXXFLAGS="-DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL 
-DQT_NO_COMPAT -DQT_NO_TRANSLATION"
  
-KDE_LDFLAGS=`echo $kde_libraries | sed -e 's:/usr/lib::'`
+KDE_LDFLAGS=`echo $kde_libraries | sed -e 's:/usr/lib64::;s:/usr/lib::'`
 
 if test ! "$kde_libraries" = "$x_libraries" && test ! "$kde_libraries" = 
"$qt_libraries" ; then 
  all_libraries="$KDE_LDFLAGS $all_libraries"




reply via email to

[Prev in Thread] Current Thread [Next in Thread]