正在显示
1 个修改的文件
包含
9 行增加
和
4 行删除
| @@ -82,17 +82,21 @@ char* SrsFastBuffer::bytes() | @@ -82,17 +82,21 @@ char* SrsFastBuffer::bytes() | ||
| 82 | 82 | ||
| 83 | void SrsFastBuffer::set_buffer(int buffer_size) | 83 | void SrsFastBuffer::set_buffer(int buffer_size) |
| 84 | { | 84 | { |
| 85 | - // the user-space buffer size limit to a max value. | ||
| 86 | - int nb_resize_buf = srs_min(buffer_size, SRS_MAX_SOCKET_BUFFER); | 85 | + // never exceed the max size. |
| 87 | if (buffer_size > SRS_MAX_SOCKET_BUFFER) { | 86 | if (buffer_size > SRS_MAX_SOCKET_BUFFER) { |
| 88 | - srs_warn("limit the user-space buffer from %d to %d", buffer_size, SRS_MAX_SOCKET_BUFFER); | 87 | + srs_warn("limit the user-space buffer from %d to %d", |
| 88 | + buffer_size, SRS_MAX_SOCKET_BUFFER); | ||
| 89 | } | 89 | } |
| 90 | 90 | ||
| 91 | + // the user-space buffer size limit to a max value. | ||
| 92 | + int nb_resize_buf = srs_min(buffer_size, SRS_MAX_SOCKET_BUFFER); | ||
| 93 | + | ||
| 91 | // only realloc when buffer changed bigger | 94 | // only realloc when buffer changed bigger |
| 92 | if (nb_resize_buf <= nb_buffer) { | 95 | if (nb_resize_buf <= nb_buffer) { |
| 93 | return; | 96 | return; |
| 94 | } | 97 | } |
| 95 | 98 | ||
| 99 | + // realloc for buffer change bigger. | ||
| 96 | int start = p - buffer; | 100 | int start = p - buffer; |
| 97 | int nb_bytes = end - p; | 101 | int nb_bytes = end - p; |
| 98 | 102 | ||
| @@ -148,6 +152,7 @@ int SrsFastBuffer::grow(ISrsBufferReader* reader, int required_size) | @@ -148,6 +152,7 @@ int SrsFastBuffer::grow(ISrsBufferReader* reader, int required_size) | ||
| 148 | srs_assert(nb_exists_bytes >= 0); | 152 | srs_assert(nb_exists_bytes >= 0); |
| 149 | srs_verbose("move fast buffer %d bytes", nb_exists_bytes); | 153 | srs_verbose("move fast buffer %d bytes", nb_exists_bytes); |
| 150 | 154 | ||
| 155 | + // reset or move to get more space. | ||
| 151 | if (!nb_exists_bytes) { | 156 | if (!nb_exists_bytes) { |
| 152 | // reset when buffer is empty. | 157 | // reset when buffer is empty. |
| 153 | p = end = buffer; | 158 | p = end = buffer; |
| @@ -159,7 +164,6 @@ int SrsFastBuffer::grow(ISrsBufferReader* reader, int required_size) | @@ -159,7 +164,6 @@ int SrsFastBuffer::grow(ISrsBufferReader* reader, int required_size) | ||
| 159 | p = buffer; | 164 | p = buffer; |
| 160 | end = p + nb_exists_bytes; | 165 | end = p + nb_exists_bytes; |
| 161 | } | 166 | } |
| 162 | - } | ||
| 163 | 167 | ||
| 164 | // check whether enough free space in buffer. | 168 | // check whether enough free space in buffer. |
| 165 | nb_free_space = buffer + nb_buffer - end; | 169 | nb_free_space = buffer + nb_buffer - end; |
| @@ -169,6 +173,7 @@ int SrsFastBuffer::grow(ISrsBufferReader* reader, int required_size) | @@ -169,6 +173,7 @@ int SrsFastBuffer::grow(ISrsBufferReader* reader, int required_size) | ||
| 169 | required_size, nb_buffer, nb_free_space, ret); | 173 | required_size, nb_buffer, nb_free_space, ret); |
| 170 | return ret; | 174 | return ret; |
| 171 | } | 175 | } |
| 176 | + } | ||
| 172 | 177 | ||
| 173 | // buffer is ok, read required size of bytes. | 178 | // buffer is ok, read required size of bytes. |
| 174 | while (end - p < required_size) { | 179 | while (end - p < required_size) { |
-
请 注册 或 登录 后发表评论