Ross Finlayson | 1 May 2008 03:01
Favicon

Re: BasicTaskScheduler is not handling err 10038

>Windows error 10038 is "WSAENOTSOCK", and typically happens when an
>application is trying to do some socket operation on non-socket or the
>socket that has already been closed, (at least that's my
>understanding..)
>I was getting this error, from the line in the BasicTaskScheduler.cpp
>(build 2008-04-03)
>
>      int err = WSAGetLastError();  // err = 10038
>
>And it only happens when RTSP server tries to delete clientSession due
>to livenessTimeout, (it doesn't happen when session gets closed by
>TEARDOWN request).

That's odd, because - in each case - the "RTSPClientSession" 
destructor will get called, and this should be removing its socket 
from the set of active sockets, via the call to
	envir().taskScheduler().turnOffBackgroundReadHandling(fClientSocket);
on line 271 of "RTSPServer.cpp".

So I wonder why this isn't working for you.

Please let us know if you can find out anything more about this issue.
--

-- 

Ross Finlayson
Live Networks, Inc.
http://www.live555.com/
Ross Finlayson | 1 May 2008 03:09
Favicon

Re: tearDownStreams()

>When I use it over the LAN the server seems to see OPTIONS - 
>TEARDOWN requests.
>But when I stream over the internet using the -t (TCP) parameter the server
>Doesn't seem to receive the TEARDOWN.

You have run into a known limitation of the current RTSP server code. 
If RTP-over-TCP streaming is used, then the server will not be able 
to handle any RTSP commands after the initial "PLAY" command.

This bug should be fixed someday (but there is currently no ETA - sorry).
--

-- 

Ross Finlayson
Live Networks, Inc.
http://www.live555.com/
Yamini S. [EPLX - DCC] | 1 May 2008 12:06
Picon

Re: tearDownStreams()

Can u tell me how did get a player to receive the streams

 

Thanks & Regards,

S.Yamini

Programmer

R&D

Siemens Building Technologies Pvt. Ltd.

 

From: live-devel-bounces-m22LxytlYjp4ccXRSk2lxg@public.gmane.org [mailto:live-devel-bounces-m22LxytlYjp4ccXRSk2lxg@public.gmane.org] On Behalf Of Nikhil Naik
Sent: Wednesday, April 30, 2008 6:33 PM
To: live-devel-m22LxytlYjqzrq5Vb6ouFA@public.gmane.orgm
Subject: [Live-devel] tearDownStreams()

 

Hi Ross,

 

I am working with a MJPG streamer and a player to receive the stream.

Both are based on the LIVE555 libraries.

 

When I use it over the LAN the server seems to see OPTIONS - TEARDOWN requests.

But when I stream over the internet using the –t (TCP) parameter the server

Doesn’t seem to receive the TEARDOWN. I can receive the stream but when I disconnect

The server is still servicing a client even though none are connected  

 

Note  (sendRequest(cmd, "TEARDOWN")) is sucessfully executed

In the RTSPClient class.

 

Any ideas what might be going on? Any suggestions?

 

Nikhil Naik

This message (including attachments) is confidential and may be privileged. If you have received it by mistake please notify the sender by return e-mail and delete this message from your system. You may not copy, disclose or use the contents in any way. SBTPL does not guarantee integrity of this communication nor that this communication is free of viruses, interceptions or interference. This communication does not create or modify any contract, and unless otherwise stated, is not intended to be contractually binding. Views or opinions expressed in this e-mail message are those of the author only.
_______________________________________________
live-devel mailing list
live-devel@...
http://lists.live555.com/mailman/listinfo/live-devel
manas lenka | 1 May 2008 13:00
Picon
Favicon

Re: About SIP implementations in LIVE555 media...

Hi,
Shaswata..
Thanks for your reply and suggestions. I have some doubts:
Q1: Is there any SIP test programme so that I can use it.
Q2: You told me to store the encoded data in

some in-memory data-structure what this actually mean.
Are you talking about an buffer or queue.

Q3: How the synchronization between the caller and callee will
be taken care ? Whether I have to write my custom programme for this
or LIVE 555 media takes care of this.

THANKS In ADVANCE
MANAS

Meet people who discuss and share your passions. Join them now.
_______________________________________________
live-devel mailing list
live-devel@...
http://lists.live555.com/mailman/listinfo/live-devel
Alex Tarter | 1 May 2008 16:03

Program flow question

I am new to developing using live555 so please excuse any obvious
questions!

I'm trying to stream JPEG images over RTP, so I've modified the Elphel
example to instead of getting a frame from a camera to read and send the
same JPEG image from file. Effectively just sending the same image over
and over again. Once I can do this I'll move on to generating streaming
jpeg frames.

The program compiles and seems to run (though wireshark says all the
packets are malformed!), though the timing is constant at 250 frames per
second!! No matter what frame rate I give it as an initial argument.

I imagine it is because there is no delay function in my code. At the
moment the 'fTimePerFrame' is set in the constructor for
ElphelJPEGDeviceSource but not used anywhere. Within the doEventLoop()
what is telling the process to only call doGetNextFrame() regularly (5
times per second say) rather than continuously? Should the delay
function go in the startCapture() function or the doGetNextFrame() or is
there a variable I need to set when adding the source to the environment
taskscheduler?

Thanks,

Alex

Alex Tarter

Ultra Electronics

Sonar & Communication Systems

Tel: +44 (0)20 8813 4527

Mobile: +44 (0)772 018 2267

www.ultra-electronics.com

This e-mail from Ultra Electronics Limited and any attachments to it are confidential to the intended
recipient and may also be privileged.  If you have received it in error please notify the sender and delete
it from your system.  If you are not the intended recipient you must not copy it or use it for any purpose nor
disclose or distribute its contents to any other person.  All communications may be subject to
interception or monitoring for operational and/or security purposes.  Please rely on your own virus
checking as the sender cannot accept any liability for any damage arising from any bug or virus infection. 
Ultra Electronics Limited is a company registered in England and Wales, registration number 2830644. 
The address of its registered office is 417 Bridport Road, Greenford, Middlesex, UB6 8UA.
_______________________________________________
live-devel mailing list
live-devel@...
http://lists.live555.com/mailman/listinfo/live-devel
Ross Finlayson | 2 May 2008 02:33
Favicon

Re: Program flow question

I imagine it is because there is no delay function in my code. At the moment the 'fTimePerFrame' is set in the constructor for ElphelJPEGDeviceSource but not used anywhere.

Yes, because the original code read from a live source (a camera), it was not necessary to set the "fDurationInMicroseconds" variable in your "doGetNextFrame()" function.  (By not setting this variable, it remains at its default value of 0.)  However, because you are now reading from a pre-recorded file - rather than from a live source - you must now set that variable.

You should add the following line to your "ElphelJPEGDeviceSource::deliverFrameToClient()" function, sometime before the "envir().taskScheduler().scheduleDelayedTask()" call:

        fDurationInMicroseconds = fTimePerFrame;

Within the doEventLoop() what is telling the process to only call doGetNextFrame() regularly (5 times per second say) rather than continuously?

The "fDurationInMicroseconds" variable (which is ultimately used by "MultiFramedRTPSink", when rescheduling the next outgoing RTP packet after sending one).
-- --

Ross Finlayson
Live Networks, Inc.
http://www.live555.com/
_______________________________________________
live-devel mailing list
live-devel@...
http://lists.live555.com/mailman/listinfo/live-devel
| 3 May 2008 18:07
Picon

live555 is great, but I need help for recording WMV streams.

Hi,

I have an urgent task that I should download and record the WMV files from Windows
Media Server via RTSP.

I have reported in the mailing-list that when using openRTSP to get a WMV stream
from windows media server, I would get a file that is different with the original
one on the server and cannot be decoded. (I settled up the server and put a wmv
file on it for comparison.)
I did further experiments and found out that the reason lied in the server side:
Experiment procedures: 
I used a windows software named HiDownload to save a WMV file, meanwhile, I
captured the ethernet packets with Ethereal. I also captured packets when playing
the RTSP stream with VLC, as well as receiving the stream with openRTSP. (I have
not tested windows media player yet.)
Results: 
1. Although the wmv file saved by HiDownload can be decoded correctly, it is not
the same as the original file.
2. The captured packets of VLC, openRTSP and HiDownload are IDENTICAL, but
HiDownload adds some stuff bytes when saving the packets. In other words,
HiDownload does more than justing receiving the stream. (For VLC, it will demux
and decode the received packets with no problem.)
Conclusion:
1. live555 library and openRTSP are great and fully compliant to RTSP protocol.
Thanks, Ross.
2. It is ugly and difficult to deal with the received RTSP packets according to
its format, especially that Microsoft's specification for WMV file format is not
clear enough. If anyone could offer help, I will quite appreciate it.
| 4 May 2008 13:30
Picon

Save WMV file from Windows Media Server via RTSP: Almost done.

Hi,

openRTSP can be used to save wmv stream on windows media server, with some
tricks.
The procedure is: 
/openRTSP rtsp://... -S 4
You must get the header of wmv file from SDP data first (pls refer to VLC source
code).
The recorded file like audio-x-asf/video-x-asf contains the data packets of the
wmv file. However, just to splice the header and the video-x-asf together cannot
get a decodable wmv file. (Maybe some server has different settings and you can
succeed in doing so. At least, I have suffered enough doing that.) 
The most important trick here is that you should make the length of data packet
equal to 1444 by stuffing some bytes to the end of it.

I have just tested one file and seen the video displayed. I am not sure that the
procedure proposed here works for most cases.

Thank u, Ross. Your tools are very reliable.
Eno Kapo | 4 May 2008 14:21

rtmp to rtsp transforming -transcoding live streaming ?!

Hi

Anyone tested if it possible to transform-transcode a live stream from rtmp-
flash live stream on rtsp ?! so from rtmp://..../webcam on rtsp://.../webcam

Any tips, suggestions or experience ?! 

Thanks 

Eno

-----Original Message-----
From: live-devel-bounces@...
[mailto:live-devel-bounces@...] On Behalf Of luwei@...
Sent: dimanche 4 mai 2008 13:30
To: live-devel@...
Subject: [Live-devel] Save WMV file from Windows Media Server via RTSP:
Almost done.

Hi,

openRTSP can be used to save wmv stream on windows media server, with some
tricks.
The procedure is: 
/openRTSP rtsp://... -S 4
You must get the header of wmv file from SDP data first (pls refer to VLC
source
code).
The recorded file like audio-x-asf/video-x-asf contains the data packets of
the
wmv file. However, just to splice the header and the video-x-asf together
cannot
get a decodable wmv file. (Maybe some server has different settings and you
can
succeed in doing so. At least, I have suffered enough doing that.) 
The most important trick here is that you should make the length of data
packet
equal to 1444 by stuffing some bytes to the end of it.

I have just tested one file and seen the video displayed. I am not sure that
the
procedure proposed here works for most cases.

Thank u, Ross. Your tools are very reliable.

_______________________________________________
live-devel mailing list
live-devel@...
http://lists.live555.com/mailman/listinfo/live-devel

__________ NOD32 3072 (20080503) Information __________

This message was checked by NOD32 antivirus system.
http://www.eset.com
Ken Seo | 5 May 2008 16:33
Picon

Re: BasicTaskScheduler is not handling err 10038

Hi Ross,

So, here is what I found, "WSAGetLastError()" returns WSAENOTSOCK when turnOffBackgroundReadHandling was not called as many times as turnOnBackgroundReadHandling is called.
So, my problem was happening only on RTP over TCP, as turnOnBackgroundReadHandling is called
twice for RTCP handling and turnOffBackgroundReadHandling was called only once when clientsession is deleted.

in OnDemandMediaSubsession.cpp, startPlaying method (line 425),

RTCPInstance::createNew(..) will call turnOnBackgroundReadHandling as a part of RTCPInstance construction.
and then, if it's RTCP over TCP, addStreamSocket is called, which will call turnOnBackgroundReadHandling again (for the same socket)

if (dests->isTCP) {
.. fRTCPInstance->addStreamSocket(..)
 
in RTCP.cpp

void RTCPInstance::addStreamSocket(int sockNum,
  unsigned char streamChannelId) {
 // Add the RTCP-over-TCP interface:
 fRTCPInterface.setStreamSocket(sockNum, streamChannelId);

 // Turn on background reading for this socket (in case it's not on already):
 TaskScheduler::BackgroundHandlerProc* handler
   = (TaskScheduler::BackgroundHandlerProc*)&incomingReportHandler;
 fRTCPInterface.startNetworkReading(handler);
}

So, my quickest fix was to put the following line

void RTCPInstance::addStreamSocket(int sockNum,
  unsigned char streamChannelId)
{
 // Turn off the default background read handling created along with RTCPInstance
 fRTCPInterface.stopNetworkReading();
 
 // Add the RTCP-over-TCP interface:
 fRTCPInterface.setStreamSocket(sockNum, streamChannelId);

 // Turn on background reading for this socket
 TaskScheduler::BackgroundHandlerProc* handler
   = (TaskScheduler::BackgroundHandlerProc*)&incomingReportHandler;
 fRTCPInterface.startNetworkReading(handler);
}

I'm not 100% sure why you have to call "turnOnBackgroundReadHandling" twice for RTP over TCP, but it seems like "turnOnBackgroundReadHandling" should be called after "fRTCPInterface.setStreamSocket(sockNum, streamChannelId)" to handle RTCP over TCP correctly.

--> Also I was just wondering, isn't fRTCPInterface supposed to be fRTPInterface, since it is actually an instance of RTPInterface,

I know that I don't fully understand live555 code at the moment, so, if what I explained above does not make any sense to you then please let me know,

Best Regards,
 
Ken Seo


On Wed, Apr 30, 2008 at 9:01 PM, Ross Finlayson <finlayson-C8PbJppqpsxBDgjK7y7TUQ@public.gmane.org> wrote:
> >Windows error 10038 is "WSAENOTSOCK", and typically happens when an
>  >application is trying to do some socket operation on non-socket or the
>  >socket that has already been closed, (at least that's my
>  >understanding..)
>  >I was getting this error, from the line in the BasicTaskScheduler.cpp
>  >(build 2008-04-03)
>  >
>  >      int err = WSAGetLastError();  // err = 10038
>  >
>  >And it only happens when RTSP server tries to delete clientSession due
>  >to livenessTimeout, (it doesn't happen when session gets closed by
>  >TEARDOWN request).
>  
>  That's odd, because - in each case - the "RTSPClientSession"
>  destructor will get called, and this should be removing its socket
>  from the set of active sockets, via the call to
>         envir().taskScheduler().turnOffBackgroundReadHandling(fClientSocket);
>  on line 271 of "RTSPServer.cpp".
>  
>  So I wonder why this isn't working for you.
>  
>  Please let us know if you can find out anything more about this issue.
>  --
>  
>
>
>  Ross Finlayson
>  Live Networks, Inc.
>  http://www.live555.com/
>  _______________________________________________
>  live-devel mailing list
>  live-devel-cunTk1MwBs/NLCcxxxaBvgC/G2K4zDHf@public.gmane.org
>  http://lists.live555.com/mailman/listinfo/live-devel
>  

_______________________________________________
live-devel mailing list
live-devel@...
http://lists.live555.com/mailman/listinfo/live-devel

Gmane