Subonsic API: added estimateContentLength parameter support for stream endpoint. fixes #244

This commit is contained in:
emeric
2022-08-20 14:56:16 +02:00
parent 49f0d40515
commit 1fb838c8d0
13 changed files with 162 additions and 104 deletions
@@ -21,6 +21,7 @@
#include <array>
#include <filesystem>
#include <optional>
#include "av/TranscodeParameters.hpp"
#include "utils/IResourceHandler.hpp"
@@ -28,19 +29,19 @@
namespace Av
{
class TranscodeResourceHandler final : public IResourceHandler
{
public:
TranscodeResourceHandler(const std::filesystem::path& trackPath, const TranscodeParameters& parameters);
TranscodeResourceHandler(const InputFileParameters& inputFileParameters, const TranscodeParameters& parameters, bool estimateContentLength);
private:
Wt::Http::ResponseContinuation* processRequest(const Wt::Http::Request& request, Wt::Http::Response& reponse) override;
static constexpr std::size_t _chunkSize {32768};
std::optional<std::size_t> _estimatedContentLength;
std::array<std::byte, _chunkSize> _buffer;
std::size_t _nbBytesReady {};
const std::filesystem::path _trackPath;
std::size_t _bytesReadyCount {};
std::size_t _totalServedByteCount {};
Transcoder _transcoder;
};
}