正在显示
1 个修改的文件
包含
14 行增加
和
10 行删除
| @@ -211,22 +211,24 @@ int SrsMessageQueue::enqueue(SrsSharedPtrMessage* msg, bool* is_overflow) | @@ -211,22 +211,24 @@ int SrsMessageQueue::enqueue(SrsSharedPtrMessage* msg, bool* is_overflow) | ||
| 211 | int SrsMessageQueue::dump_packets(int max_count, SrsMessage** pmsgs, int& count) | 211 | int SrsMessageQueue::dump_packets(int max_count, SrsMessage** pmsgs, int& count) |
| 212 | { | 212 | { |
| 213 | int ret = ERROR_SUCCESS; | 213 | int ret = ERROR_SUCCESS; |
| 214 | - | ||
| 215 | - if (msgs.empty()) { | 214 | + |
| 215 | + int nb_msgs = (int)msgs.size(); | ||
| 216 | + if (nb_msgs <= 0) { | ||
| 216 | return ret; | 217 | return ret; |
| 217 | } | 218 | } |
| 218 | 219 | ||
| 219 | srs_assert(max_count > 0); | 220 | srs_assert(max_count > 0); |
| 220 | - count = srs_min(max_count, (int)msgs.size()); | ||
| 221 | - | 221 | + count = srs_min(max_count, nb_msgs); |
| 222 | + | ||
| 223 | + SrsSharedPtrMessage** omsgs = msgs.data(); | ||
| 222 | for (int i = 0; i < count; i++) { | 224 | for (int i = 0; i < count; i++) { |
| 223 | - pmsgs[i] = msgs[i]; | 225 | + pmsgs[i] = omsgs[i]; |
| 224 | } | 226 | } |
| 225 | 227 | ||
| 226 | - SrsMessage* last = msgs[count - 1]; | 228 | + SrsSharedPtrMessage* last = omsgs[count - 1]; |
| 227 | av_start_time = last->header.timestamp; | 229 | av_start_time = last->header.timestamp; |
| 228 | 230 | ||
| 229 | - if (count == (int)msgs.size()) { | 231 | + if (count >= nb_msgs) { |
| 230 | // the pmsgs is big enough and clear msgs at most time. | 232 | // the pmsgs is big enough and clear msgs at most time. |
| 231 | msgs.clear(); | 233 | msgs.clear(); |
| 232 | } else { | 234 | } else { |
| @@ -1108,9 +1110,11 @@ int SrsSource::on_audio(SrsMessage* __audio) | @@ -1108,9 +1110,11 @@ int SrsSource::on_audio(SrsMessage* __audio) | ||
| 1108 | #endif | 1110 | #endif |
| 1109 | 1111 | ||
| 1110 | // copy to all consumer | 1112 | // copy to all consumer |
| 1111 | - if (true) { | ||
| 1112 | - for (int i = 0; i < (int)consumers.size(); i++) { | ||
| 1113 | - SrsConsumer* consumer = consumers.at(i); | 1113 | + int nb_consumers = (int)consumers.size(); |
| 1114 | + if (nb_consumers > 0) { | ||
| 1115 | + SrsConsumer** pconsumer = consumers.data(); | ||
| 1116 | + for (int i = 0; i < nb_consumers; i++) { | ||
| 1117 | + SrsConsumer* consumer = pconsumer[i]; | ||
| 1114 | SrsSharedPtrMessage* copy = msg.copy(); | 1118 | SrsSharedPtrMessage* copy = msg.copy(); |
| 1115 | if ((ret = consumer->enqueue(copy, atc, sample_rate, frame_rate, jitter_algorithm)) != ERROR_SUCCESS) { | 1119 | if ((ret = consumer->enqueue(copy, atc, sample_rate, frame_rate, jitter_algorithm)) != ERROR_SUCCESS) { |
| 1116 | srs_error("dispatch the audio failed. ret=%d", ret); | 1120 | srs_error("dispatch the audio failed. ret=%d", ret); |
-
请 注册 或 登录 后发表评论