Removed unnecessary output transcode queue

This commit is contained in:
emeric
2014-10-11 18:28:35 +02:00
parent 92891ea070
commit dcf9137b19
5 changed files with 41 additions and 55 deletions
+11 -15
View File
@@ -164,32 +164,28 @@ bool
MediaRequestHandler::processGetPart(const MediaRequest::GetPart& request, MediaResponse::PartResult& response)
{
std::size_t dataSize = request.requested_data_size();
std::vector<unsigned char> data;
if (dataSize > _maxPartSize)
dataSize = _maxPartSize;
if (_transcoders.find(request.handle()) == _transcoders.end())
TranscoderMap::iterator itTranscoder = _transcoders.find(request.handle());
if (itTranscoder == _transcoders.end())
{
LMS_LOG(MOD_REMOTE, SEV_ERROR) << "No transcoder found for handle " << request.handle();
return true;
}
std::shared_ptr<Transcode::AvConvTranscoder> transcoder = _transcoders[request.handle()];
std::shared_ptr<Transcode::AvConvTranscoder> transcoder = itTranscoder->second;
while (!transcoder->isComplete() && transcoder->getOutputData().size() < dataSize)
transcoder->process();
if (!transcoder->isComplete())
{
data.reserve(dataSize);
transcoder->process(data, dataSize);
}
LMS_LOG(MOD_REMOTE, SEV_DEBUG) << "MediaRequestHandler::processGetPart, handle = " << request.handle() << ", isComplete = " << std::boolalpha << transcoder->isComplete() << ", size = " << transcoder->getOutputData().size();
LMS_LOG(MOD_REMOTE, SEV_DEBUG) << "MediaRequestHandler::processGetPart, handle = " << request.handle() << ", isComplete = " << std::boolalpha << transcoder->isComplete() << ", size = " << data.size();
Transcode::AvConvTranscoder::data_type::iterator itEnd;
if (transcoder->getOutputData().size() > dataSize)
itEnd = transcoder->getOutputData().begin() + dataSize;
else
itEnd = transcoder->getOutputData().end();
std::copy(transcoder->getOutputData().begin(), itEnd, std::back_inserter(*response.mutable_data()));
// Consume sent bytes
transcoder->getOutputData().erase(transcoder->getOutputData().begin(), itEnd);
std::copy(data.begin(), data.end(), std::back_inserter(*response.mutable_data()));
return true;
}
+3 -1
View File
@@ -46,7 +46,9 @@ class MediaRequestHandler
// bool processVideoPrepare(const AudioCollectionRequest::GetGenreList& request, AudioCollectionResponse::GenreList& response);
std::map<uint32_t, std::shared_ptr<Transcode::AvConvTranscoder> > _transcoders;
typedef std::map<uint32_t, std::shared_ptr<Transcode::AvConvTranscoder> > TranscoderMap;
TranscoderMap _transcoders;
Database::Handler& _db;