Exemple #1
0
int yuv_video_npt (bench_t* req){
  current = 0;
  current_frames = 0;
  
  omxcam_video_settings_t settings;
  
  omxcam_video_init (&settings);
  settings.format = OMXCAM_FORMAT_YUV420;
  settings.camera.width = req->width;
  settings.camera.height = req->height;
  
  omxcam_yuv_planes (req->width, req->height, &planes);
  
  frame_size = planes.offset_v + planes.length_v;
  total_frames = req->frames;
  
  if (omxcam_video_start_npt (&settings)) return -1;
  omxcam_buffer_t buffer;
  
  req->on_ready ();
  
  while (!quit){
    if (omxcam_video_read_npt (&buffer)) return -1;
    on_data_video_npt (buffer.data, buffer.length);
  }
  
  req->on_stop ();
  
  return bg_error;
}
Exemple #2
0
int main (){
  omxcam_video_settings_t settings;
  omxcam_video_init (&settings);
  
  //1920x1080 @30fps by default
  
  settings.on_data = on_data;
  
  //RGB, 640x480 @30fps (10 frames)
  settings.format = OMXCAM_FORMAT_RGB888;
  settings.camera.width = 640;
  settings.camera.height = 480;
  settings.h264.inline_motion_vectors = OMXCAM_TRUE;
  
  current = 0;
  total = 640*480*3*10;
  
  if (save ("video-640x480.rgb", &settings)) return 1;
  
  //RGBA (alpha channel is unused, value 255), 642x480 @30fps (10 frames)
  //When no encoder is used, the width and the height need to be multiple of 32
  //and 16, therefore, 642 rounded up to the nearest multiple of 32 is 672
  settings.format = OMXCAM_FORMAT_RGBA8888;
  settings.camera.width = 642;
  settings.camera.height = 480;
  
  current = 0;
  total = 672*480*4*10;
  
  if (save ("video-672x480.rgba", &settings)) return 1;
  
  printf ("ok\n");
  
  return 0;
}
int h264 (bench_t* req){
  omxcam_video_settings_t settings;
  
  omxcam_video_init (&settings);
  settings.on_ready = req->on_ready;
  settings.on_stop = req->on_stop;
  settings.camera.width = req->width;
  settings.camera.height = req->height;
  
  return omxcam_video_start (&settings, req->ms);
}
int h264_npt (bench_t* req){
  omxcam_video_settings_t settings;
  
  omxcam_video_init (&settings);
  settings.camera.width = req->width;
  settings.camera.height = req->height;
  
  if (omxcam_video_start_npt (&settings)) return -1;
  
  req->on_ready ();
  req->on_stop ();
  
  return omxcam_video_stop_npt ();
}
int main (){
  omxcam_video_settings_t settings;
  
  //Capture a video of ~2000ms, 640x480 @30fps
  omxcam_video_init (&settings);
  settings.camera.width = 640;
  settings.camera.height = 480;
  
  if (save ("video.h264", &settings)) return 1;
  
  printf ("ok\n");
  
  return 0;
}
int main (){
  omxcam_video_settings_t settings;
  
  omxcam_video_init (&settings);
  settings.camera.width = 640;
  settings.camera.height = 480;
  settings.h264.inline_motion_vectors = OMXCAM_TRUE;
  
  if (save ("video.h264", "motion", &settings)) return 1;
  
  printf ("ok\n");
  
  return 0;
}
int main (){
  omxcam_video_settings_t settings;
  omxcam_video_init (&settings);
  
  settings.on_ready = on_ready;
  settings.on_data = on_data;
  settings.camera.width = 640;
  settings.camera.height = 480;
  
  if (save ("video.h264", &settings)) return 1;
  
  printf ("ok\n");
  
  return 0;
}
int main (int argc, char **argv)
{
	int rtpmode=1;	// デフォルトはRTPモード
	omxcam_video_settings_t videoset = {};
	if (argc < 3) {
		printf("Usage: %s <peer_addr> <recv_port>\n", argv[0]);
		exit(1);
	}

	if (strstr(argv[0], "udp") != NULL)
		rtpmode = 0;		// コマンド名にudpが入っているときはUDPモード

	// ソケット初期化
	udpsock = sock_createcl(argv[1], atoi(argv[2]));
	if (udpsock < 0)
		return __LINE__;

	// キャプチャ初期化
	omxcam_video_init(&videoset);
	videoset.on_data = rtpmode ? video_encoded : video_encoded_toudp;
	// カメラ設定
	videoset.camera.width = 1920;
	videoset.camera.height = 1080;
	videoset.camera.framerate = 30;
	// エンコーダ設定
	videoset.h264.bitrate = 12*1000*1000; //12Mbps
	videoset.h264.idr_period = 30;	//30フレームごとにIDR
	videoset.h264.inline_headers = OMXCAM_TRUE; // SPS/PPSを挿入

	if (rtpmode) {
		// RTP初期化
		rtpopen(&rtpsock, 1/*SSRC*/, 96/*payload_type*/, udpsock, &s_peer);
	}

	// キャプチャ開始
	omxcam_video_start(&videoset, OMXCAM_CAPTURE_FOREVER);

	if (rtpmode)
		rtpclose(rtpsock);
	else
		close(udpsock);
	return 0;
}
int main (){
  omxcam_video_settings_t settings;
  omxcam_video_init (&settings);
  
  settings.on_data = on_data;
  settings.camera.width = 640;
  settings.camera.height = 480;
  
  signal (SIGINT, signal_handler);
  signal (SIGTERM, signal_handler);
  signal (SIGQUIT, signal_handler);
  signal (SIGHUP, signal_handler);
  
  if (omxcam_video_start (&settings, OMXCAM_CAPTURE_FOREVER)){
    return log_error ();
  }
  
  return 0;
}
Exemple #10
0
int yuv_video (bench_t* req){
  current = 0;
  current_frames = 0;
  
  omxcam_video_settings_t settings;
  
  omxcam_video_init (&settings);
  settings.on_ready = req->on_ready;
  settings.on_data = on_data_video;
  settings.on_stop = req->on_stop;
  settings.format = OMXCAM_FORMAT_YUV420;
  settings.camera.width = req->width;
  settings.camera.height = req->height;
  
  omxcam_yuv_planes (req->width, req->height, &planes);
  
  frame_size = planes.offset_v + planes.length_v;
  total_frames = req->frames;
  
  int error = omxcam_video_start (&settings, OMXCAM_CAPTURE_FOREVER);
  
  return error ? error : bg_error;
}