|
|
|
|
@ -2,7 +2,8 @@
|
|
|
|
|
* Смена bitrate ожидает ближайший IDR (период <= 1с по capture PTS). Новый encoder |
|
|
|
|
* заменяет старый только после полного первого IDR. Completion передаётся в uasync |
|
|
|
|
* независимо от admission видео. PTS, generation и frame_id принадлежат владельцу. |
|
|
|
|
* open получает уже согласованный profile/level/VBV; сетевой CAPS проверяет владелец. */ |
|
|
|
|
* open получает уже согласованный profile/level/VBV и предел bitrate данного режима; |
|
|
|
|
* сетевой CAPS и соответствие размера/FPS этому envelope проверяет владелец. */ |
|
|
|
|
#pragma once |
|
|
|
|
#include "live_video_encoder.h" |
|
|
|
|
|
|
|
|
|
@ -18,7 +19,7 @@ public:
|
|
|
|
|
bool requestBitrate(uint64_t generation, uint64_t request, uint32_t bitrate); |
|
|
|
|
// Один вход -> один выход. На false output не меняется; completion нужно обработать и на ошибке.
|
|
|
|
|
bool encode(const QImage& image, uint64_t pts, bool forceKey, LiveEncodedFrame& output, CallVideoRateCompletion& completion); |
|
|
|
|
uint32_t bitrate() const { return m_config.bitrate; } |
|
|
|
|
uint32_t bitrate() const { return m_encoder ? m_config.bitrate : 0; } |
|
|
|
|
QString error() const { return m_error; } |
|
|
|
|
private: |
|
|
|
|
std::unique_ptr<LiveVideoEncoder> m_encoder; |
|
|
|
|
|