| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- // ***********************************************************/
- // start_play_thread.cpp
- //
- // Copy Right @ Steven Huang. All rights reserved.
- //
- // start play thread. Do the audio device initialization work
- // which is time-consuming to avoid GUI freezing.
- // ***********************************************************/
- #include "start_play_thread.h"
- #include "AVPlayer2/video_state.h"
- #include "playercontroller.h"
- StartPlayThread::StartPlayThread(PlayerController* playerController)
- : m_playerController(playerController)
- {}
- StartPlayThread::~StartPlayThread() {}
- void StartPlayThread::stop()
- {
- m_exit = true;
- m_cv.notify_all();
- }
- void StartPlayThread::run()
- {
- assert(m_playerController);
- if (m_exit) return;
- bool ret = false;
- float vol = 1.0;
- AVSampleFormat sample_fmt = AV_SAMPLE_FMT_S16; // play out format
- VideoStateData* pVideoStateData = m_playerController->videoStateData();
- if (pVideoStateData) {
- AVCodecContext* pAudio = pVideoStateData->get_contex(AVMEDIA_TYPE_AUDIO);
- VideoState* pState = pVideoStateData->get_state();
- if (pAudio) {
- auto* pThread = m_playerController->audioPlayThread();
- if (pThread) {
- ret = pThread->init_device(pAudio->sample_rate,
- pAudio->ch_layout.nb_channels,
- sample_fmt,
- vol); // pAudio->sample_fmt
- if (ret) {
- ret = pThread->init_resample_param(pAudio, sample_fmt, pState);
- }
- }
- }
- }
- // 可加回调或日志
- }
|