winlin

merge srs2.

@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 // current release version 31 // current release version
32 #define VERSION_MAJOR 3 32 #define VERSION_MAJOR 3
33 #define VERSION_MINOR 0 33 #define VERSION_MINOR 0
34 -#define VERSION_REVISION 215 34 +#define VERSION_REVISION 216
35 35
36 // generated by configure, only macros. 36 // generated by configure, only macros.
37 #include <srs_auto_headers.hpp> 37 #include <srs_auto_headers.hpp>
@@ -146,11 +146,13 @@ int SrsFastStream::grow(ISrsBufferReader* reader, int required_size) @@ -146,11 +146,13 @@ int SrsFastStream::grow(ISrsBufferReader* reader, int required_size)
146 // the free space of buffer, 146 // the free space of buffer,
147 // buffer = consumed_bytes + exists_bytes + free_space. 147 // buffer = consumed_bytes + exists_bytes + free_space.
148 int nb_free_space = (int)(buffer + nb_buffer - end); 148 int nb_free_space = (int)(buffer + nb_buffer - end);
149 - // resize the space when no left space.  
150 - if (nb_free_space < required_size) { 149 +
151 // the bytes already in buffer 150 // the bytes already in buffer
152 int nb_exists_bytes = (int)(end - p); 151 int nb_exists_bytes = (int)(end - p);
153 srs_assert(nb_exists_bytes >= 0); 152 srs_assert(nb_exists_bytes >= 0);
  153 +
  154 + // resize the space when no left space.
  155 + if (nb_free_space < required_size - nb_exists_bytes) {
154 srs_verbose("move fast buffer %d bytes", nb_exists_bytes); 156 srs_verbose("move fast buffer %d bytes", nb_exists_bytes);
155 157
156 // reset or move to get more space. 158 // reset or move to get more space.
@@ -168,7 +170,7 @@ int SrsFastStream::grow(ISrsBufferReader* reader, int required_size) @@ -168,7 +170,7 @@ int SrsFastStream::grow(ISrsBufferReader* reader, int required_size)
168 170
169 // check whether enough free space in buffer. 171 // check whether enough free space in buffer.
170 nb_free_space = (int)(buffer + nb_buffer - end); 172 nb_free_space = (int)(buffer + nb_buffer - end);
171 - if (nb_free_space < required_size) { 173 + if (nb_free_space < required_size - nb_exists_bytes) {
172 ret = ERROR_READER_BUFFER_OVERFLOW; 174 ret = ERROR_READER_BUFFER_OVERFLOW;
173 srs_error("buffer overflow, required=%d, max=%d, left=%d, ret=%d", 175 srs_error("buffer overflow, required=%d, max=%d, left=%d, ret=%d",
174 required_size, nb_buffer, nb_free_space, ret); 176 required_size, nb_buffer, nb_free_space, ret);