start_play_thread.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include "start_play_thread.h"
  2. #include "AVPlayer2/audio_play_thread.h"
  3. #include "AVPlayer2/video_state.h"
  4. #include <QLoggingCategory>
  5. Q_LOGGING_CATEGORY(playerControllerStartPlayThread, "player.controller.StartPlayThread")
  6. StartPlayThread::StartPlayThread(AudioPlayThread* audioPlayThread, VideoStateData* videoStateData)
  7. : m_audioPlayThread(audioPlayThread), m_videoStateData(videoStateData)
  8. {}
  9. StartPlayThread::~StartPlayThread() {}
  10. void StartPlayThread::run()
  11. {
  12. assert(m_videoStateData);
  13. assert(m_audioPlayThread);
  14. if (isExit())
  15. return;
  16. bool ret = false;
  17. float vol = 1.0;
  18. AVSampleFormat sample_fmt = AV_SAMPLE_FMT_S16; // play out format
  19. VideoStateData* pVideoStateData = m_videoStateData;
  20. if (pVideoStateData) {
  21. AVCodecContext* pAudio = pVideoStateData->get_contex(AVMEDIA_TYPE_AUDIO);
  22. VideoState* pState = pVideoStateData->get_state();
  23. if (pAudio) {
  24. auto* pThread = m_audioPlayThread;
  25. if (pThread) {
  26. ret = pThread->init_device(pAudio->sample_rate,
  27. pAudio->ch_layout.nb_channels,
  28. sample_fmt,
  29. vol); // pAudio->sample_fmt
  30. if (ret) {
  31. ret = pThread->init_resample_param(pAudio, sample_fmt, pState);
  32. }
  33. }
  34. }
  35. }
  36. // 可加回调或日志
  37. qCDebug(playerControllerStartPlayThread) << "[StartPlayThread] run finished, ret=" << ret;
  38. }