if(amf_get_string(ioc, str_val, sizeof(str_val)) < 0)
return -1;
break;
- case AMF_DATA_TYPE_OBJECT: {
- unsigned int keylen;
-
+ case AMF_DATA_TYPE_OBJECT:
if ((vstream || astream) && key && !strcmp(KEYFRAMES_TAG, key) && depth == 1)
if (parse_keyframes_index(s, ioc, vstream ? vstream : astream,
max_pos) < 0)
return -1;
- while(avio_tell(ioc) < max_pos - 2 && (keylen = avio_rb16(ioc))) {
- avio_skip(ioc, keylen); //skip key string
- if(amf_parse_object(s, NULL, NULL, NULL, max_pos, depth + 1) < 0)
+ while (avio_tell(ioc) < max_pos - 2 && amf_get_string(ioc, str_val, sizeof(str_val)) > 0) {
+ if (amf_parse_object(s, astream, vstream, str_val, max_pos, depth + 1) < 0)
return -1; //if we couldn't skip, bomb out.
}
if(avio_r8(ioc) != AMF_END_OF_OBJECT)
return -1;
- }
break;
case AMF_DATA_TYPE_NULL:
case AMF_DATA_TYPE_UNDEFINED: