@@ -52,35 +52,59 @@ class llm_task {
5252 static void on_cap_fream (uint8_t *pData, uint32_t width, uint32_t height, uint32_t Length, void *ctx)
5353 {
5454 llm_task *self = static_cast <llm_task *>(ctx);
55+ int src_offsetX;
56+ int src_offsetY;
57+ int src_W;
58+ int src_H;
59+ int dst_offsetX;
60+ int dst_offsetY;
61+ int dst_W;
62+ int dst_H;
5563 if ((self->frame_height_ == height) && (self->frame_width_ == width)) {
5664 if (self->out_callback_ ) self->out_callback_ (pData, Length);
5765 } else {
58- cv::Mat yuv_src (height, width, CV_8UC2, pData);
5966 if ((self->frame_height_ >= height) && (self->frame_width_ >= width)) {
60- int offsetX = (self->frame_width_ == width) ? 0 : (self->frame_width_ - width) / 2 ;
61- int offsetY = (self->frame_height_ == height) ? 0 : (self->frame_height_ - height) / 2 ;
62- yuv_src.copyTo (self->yuv_dist_ (cv::Rect (offsetX, offsetY, width, height)));
63- if (self->out_callback_ )
64- self->out_callback_ (self->yuv_dist_ .data , self->frame_height_ * self->frame_width_ * 2 );
67+ src_offsetX = 0 ;
68+ src_offsetY = 0 ;
69+ src_W = width;
70+ src_H = height;
71+ dst_offsetX = (self->frame_width_ == src_W) ? 0 : (self->frame_width_ - src_W) / 2 ;
72+ dst_offsetY = (self->frame_height_ == src_H) ? 0 : (self->frame_height_ - src_H) / 2 ;
73+ dst_W = width;
74+ dst_H = height;
6575 } else if ((self->frame_height_ <= height) && (self->frame_width_ <= width)) {
66- int offsetX = (self->frame_width_ == width) ? 0 : (width - self->frame_width_ ) / 2 ;
67- int offsetY = (self->frame_height_ == height) ? 0 : (height - self->frame_height_ ) / 2 ;
68- yuv_src (cv::Rect (offsetX, offsetY, self->frame_width_ , self->frame_height_ )).copyTo (self->yuv_dist_ );
69- if (self->out_callback_ )
70- self->out_callback_ (self->yuv_dist_ .data , self->frame_height_ * self->frame_width_ * 2 );
76+ src_offsetX = (self->frame_width_ == width) ? 0 : (width - self->frame_width_ ) / 2 ;
77+ src_offsetY = (self->frame_height_ == height) ? 0 : (height - self->frame_height_ ) / 2 ;
78+ src_W = self->frame_width_ ;
79+ src_H = self->frame_height_ ;
80+ dst_offsetX = 0 ;
81+ dst_offsetY = 0 ;
82+ dst_W = src_W;
83+ dst_H = src_H;
7184 } else if ((self->frame_height_ >= height) && (self->frame_width_ <= width)) {
72- int offsetX = (self->frame_width_ == width) ? 0 : (width - self->frame_width_ ) / 2 ;
73- int offsetY = (self->frame_height_ == height) ? 0 : (self->frame_height_ - height) / 2 ;
74- yuv_src (cv::Rect (offsetX, offsetY, self->frame_width_ , height)).copyTo (self->yuv_dist_ );
75- if (self->out_callback_ )
76- self->out_callback_ (self->yuv_dist_ .data , self->frame_height_ * self->frame_width_ * 2 );
85+ src_offsetX = (self->frame_width_ == width) ? 0 : (width - self->frame_width_ ) / 2 ;
86+ src_offsetY = 0 ;
87+ src_W = self->frame_width_ ;
88+ src_H = height;
89+ dst_offsetX = 0 ;
90+ dst_offsetY = (self->frame_height_ == src_H) ? 0 : (self->frame_height_ - src_H) / 2 ;
91+ dst_W = src_W;
92+ dst_H = src_H;
7793 } else {
78- int offsetX = (self->frame_width_ == width) ? 0 : (self->frame_width_ - width) / 2 ;
79- int offsetY = (self->frame_height_ == height) ? 0 : (self->frame_height_ - height) / 2 ;
80- yuv_src (cv::Rect (offsetX, offsetY, width, self->frame_height_ )).copyTo (self->yuv_dist_ );
81- if (self->out_callback_ )
82- self->out_callback_ (self->yuv_dist_ .data , self->frame_height_ * self->frame_width_ * 2 );
94+ src_offsetX = 0 ;
95+ src_offsetY = (self->frame_height_ == height) ? 0 : (height - self->frame_height_ ) / 2 ;
96+ src_W = width;
97+ src_H = self->frame_height_ ;
98+ dst_offsetX = (self->frame_width_ == src_W) ? 0 : (self->frame_width_ - src_W) / 2 ;
99+ dst_offsetY = 0 ;
100+ dst_W = src_W;
101+ dst_H = src_H;
83102 }
103+ cv::Mat yuv_src (height, width, CV_8UC2, pData);
104+ yuv_src (cv::Rect (src_offsetX, src_offsetY, src_W, src_H))
105+ .copyTo (self->yuv_dist_ (cv::Rect (dst_offsetX, dst_offsetY, dst_W, dst_H)));
106+ if (self->out_callback_ )
107+ self->out_callback_ (self->yuv_dist_ .data , self->frame_height_ * self->frame_width_ * 2 );
84108 }
85109 }
86110
0 commit comments