Changeset 118


Ignore:
Timestamp:
09/02/10 21:32:44 (17 months ago)
Author:
shiretu
Message:

-- android related stuff

Location:
trunk
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/builders/androidapplestreaming/jni/Android.mk

    r113 r118  
    3333 
    3434#RTSP related defines 
    35 CreateRTCPPacket=CreateRTCPPacket_mystyle 
     35#CreateRTCPPacket=CreateRTCPPacket_mystyle 
     36CreateRTCPPacket=CreateRTCPPacket_mystyle_only_once 
    3637#CreateRTCPPacket=CreateRTCPPacket_live555style 
    3738#CreateRTCPPacket=CreateRTCPPacket_none 
  • trunk/constants/constants.lua

    r81 r118  
    167167RTSP_HEADERS_X_POWERED_BY="X-Powered-By", 
    168168RTSP_HEADERS_X_POWERED_BY_US="C++ RTMP Server (http://www.rtmpd.com)", 
     169RTSP_HEADERS_RANGE="Range", 
     170RTSP_HEADERS_RANGE_NOW="now", 
     171RTSP_HEADERS_RTP_INFO="RTP-Info", 
    169172RTSP_FIRST_LINE="firstLine", 
    170173RTSP_METHOD="method", 
  • trunk/sources/androidapplestreaming/src/main.cpp

    r116 r118  
    100100 
    101101        uint32_t contextId = (uint32_t) ASC_RES_PARAM(result, "contextId"); 
    102         result = CommandSetBitrates(contextId, "[850000]"); 
     102        result = CommandSetBitrates(contextId, "[350000]"); 
    103103        FINEST("result:\n%s", STR(result.ToString())); 
    104104 
  • trunk/sources/common/include/defines.h

    r81 r118  
    675675#define RTSP_HEADERS_PUBLIC "Public" 
    676676#define RTSP_HEADERS_PUBLIC_LEN 6 
     677#define RTSP_HEADERS_RANGE "Range" 
     678#define RTSP_HEADERS_RANGE_LEN 5 
     679#define RTSP_HEADERS_RANGE_NOW "now" 
     680#define RTSP_HEADERS_RANGE_NOW_LEN 3 
     681#define RTSP_HEADERS_RTP_INFO "RTP-Info" 
     682#define RTSP_HEADERS_RTP_INFO_LEN 8 
    677683#define RTSP_HEADERS_SERVER "Server" 
    678684#define RTSP_HEADERS_SERVER_LEN 6 
  • trunk/sources/thelib/include/protocols/rtp/connectivity/outboundconnectivity.h

    r113 r118  
    3636        uint32_t _videoBytesCount; 
    3737        uint32_t _videoFirstRtp; 
    38         double _videoNextRTCPTs; 
     38        uint32_t _videoRtpTs; 
    3939        map<uint32_t, sockaddr_in> _udpVideoDataClients; 
    4040        map<uint32_t, sockaddr_in> _udpVideoRTCPClients; 
     41        bool _videoRtcpSent; 
    4142 
    4243        int32_t _audioDataFd; 
     
    4748        uint32_t _audioBytesCount; 
    4849        uint32_t _audioFirstRtp; 
    49         double _audioNextRTCPTs; 
     50        uint32_t _audioRtpTs; 
    5051        map<uint32_t, sockaddr_in> _udpAudioDataClients; 
    5152        map<uint32_t, sockaddr_in> _udpAudioRTCPClients; 
     53        bool _audioRtcpSent; 
    5254 
    5355        map<uint32_t, uint32_t> _tcpClients; 
     
    5557        msghdr _message; 
    5658        double _startupTime; 
    57         double _nextRTCPIncrement; 
    5859public: 
    5960        OutboundConnectivity(); 
     
    6869        string GetAudioServerPorts(); 
    6970        uint32_t GetSSRC(); 
     71        uint16_t GetLastVideoSequence(); 
     72        uint32_t GetLastVideoRTPTimestamp(); 
     73        uint16_t GetLastAudioSequence(); 
     74        uint32_t GetLastAudioRTPTimestamp(); 
    7075 
    7176        void RegisterUDPVideoClient(uint32_t protocolId, sockaddr_in &data, 
     
    9398                        uint32_t ssrc, uint32_t rate, uint32_t packetsCount, 
    9499                        uint32_t bytesCount, bool isAudio); 
     100        bool CreateRTCPPacket_mystyle_only_once(uint8_t *pDest, uint8_t *pSrc, 
     101                        uint32_t ssrc, uint32_t rate, uint32_t packetsCount, 
     102                        uint32_t bytesCount, bool isAudio); 
    95103        bool CreateRTCPPacket_live555style(uint8_t *pDest, uint8_t *pSrc, 
    96104                        uint32_t ssrc, uint32_t rate, uint32_t packetsCount, 
  • trunk/sources/thelib/include/protocols/rtp/streaming/baseoutnetrtpudpstream.h

    r56 r118  
    3232        uint32_t _ssrc; 
    3333        OutboundConnectivity *_pConnectivity; 
     34        uint16_t _videoCounter; 
     35        uint16_t _audioCounter; 
    3436public: 
    3537        BaseOutNetRTPUDPStream(BaseProtocol *pProtocol, 
     
    4143 
    4244        uint32_t SSRC(); 
     45        uint16_t VideoCounter(); 
     46        uint16_t AudioCounter(); 
    4347 
    4448        virtual bool SignalPlay(double &absoluteTimestamp, double &length); 
  • trunk/sources/thelib/include/protocols/rtp/streaming/outnetrtpudph264stream.h

    r106 r118  
    3333        string _copy; 
    3434#endif 
    35         uint16_t _videoCounter; 
    3635        msghdr _videoData; 
    3736        uint8_t *_pSPS; 
     
    4039        uint32_t _PPSLen; 
    4140 
    42         uint16_t _audioCounter; 
    4341        uint8_t _audioPacketsCount; 
    4442        IOBuffer _audioBuffer; 
  • trunk/sources/thelib/src/protocols/rtp/basertspappprotocolhandler.cpp

    r113 r118  
    279279                pFrom->GetCustomParameters()["audioDataPortNumber"] = dataPortNumber; 
    280280                pFrom->GetCustomParameters()["audioRtcpPortNumber"] = rtcpPortNumber; 
     281                pFrom->GetCustomParameters()["audioTrackUri"] = requestHeaders[RTSP_FIRST_LINE][RTSP_URL]; 
    281282        } else { 
    282283                pFrom->GetCustomParameters()["videoDataPortNumber"] = dataPortNumber; 
    283284                pFrom->GetCustomParameters()["videoRtcpPortNumber"] = rtcpPortNumber; 
     285                pFrom->GetCustomParameters()["videoTrackUri"] = requestHeaders[RTSP_FIRST_LINE][RTSP_URL]; 
    284286        } 
    285287 
     
    349351        //6. prepare the response 
    350352        pFrom->PushResponseFirstLine(RTSP_VERSION_1_0, 200, "OK"); 
     353        pFrom->PushResponseHeader(RTSP_HEADERS_RANGE, "npt=0.0-"); 
     354 
     355        string rtpInfoVideo = ""; 
     356        string rtpInfoAudio = ""; 
     357        if (pFrom->GetCustomParameters().HasKey("videoTrackId")) { 
     358                rtpInfoVideo = format("url=%s;seq=%u;rtptime=%u", 
     359                                STR(pFrom->GetCustomParameters()["videoTrackUri"]), 
     360                                pOutboundConnectivity->GetLastVideoSequence(), 
     361                                0); 
     362                //pOutboundConnectivity->GetLastVideoRTPTimestamp()); 
     363        } 
     364        if (pFrom->GetCustomParameters().HasKey("audioTrackId")) { 
     365                rtpInfoAudio = format("url=%s;seq=%u;rtptime=%u", 
     366                                STR(pFrom->GetCustomParameters()["audioTrackUri"]), 
     367                                pOutboundConnectivity->GetLastAudioSequence(), 
     368                                0); 
     369                //pOutboundConnectivity->GetLastAudioRTPTimestamp()); 
     370        } 
     371        string rtpInfo = rtpInfoVideo; 
     372        if (rtpInfo != "") { 
     373                if (rtpInfoAudio != "") { 
     374                        rtpInfo += ", " + rtpInfoAudio; 
     375                } 
     376        } else { 
     377                rtpInfo = rtpInfoAudio; 
     378        } 
     379        //pFrom->PushResponseHeader(RTSP_HEADERS_RTP_INFO, rtpInfo); 
    351380 
    352381        //7. Done 
  • trunk/sources/thelib/src/protocols/rtp/connectivity/outboundconnectivity.cpp

    r113 r118  
    8080OutboundConnectivity::OutboundConnectivity() 
    8181: BaseConnectivity() { 
    82         _nextRTCPIncrement = 1000.00; 
    83  
    8482        _videoDataFd = -1; 
    8583        _videoDataPort = 0; 
     
    8987        _videoBytesCount = 0; 
    9088        _videoFirstRtp = 0; 
    91         _videoNextRTCPTs = _nextRTCPIncrement; 
     89        _videoRtpTs = 0; 
     90        _videoRtcpSent = false; 
    9291 
    9392        _audioDataFd = -1; 
     
    9897        _audioBytesCount = 0; 
    9998        _audioFirstRtp = 0; 
    100         _audioNextRTCPTs = _nextRTCPIncrement; 
     99        _videoRtpTs = 0; 
     100        _audioRtcpSent = false; 
    101101 
    102102        _pOutStream = NULL; 
     
    151151                return _pOutStream->SSRC(); 
    152152        return 0; 
     153} 
     154 
     155uint16_t OutboundConnectivity::GetLastVideoSequence() { 
     156        return _pOutStream->VideoCounter(); 
     157} 
     158 
     159uint32_t OutboundConnectivity::GetLastVideoRTPTimestamp() { 
     160        return _videoRtpTs; 
     161} 
     162 
     163uint16_t OutboundConnectivity::GetLastAudioSequence() { 
     164        return _pOutStream->AudioCounter(); 
     165} 
     166 
     167uint32_t OutboundConnectivity::GetLastAudioRTPTimestamp() { 
     168        return _audioRtpTs; 
    153169} 
    154170 
     
    231247 
    232248bool OutboundConnectivity::FeedVideoData(msghdr &message) { 
     249        _videoRtpTs = ntohlp(((uint8_t *) message.msg_iov[0].iov_base) + 4); 
    233250        if (!FeedVideoDataUDP(message)) { 
    234251                FATAL("Unable to feed video UDP clients"); 
     
    244261 
    245262bool OutboundConnectivity::FeedAudioData(msghdr &message) { 
     263        _audioRtpTs = ntohlp(((uint8_t *) message.msg_iov[0].iov_base) + 4); 
    246264        if (!FeedAudioDataUDP(message)) { 
    247265                FATAL("Unable to feed audio UDP clients"); 
     
    390408                uint32_t ssrc, uint32_t rate, uint32_t packetsCount, uint32_t bytesCount, 
    391409                bool isAudio) { 
    392          
     410 
    393411        /* 
    394412         0                   1                   2                   3 
     
    481499} 
    482500 
     501bool OutboundConnectivity::CreateRTCPPacket_mystyle_only_once(uint8_t *pDest, uint8_t *pSrc, 
     502                uint32_t ssrc, uint32_t rate, uint32_t packetsCount, 
     503                uint32_t bytesCount, bool isAudio) { 
     504        bool &rtcpSent = isAudio ? _audioRtcpSent : _videoRtcpSent; 
     505        if (rtcpSent) 
     506                return false; 
     507 
     508        rtcpSent = CreateRTCPPacket_mystyle(pDest, pSrc, ssrc, rate, packetsCount, 
     509                        bytesCount, isAudio); 
     510        return rtcpSent; 
     511} 
     512 
    483513bool OutboundConnectivity::CreateRTCPPacket_live555style(uint8_t *pDest, uint8_t *pSrc, 
    484514                uint32_t ssrc, uint32_t rate, uint32_t packetsCount, uint32_t bytesCount, 
     
    536566        return true; 
    537567} 
     568 
    538569bool OutboundConnectivity::CreateRTCPPacket_none(uint8_t *pDest, uint8_t *pSrc, 
    539                         uint32_t ssrc, uint32_t rate, uint32_t packetsCount, 
    540                         uint32_t bytesCount, bool isAudio){ 
     570                uint32_t ssrc, uint32_t rate, uint32_t packetsCount, 
     571                uint32_t bytesCount, bool isAudio) { 
    541572        return false; 
    542573} 
  • trunk/sources/thelib/src/protocols/rtp/rtspprotocol.cpp

    r53 r118  
    313313        headers[RTSP_HEADERS][RTSP_HEADERS_SERVER] = RTSP_HEADERS_SERVER_US; 
    314314        headers[RTSP_HEADERS][RTSP_HEADERS_X_POWERED_BY] = RTSP_HEADERS_X_POWERED_BY_US; 
     315        headers[RTSP_HEADERS]["Buffersize"] = "1000000"; 
    315316 
    316317        //2. Add the content length if required 
     
    330331 
    331332 
    332         //      string aaa = string((char *) GETIBPOINTER(_outputBuffer), GETAVAILABLEBYTESCOUNT(_outputBuffer)); 
    333         //      FINEST("\n`%s`", STR(aaa)); 
     333        string aaa = string((char *) GETIBPOINTER(_outputBuffer), GETAVAILABLEBYTESCOUNT(_outputBuffer)); 
     334        FINEST("\n`%s`", STR(aaa)); 
    334335 
    335336        //5. Enqueue for outbound 
  • trunk/sources/thelib/src/protocols/rtp/streaming/baseoutnetrtpudpstream.cpp

    r56 r118  
    3232        srand((uint32_t) time(NULL)); 
    3333        _pConnectivity = NULL; 
     34        _videoCounter = rand(); 
     35        _audioCounter = rand(); 
    3436} 
    3537 
     
    4749uint32_t BaseOutNetRTPUDPStream::SSRC() { 
    4850        return _ssrc; 
     51} 
     52 
     53uint16_t BaseOutNetRTPUDPStream::VideoCounter() { 
     54        return _videoCounter; 
     55} 
     56 
     57uint16_t BaseOutNetRTPUDPStream::AudioCounter() { 
     58        return _audioCounter; 
    4959} 
    5060 
  • trunk/sources/thelib/src/protocols/rtp/streaming/outnetrtpudph264stream.cpp

    r113 r118  
    3333                StreamsManager *pStreamsManager, string name) 
    3434: BaseOutNetRTPUDPStream(pProtocol, pStreamsManager, name) { 
    35         _videoCounter = rand(); 
    3635        memset(&_videoData, 0, sizeof (_videoData)); 
    3736        _videoData.msg_iov = new iovec[2]; 
     
    4645        _PPSLen = 0; 
    4746 
    48         _audioCounter = rand(); 
    4947        memset(&_audioData, 0, sizeof (_audioData)); 
    5048        _audioData.msg_iov = new iovec[3]; 
Note: See TracChangeset for help on using the changeset viewer.