正在显示
4 个修改的文件
包含
34 行增加
和
0 行删除
@@ -336,6 +336,7 @@ Remark: | @@ -336,6 +336,7 @@ Remark: | ||
336 | 336 | ||
337 | ## History | 337 | ## History |
338 | 338 | ||
339 | +* v2.0, 2015-10-28, for [ExoPlayer #828][exo #828], remove duration for live. | ||
339 | * v2.0, 2015-10-28, for [ExoPlayer #828][exo #828], add av tag in flv header. 2.0.197 | 340 | * v2.0, 2015-10-28, for [ExoPlayer #828][exo #828], add av tag in flv header. 2.0.197 |
340 | * v2.0, 2015-10-27, for [#512][bug #512] partical hotfix the hls pure audio. 2.0.196 | 341 | * v2.0, 2015-10-27, for [#512][bug #512] partical hotfix the hls pure audio. 2.0.196 |
341 | * <strong>v2.0, 2015-10-08, [2.0 alpha2(2.0.195)][r2.0a2] released. 89358 lines.</strong> | 342 | * <strong>v2.0, 2015-10-08, [2.0 alpha2(2.0.195)][r2.0a2] released. 89358 lines.</strong> |
@@ -1400,6 +1400,11 @@ int SrsSource::on_meta_data(SrsCommonMessage* msg, SrsOnMetaDataPacket* metadata | @@ -1400,6 +1400,11 @@ int SrsSource::on_meta_data(SrsCommonMessage* msg, SrsOnMetaDataPacket* metadata | ||
1400 | 1400 | ||
1401 | SrsAmf0Any* prop = NULL; | 1401 | SrsAmf0Any* prop = NULL; |
1402 | 1402 | ||
1403 | + // when exists the duration, remove it to make ExoPlayer happy. | ||
1404 | + if (metadata->metadata->get_property("duration") != NULL) { | ||
1405 | + metadata->metadata->remove("duration"); | ||
1406 | + } | ||
1407 | + | ||
1403 | // generate metadata info to print | 1408 | // generate metadata info to print |
1404 | std::stringstream ss; | 1409 | std::stringstream ss; |
1405 | if ((prop = metadata->metadata->ensure_property_number("width")) != NULL) { | 1410 | if ((prop = metadata->metadata->ensure_property_number("width")) != NULL) { |
@@ -513,6 +513,24 @@ SrsAmf0Any* SrsUnSortedHashtable::ensure_property_number(string name) | @@ -513,6 +513,24 @@ SrsAmf0Any* SrsUnSortedHashtable::ensure_property_number(string name) | ||
513 | return prop; | 513 | return prop; |
514 | } | 514 | } |
515 | 515 | ||
516 | +void SrsUnSortedHashtable::remove(string name) | ||
517 | +{ | ||
518 | + std::vector<SrsAmf0ObjectPropertyType>::iterator it; | ||
519 | + | ||
520 | + for (it = properties.begin(); it != properties.end();) { | ||
521 | + std::string key = it->first; | ||
522 | + SrsAmf0Any* any = it->second; | ||
523 | + | ||
524 | + if (key == name) { | ||
525 | + srs_freep(any); | ||
526 | + | ||
527 | + it = properties.erase(it); | ||
528 | + } else { | ||
529 | + ++it; | ||
530 | + } | ||
531 | + } | ||
532 | +} | ||
533 | + | ||
516 | void SrsUnSortedHashtable::copy(SrsUnSortedHashtable* src) | 534 | void SrsUnSortedHashtable::copy(SrsUnSortedHashtable* src) |
517 | { | 535 | { |
518 | std::vector<SrsAmf0ObjectPropertyType>::iterator it; | 536 | std::vector<SrsAmf0ObjectPropertyType>::iterator it; |
@@ -787,6 +805,11 @@ SrsAmf0Any* SrsAmf0Object::ensure_property_number(string name) | @@ -787,6 +805,11 @@ SrsAmf0Any* SrsAmf0Object::ensure_property_number(string name) | ||
787 | return properties->ensure_property_number(name); | 805 | return properties->ensure_property_number(name); |
788 | } | 806 | } |
789 | 807 | ||
808 | +void SrsAmf0Object::remove(string name) | ||
809 | +{ | ||
810 | + properties->remove(name); | ||
811 | +} | ||
812 | + | ||
790 | SrsAmf0EcmaArray::SrsAmf0EcmaArray() | 813 | SrsAmf0EcmaArray::SrsAmf0EcmaArray() |
791 | { | 814 | { |
792 | _count = 0; | 815 | _count = 0; |
@@ -405,6 +405,10 @@ public: | @@ -405,6 +405,10 @@ public: | ||
405 | * @remark user should never free the returned value, copy it if needed. | 405 | * @remark user should never free the returned value, copy it if needed. |
406 | */ | 406 | */ |
407 | virtual SrsAmf0Any* ensure_property_number(std::string name); | 407 | virtual SrsAmf0Any* ensure_property_number(std::string name); |
408 | + /** | ||
409 | + * remove the property specified by name. | ||
410 | + */ | ||
411 | + virtual void remove(std::string name); | ||
408 | }; | 412 | }; |
409 | 413 | ||
410 | /** | 414 | /** |
@@ -803,6 +807,7 @@ namespace _srs_internal | @@ -803,6 +807,7 @@ namespace _srs_internal | ||
803 | virtual SrsAmf0Any* get_property(std::string name); | 807 | virtual SrsAmf0Any* get_property(std::string name); |
804 | virtual SrsAmf0Any* ensure_property_string(std::string name); | 808 | virtual SrsAmf0Any* ensure_property_string(std::string name); |
805 | virtual SrsAmf0Any* ensure_property_number(std::string name); | 809 | virtual SrsAmf0Any* ensure_property_number(std::string name); |
810 | + virtual void remove(std::string name); | ||
806 | public: | 811 | public: |
807 | virtual void copy(SrsUnSortedHashtable* src); | 812 | virtual void copy(SrsUnSortedHashtable* src); |
808 | }; | 813 | }; |
-
请 注册 或 登录 后发表评论