Browse Source

Z991239-4440 #comment 下摄像头支持输出240*320分辨率大小图片

80274480 2 years ago
parent
commit
c7b008c382
1 changed files with 24 additions and 0 deletions
  1. 24 0
      Module/mod_mediacontroller/capture.cpp

+ 24 - 0
Module/mod_mediacontroller/capture.cpp

@@ -1161,6 +1161,22 @@ static void opt_cap_on_frame(void *user_data, video_frame *frame)
 		//}
 		//}
 
 
 		video_frame_free(&rtp_frame);
 		video_frame_free(&rtp_frame);
+
+		// preview
+		{
+			video_frame preview_frame;
+			video_frame_alloc(REC_COMMON_VIDEO_PREVIEW_HEIGHT, REC_COMMON_VIDEO_PREVIEW_WIDTH, VIDEO_FORMAT_RGB24, &preview_frame);
+			uint8_t* src_data[4] = { frame->data[0] + frame->linesize[0] * 80, 0, 0, 0 };
+			sws_scale(video_cap->preview_sws_ctx, src_data, frame->linesize, 0, REC_COMMON_VIDEO_SNAPSHOT_PREVIEW_WIDTH, preview_frame.data, preview_frame.linesize);
+			video_shm_enqueue(video_cap->preview_shm_queue, &preview_frame, 1, video_cap->frame_id);
+			
+			//static int ipreview_shm_queue = 0;
+			//char strname[MAX_PATH] = { 0 };
+			//snprintf(strname, MAX_PATH, "opt_preview_shm_queue_%d.bmp", ipreview_shm_queue++);
+			//video_frame_save_bmpfile(strname, &preview_frame);
+
+			video_frame_free(&preview_frame);
+		}
 	}
 	}
 
 
 #ifdef RVC_OS_WIN
 #ifdef RVC_OS_WIN
@@ -1208,6 +1224,14 @@ static video_capture_t *video_capture_create(capture_t *cap, int camera_type)
 				REC_COMMON_VIDEO_RTP_OPT_HEIGHT,
 				REC_COMMON_VIDEO_RTP_OPT_HEIGHT,
 				AV_PIX_FMT_BGR24,
 				AV_PIX_FMT_BGR24,
 				SWS_POINT, NULL, NULL, NULL);
 				SWS_POINT, NULL, NULL, NULL);
+			video_cap->preview_shm_queue = new Clibvideoqueue(REC_COMMON_VIDEO_OPT_SHM_PREVIEW_QUEUE);
+			video_cap->preview_sws_ctx = sws_getContext(REC_COMMON_VIDEO_SNAPSHOT_PREVIEW_HEIGHT,
+				REC_COMMON_VIDEO_SNAPSHOT_PREVIEW_WIDTH,
+				AV_PIX_FMT_BGR24,
+				REC_COMMON_VIDEO_PREVIEW_HEIGHT,
+				REC_COMMON_VIDEO_PREVIEW_WIDTH,
+				AV_PIX_FMT_BGR24,
+				SWS_FAST_BILINEAR, NULL, NULL, NULL);
 			//video_cap->preview_shm_queue = NULL;
 			//video_cap->preview_shm_queue = NULL;
 			//video_cap->preview_sws_ctx = NULL;
 			//video_cap->preview_sws_ctx = NULL;
 		}
 		}