Skip to content

Commit

Permalink
Revert "for bug #241, merge big chunks for publish, no use."
Browse files Browse the repository at this point in the history
This reverts commit 6b57597.
  • Loading branch information
winlinvip committed Dec 2, 2014
1 parent 6b57597 commit 565f29e
Show file tree
Hide file tree
Showing 10 changed files with 21 additions and 90 deletions.
10 changes: 2 additions & 8 deletions trunk/src/app/srs_app_recv_thread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -288,16 +288,10 @@ void SrsPublishRecvThread::on_thread_start()
{
// we donot set the auto response to false,
// for the main thread never send message.

// notice the protocol stack to merge chunks to big buffer.
// for example, the buffer is 64KB=512kb, it's 1s buffer for 500kbps video stream.
// so we can use read_fullly(64KB) to merge all chunks in 1s.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/241
rtmp->set_merge_chunks(true);
}

void SrsPublishRecvThread::on_thread_stop()
{
// revert state
rtmp->set_merge_chunks(false);
// we donot set the auto response to true,
// for we donot set to false yet.
}
25 changes: 5 additions & 20 deletions trunk/src/kernel/srs_kernel_buffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_kernel_error.hpp>
#include <srs_kernel_log.hpp>

// 4096=4KB
// 16384=16KB
// 65536=64KB
#define SOCKET_READ_SIZE 16384
#define SOCKET_READ_SIZE 4096

ISrsBufferReader::ISrsBufferReader()
{
Expand All @@ -41,13 +38,10 @@ ISrsBufferReader::~ISrsBufferReader()

SrsBuffer::SrsBuffer()
{
merge_chunks_in_big_buffer = false;
buffer = new char[SOCKET_READ_SIZE];
}

SrsBuffer::~SrsBuffer()
{
srs_freep(buffer);
}

int SrsBuffer::length()
Expand Down Expand Up @@ -94,15 +88,11 @@ int SrsBuffer::grow(ISrsBufferReader* reader, int required_size)
}

while (length() < required_size) {
char buffer[SOCKET_READ_SIZE];

ssize_t nread;
if (merge_chunks_in_big_buffer) {
if ((ret = reader->read_fully(buffer, SOCKET_READ_SIZE, &nread)) != ERROR_SUCCESS) {
return ret;
}
} else {
if ((ret = reader->read(buffer, SOCKET_READ_SIZE, &nread)) != ERROR_SUCCESS) {
return ret;
}
if ((ret = reader->read(buffer, SOCKET_READ_SIZE, &nread)) != ERROR_SUCCESS) {
return ret;
}

srs_assert((int)nread > 0);
Expand All @@ -112,9 +102,4 @@ int SrsBuffer::grow(ISrsBufferReader* reader, int required_size)
return ret;
}

void SrsBuffer::set_merge_chunks(bool v)
{
merge_chunks_in_big_buffer = v;
}


26 changes: 0 additions & 26 deletions trunk/src/kernel/srs_kernel_buffer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,16 +42,7 @@ class ISrsBufferReader
virtual ~ISrsBufferReader();
// for protocol/amf0/msg-codec
public:
/**
* read some bytes of data.
* @param nread, the actually read size, NULL to ignore.
*/
virtual int read(void* buf, size_t size, ssize_t* nread) = 0;
/**
* read specified size bytes of data
* @param nread, the actually read size, NULL to ignore.
*/
virtual int read_fully(void* buf, size_t size, ssize_t* nread) = 0;
};

/**
Expand All @@ -62,15 +53,6 @@ class SrsBuffer
{
private:
std::vector<char> data;
/**
* notice the protocol stack to merge chunks to big buffer.
* for example, the buffer is 64KB=512kb, it's 1s buffer for 500kbps video stream.
* so we can use read_fullly(64KB) to merge all chunks in 1s.
* @see https://github.com/winlinvip/simple-rtmp-server/issues/241
*/
bool merge_chunks_in_big_buffer;
// the socket recv buffer.
char* buffer;
public:
SrsBuffer();
virtual ~SrsBuffer();
Expand Down Expand Up @@ -107,14 +89,6 @@ class SrsBuffer
* @remark, we actually maybe read more than required_size, maybe 4k for example.
*/
virtual int grow(ISrsBufferReader* reader, int required_size);
public:
/**
* notice the protocol stack to merge chunks to big buffer.
* for example, the buffer is 64KB=512kb, it's 1s buffer for 500kbps video stream.
* so we can use read_fullly(64KB) to merge all chunks in 1s.
* @see https://github.com/winlinvip/simple-rtmp-server/issues/241
*/
virtual void set_merge_chunks(bool v);
};

#endif
20 changes: 14 additions & 6 deletions trunk/src/rtmp/srs_protocol_io.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,16 +43,17 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
| IBufferReader | | IStatistic | | IBufferWriter |
+---------------+ +--------------------+ +---------------+
| + read() | | + get_recv_bytes() | | + write() |
| + readfully() | | + get_recv_bytes() | | + writev() |
+------+--------+ +---+--------------+-+ +-------+-------+
/ \ / \ / \ / \
+------+--------+ | + get_recv_bytes() | | + writev() |
/ \ +---+--------------+-+ +-------+-------+
| / \ / \ / \
| | | |
+------+------------------+-+ +-----+----------------+--+
| IProtocolReader | | IProtocolWriter |
+---------------------------+ +-------------------------+
| + set_recv_timeout() | | + set_send_timeout() |
+------------+--------------+ +-------+-----------------+
/ \ / \
| + readfully() | | + set_send_timeout() |
| + set_recv_timeout() | +-------+-----------------+
+------------+--------------+ / \
/ \ |
| |
+--+-----------------------------+-+
| IProtocolReaderWriter |
Expand Down Expand Up @@ -122,6 +123,13 @@ class ISrsProtocolReader : public virtual ISrsBufferReader, public virtual ISrsP
* get the recv timeout in us.
*/
virtual int64_t get_recv_timeout() = 0;
// for handshake.
public:
/**
* read specified size bytes of data
* @param nread, the actually read size, NULL to ignore.
*/
virtual int read_fully(void* buf, size_t size, ssize_t* nread) = 0;
};

/**
Expand Down
5 changes: 0 additions & 5 deletions trunk/src/rtmp/srs_protocol_rtmp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -745,11 +745,6 @@ void SrsRtmpServer::set_auto_response(bool v)
protocol->set_auto_response(v);
}

void SrsRtmpServer::set_merge_chunks(bool v)
{
protocol->set_merge_chunks(v);
}

void SrsRtmpServer::set_recv_timeout(int64_t timeout_us)
{
protocol->set_recv_timeout(timeout_us);
Expand Down
7 changes: 0 additions & 7 deletions trunk/src/rtmp/srs_protocol_rtmp.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -343,13 +343,6 @@ class SrsRtmpServer
*/
virtual void set_auto_response(bool v);
/**
* notice the protocol stack to merge chunks to big buffer.
* for example, the buffer is 64KB=512kb, it's 1s buffer for 500kbps video stream.
* so we can use read_fullly(64KB) to merge all chunks in 1s.
* @see https://github.com/winlinvip/simple-rtmp-server/issues/241
*/
virtual void set_merge_chunks(bool v);
/**
* set/get the recv timeout in us.
* if timeout, recv/send message return ERROR_SOCKET_TIMEOUT.
*/
Expand Down
5 changes: 0 additions & 5 deletions trunk/src/rtmp/srs_protocol_stack.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -478,11 +478,6 @@ int SrsProtocol::manual_response_flush()
return ret;
}

void SrsProtocol::set_merge_chunks(bool v)
{
in_buffer->set_merge_chunks(v);
}

void SrsProtocol::set_recv_timeout(int64_t timeout_us)
{
return skt->set_recv_timeout(timeout_us);
Expand Down
7 changes: 0 additions & 7 deletions trunk/src/rtmp/srs_protocol_stack.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -269,13 +269,6 @@ class SrsProtocol
* @see the auto_response_when_recv and manual_response_queue.
*/
virtual int manual_response_flush();
/**
* notice the protocol stack to merge chunks to big buffer.
* for example, the buffer is 64KB=512kb, it's 1s buffer for 500kbps video stream.
* so we can use read_fullly(64KB) to merge all chunks in 1s.
* @see https://github.com/winlinvip/simple-rtmp-server/issues/241
*/
virtual void set_merge_chunks(bool v);
public:
/**
* set/get the recv timeout in us.
Expand Down
5 changes: 0 additions & 5 deletions trunk/src/utest/srs_utest_kernel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -199,11 +199,6 @@ int MockBufferReader::read(void* buf, size_t size, ssize_t* nread)
return ERROR_SUCCESS;
}

int MockBufferReader::read_fully(void* buf, size_t size, ssize_t* nread)
{
return read(buf, size, nread);
}

#ifdef ENABLE_UTEST_KERNEL

VOID TEST(KernelBufferTest, DefaultObject)
Expand Down
1 change: 0 additions & 1 deletion trunk/src/utest/srs_utest_kernel.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ class MockBufferReader: public ISrsBufferReader
virtual ~MockBufferReader();
public:
virtual int read(void* buf, size_t size, ssize_t* nread);
virtual int read_fully(void* buf, size_t size, ssize_t* nread);
};

class MockSrsFileWriter : public SrsFileWriter
Expand Down

0 comments on commit 565f29e

Please sign in to comment.