int main(int argc, char ** argv) { bgav_t * b; bgav_options_t * opt; if(argc < 2) { fprintf(stderr, "Usage: %s <file>\n", argv[0]); return -1; } b = bgav_create(); opt = bgav_get_options(b); bgav_options_set_sample_accurate(opt, 1); bgav_options_set_index_callback(opt, index_callback, NULL); if(!bgav_open(b, argv[1])) return -1; fprintf(stderr, "\n"); if(b->demuxer->si) bgav_superindex_dump(b->demuxer->si); bgav_file_index_dump(b); bgav_close(b); return 0; }
// NOT PUBLIC // Closes the bgav_t struct, destroying it and setting to NULL // NO NEED TO DO AV LOCK, only called in the opener thread void ReadMedia::closeFile() { if (m_file != NULL) bgav_close( m_file ); m_file = NULL; m_aeof = true; m_veof = true; m_pcm_seek = SEEK_NOTHING; m_frame_seek = SEEK_NOTHING; sprintf(m_filename, "seinettbitte!"); }
// NOT PUBLIC // Clears the bgav_t struct, destroying and then creating it // NO NEED TO DO AV LOCK, only called in the opener thread void ReadMedia::clearFile() { if (m_file != NULL) bgav_close( m_file ); m_file = bgav_create(); bgav_options_copy( bgav_get_options( m_file ) , m_opt); m_aeof = true; m_veof = true; m_pcm_seek = SEEK_NOTHING; m_frame_seek = SEEK_NOTHING; }
void bg_avdec_destroy(void * priv) { avdec_priv * avdec = priv; bg_avdec_close(priv); if(avdec->dec) { bgav_close(avdec->dec); } if(avdec->opt) { bgav_options_destroy(avdec->opt); } free(avdec); }
void bg_avdec_close(void * priv) { avdec_priv * avdec = priv; int i; if(avdec->dec) { bgav_close(avdec->dec); avdec->dec = NULL; } if(avdec->track_info) { for(i = 0; i < avdec->num_tracks; i++) bg_track_info_free(&(avdec->track_info[i])); free(avdec->track_info); avdec->track_info = NULL; } }
ReadMedia::~ReadMedia() { printf("killing the media..\n"); setCommand( CMD_QUIT ); signalDispatcher(); // signal dispatcher joins the opener and AV threads pthread_join( m_thread_dispatch, NULL); //printf("joined dispatcher\n"); if (m_audio_frame != NULL) { gavl_audio_frame_destroy(m_audio_frame); } if (m_video_frame != NULL) { gavl_video_frame_destroy(m_video_frame); } if (m_file != NULL) { bgav_close(m_file); } //printf("now, on to deleting fifo...\n"); if( m_fifoaudio != NULL) delete m_fifoaudio; if( m_fifovideo != NULL) delete m_fifovideo; // these are created only once bgav_options_destroy(m_opt); pthread_cond_destroy(&m_cond_dispatch); pthread_mutex_destroy(&m_condmut_dispatch); pthread_cond_destroy(&m_cond_a); pthread_cond_destroy(&m_cond_v); pthread_mutex_destroy(&m_condmut_a); pthread_mutex_destroy(&m_condmut_v); pthread_mutex_destroy(&m_av_mut); pthread_mutex_destroy(&m_state_mut); printf("killed the media..\n"); }
static void sfsamples_free(t_sfsamples *x) { bgav_close(x->decoder); }