hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "H264LiveVideoSource.h"
#include "RtspServer.h"
 
H264LiveVideoSource* H264LiveVideoSource::createNew(UsageEnvironment& env, void* listener)
{
    return new H264LiveVideoSource(env, listener);
}
 
H264LiveVideoSource::H264LiveVideoSource(UsageEnvironment& env, void* listener) : FramedSource(env)
{
    env << "H264LiveVideoSource::H264LiveVideoSource"
        << "\n";
    fHasTriggerKeyFrame = False;
    fSendHeaderCount = 1;
    fTruncatedBytesNum = 0;
 
    // setup callback listener
    fListener = listener;
}
 
H264LiveVideoSource::~H264LiveVideoSource()
{
}
 
unsigned int H264LiveVideoSource::maxFrameSize() const
{
    return 1024 * 1024;
}
 
void H264LiveVideoSource::doGetNextFrame()
{
    QMediaBuffer outBuf;
    RtspServer* server = (RtspServer*)fListener;
 
    server->onDoGetNextFrame(&outBuf);
    if (outBuf.getData()) {
 
        fFrameSize = outBuf.getSize();
        if (fFrameSize > fMaxSize) {
            fNumTruncatedBytes = fFrameSize - fMaxSize;
            fNumTruncatedBytes = fFrameSize - fMaxSize;
        } else {
            fNumTruncatedBytes = 0;
        }
 
        memmove(fTo, outBuf.getData(), fFrameSize);
 
        FramedSource::afterGetting(this);
    }
}