Skip to content

Commit b617452

Browse files
committed
Stick to the presentation libmp4 uses
1 parent 651f5ae commit b617452

File tree

1 file changed

+63
-41
lines changed

1 file changed

+63
-41
lines changed

src/fmt/amf.c

Lines changed: 63 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,19 @@ static enum BufError AMFWriteInt32(struct BitBuf* buf, uint32_t value)
1414

1515
static enum BufError AMFWriteString16(struct BitBuf* buf, const char* string, size_t length)
1616
{
17-
enum BufError err = put_u16_be(buf, (uint16_t)length);
18-
if (err != BUF_OK) return err;
17+
enum BufError err;
18+
err = put_u16_be(buf, (uint16_t)length);
19+
chk_err;
20+
1921
return put(buf, string, length);
2022
}
2123

2224
static enum BufError AMFWriteString32(struct BitBuf* buf, const char* string, size_t length)
2325
{
24-
enum BufError err = put_u32_be(buf, (uint32_t)length);
25-
if (err != BUF_OK) return err;
26+
enum BufError err;
27+
err = put_u32_be(buf, (uint32_t)length);
28+
chk_err;
29+
2630
return put(buf, string, length);
2731
}
2832

@@ -43,10 +47,13 @@ enum BufError AMFWriteObject(struct BitBuf* buf)
4347

4448
enum BufError AMFWriteObjectEnd(struct BitBuf* buf)
4549
{
46-
enum BufError err = put_u8(buf, 0);
47-
if (err != BUF_OK) return err;
50+
enum BufError err;
51+
err = put_u8(buf, 0);
52+
chk_err;
53+
4854
err = put_u8(buf, 0);
49-
if (err != BUF_OK) return err;
55+
chk_err;
56+
5057
return put_u8(buf, AMF_OBJECT_END);
5158
}
5259

@@ -57,24 +64,29 @@ enum BufError AMFWriteTypedObject(struct BitBuf* buf)
5764

5865
enum BufError AMFWriteECMAArray(struct BitBuf* buf)
5966
{
60-
enum BufError err = put_u8(buf, AMF_ECMA_ARRAY);
61-
if (err != BUF_OK) return err;
67+
enum BufError err;
68+
err = put_u8(buf, AMF_ECMA_ARRAY);
69+
chk_err;
70+
6271
return put_u32_be(buf, 0); // U32 associative-count
6372
}
6473

6574
enum BufError AMFWriteBoolean(struct BitBuf* buf, uint8_t value)
6675
{
6776
enum BufError err;
6877
err = put_u8(buf, AMF_BOOLEAN);
69-
if (err != BUF_OK) return err;
78+
chk_err;
79+
7080
return put_u8(buf, value ? 1 : 0);
7181
}
7282

7383
enum BufError AMFWriteDouble(struct BitBuf* buf, double value)
7484
{
85+
enum BufError err;
7586
uint8_t bytes[8];
76-
enum BufError err = put_u8(buf, AMF_NUMBER);
77-
if (err != BUF_OK) return err;
87+
88+
err = put_u8(buf, AMF_NUMBER);
89+
chk_err;
7890

7991
// Little-Endian
8092
if (0x00 == *(char*)&s_double) {
@@ -94,11 +106,13 @@ enum BufError AMFWriteString(struct BitBuf* buf, const char* string, size_t leng
94106

95107
if (length < 65536) {
96108
err = put_u8(buf, AMF_STRING);
97-
if (err != BUF_OK) return err;
109+
chk_err;
110+
98111
err = AMFWriteString16(buf, string, length);
99112
} else {
100113
err = put_u8(buf, AMF_LONG_STRING);
101-
if (err != BUF_OK) return err;
114+
chk_err;
115+
102116
err = AMFWriteString32(buf, string, length);
103117
}
104118

@@ -107,9 +121,11 @@ enum BufError AMFWriteString(struct BitBuf* buf, const char* string, size_t leng
107121

108122
enum BufError AMFWriteDate(struct BitBuf *buf, double milliseconds, int16_t timezone)
109123
{
124+
enum BufError err;
110125
uint8_t bytes[8];
111-
enum BufError err = put_u8(buf, AMF_DATE);
112-
if (err != BUF_OK) return err;
126+
127+
err = put_u8(buf, AMF_DATE);
128+
chk_err;
113129

114130
// Little-Endian
115131
if (0x00 == *(char*)&s_double) {
@@ -121,7 +137,8 @@ enum BufError AMFWriteDate(struct BitBuf *buf, double milliseconds, int16_t time
121137
}
122138

123139
err = put(buf, (const char*)bytes, 8);
124-
if (err != BUF_OK) return err;
140+
chk_err;
141+
125142
return put_u16_be(buf, (uint16_t)timezone);
126143
}
127144

@@ -132,22 +149,28 @@ enum BufError AMFWriteNamed(struct BitBuf *buf, const char* name, size_t length)
132149

133150
enum BufError AMFWriteNamedBoolean(struct BitBuf *buf, const char* name, size_t length, uint8_t value)
134151
{
135-
enum BufError err = AMFWriteString16(buf, name, length);
136-
if (err != BUF_OK) return err;
152+
enum BufError err;
153+
err = AMFWriteString16(buf, name, length);
154+
chk_err;
155+
137156
return AMFWriteBoolean(buf, value);
138157
}
139158

140159
enum BufError AMFWriteNamedDouble(struct BitBuf *buf, const char* name, size_t length, double value)
141160
{
142-
enum BufError err = AMFWriteString16(buf, name, length);
143-
if (err != BUF_OK) return err;
161+
enum BufError err;
162+
err = AMFWriteString16(buf, name, length);
163+
chk_err;
164+
144165
return AMFWriteDouble(buf, value);
145166
}
146167

147168
enum BufError AMFWriteNamedString(struct BitBuf *buf, const char* name, size_t length, const char* value, size_t length2)
148169
{
149-
enum BufError err = AMFWriteString16(buf, name, length);
150-
if (err != BUF_OK) return err;
170+
enum BufError err;
171+
err = AMFWriteString16(buf, name, length);
172+
chk_err;
173+
151174
return AMFWriteString(buf, value, length2);
152175
}
153176

@@ -232,13 +255,12 @@ enum BufError AMFReadString(struct BitBuf *buf, int isLongString, char* string,
232255
{
233256
uint32_t len = 0;
234257
enum BufError err;
258+
235259
if (isLongString)
236260
err = AMFReadInt32(buf, &len);
237261
else
238262
err = AMFReadInt16(buf, &len);
239-
240-
if (err != BUF_OK || buf->offset + len > buf->size)
241-
return BUF_ENDOFBUF_ERROR;
263+
chk_err;
242264

243265
if (string && length > len)
244266
{
@@ -256,12 +278,10 @@ enum BufError AMFReadDate(struct BitBuf *buf, double *milliseconds, int16_t *tim
256278
uint32_t v = 0;
257279

258280
err = AMFReadDouble(buf, milliseconds);
259-
if (err != BUF_OK)
260-
return err;
281+
chk_err;
261282

262283
err = AMFReadInt16(buf, &v);
263-
if (err != BUF_OK)
264-
return err;
284+
chk_err;
265285

266286
if (timezone)
267287
*timezone = (int16_t)v;
@@ -346,9 +366,11 @@ enum BufError AMF3ReadDouble(struct BitBuf *buf, double* value)
346366

347367
enum BufError AMF3ReadString(struct BitBuf *buf, char* string, uint32_t* length)
348368
{
369+
enum BufError err;
349370
int32_t v = 0;
350-
enum BufError err = AMF3ReadInteger(buf, (int32_t*)&v);
351-
if (err != BUF_OK) return err;
371+
372+
err = AMF3ReadInteger(buf, (int32_t*)&v);
373+
chk_err;
352374

353375
if (v & 0x01) {
354376
// reference
@@ -378,7 +400,6 @@ static enum BufError amf_read_strict_array(struct BitBuf* buf, struct amf_object
378400

379401
static enum BufError amf_read_item(struct BitBuf* buf, enum AMFDataType type, struct amf_object_item_t* item)
380402
{
381-
enum BufError err = BUF_OK;
382403
switch (type)
383404
{
384405
case AMF_BOOLEAN:
@@ -424,19 +445,19 @@ static inline int amf_read_item_type_check(uint8_t type0, uint8_t itemtype)
424445

425446
static enum BufError amf_read_strict_array(struct BitBuf* buf, struct amf_object_item_t* items, size_t n)
426447
{
427-
uint32_t count, i;
428448
enum BufError err;
449+
uint32_t count, i;
429450

430451
err = AMFReadInt32(buf, &count); // U32 array-count
431-
if (err != BUF_OK) return err;
452+
chk_err;
432453

433454
for (i = 0; i < count && buf && buf->offset < buf->size; i++) {
434455
if (buf->offset >= buf->size)
435456
return BUF_ENDOFBUF_ERROR;
436457

437458
uint8_t type = buf->buf[buf->offset++];
438459
err = amf_read_item(buf, type, (i < n && amf_read_item_type_check(type, items[i].type)) ? &items[i] : NULL);
439-
if (err != BUF_OK) return err;
460+
chk_err;
440461
}
441462

442463
return BUF_OK;
@@ -453,14 +474,15 @@ static enum BufError amf_read_ecma_array(struct BitBuf* buf, struct amf_object_i
453474

454475
static enum BufError amf_read_object(struct BitBuf* buf, struct amf_object_item_t* items, size_t n)
455476
{
477+
enum BufError err;
456478
uint32_t len;
457479
size_t i;
458-
enum BufError err;
459480

460481
while (buf && buf->offset + 2 <= buf->size)
461482
{
462483
err = AMFReadInt16(buf, &len);
463-
if (err != BUF_OK) return err;
484+
chk_err;
485+
464486
if (len == 0) break; // last item
465487

466488
if (buf->offset + len + 1 > buf->size)
@@ -476,7 +498,7 @@ static enum BufError amf_read_object(struct BitBuf* buf, struct amf_object_item_
476498
buf->offset += len; // skip name string
477499
uint8_t type = buf->buf[buf->offset++]; // value type
478500
err = amf_read_item(buf, type, i < n ? &items[i] : NULL);
479-
if (err != BUF_OK) return err;
501+
chk_err;
480502
}
481503

482504
if (buf && buf->offset < buf->size && AMF_OBJECT_END == buf->buf[buf->offset])
@@ -490,8 +512,8 @@ static enum BufError amf_read_object(struct BitBuf* buf, struct amf_object_item_
490512

491513
enum BufError amf_read_items(struct BitBuf* buf, struct amf_object_item_t* items, size_t count)
492514
{
493-
size_t i;
494515
enum BufError err;
516+
size_t i;
495517

496518
for (i = 0; i < count && buf && buf->offset < buf->size; i++) {
497519
if (buf->offset >= buf->size)
@@ -502,7 +524,7 @@ enum BufError amf_read_items(struct BitBuf* buf, struct amf_object_item_t* items
502524
return BUF_INCORRECT;
503525

504526
err = amf_read_item(buf, type, &items[i]);
505-
if (err != BUF_OK) return err;
527+
chk_err;
506528
}
507529

508530
return BUF_OK;

0 commit comments

Comments
 (0)