int main() { int i; struct picture_t pic; struct encoded_pic_t encoded_pic; errno = 0; if(!camera_init(&pic)) goto error_cam; if(!encoder_init(&pic)){ fprintf(stderr,"failed to initialize encoder\n"); goto error_encoder; } if(!preview_init(&pic)) goto error_preview; if(!output_init(&pic)) goto error_output; if(!encoder_encode_headers(&encoded_pic)) goto error_output; if(!output_write_headers(&encoded_pic)) goto error_output; if(!camera_on()) goto error_cam_on; if(signal(SIGINT, stop_recording) == SIG_ERR){ fprintf(stderr,"signal() failed\n"); goto error_signal; } printf("Press ctrl-c to stop recording...\n"); recording = 1; for(i=0; recording; i++){ if(!camera_get_frame(&pic)) break; gen_osd_info(); osd_print(&pic, osd_string); if((i&7)==0) // i%8==0 preview_display(&pic); if(!encoder_encode_frame(&pic, &encoded_pic)) break; applog_flush(); if(!output_write_frame(&encoded_pic)) break; } printf("\nrecorded %d frames\n", i); error_signal: camera_off(); error_cam_on: output_close(); error_output: preview_close(); error_preview: encoder_close(); error_encoder: camera_close(); error_cam: return 0; }
PUSS_EXPORT void* puss_plugin_create(Puss* app) { LanguageTips* self; bindtextdomain(TEXT_DOMAIN, app->get_locale_path()); bind_textdomain_codeset(TEXT_DOMAIN, "UTF-8"); self = g_new0(LanguageTips, 1); self->app = app; parse_thread_init(self); self->re_include = g_regex_new("^[ \t]*#[ \t]*include[ \t]*(.*)", (GRegexCompileFlags)0, (GRegexMatchFlags)0, 0); self->re_include_tip = g_regex_new("([\"<])(.*)", (GRegexCompileFlags)0, (GRegexMatchFlags)0, 0); self->re_include_info = g_regex_new("([\"<])([^\">]*)[\">].*", (GRegexCompileFlags)0, (GRegexMatchFlags)0, 0); ui_create(self); tips_init(self); preview_init(self); controls_init(self); return self; }
int main() { int s32MainFd,temp; struct timespec ts = { 2, 0 }; //================================================= ringmalloc(640*480); errno = 0; if(!camera_init(&pic)) goto error_cam; if(!encoder_init(&pic)) goto error_encoder; if(!preview_init(&pic)) goto error_preview; get_filename(); printf("file:%s\n",mkv_filename); if(!output_init(&pic,mkv_filename)) goto error_output; if(!encoder_encode_headers(&encoded_pic)) goto error_output; memcpy(&header_pic,&encoded_pic,sizeof(encoded_pic)); header_pic.buffer=malloc(encoded_pic.length); memcpy(header_pic.buffer,encoded_pic.buffer,encoded_pic.length); if(!output_write_headers(&encoded_pic,&psp)) goto error_output; encoder_release(&encoded_pic); if(!camera_on()) goto error_cam_on; //================================================ printf("RTSP server START\n"); PrefsInit(); printf("listen for client connecting...\n"); signal(SIGINT, IntHandl); s32MainFd = tcp_listen(SERVER_RTSP_PORT_DEFAULT); /* 初始化schedule_list 队列,创建调度线程,参考 schedule.c */ if (ScheduleInit(&pic,&encoded_pic) == ERR_FATAL) { fprintf(stderr,"Fatal: Can't start scheduler %s, %i \nServer is aborting.\n", __FILE__, __LINE__); return 0; } /* 将所有可用的RTP端口号放入到port_pool[MAX_SESSION] 中 */ RTP_port_pool_init(RTP_DEFAULT_PORT); //循环等待 if((temp = pthread_create(&thread[0], NULL, cam_thread, NULL)) != 0) printf("cam_thread error!\n"); else printf("cam_thread ok\n"); pthread_mutex_init(&mut,NULL); while (!g_s32Quit) { nanosleep(&ts, NULL); /*查找收到的rtsp连接, * 对每一个连接产生所有的信息放入到结构体rtsp_list中 */ // trace_point(); EventLoop(s32MainFd); } ringfree(); printf("The Server quit!\n"); camera_off(); error_cam_on: output_close(); error_output: preview_close(); error_preview: encoder_close(); error_encoder: camera_close(); error_cam: return NULL; }
static PRESULT preview_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { char progress_strs[20]; static UINT16 callback_cnt = 0; UINT8 i; UINT16 curpos; FileInfo file_node; char image_name[FULL_PATH_SIZE]; UINT32 file_idx; PRESULT ret = PROC_PASS; switch(event) { case EVN_PRE_OPEN: if(from_imagepreview == TRUE && back_to_filelist == TRUE) { from_imagepreview = FALSE; back_to_filelist = FALSE; return PROC_LEAVE; } api_set_preview_vpo_color(TRUE); preview_init(); //imagedec_ioctl(1,IMAGEDEC_IO_CMD_FILL_LOGO,0x108080); //imagedec_ioctl(1,IMAGEDEC_IO_CMD_FILL_LOGO,0xB9748F);//yvu imagedec_ioctl(1, IMAGEDEC_IO_CMD_FILL_LOGO, 0x356B9D);//yvu image_abort(); preview_image(image_idx_inpage, image_multiview_first + image_idx_inpage); show_title(hl_index); break; case EVN_POST_OPEN: show_loadinglogo(1);//not show first loading icon break; case EVN_PRE_DRAW: break; case EVN_UNKNOWN_ACTION: break; case EVN_PRE_CLOSE: g_from_imagepreview = TRUE; if(image_folderloop_flag == 1)//filelist { curpos = OSD_GetMtrxboxCurPos(&imgpreview_mbx_img); get_file_from_play_list(cur_playlist_image, (image_multiview_first+curpos), &file_node); win_get_fullname(image_name, file_node.path, file_node.name); usblist_set_filelist_param(image_name); } break; case EVN_POST_CLOSE: image_abort(); from_imagepreview = FALSE; vpo_win_onoff((struct vpo_device *)dev_get_by_id(HLD_DEV_TYPE_DIS, 0), FALSE); vpo_win_onoff((struct vpo_device *)dev_get_by_id(HLD_DEV_TYPE_DIS, 1), FALSE); OSD_ClearObject((POBJECT_HEAD)&imgpreview_title,C_UPDATE_ALL); OSD_ClearObject((POBJECT_HEAD)&imgpreview_mbx_img,C_UPDATE_ALL); break; case EVN_MSG_GOT: if(param1 == CTRL_MSG_SUBTYPE_CMD_STO && param2 == USB_STATUS_OVER) { //storage_dev_mount_hint(1); file_list_check_storage_device(FALSE, FALSE); } //show dec percent else if ((param1 == CTRL_MSG_SUBTYPE_STATUS_JPEG_DEC_PROCESS) || (param1 == CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER)) { // if(CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER == param1) // SDBBP(); if ((param2 < 100) && (param1 == CTRL_MSG_SUBTYPE_STATUS_JPEG_DEC_PROCESS)) { callback_cnt++; sprintf(progress_strs,"%d%%.",param2); for(i = 0;i < (callback_cnt%3);i++) { sprintf(progress_strs,"%s%s",progress_strs,"."); } OSD_SetTextFieldContent(&imgpreview_txt_decode,STRING_ANSI,(UINT32)progress_strs); OSD_DrawObject((POBJECT_HEAD)&imgpreview_txt_decode,C_UPDATE_ALL); } else if((param2 >= 100) || (param1 == CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER)) { OSD_ClearObject((POBJECT_HEAD)&imgpreview_txt_decode,C_UPDATE_ALL); // OSD_ObjClose((POBJECT_HEAD)&imgpreview_txt_decode,C_UPDATE_ALL); } } if(param1 == CTRL_MSG_SUBTYPE_STATUS_IMAGEOVER) { image_abort(); image_idx_inpage++; if(image_idx_inpage < image_cnt_inpage) { preview_image(image_idx_inpage, image_multiview_first + image_idx_inpage); } } else if(param1 == CTRL_MSG_SUBTYPE_STATUS_MP3OVER) { win_play_next_music_ex(); } else if(param1 == CTRL_MSG_SUBTYPE_CMD_UPDATE_VIEW) { } else {} break; default: break; } return ret; }