void start_bm_capture() override;
void stop_dequeue_thread() override;
bool get_disconnected() const override { return disconnected; } // Only if play_once == true.
+ int get_srt_sock() const { return srt_sock; }
std::map<uint32_t, bmusb::VideoMode> get_available_video_modes() const override;
void set_video_mode(uint32_t video_mode_id) override {} // Ignore.
int read_srt(uint8_t *buf, int buf_size);
#endif
+ inline unsigned frame_width(const AVFrame *frame) const;
+ inline unsigned frame_height(const AVFrame *frame) const;
+
mutable std::mutex filename_mu;
std::string description, filename;
int srt_sock = -1;
uint16_t timecode = 0;
- unsigned width, height;
+ unsigned width, height; // 0 means keep input size.
bmusb::PixelFormat pixel_format = bmusb::PixelFormat_8BitBGRA;
movit::YCbCrFormat current_frame_ycbcr_format;
bool running = false;
std::string last_subtitle;
movit::RGBTriplet last_neutral_color{1.0f, 1.0f, 1.0f};
+
+ // Used for suppressing repeated warnings. Reset when a video starts playing.
+ // -1 is strictly speaking outside the range of the enum, but hopefully, it will be alright.
+ AVColorSpace last_colorspace = static_cast<AVColorSpace>(-1);
+ AVChromaLocation last_chroma_location = static_cast<AVChromaLocation>(-1);
};
#endif // !defined(_FFMPEG_CAPTURE_H)