1/* ---------------------------------------------------------------------------
2** This software is in the public domain, furnished "as is", without technical
3** support, and with no warranty, express or implied, as to its usefulness for
4** any purpose.
5**
6** TSServerMediaSubsession.h
7**
8** -------------------------------------------------------------------------*/
9
10#pragma once
11
12#include <map>
13#include "UnicastServerMediaSubsession.h"
14#include "MemoryBufferSink.h"
15
16// -----------------------------------------
17// ServerMediaSubsession for HLS
18// -----------------------------------------
19class TSServerMediaSubsession : public UnicastServerMediaSubsession
20{
21 public:
22 static TSServerMediaSubsession* createNew(UsageEnvironment& env, StreamReplicator* videoreplicator, const std::string& videoformat, StreamReplicator* audioreplicator, const std::string& audioformat, unsigned int sliceDuration)
23 {
24 return new TSServerMediaSubsession(env, videoreplicator, videoformat, audioreplicator, audioformat, sliceDuration);
25 }
26
27 protected:
28 TSServerMediaSubsession(UsageEnvironment& env, StreamReplicator* videoreplicator, const std::string& videoformat, StreamReplicator* audioreplicator, const std::string& audioformat, unsigned int sliceDuration);
29 virtual ~TSServerMediaSubsession();
30
31 virtual float getCurrentNPT(void* streamToken);
32 virtual float duration() const ;
33 virtual void seekStream(unsigned clientSessionId, void* streamToken, double& seekNPT, double streamDuration, u_int64_t& numBytes);
34 virtual FramedSource* getStreamSource(void* streamToken);
35
36 protected:
37 unsigned int m_slice;
38 MemoryBufferSink* m_hlsSink;
39};
40
41
42