boolean lives_yuv_stream_start_write(lives_yuv4m_t *yuv4mpeg, const char *filename, int hsize, int vsize, double fps) { int i; if (mainw->fixed_fpsd>-1.&&mainw->fixed_fpsd!=fps) { do_error_dialog(lives_strdup_printf(_("Unable to set display framerate to %.3f fps.\n\n"),fps)); return FALSE; } mainw->fixed_fpsd=fps; if (filename==NULL) filename=lives_strdup_printf("%s/streamout.yuv",prefs->tmpdir); // TODO - do_threaded_dialog if ((yuvout=creat(filename,O_CREAT))<0) { do_error_dialog(lives_strdup_printf(_("Unable to open yuv4mpeg out stream %s\n"),filename)); return FALSE; } if (mainw->fixed_fpsd>23.9999&&mainw->fixed_fpsd<24.0001) { y4m_si_set_framerate(&(yuv4mpeg->streaminfo),y4m_fps_FILM); } else return FALSE; y4m_si_set_interlace(&(yuv4mpeg->streaminfo), Y4M_ILACE_NONE); y4m_si_set_width(&(yuv4mpeg->streaminfo), (hsize_out=hsize)); y4m_si_set_height(&(yuv4mpeg->streaminfo), (vsize_out=vsize)); y4m_si_set_sampleaspect(&(yuv4mpeg->streaminfo), yuv4mpeg->sar); i = y4m_write_stream_header(yuvout, &(yuv4mpeg->streaminfo)); if (i != Y4M_OK) return FALSE; return TRUE; }
static void do_renew(GtkWidget *widget, GtkWidget *entry) { char *pass; krb5_error_code code; krb5_context kcontext; krb5_principal me = NULL; char *service_name = NULL; krb5_ccache ccache = NULL; krb5_creds my_creds; char *msg = NULL; krb5_deltat start_time = 0; krb5_deltat lifetime = 10 * 60 * 60; krb5_get_init_creds_opt opts; int non_fatal = 0; pass = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry))); gtk_entry_set_text(GTK_ENTRY(entry), ""); krb5_get_init_creds_opt_init(&opts); if (!pass || !strlen(pass)) { non_fatal = 1; msg = g_strdup("Incorrect password: please try again."); } else if ((code = krb5_init_context(&kcontext))) msg = g_strdup_printf("%s when initializing kerberos library", error_message(code)); else if ((code = krb5_cc_default(kcontext, &ccache))) msg = g_strdup_printf("%s while getting default cache.", error_message(code)); else if ((code = krb5_parse_name(kcontext, name, &me))) msg = g_strdup_printf("%s while parsing name %s.", error_message(code), name); else if ((code = krb5_get_init_creds_password(kcontext, &my_creds, me, pass, krb5_prompter_posix, NULL, start_time, service_name, &opts))) { if (code == KRB5KRB_AP_ERR_BAD_INTEGRITY) { non_fatal = 1; msg = g_strdup("Incorrect password: please try again."); } else { msg = g_strdup_printf("%s while getting initial" " credentials", error_message(code)); } } else { if ((code = krb5_cc_initialize(kcontext, ccache, me))) { msg = g_strdup_printf("%s while initializing cache", error_message(code)); } else if ((code = krb5_cc_store_cred(kcontext, ccache, &my_creds))) { msg = g_strdup_printf("%s while storing credentials", error_message(code)); } else { if (me) krb5_free_principal(kcontext, me); if (ccache) krb5_cc_close(kcontext, ccache); krb5_free_context(kcontext); } } g_free(pass); if (msg) { /* encountered an error. don't quit */ if (non_fatal) do_error_dialog(msg); else do_fatal_dialog(msg); g_free(msg); } else /* no errors, we're done */ { system("fsid -a > /dev/null"); system("zctl load /dev/null > /dev/null"); exit(0); } }
static boolean lives_yuv_stream_start_read(lives_clip_t *sfile) { double ofps=sfile->fps; lives_yuv4m_t *yuv4mpeg=(lives_yuv4m_t *)sfile->ext_src; pthread_t y4thread; char *filename=yuv4mpeg->filename,*tmp; int alarm_handle=0; int ohsize=sfile->hsize; int ovsize=sfile->vsize; y4data thread_data; register int i; if (filename==NULL) return FALSE; if (yuv4mpeg->fd==-1) { // create a thread to open the fifo thread_data.filename=filename; pthread_create(&y4thread,NULL,y4open_thread,(void *)&thread_data); alarm_handle=lives_alarm_set(YUV4_O_TIME); d_print(""); d_print(_("Waiting for yuv4mpeg frames...")); while (!lives_alarm_get(alarm_handle)&&!pthread_kill(y4thread,0)) { // wait for thread to complete or timeout lives_usleep(prefs->sleep_time); lives_widget_context_update(); } if (lives_alarm_get(alarm_handle)) { // timeout - kill thread and wait for it to terminate pthread_cancel(y4thread); pthread_join(y4thread,NULL); lives_alarm_clear(alarm_handle); d_print_failed(); d_print(_("Unable to open the incoming video stream\n")); yuv4mpeg->fd=thread_data.fd; if (yuv4mpeg->fd>=0) { close(yuv4mpeg->fd); yuv4mpeg->fd=-1; } return FALSE; } pthread_join(y4thread,NULL); lives_alarm_clear(alarm_handle); yuv4mpeg->fd=thread_data.fd; if (yuv4mpeg->fd<0) { return FALSE; } } // create a thread to open the stream header thread_data.yuv4mpeg=yuv4mpeg; pthread_create(&y4thread,NULL,y4header_thread,&thread_data); alarm_handle=lives_alarm_set(YUV4_H_TIME); while (!lives_alarm_get(alarm_handle)&&!pthread_kill(y4thread,0)) { // wait for thread to complete or timeout lives_usleep(prefs->sleep_time); lives_widget_context_update(); } if (lives_alarm_get(alarm_handle)) { // timeout - kill thread and wait for it to terminate pthread_cancel(y4thread); pthread_join(y4thread,NULL); lives_alarm_clear(alarm_handle); d_print(_("Unable to read the stream header\n")); return FALSE; } pthread_join(y4thread,NULL); lives_alarm_clear(alarm_handle); i=thread_data.i; if (i != Y4M_OK) { char *tmp; d_print((tmp=lives_strdup_printf("yuv4mpeg: %s\n", y4m_strerr(i)))); lives_free(tmp); return FALSE; } d_print(_("got header\n")); sfile->hsize = yuv4mpeg->hsize = y4m_si_get_width(&(yuv4mpeg->streaminfo)); sfile->vsize = yuv4mpeg->vsize = y4m_si_get_height(&(yuv4mpeg->streaminfo)); sfile->fps=cfile->pb_fps=lives_strtod(lives_strdup_printf("%.8f",Y4M_RATIO_DBL (y4m_si_get_framerate(&(yuv4mpeg->streaminfo)))),NULL); if (!(sfile->hsize*sfile->vsize)) { do_error_dialog(lives_strdup_printf(_("Video dimensions: %d x %d are invalid. Stream cannot be opened"), sfile->hsize,sfile->vsize)); return FALSE; } if (sfile->hsize!=ohsize||sfile->vsize!=ovsize||sfile->fps!=ofps) { set_main_title(sfile->file_name,0); } d_print((tmp=lives_strdup_printf(_("Reset clip values for %s: size=%dx%d fps=%.3f\n"),yuv4mpeg->name, cfile->hsize,yuv4mpeg->vsize,cfile->bpp,cfile->fps))); lives_free(tmp); yuv4mpeg->ready=TRUE; return TRUE; }