static int write_audio_frame (struct ALL_DATA *all_data) { struct paRecordData *pdata = all_data->pdata; struct GLOBAL *global = all_data->global; struct VideoFormatData *videoF = all_data->videoF; //struct GWIDGET *gwidget = all_data->gwidget; int ret =0; switch (global->VidFormat) { case AVI_FORMAT: ret = compress_audio_frame(all_data); break; case WEBM_FORMAT: case MKV_FORMAT: __LOCK_MUTEX( __AMUTEX ); //why do we need this ??? /*set pts*/ videoF->apts = pdata->audio_buff[pdata->br_ind][pdata->r_ind].time_stamp; /*write audio chunk*/ ret = compress_audio_frame(all_data); __UNLOCK_MUTEX( __AMUTEX ); break; default: break; } return (ret); }
static int write_audio_frame (struct ALL_DATA *all_data) { struct paRecordData *pdata = all_data->pdata; struct GLOBAL *global = all_data->global; struct VideoFormatData *videoF = all_data->videoF; struct GWIDGET *gwidget = all_data->gwidget; int ret =0; __THREAD_TYPE press_butt_thread; switch (global->VidFormat) { case AVI_FORMAT: if(!(global->VidButtPress)) //if this is set AVI reached it's limit size ret = compress_audio_frame(all_data); if (ret) { if (AVI_getErrno () == AVI_ERR_SIZELIM) { if (!(global->VidButtPress)) { global->VidButtPress = TRUE; /*avi file limit reached - must end capture close file and start new one*/ if( __THREAD_CREATE(&press_butt_thread, split_avi, all_data)) //should be created detachable { /*thread failed to start - stop video capture */ /*can't restart since we need IO thread to stop */ g_printerr("split avi: thread creation failed\n"); printf("stoping video capture\n"); if(!(global->no_display)) { gdk_threads_enter(); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gwidget->CapVidButt), FALSE); gdk_flush(); gdk_threads_leave(); } else capture_vid(NULL, all_data); } //split_avi(all_data);/*blocking call*/ g_print("AVI file size limit reached - restarted capture on new file\n"); } } else { g_printerr ("write error on avi out \n"); } } break; case MKV_FORMAT: __LOCK_MUTEX( __AMUTEX ); //why do we need this ??? /*set pts*/ videoF->apts = pdata->audio_buff[pdata->br_ind][pdata->r_ind].time_stamp; /*write audio chunk*/ ret = compress_audio_frame(all_data); __UNLOCK_MUTEX( __AMUTEX ); break; default: break; } return (0); }