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; }
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; }
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; }