@@ -56,15 +56,33 @@ class DeviceInterface {
5656 // default sendPacket/receiveFrame/flush implementations.
5757 virtual void initialize (const SharedAVCodecContext& codec_context) = 0;
5858
59- // Initialize the device with parameters specific to video decoding. There is
60- // a default empty implementation.
61- virtual void initialize_video (
59+ // Initialize state needed to decode packets into raw AVFrames.
60+ virtual void initialize_video_decoding (
6261 [[maybe_unused]] const AVStream* av_stream,
6362 [[maybe_unused]] const UniqueDecodingAVFormatContext& av_format_ctx,
63+ [[maybe_unused]] const VideoStreamOptions& video_stream_options) {}
64+
65+ // Initialize state needed to color-convert decoded AVFrames into output
66+ // tensors.
67+ virtual void initialize_color_conversion (
6468 [[maybe_unused]] const VideoStreamOptions& video_stream_options,
6569 [[maybe_unused]] const std::vector<std::unique_ptr<Transform>>&
66- transforms,
67- [[maybe_unused]] const std::optional<FrameDims>& resized_output_dims) {}
70+ transforms = {},
71+ [[maybe_unused]] const std::optional<FrameDims>& resized_output_dims =
72+ std::nullopt ) {}
73+
74+ // Convenience for the combined decode + color-convert path, kept for BC as
75+ // it's used by SingleStreamDecoder and out-of-tree interfaces rely on it.
76+ void initialize_video (
77+ const AVStream* av_stream,
78+ const UniqueDecodingAVFormatContext& av_format_ctx,
79+ const VideoStreamOptions& video_stream_options,
80+ const std::vector<std::unique_ptr<Transform>>& transforms,
81+ const std::optional<FrameDims>& resized_output_dims) {
82+ initialize_video_decoding (av_stream, av_format_ctx, video_stream_options);
83+ initialize_color_conversion (
84+ video_stream_options, transforms, resized_output_dims);
85+ }
6886
6987 // Initialize the device with parameters specific to audio decoding. There is
7088 // a default empty implementation.
0 commit comments