From erik at minisip.org Tue Jan 26 22:18:57 2010 From: erik at minisip.org (erik at minisip.org) Date: Tue, 26 Jan 2010 22:18:57 +0100 (CET) Subject: r3748 - in trunk/libminisip/source/subsystem_media/video: . display Message-ID: <20100126211857.502941ACC7@mail.minisip.org> Author: erik Date: 2010-01-26 22:18:56 +0100 (Tue, 26 Jan 2010) New Revision: 3748 Modified: trunk/libminisip/source/subsystem_media/video/VideoMedia.cxx trunk/libminisip/source/subsystem_media/video/display/XvDisplay.cxx Log: * compile fix (ubuntu 9.10) Modified: trunk/libminisip/source/subsystem_media/video/VideoMedia.cxx =================================================================== --- trunk/libminisip/source/subsystem_media/video/VideoMedia.cxx 2009-12-18 14:02:37 UTC (rev 3747) +++ trunk/libminisip/source/subsystem_media/video/VideoMedia.cxx 2010-01-26 21:18:56 UTC (rev 3748) @@ -38,6 +38,7 @@ #include #include #include +#include #define SOURCE_QUEUE_SIZE 7 Modified: trunk/libminisip/source/subsystem_media/video/display/XvDisplay.cxx =================================================================== --- trunk/libminisip/source/subsystem_media/video/display/XvDisplay.cxx 2009-12-18 14:02:37 UTC (rev 3747) +++ trunk/libminisip/source/subsystem_media/video/display/XvDisplay.cxx 2010-01-26 21:18:56 UTC (rev 3748) @@ -27,6 +27,7 @@ #include #include #include +#include using namespace std; From erik at minisip.org Tue Jan 26 22:19:37 2010 From: erik at minisip.org (erik at minisip.org) Date: Tue, 26 Jan 2010 22:19:37 +0100 (CET) Subject: r3749 - in trunk/libminisip/source/subsystem_media/video: display mixer Message-ID: <20100126211937.9C09B1ACDB@mail.minisip.org> Author: erik Date: 2010-01-26 22:19:37 +0100 (Tue, 26 Jan 2010) New Revision: 3749 Modified: trunk/libminisip/source/subsystem_media/video/display/X11Display.cxx trunk/libminisip/source/subsystem_media/video/mixer/ImageMixer.cxx Log: * compile fix (ubuntu 9.10) Modified: trunk/libminisip/source/subsystem_media/video/display/X11Display.cxx =================================================================== --- trunk/libminisip/source/subsystem_media/video/display/X11Display.cxx 2010-01-26 21:18:56 UTC (rev 3748) +++ trunk/libminisip/source/subsystem_media/video/display/X11Display.cxx 2010-01-26 21:19:37 UTC (rev 3749) @@ -29,6 +29,7 @@ #include #include #include +#include using namespace std; Modified: trunk/libminisip/source/subsystem_media/video/mixer/ImageMixer.cxx =================================================================== --- trunk/libminisip/source/subsystem_media/video/mixer/ImageMixer.cxx 2010-01-26 21:18:56 UTC (rev 3748) +++ trunk/libminisip/source/subsystem_media/video/mixer/ImageMixer.cxx 2010-01-26 21:19:37 UTC (rev 3749) @@ -30,6 +30,8 @@ #include #include +#include + #define MAX_SOURCE 256 using namespace std; From erik at minisip.org Tue Jan 26 22:21:56 2010 From: erik at minisip.org (erik at minisip.org) Date: Tue, 26 Jan 2010 22:21:56 +0100 (CET) Subject: r3750 - in trunk: libmikey/keyagreement libmnetutil/source libmsip/source/messages Message-ID: <20100126212156.31CF51AD14@mail.minisip.org> Author: erik Date: 2010-01-26 22:21:55 +0100 (Tue, 26 Jan 2010) New Revision: 3750 Modified: trunk/libmikey/keyagreement/KeyAgreement.cxx trunk/libmnetutil/source/DnsNaptr.cxx trunk/libmsip/source/messages/SipRequest.cxx Log: * compile fix (ubuntu 9.10) Modified: trunk/libmikey/keyagreement/KeyAgreement.cxx =================================================================== --- trunk/libmikey/keyagreement/KeyAgreement.cxx 2010-01-26 21:19:37 UTC (rev 3749) +++ trunk/libmikey/keyagreement/KeyAgreement.cxx 2010-01-26 21:21:55 UTC (rev 3750) @@ -29,6 +29,7 @@ #include #include #include +#include #include #include Modified: trunk/libmnetutil/source/DnsNaptr.cxx =================================================================== --- trunk/libmnetutil/source/DnsNaptr.cxx 2010-01-26 21:19:37 UTC (rev 3749) +++ trunk/libmnetutil/source/DnsNaptr.cxx 2010-01-26 21:21:55 UTC (rev 3750) @@ -29,6 +29,7 @@ #endif #include #include +#include using namespace std; Modified: trunk/libmsip/source/messages/SipRequest.cxx =================================================================== --- trunk/libmsip/source/messages/SipRequest.cxx 2010-01-26 21:19:37 UTC (rev 3749) +++ trunk/libmsip/source/messages/SipRequest.cxx 2010-01-26 21:21:55 UTC (rev 3750) @@ -53,6 +53,8 @@ #include #include +#include + using namespace std; MRef SipRequest::createSipMessageAck( MRef origReq, From erik at minisip.org Tue Jan 26 22:40:07 2010 From: erik at minisip.org (erik at minisip.org) Date: Tue, 26 Jan 2010 22:40:07 +0100 (CET) Subject: r3751 - in trunk/libminisip: include include/libminisip/media include/libminisip/media/soundcard include/libminisip/media/video include/libminisip/media/video/codec source/subsystem_gui source/subsystem_media source/subsystem_media/codecs source/subsystem_media/soundcard Message-ID: <20100126214007.4399E1AC21@mail.minisip.org> Author: erik Date: 2010-01-26 22:40:06 +0100 (Tue, 26 Jan 2010) New Revision: 3751 Modified: trunk/libminisip/include/config.h trunk/libminisip/include/libminisip/media/AudioMedia.h trunk/libminisip/include/libminisip/media/MediaStream.h trunk/libminisip/include/libminisip/media/soundcard/SoundSource.h trunk/libminisip/include/libminisip/media/video/VideoMedia.h trunk/libminisip/include/libminisip/media/video/codec/AVCoder.h trunk/libminisip/include/libminisip/media/video/codec/AVDecoder.h trunk/libminisip/source/subsystem_gui/ConsoleDebugger.cxx trunk/libminisip/source/subsystem_media/AudioMedia.cxx trunk/libminisip/source/subsystem_media/MediaStream.cxx trunk/libminisip/source/subsystem_media/RtpReceiver.cxx trunk/libminisip/source/subsystem_media/codecs/SPEEXCODEC.cxx trunk/libminisip/source/subsystem_media/soundcard/SoundSource.cxx Log: * Send RTP packets as const & to avoid mutex operations in MRefs * Hack to allow changing H.264 compression via ConsoleDebugger while in call * If the media subsystem can not consume packets fast enough, then the socket buffer will fill up. Now we read all packets from a socket, and if there is a long queue we try to do intelligent dropping by looking at the marker bits in the RTP header. Modified: trunk/libminisip/include/config.h =================================================================== --- trunk/libminisip/include/config.h 2010-01-26 21:21:55 UTC (rev 3750) +++ trunk/libminisip/include/config.h 2010-01-26 21:40:06 UTC (rev 3751) @@ -143,4 +143,7 @@ #endif +#define GLOBAL_BANDWIDTH_HACK 1 + + #endif Modified: trunk/libminisip/include/libminisip/media/AudioMedia.h =================================================================== --- trunk/libminisip/include/libminisip/media/AudioMedia.h 2010-01-26 21:21:55 UTC (rev 3750) +++ trunk/libminisip/include/libminisip/media/AudioMedia.h 2010-01-26 21:40:06 UTC (rev 3751) @@ -76,7 +76,7 @@ * decoding if relevant. * @param rtpPacket the RTP packet to play */ - virtual void playData( MRef rtpPacket ); + virtual void playData( const MRef & rtpPacket ); /** * Used by the media sessions to register a MediaStreamSender. @@ -181,7 +181,7 @@ public: AudioMediaSource( uint32_t ssrc, std::string callId, MRef media ); - void playData( MRef rtpPacket ); + void playData( const MRef & rtpPacket ); uint32_t getSsrc(); MRef getMedia() { return media; }; Modified: trunk/libminisip/include/libminisip/media/MediaStream.h =================================================================== --- trunk/libminisip/include/libminisip/media/MediaStream.h 2010-01-26 21:21:55 UTC (rev 3750) +++ trunk/libminisip/include/libminisip/media/MediaStream.h 2010-01-26 21:40:06 UTC (rev 3751) @@ -297,7 +297,7 @@ * playback. * @param packet the (S)RTP packet to handle */ - virtual void handleRtpPacket( MRef packet, std::string callId, MRef from ); + virtual void handleRtpPacket( const MRef & packet, std::string callId, MRef from ); /** * Returns a unique identifier for this Receiver. Used @@ -468,7 +468,7 @@ uint16_t getSeqNo() { return seqNo; }; #endif - void sendRtpPacket(MRef rtp); + void sendRtpPacket(const MRef & rtp); /** * Used by the Session to specify the IP address Modified: trunk/libminisip/include/libminisip/media/soundcard/SoundSource.h =================================================================== --- trunk/libminisip/include/libminisip/media/soundcard/SoundSource.h 2010-01-26 21:21:55 UTC (rev 3750) +++ trunk/libminisip/include/libminisip/media/soundcard/SoundSource.h 2010-01-26 21:40:06 UTC (rev 3751) @@ -288,10 +288,10 @@ */ CircularBuffer * cbuff; + short plcCache[2048]; + int oFreq; - uint16_t plc_lastdata[4096]; - /** Auxiliary buffer .. used both in pushSound() and getSound(). We need the mutex Modified: trunk/libminisip/include/libminisip/media/video/VideoMedia.h =================================================================== --- trunk/libminisip/include/libminisip/media/video/VideoMedia.h 2010-01-26 21:21:55 UTC (rev 3750) +++ trunk/libminisip/include/libminisip/media/video/VideoMedia.h 2010-01-26 21:40:06 UTC (rev 3751) @@ -61,7 +61,7 @@ virtual std::string getSdpMediaType(); - virtual void playData( MRef rtpPacket ); + virtual void playData( const MRef & rtpPacket ); virtual void sendVideoData( byte_t * data, uint32_t length, uint32_t ts, bool marker=false ); @@ -105,7 +105,7 @@ void addEmptyImage( MImage * image ); void addFilledImage( MImage * image ); - virtual void playData( MRef packet ); + virtual void playData( const MRef & packet ); MRef getDecoder(); MRef getEncoder(); @@ -120,7 +120,7 @@ * @param flush Packet loss was detected, and previous * data should be flushed to the decoder. */ - void addPacketToFrame( MRef packet, bool flush ); + void addPacketToFrame( const MRef & packet, bool flush ); MRef decoder; MRef display; @@ -137,7 +137,7 @@ uint16_t lastSeqNo; uint16_t lastPlayedSeqNo; std::list > rtpReorderBuf; - void enqueueRtp(MRef rtp); //ordered list of packets left to play out + void enqueueRtp(const MRef & rtp); //ordered list of packets left to play out void playSaved(); Modified: trunk/libminisip/include/libminisip/media/video/codec/AVCoder.h =================================================================== --- trunk/libminisip/include/libminisip/media/video/codec/AVCoder.h 2010-01-26 21:21:55 UTC (rev 3750) +++ trunk/libminisip/include/libminisip/media/video/codec/AVCoder.h 2010-01-26 21:40:06 UTC (rev 3751) @@ -90,6 +90,7 @@ MRef localDisplay; void *swsctx; + int N; }; Modified: trunk/libminisip/include/libminisip/media/video/codec/AVDecoder.h =================================================================== --- trunk/libminisip/include/libminisip/media/video/codec/AVDecoder.h 2010-01-26 21:21:55 UTC (rev 3750) +++ trunk/libminisip/include/libminisip/media/video/codec/AVDecoder.h 2010-01-26 21:40:06 UTC (rev 3751) @@ -73,6 +73,7 @@ bool needsConvert; void* swsctx; + int N; }; Modified: trunk/libminisip/source/subsystem_gui/ConsoleDebugger.cxx =================================================================== --- trunk/libminisip/source/subsystem_gui/ConsoleDebugger.cxx 2010-01-26 21:21:55 UTC (rev 3750) +++ trunk/libminisip/source/subsystem_gui/ConsoleDebugger.cxx 2010-01-26 21:40:06 UTC (rev 3751) @@ -99,7 +99,7 @@ } -int globalBitRate=1024; +int globalBitRate=6024; void ConsoleDebugger::run(){ #ifdef DEBUG_OUTPUT Modified: trunk/libminisip/source/subsystem_media/AudioMedia.cxx =================================================================== --- trunk/libminisip/source/subsystem_media/AudioMedia.cxx 2010-01-26 21:21:55 UTC (rev 3750) +++ trunk/libminisip/source/subsystem_media/AudioMedia.cxx 2010-01-26 21:40:06 UTC (rev 3751) @@ -151,7 +151,7 @@ } } -void AudioMedia::playData( MRef packet ){ +void AudioMedia::playData(const MRef & packet ){ MRef source = getSource( packet->getHeader().SSRC ); if( source ){ @@ -326,7 +326,7 @@ codecOutput[i]=0; } -void AudioMediaSource::playData( MRef rtpPacket ){ +void AudioMediaSource::playData( const MRef & rtpPacket ){ RtpHeader hdr = rtpPacket->getHeader(); MRef codec = findCodec( hdr.getPayloadType() ); Modified: trunk/libminisip/source/subsystem_media/MediaStream.cxx =================================================================== --- trunk/libminisip/source/subsystem_media/MediaStream.cxx 2010-01-26 21:21:55 UTC (rev 3750) +++ trunk/libminisip/source/subsystem_media/MediaStream.cxx 2010-01-26 21:40:06 UTC (rev 3751) @@ -383,7 +383,7 @@ } #endif -void RealtimeMediaStreamReceiver::handleRtpPacket( MRef packet, string callId, MRef from ){ +void RealtimeMediaStreamReceiver::handleRtpPacket( const MRef & packet, string callId, MRef from ){ uint32_t packetSsrc; uint16_t seq_no; @@ -626,7 +626,7 @@ } -void RealtimeMediaStreamSender::sendRtpPacket(MRef rtp){ +void RealtimeMediaStreamSender::sendRtpPacket(const MRef & rtp){ if( remoteAddress->getAddressFamily() == AF_INET && senderSock ) rtp->sendTo( **senderSock, **remoteAddress, remotePort ); else if( remoteAddress->getAddressFamily() == AF_INET6 && sender6Sock ) Modified: trunk/libminisip/source/subsystem_media/RtpReceiver.cxx =================================================================== --- trunk/libminisip/source/subsystem_media/RtpReceiver.cxx 2010-01-26 21:21:55 UTC (rev 3750) +++ trunk/libminisip/source/subsystem_media/RtpReceiver.cxx 2010-01-26 21:40:06 UTC (rev 3751) @@ -246,49 +246,107 @@ MRef from = NULL; try{ packet = SRtpPacket::readPacket( **socket, from); + } catch (NetworkException & ){ + continue; } - catch (NetworkException & ){ - continue; + list > nextpackets; + struct timeval nowait={0,0}; + { + FD_ZERO( &rfds ); +#ifdef WIN32 + FD_SET( (uint32_t) socket->getFd(), &rfds ); +#else + FD_SET( socket->getFd(), &rfds ); + +#endif + while( select( socket->getFd()+1, &rfds, NULL, NULL, &nowait ) > 0 ){ + MRef nextpacket; + try{ + nextpacket = SRtpPacket::readPacket( **socket, from); + } catch (NetworkException & ){ + continue; + } + nextpackets.push_back(nextpacket); + + } + int nmark=0; + list >::iterator i; + for (i=nextpackets.begin(); i!=nextpackets.end(); i++){ + if ((*i)->getHeader().marker) + nmark++; + } + + +// cerr <<"EEEE: RtpPacket::run: number of extra packets: "<< nextpackets.size() <<" nmark" <2 && nextpackets.size()>150){ + while ( nmark>2 ){ + if ( (*nextpackets.begin())->getHeader().marker ) + nmark--; + nextpackets.pop_front(); + ndrop++; + } + + cerr <<"EEEE: dropped packets n="< > codecs = (*i)->getAvailableCodecs(); - std::list >::iterator iC; - int found = 0; - //printf( "|" ); - for( iC = codecs.begin(); iC != codecs.end(); iC ++ ){ - if ( (*iC)->getSdpMediaType() == packet->getHeader().getPayloadType() ) { - (*i)->handleRtpPacket( packet, callId, from ); - found = 1; - //printf( "~" ); - break; - } - } + for ( i = realtimeMediaStreams.begin(); i != realtimeMediaStreams.end(); i++ ) { + std::list > codecs = (*i)->getAvailableCodecs(); + std::list >::iterator iC; + int found = 0; + //printf( "|" ); + for( iC = codecs.begin(); iC != codecs.end(); iC ++ ){ + if ( (*iC)->getSdpMediaType() == packet->getHeader().getPayloadType() ) { + (*i)->handleRtpPacket( packet, callId, from ); + found = 1; + //printf( "~" ); + break; + } + } #ifdef ZRTP_SUPPORT - /* - * If we come to this point: - * no codec was found for this packet. - */ - MRefzhb = (*i)->getZrtpHostBridge(); + /* + * If we come to this point: + * no codec was found for this packet. + */ + MRefzhb = (*i)->getZrtpHostBridge(); - /* - * If the packet was not processed above and it contains an - * extension header then check for ZRTP packet. - */ - if (!found && zhb && packet->getHeader().getExtension()) { - (*i)->handleRtpPacketExt(packet); - } + /* + * If the packet was not processed above and it contains an + * extension header then check for ZRTP packet. + */ + if (!found && zhb && packet->getHeader().getExtension()) { + (*i)->handleRtpPacketExt(packet); + } #endif // ZRTP_SUPPORT - } - realtimeMediaStreamsLock.unlock(); + } - packet = NULL; + packet = NULL; + + if (nextpackets.size()>0){ + packet= *nextpackets.begin(); + nextpackets.pop_front(); + } + + }while(packet); + + realtimeMediaStreamsLock.unlock(); + } socket=NULL; } + Modified: trunk/libminisip/source/subsystem_media/codecs/SPEEXCODEC.cxx =================================================================== --- trunk/libminisip/source/subsystem_media/codecs/SPEEXCODEC.cxx 2010-01-26 21:21:55 UTC (rev 3750) +++ trunk/libminisip/source/subsystem_media/codecs/SPEEXCODEC.cxx 2010-01-26 21:40:06 UTC (rev 3751) @@ -69,18 +69,18 @@ int ok; -#if 0 +#if 1 int sample_rate=16000; ok = speex_decoder_ctl(enc_state, SPEEX_SET_SAMPLING_RATE, &sample_rate); massert(ok>=0); ok = speex_encoder_ctl(enc_state,SPEEX_GET_FRAME_SIZE,&frame_size); massert(ok>=0); - cerr <<"EEEE: SPEEX encoder frame_size="< //jitter buffer size in units of 20ms -#define CIRCULAR_BUFFER_SIZE 5 +#define CIRCULAR_BUFFER_SIZE 7 using namespace std; @@ -76,6 +76,8 @@ SoundSource(id, callId), plcProvider(plc) { this->oNChannels = oNChannels; + + memset(plcCache, 0, 2048*sizeof(short)); this->oFreq = oFreq; this->position=position; @@ -253,9 +255,14 @@ short *b = plcProvider->get_plc_sound(oFrames); memcpy(dest, b, oFrames); }else{ + // for (uint32_t i=0; i < oFrames * oNChannels; i++){ + // dest[i]=0; + // } for (uint32_t i=0; i < oFrames * oNChannels; i++){ - dest[i]=0; + dest[i]=plcCache[i]; + plcCache[i]/=2; } + } bufferLock.unlock(); return; @@ -278,6 +285,9 @@ // resampler->resample( temp, dest ); memcpy(dest,temp,iFrames * oNChannels * sizeof( short ) ); + + memcpy((void*)&plcCache[0], dest, oFrames*oNChannels ); + // memset( dest, 0, oFrames * oNChannels * sizeof( short ) ); bufferLock.unlock(); From erik at minisip.org Tue Jan 26 22:44:39 2010 From: erik at minisip.org (erik at minisip.org) Date: Tue, 26 Jan 2010 22:44:39 +0100 (CET) Subject: r3752 - in trunk/libminisip: include/libminisip/media source/subsystem_media/video source/subsystem_media/video/codec source/subsystem_media/video/display source/subsystem_media/video/grabber Message-ID: <20100126214439.3A56F1ABF2@mail.minisip.org> Author: erik Date: 2010-01-26 22:44:38 +0100 (Tue, 26 Jan 2010) New Revision: 3752 Modified: trunk/libminisip/include/libminisip/media/RealtimeMedia.h trunk/libminisip/source/subsystem_media/video/VideoMedia.cxx trunk/libminisip/source/subsystem_media/video/codec/AVCoder.cxx trunk/libminisip/source/subsystem_media/video/display/OpenGLDisplay.cxx trunk/libminisip/source/subsystem_media/video/grabber/MatroxGrabber.cxx Log: (see last commit) Modified: trunk/libminisip/include/libminisip/media/RealtimeMedia.h =================================================================== --- trunk/libminisip/include/libminisip/media/RealtimeMedia.h 2010-01-26 21:40:06 UTC (rev 3751) +++ trunk/libminisip/include/libminisip/media/RealtimeMedia.h 2010-01-26 21:44:38 UTC (rev 3752) @@ -64,7 +64,7 @@ * decoding if relevant. * @param rtpPacket the RTP packet to play */ - virtual void playData( MRef rtpPacket )=0; + virtual void playData( const MRef & rtpPacket )=0; /** * Send the data to all the registered RealtimeMediaStreamSender. Modified: trunk/libminisip/source/subsystem_media/video/VideoMedia.cxx =================================================================== --- trunk/libminisip/source/subsystem_media/video/VideoMedia.cxx 2010-01-26 21:40:06 UTC (rev 3751) +++ trunk/libminisip/source/subsystem_media/video/VideoMedia.cxx 2010-01-26 21:44:38 UTC (rev 3752) @@ -95,7 +95,7 @@ } } -void VideoMedia::playData( MRef packet ){ +void VideoMedia::playData( const MRef & packet ){ MRef source = getSource( packet->getHeader().SSRC ); @@ -355,8 +355,8 @@ return ret; } -void VideoMediaSource::enqueueRtp(MRef rtp){ - //cerr << "EEEE: VideoMediaSource::enqueueRtp seq="<< rtp->getHeader().getSeqNo()< & rtp){ + cerr << "EEEE: VideoMediaSource::enqueueRtp seq="<< rtp->getHeader().getSeqNo()<0 && rtpSeqDiff(lastPlayedSeqNo, (*rtpReorderBuf.begin())->getHeader().getSeqNo() )==1){ MRef packet=*rtpReorderBuf.begin(); int seqNo = packet->getHeader().getSeqNo(); - //cerr << "EEEE: playing another queued packet with seq="< packet ){ +void VideoMediaSource::playData( const MRef & packet ){ int marker= packet->getHeader().marker; int seqNo = packet->getHeader().getSeqNo(); @@ -487,7 +486,7 @@ #endif } -void VideoMediaSource::addPacketToFrame( MRef packet, bool flush){ +void VideoMediaSource::addPacketToFrame( const MRef & packet, bool flush){ if (flush){ //cerr <<"EEEE: addPacketToFrame: flushing"< #include #include +#include #include #include //#include @@ -75,6 +76,7 @@ video=NULL; videoCodec=NULL; swsctx=NULL; + N=0; } @@ -108,7 +110,7 @@ video->width=width; video->height=height; - video->fps=15; + video->fps=30; #ifdef GLOBAL_BANDWIDTH_HACK if (globalBitRate<128) @@ -117,7 +119,7 @@ globalBitRate=25000; videoCodec->bitrate=globalBitRate; #else - videoCodec->bitrate=1500; + videoCodec->bitrate=6000; #endif @@ -142,7 +144,11 @@ } #define REPORT_N 50 +#if 0 +#endif + + void AVEncoder::handle( MImage * image ){ massert(image); @@ -152,8 +158,8 @@ static struct timeval lasttime; static int i=0; - static int N=0; - i++; + // static int N=0; + i++; #ifdef GLOBAL_BANDWIDTH_HACK static int lastBitRate=-1; @@ -161,12 +167,14 @@ lastBitRate=globalBitRate; if (globalBitRate!=lastBitRate){ + cerr <<"EEEE: bitrate changed. ============================="<width, image->height); lastBitRate=globalBitRate; } #endif + Video *video = (Video*)this->video; // if (i%7!=0) // return; @@ -178,13 +186,12 @@ int diffms = (now.tv_sec-lasttime.tv_sec)*1000+(now.tv_usec-lasttime.tv_usec)/1000; float sec = (float)diffms/1000.0f; printf("%d frames in %fs\n", REPORT_N, sec); - printf("FPS_ENCODE: %f\n", (float)REPORT_N/(float)sec ); + printf("FPS_ENCODE: %f for video of size %dx%d\n", (float)REPORT_N/(float)sec, video->width, video->height ); lasttime=now; } #endif - Video *video = (Video*)this->video; VideoCodec *videoCodec = (VideoCodec*)this->videoCodec; if (!video || image->width!=video->width || image->height!=video->height){ @@ -228,6 +235,7 @@ struct SwsContext* ctx = (struct SwsContext*)swsctx; sws_scale( ctx, image->data, image->linesize, 0, image->height, frame.data, frame.linesize); +// yuv2rgb(image->data[0], image->data[1], image->data[2], image->width, image->height, frame.data[0]); } else{ /* We can use the picture as is */ @@ -265,6 +273,8 @@ if (mustFreeFrame){ avpicture_free( (AVPicture*)&frame ); } + + //printSnd(); } int h264_start_code(unsigned char* p){ Modified: trunk/libminisip/source/subsystem_media/video/display/OpenGLDisplay.cxx =================================================================== --- trunk/libminisip/source/subsystem_media/video/display/OpenGLDisplay.cxx 2010-01-26 21:40:06 UTC (rev 3751) +++ trunk/libminisip/source/subsystem_media/video/display/OpenGLDisplay.cxx 2010-01-26 21:44:38 UTC (rev 3752) @@ -2791,6 +2791,7 @@ OpenGLDisplay::OpenGLDisplay( uint32_t width, uint32_t height, bool _fullscreen):VideoDisplay(){ cerr << "EEEE: OpenGLDisplay::OpenGLDisplay("<< width<<","<