merge from wenjie, fix the flower player play bug, play(reset=amf0-number)
正在显示
1 个修改的文件
包含
17 行增加
和
19 行删除
| @@ -2398,33 +2398,31 @@ int SrsPlayPacket::decode(SrsStream* stream) | @@ -2398,33 +2398,31 @@ int SrsPlayPacket::decode(SrsStream* stream) | ||
| 2398 | return ret; | 2398 | return ret; |
| 2399 | } | 2399 | } |
| 2400 | 2400 | ||
| 2401 | - SrsAmf0Any* any_value = NULL; | ||
| 2402 | - if (!stream->empty()) { | ||
| 2403 | - if ((ret = srs_amf0_read_any(stream, any_value)) != ERROR_SUCCESS) { | 2401 | + if (stream->empty()) { |
| 2402 | + return ret; | ||
| 2403 | + } | ||
| 2404 | + | ||
| 2405 | + SrsAmf0Any* reset_value = NULL; | ||
| 2406 | + if ((ret = srs_amf0_read_any(stream, reset_value)) != ERROR_SUCCESS) { | ||
| 2404 | ret = ERROR_RTMP_AMF0_DECODE; | 2407 | ret = ERROR_RTMP_AMF0_DECODE; |
| 2405 | srs_error("amf0 read play reset marker failed. ret=%d", ret); | 2408 | srs_error("amf0 read play reset marker failed. ret=%d", ret); |
| 2406 | return ret; | 2409 | return ret; |
| 2407 | - } else { | ||
| 2408 | - // check if the value is bool or number | ||
| 2409 | - // An optional Boolean value or number that specifies whether to flush any previous playlist. | ||
| 2410 | - if (any_value->is_boolean()) { | ||
| 2411 | - SrsAmf0Boolean* reset_bool = dynamic_cast<SrsAmf0Boolean*> (any_value); | ||
| 2412 | - if (reset_bool) { | ||
| 2413 | - reset = reset_bool->value; | ||
| 2414 | - } | ||
| 2415 | - } else if (any_value->is_number()) { | ||
| 2416 | - SrsAmf0Number* reset_number = dynamic_cast<SrsAmf0Number*> (any_value); | ||
| 2417 | - if (reset_number) { | ||
| 2418 | - reset = (reset_number->value == 0 ? false : true); | ||
| 2419 | } | 2410 | } |
| 2411 | + SrsAutoFree(SrsAmf0Any, reset_value, false); | ||
| 2412 | + | ||
| 2413 | + // check if the value is bool or number | ||
| 2414 | + // An optional Boolean value or number that specifies whether | ||
| 2415 | + // to flush any previous playlist | ||
| 2416 | + if (reset_value->is_boolean()) { | ||
| 2417 | + reset = srs_amf0_convert<SrsAmf0Boolean>(reset_value)->value; | ||
| 2418 | + } else if (reset_value->is_number()) { | ||
| 2419 | + reset = (srs_amf0_convert<SrsAmf0Number>(reset_value)->value == 0 ? false : true); | ||
| 2420 | } else { | 2420 | } else { |
| 2421 | ret = ERROR_RTMP_AMF0_DECODE; | 2421 | ret = ERROR_RTMP_AMF0_DECODE; |
| 2422 | - srs_error("amf0 decode play reset not support type. desire number or bool, ret=%d", ret); | 2422 | + srs_error("amf0 invalid type=%#x, requires number or bool, ret=%d", reset_value->marker, ret); |
| 2423 | return ret; | 2423 | return ret; |
| 2424 | } | 2424 | } |
| 2425 | - SrsAutoFree(SrsAmf0Any, any_value, false); | ||
| 2426 | - } | ||
| 2427 | - } | 2425 | + |
| 2428 | srs_info("amf0 decode play packet success"); | 2426 | srs_info("amf0 decode play packet success"); |
| 2429 | 2427 | ||
| 2430 | return ret; | 2428 | return ret; |
-
请 注册 或 登录 后发表评论