AVPlayer::AVPlayer(QObject *parent) : QObject(parent),loaded(false),capture_dir("capture"),_renderer(0),_audio(0) , audio_dec(0) , video_dec(0) , audio_thread(0) , video_thread(0) , event_filter(0),video_capture(0) { qDebug("%s", aboutQtAV_PlainText().toUtf8().constData()); /* * call stop() before the window(_renderer) closed to stop the waitcondition * If close the _renderer widget, the the _renderer may destroy before waking up. */ connect(qApp, SIGNAL(aboutToQuit()), SLOT(stop())); clock = new AVClock(AVClock::AudioClock); //clock->setClockType(AVClock::ExternalClock); demuxer.setClock(clock); connect(&demuxer, SIGNAL(started()), clock, SLOT(start())); demuxer_thread = new AVDemuxThread(this); demuxer_thread->setDemuxer(&demuxer); setPlayerEventFilter(new EventFilter(this)); setVideoCapture(new VideoCapture()); }
AVPlayer::AVPlayer(QObject *parent) : QObject(parent),loaded(false),capture_dir("capture"),_renderer(0),_audio(0) ,event_filter(0),video_capture(0) { qDebug("%s", aboutQtAV().toUtf8().constData()); /* * call stop() before the window(_renderer) closed to stop the waitcondition * If close the _renderer widget, the the _renderer may destroy before waking up. */ connect(qApp, SIGNAL(aboutToQuit()), SLOT(stop())); clock = new AVClock(AVClock::AudioClock); //clock->setClockType(AVClock::ExternalClock); demuxer.setClock(clock); connect(&demuxer, SIGNAL(started()), clock, SLOT(start())); #if HAVE_OPENAL _audio = new AOOpenAL(); #elif HAVE_PORTAUDIO _audio = new AOPortAudio(); #endif audio_dec = new AudioDecoder(); audio_thread = new AudioThread(this); audio_thread->setClock(clock); //audio_thread->setPacketQueue(&audio_queue); audio_thread->setDecoder(audio_dec); audio_thread->setOutput(_audio); video_dec = new VideoDecoder(); video_thread = new VideoThread(this); video_thread->setClock(clock); video_thread->setDecoder(video_dec); demuxer_thread = new AVDemuxThread(this); demuxer_thread->setDemuxer(&demuxer); demuxer_thread->setAudioThread(audio_thread); demuxer_thread->setVideoThread(video_thread); setPlayerEventFilter(new EventFilter(this)); setVideoCapture(new VideoCapture()); }