void put_be16(ByteIOContext *s, unsigned int val);
void put_tag(ByteIOContext *s, char *tag);
-void put_native_double(ByteIOContext *s, double val);
-void put_native_string(ByteIOContext *s, const char *buf);
+void put_be64_double(ByteIOContext *s, double val);
+void put_strz(ByteIOContext *s, const char *buf);
offset_t url_fseek(ByteIOContext *s, offset_t offset, int whence);
void url_fskip(ByteIOContext *s, offset_t offset);
UINT64 get_le64(ByteIOContext *s);
unsigned int get_le16(ByteIOContext *s);
-double get_native_double(ByteIOContext *s);
-char *get_native_string(ByteIOContext *s, char *buf, int maxlen);
+double get_be64_double(ByteIOContext *s);
+char *get_strz(ByteIOContext *s, char *buf, int maxlen);
unsigned int get_be16(ByteIOContext *s);
unsigned int get_be32(ByteIOContext *s);
UINT64 get_be64(ByteIOContext *s);
put_byte(s, val);
}
-void put_native_double(ByteIOContext *s, double val)
+/* IEEE format is assumed */
+void put_be64_double(ByteIOContext *s, double val)
{
- put_buffer(s, (const unsigned char *) &val, sizeof(val));
+ union {
+ double d;
+ UINT64 ull;
+ } u;
+ u.d = val;
+ put_be64(s, u.ull);
}
-void put_native_string(ByteIOContext *s, const char *str)
+void put_strz(ByteIOContext *s, const char *str)
{
if (str)
put_buffer(s, (const unsigned char *) str, strlen(str) + 1);
return val;
}
-double get_native_double(ByteIOContext *s)
+double get_be64_double(ByteIOContext *s)
{
- double val;
+ union {
+ double d;
+ UINT64 ull;
+ } u;
- get_buffer(s, (unsigned char *) &val, sizeof(val));
-
- return val;
+ u.ull = get_be64(s);
+ return u.d;
}
-char *get_native_string(ByteIOContext *s, char *buf, int maxlen)
+char *get_strz(ByteIOContext *s, char *buf, int maxlen)
{
int i = 0;
char c;
put_be16(pb, (int) (codec->qcompress * 10000.0));
put_be16(pb, (int) (codec->qblur * 10000.0));
put_be32(pb, codec->bit_rate_tolerance);
- put_native_string(pb, codec->rc_eq);
+ put_strz(pb, codec->rc_eq);
put_be32(pb, codec->rc_max_rate);
put_be32(pb, codec->rc_min_rate);
put_be32(pb, codec->rc_buffer_size);
- put_native_double(pb, codec->i_quant_factor);
- put_native_double(pb, codec->b_quant_factor);
- put_native_double(pb, codec->i_quant_offset);
- put_native_double(pb, codec->b_quant_offset);
+ put_be64_double(pb, codec->i_quant_factor);
+ put_be64_double(pb, codec->b_quant_factor);
+ put_be64_double(pb, codec->i_quant_offset);
+ put_be64_double(pb, codec->b_quant_offset);
put_be32(pb, codec->dct_algo);
break;
case CODEC_TYPE_AUDIO:
codec->qcompress = get_be16(pb) / 10000.0;
codec->qblur = get_be16(pb) / 10000.0;
codec->bit_rate_tolerance = get_be32(pb);
- codec->rc_eq = strdup(get_native_string(pb, rc_eq_buf, sizeof(rc_eq_buf)));
+ codec->rc_eq = strdup(get_strz(pb, rc_eq_buf, sizeof(rc_eq_buf)));
codec->rc_max_rate = get_be32(pb);
codec->rc_min_rate = get_be32(pb);
codec->rc_buffer_size = get_be32(pb);
- codec->i_quant_factor = get_native_double(pb);
- codec->b_quant_factor = get_native_double(pb);
- codec->i_quant_offset = get_native_double(pb);
- codec->b_quant_offset = get_native_double(pb);
+ codec->i_quant_factor = get_be64_double(pb);
+ codec->b_quant_factor = get_be64_double(pb);
+ codec->i_quant_offset = get_be64_double(pb);
+ codec->b_quant_offset = get_be64_double(pb);
codec->dct_algo = get_be32(pb);
break;
case CODEC_TYPE_AUDIO: