123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #include "StreamProcessor.h"
- #include "FLVHeader.h"
- StreamProcessor::StreamProcessor()
- {
- buffer.reserve(1024*1024);
- bytesWritten=0;
- readHeader=false;
- }
- int StreamProcessor::Write(void *data, size_t datalen, size_t *written)
- {
- *written = buffer.write(data, datalen);
- bytesWritten += *written;
- if (*written != datalen)
- return FLVPROCESSOR_WRITE_WAIT;
- return FLVPROCESSOR_WRITE_OK;
- }
- int StreamProcessor::Process()
- {
-
-
-
- if (!readHeader)
- {
- if (buffer.size() >= 9)
- {
- uint8_t data[9] = {0};
- buffer.read(data, 9);
- if (header.Read(data, 9))
- {
- readHeader=true;
- return FLV_OK;
- }
- else
- {
- return FLV_ERROR;
- }
- }
- }
- return FLV_NEED_MORE_DATA;
- }
- uint64_t StreamProcessor::GetProcessedPosition()
- {
-
- if (readHeader)
- return bytesWritten;
- else
- return 0;
- }
- uint32_t StreamProcessor::GetMaxTimestamp()
- {
- return -1000;
- }
- uint64_t StreamProcessor::Seek(uint64_t position)
- {
-
-
-
- return buffer.advance((size_t)position);
- }
- size_t StreamProcessor::Read(void *data, size_t bytes)
- {
-
- return buffer.read(data, bytes);
- }
- bool StreamProcessor::GetFrame(size_t frameIndex, FrameData &frameData)
- {
-
- if (buffer.size() >= 15)
- {
- uint8_t data[15] = {0};
- buffer.peek(data, 15);
- if (frameData.header.Read(data, 15))
- {
-
-
- if (frameData.header.dataSize + 15 <= buffer.size())
- {
-
-
- frameData.location = 0;
- return true;
- }
- }
- }
- return false;
- }
- bool StreamProcessor::GetPosition(int time_in_ms, size_t *frameIndex, bool needVideoKeyFrame)
- {
- return false;
- }
- FLVHeader *StreamProcessor::GetHeader()
- {
- if (readHeader)
- return &header;
- else
- return 0;
- }
|