Changeset 28384

Show
Ignore:
Timestamp:
01/13/09 19:12:58 (4 years ago)
Author:
itkz
Message:

add AMF number serialize

Location:
lang/c/librtmp
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • lang/c/librtmp/amf_packet.c

    r28370 r28384  
    440440    switch (amf->datatype) { 
    441441    case AMF_DATATYPE_NUMBER: 
    442         amf_packet_serialize_number( 
     442        return amf_packet_serialize_number( 
    443443            amf, output_buffer, output_buffer_size); 
    444         break; 
    445444    case AMF_DATATYPE_BOOLEAN: 
    446445        break; 
     
    466465    unsigned char *output_buffer, size_t output_buffer_size) 
    467466{ 
    468 //    unsigned char number_data[8]; 
    469  
    470467    if (output_buffer_size < 9) { 
    471468        return 0; 
    472469    } 
    473470 
     471    output_buffer[0] = 0x00; 
     472    write_be64double(output_buffer + 1, amf->number.value); 
     473 
    474474    return 9; 
    475475} 
  • lang/c/librtmp/data_rw.c

    r28370 r28384  
    8080} 
    8181 
     82 
    8283double read_be64double(unsigned char *data) 
    8384{ 
     
    101102    return value; 
    102103} 
     104 
     105 
     106void write_be64double(unsigned char *data, double value) 
     107{ 
     108    unsigned char number_data[8]; 
     109 
     110    if (is_little_endian()) { 
     111        memmove(number_data, &value, 8); 
     112        data[0] = number_data[7]; 
     113        data[1] = number_data[6]; 
     114        data[2] = number_data[5]; 
     115        data[3] = number_data[4]; 
     116        data[4] = number_data[3]; 
     117        data[5] = number_data[2]; 
     118        data[6] = number_data[1]; 
     119        data[7] = number_data[0]; 
     120    } else { 
     121        memmove(data, &value, 8); 
     122    } 
     123} 
  • lang/c/librtmp/data_rw.h

    r28370 r28384  
    99extern double read_be64double(unsigned char *data); 
    1010 
     11extern void write_be64double(unsigned char *data, double value); 
     12 
  • lang/c/librtmp/main.c

    r28370 r28384  
    2727    amf = amf_packet_analyze_data(number_temp, sizeof(number_temp), NULL); 
    2828    outputed_size = amf_packet_serialize( 
    29         amf, output_buffer, sizeof(output_buffer)); 
     29        amf, output_buffer, 1024); 
    3030    for (i = 0; i < outputed_size; ++i) { 
    3131        printf("%02x, ", output_buffer[i]); 
    3232    } 
    33     printf("\n"); 
     33    printf("\n%d\n", outputed_size); 
    3434    amf_packet_free(amf); 
    3535    // boolean