pans
2017-08-30 71c92f101b6c8b4a678a8c3cfe2d8edbf488efa4
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
51
52
//
//  H264FramedSource.h
//  FFmpegRTSPServer
//
//  Created by Mina Saad on 9/22/15.
//  Created by HOU Xiao on 8/7/17.
//  Copyright (c) 2015 Mina Saad. All rights reserved.
//
 
#ifndef MESAI_H264FRAMEDSOURCE_HH
#define MESAI_H264FRAMEDSOURCE_HH
 
#include <functional>
#include <liveMedia/FramedSource.hh>
#include <UsageEnvironment/UsageEnvironment.hh>
#include <groupsock/Groupsock.hh>
 
namespace MESAI
{
 
class H264FramedSource : public FramedSource
{
public:
    struct FrameCallbacks
    {
        void* args;
 
        typedef bool(*deliver_frame_callback_t)(void* args, uint8_t*& buffer, size_t& buffSize, timeval& pts);
        typedef void(*release_frame_callback_t)(void* args) ;
 
        deliver_frame_callback_t deliverFrameCallback;
        release_frame_callback_t releaseFrameCallback;
    };
 
public:
    static H264FramedSource* createNew(UsageEnvironment& env, const FrameCallbacks& _cbs);
    H264FramedSource(UsageEnvironment& env, const FrameCallbacks& _cbs);
    ~H264FramedSource();
 
    virtual std::string getAuxLine() const;
 
public:
    std::string spsBase64;
    std::string ppsBase64;
 
private:
    virtual void doGetNextFrame();
    FrameCallbacks cbs;
};
 
}
#endif