AXLiveServerMediaSession.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /**********************************************************************************
  2. *
  3. * Copyright (c) 2019-2020 Beijing AXera Technology Co., Ltd. All Rights Reserved.
  4. *
  5. * This source file is the property of Beijing AXera Technology Co., Ltd. and
  6. * may not be copied or distributed in any isomorphic form without the prior
  7. * written consent of Beijing AXera Technology Co., Ltd.
  8. *
  9. **********************************************************************************/
  10. #ifndef __AXLIVESEVERMEDIASESSION_H__
  11. #define __AXLIVESEVERMEDIASESSION_H__
  12. #include "liveMedia.hh"
  13. #include "OnDemandServerMediaSubsession.hh"
  14. #include "AXFramedSource.h"
  15. #include "ax_base_type.h"
  16. #include <queue>
  17. #include <pthread.h>
  18. class AXLiveServerMediaSession: public OnDemandServerMediaSubsession {
  19. public:
  20. static AXLiveServerMediaSession* createNew(UsageEnvironment& env, bool reuseFirstSource, bool isH264=true);
  21. void checkForAuxSDPLine1();
  22. void afterPlayingDummy1();
  23. void SendNalu(AX_U8 nChn, const AX_U8* pBuf, AX_U32 nLen, AX_U64 nPts=0, AX_BOOL bIFrame=AX_FALSE);
  24. protected:
  25. AXLiveServerMediaSession(UsageEnvironment& env, bool reuseFirstSource, bool isH264);
  26. virtual ~AXLiveServerMediaSession(void);
  27. void setDoneFlag() { fDoneFlag = ~0; }
  28. protected:
  29. virtual char const* getAuxSDPLine(RTPSink* rtpSink, FramedSource* inputSource);
  30. virtual FramedSource* createNewStreamSource(unsigned clientSessionId, unsigned& estBitrate);
  31. virtual RTPSink* createNewRTPSink(Groupsock* rtpGroupsock, unsigned char rtpPayloadTypeIfDynamic, FramedSource* inputSource);
  32. virtual void closeStreamSource(FramedSource* inputSource);
  33. virtual char const* sdpLines();
  34. private:
  35. bool m_bH264;
  36. char* fAuxSDPLine;
  37. char fDoneFlag;
  38. RTPSink* fDummySink;
  39. AXFramedSource * m_pSource;
  40. pthread_spinlock_t m_tLock;
  41. };
  42. #endif /*__AXLIVESEVERMEDIASESSION_H__*/