首页 > 编程语言 > 详细

live555 client多线程化

时间:2016-03-26 23:27:06      阅读:355      评论:0      收藏:0      [点我收藏+]

2014-03-11 22:18:54 技术分享

为了让live555 client在线程中使用,就必须让env/task之类的独立化。做法是把相关的内容放在一个class内,必要的地方lock就好了。

一、大概

如下:

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
//global,live555库的一些基本类
struct MYRTSPClient
{
    TaskScheduler* pTaskScheduler;
    UsageEnvironment* pEnv;
    RTSPClient* pClient;
    MediaSession *pMediaSession;
    MediaSubsessionIterator *iter;
    Boolean bMadeProgress;
    unsigned fileSinkBufferSize;
    unsigned socketInputBufferSize;
    Boolean  bStreamUsingTCP;
    Authenticator* pAuthenticator;
    char     m_cEventLoop;
    ploginfo pLogInfo;
 
    MYRTSPClient()
    {
        pClient = NULL;
        pMediaSession = NULL;
        iter = NULL;
        bMadeProgress = False;
        fileSinkBufferSize = MAX_VGA_LEN;
        socketInputBufferSize = 524288;
        bStreamUsingTCP = False;
        pAuthenticator = NULL;
        m_cEventLoop = 0;
        pLogInfo = new loginfo();
    }
    MYRTSPClient(RTSPClient *client)
    {
        pClient = client;
        pMediaSession = NULL;
        iter = NULL;
        bMadeProgress = False;
        fileSinkBufferSize = MAX_VGA_LEN;
        socketInputBufferSize = 524288;
        bStreamUsingTCP = False;
        pAuthenticator = NULL;
        m_cEventLoop = 0;
        pLogInfo = new loginfo();
    }
};

二、细节

live555中有太多的static func,初衷是为了方便客户不必关心类就可以定制自己的需求。但在多线程环境中,就要考虑了,static func要么可重入(幸运的是live555的static func都是可重入的),要么在具有"类原子操作"的地方加锁。

从重要的static func说起。

1、static void afterGetting(FramedSource* source)
1
2
3
4
5
6
class FramedSource: public MediaSource {
 
static void afterGetting(FramedSource* source);
    // doGetNextFrame() should arrange for this to be called after the
    // frame has been read (*iff* it is read successfully)
}










live555 client多线程化

原文:http://www.cnblogs.com/freezlz/p/5324219.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!