Zeeshan Ali (Khattak) [Tue, 13 Jan 2009 14:32:44 +0000 (14:32 +0000)]
Better error handling.
Stream should end itself if pads/elements don't get linked.
svn path=/trunk/; revision=426
Zeeshan Ali (Khattak) [Tue, 13 Jan 2009 14:32:41 +0000 (14:32 +0000)]
GstStream now inherits from Stream.
As a consequence, Streamer just uses GstStream only.
svn path=/trunk/; revision=425
Zeeshan Ali (Khattak) [Tue, 13 Jan 2009 14:32:36 +0000 (14:32 +0000)]
Remove unused Stream.accepted() method.
svn path=/trunk/; revision=424
Zeeshan Ali (Khattak) [Tue, 13 Jan 2009 14:32:33 +0000 (14:32 +0000)]
Go to PAUSED state first and then PLAYING.
This is to ensure that seek event is sent to pipeline before it goes to
PLAYING state. This could be the solution to mp3 not working on PS3.
svn path=/trunk/; revision=423
Zeeshan Ali (Khattak) [Tue, 13 Jan 2009 14:32:29 +0000 (14:32 +0000)]
GstStream provides means to start and stop the stream.
svn path=/trunk/; revision=422
Zeeshan Ali (Khattak) [Tue, 13 Jan 2009 14:32:25 +0000 (14:32 +0000)]
Range header doesn't necessarily imply partial content request.
svn path=/trunk/; revision=421
Zeeshan Ali (Khattak) [Tue, 13 Jan 2009 14:32:21 +0000 (14:32 +0000)]
tcp_timeout prop of rtspsrc is 64-bit.
Fixes a crash.
svn path=/trunk/; revision=420
Zeeshan Ali (Khattak) [Tue, 13 Jan 2009 14:32:17 +0000 (14:32 +0000)]
Range requests are valid when size > 0.
svn path=/trunk/; revision=419
Zeeshan Ali (Khattak) [Tue, 13 Jan 2009 14:32:12 +0000 (14:32 +0000)]
New low-level Streamer API.
Instead of emitting a signal for availability of a new stream, signal for
need of a gst source element if no URI is provided by the requested item.
This only works for streaming media.
svn path=/trunk/; revision=418
Zeeshan Ali (Khattak) [Tue, 13 Jan 2009 14:32:08 +0000 (14:32 +0000)]
Allow items to not provide URIs.
svn path=/trunk/; revision=417
Zeeshan Ali (Khattak) [Wed, 7 Jan 2009 12:56:12 +0000 (12:56 +0000)]
No need for a separate 'live' boolean in MediaItem.
Check if size of resource is known, instead.
svn path=/trunk/; revision=416
Zeeshan Ali (Khattak) [Wed, 7 Jan 2009 12:56:08 +0000 (12:56 +0000)]
Implement partial download (Range header).
Seems to work pretty well against PS3 but I did observe stream hanging
once.
svn path=/trunk/; revision=415
Zeeshan Ali (Khattak) [Wed, 7 Jan 2009 12:56:04 +0000 (12:56 +0000)]
Stream needs to know if it's accepted for a partial download.
svn path=/trunk/; revision=414
Zeeshan Ali (Khattak) [Wed, 7 Jan 2009 12:56:00 +0000 (12:56 +0000)]
Use the name of the device group as it's title.
svn path=/trunk/; revision=413
Zeeshan Ali (Khattak) [Wed, 7 Jan 2009 12:55:55 +0000 (12:55 +0000)]
Mark image items as 'interactive' in the DIDL.
svn path=/trunk/; revision=412
Zeeshan Ali (Khattak) [Wed, 7 Jan 2009 12:55:50 +0000 (12:55 +0000)]
Declare Test and DVB items, live.
svn path=/trunk/; revision=411
Zeeshan Ali (Khattak) [Wed, 7 Jan 2009 12:55:44 +0000 (12:55 +0000)]
Only claim Range (seek) operation for non-live items.
svn path=/trunk/; revision=410
Zeeshan Ali (Khattak) [Wed, 7 Jan 2009 12:55:37 +0000 (12:55 +0000)]
Don't claim to support DLNA's bg transfer mode and connection stalling.
svn path=/trunk/; revision=409
Zeeshan Ali (Khattak) [Fri, 2 Jan 2009 13:50:39 +0000 (13:50 +0000)]
Add a basic release plan.
svn path=/trunk/; revision=408
Zeeshan Ali (Khattak) [Tue, 30 Dec 2008 16:04:37 +0000 (16:04 +0000)]
Don't put iconList in description if there isn't any icon.
Providing an empty iconList was causing problems with gupnp-*-cp and PS3.
PS3 was just ignoring the whole Media Server instance and gupnp-*-cp were
segfaulting (that bug has long been fixed in gupnp though).
svn path=/trunk/; revision=407
Zeeshan Ali (Khattak) [Mon, 29 Dec 2008 16:10:03 +0000 (16:10 +0000)]
Choose the highest ranking RTP depayloader.
svn path=/trunk/; revision=406
Zeeshan Ali (Khattak) [Mon, 29 Dec 2008 16:09:59 +0000 (16:09 +0000)]
Ask for compatible pad rather than by name.
svn path=/trunk/; revision=405
Zeeshan Ali (Khattak) [Mon, 29 Dec 2008 16:09:56 +0000 (16:09 +0000)]
Refactor get_rtp_depayloader().
svn path=/trunk/; revision=404
Zeeshan Ali (Khattak) [Mon, 29 Dec 2008 16:09:52 +0000 (16:09 +0000)]
Autoplug an RTP depayloader if needed.
This fixes the artifacts/hickups in case of DVB streams on the client-side.
svn path=/trunk/; revision=403
Zeeshan Ali (Khattak) [Sun, 28 Dec 2008 16:48:10 +0000 (16:48 +0000)]
Set the "tcp-timeout" to 1 min for rtspsrc.
This is to make sure we wait for DVBDaemon to start the stream.
svn path=/trunk/; revision=402
Zeeshan Ali (Khattak) [Sun, 28 Dec 2008 16:48:07 +0000 (16:48 +0000)]
Handle dynamic pads.
If source element doesn't have any pads, wait for a pad to be added to it
before linking it to sink.
svn path=/trunk/; revision=401
Zeeshan Ali (Khattak) [Sun, 28 Dec 2008 16:48:03 +0000 (16:48 +0000)]
throw an error if elements fail to link.
svn path=/trunk/; revision=400
Zeeshan Ali (Khattak) [Sun, 28 Dec 2008 16:48:00 +0000 (16:48 +0000)]
GIO api update.
GLib.File.load_contents() doesn't return unowned string anymore.
svn path=/trunk/; revision=399
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:02:21 +0000 (12:02 +0000)]
Streamer properly handles interactive contents.
Currently just images.
svn path=/trunk/; revision=398
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:02:16 +0000 (12:02 +0000)]
Rename Streamer.handle_item_stream to handle_streaming_item.
svn path=/trunk/; revision=397
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:02:08 +0000 (12:02 +0000)]
Refactor Streamer.handle_item_request().
svn path=/trunk/; revision=396
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:02:04 +0000 (12:02 +0000)]
Send a 404 if Streamer fails to create a stream from item.
Streamer.handle_item() sets the appropriate status code on HTTP message
if it fails to handle it.
svn path=/trunk/; revision=395
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:02:00 +0000 (12:02 +0000)]
Entertain Streamer.item_requested in DVBChannelGroup.
svn path=/trunk/; revision=394
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:01:55 +0000 (12:01 +0000)]
DVBChannelGroup.find_channel() doesn't need didl_writer arg.
svn path=/trunk/; revision=393
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:01:50 +0000 (12:01 +0000)]
Streamer only entertains 'HEAD' and 'GET' requests.
svn path=/trunk/; revision=392
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:01:45 +0000 (12:01 +0000)]
Streamer only adds headers if values provided by MediaItem.
svn path=/trunk/; revision=391
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:01:40 +0000 (12:01 +0000)]
DVBChannel constructor should chain-up to it's parent.
svn path=/trunk/; revision=390
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:01:35 +0000 (12:01 +0000)]
Add a prefix to Streamer's hosted path.
This is to make sure it doesn't conflict with any other paths hosted by the
HTTP server.
svn path=/trunk/; revision=389
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:01:31 +0000 (12:01 +0000)]
TrackerItem* should throw the error rather than acting on it.
svn path=/trunk/; revision=388
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:01:26 +0000 (12:01 +0000)]
Remove leaky hack to assign unowned strings to weak fields.
The fields are no longer 'weak' so unowned strings can simply be assigned
to them and vala will take care of them for us.
svn path=/trunk/; revision=387
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:01:21 +0000 (12:01 +0000)]
Mimetype is "video/mpeg" for radio channels as well.
This is since they are also contained in an mpeg transport stream. The
UPnP type for items however remains different so CPs and MRs can still
differentiate between them.
svn path=/trunk/; revision=386
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:01:11 +0000 (12:01 +0000)]
Correct(swap) the logic of differenciating audio from video.
svn path=/trunk/; revision=385
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:01:06 +0000 (12:01 +0000)]
Correct the leaky hack to initialize DIDLLiteResource fields.
svn path=/trunk/; revision=384
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:01:01 +0000 (12:01 +0000)]
Initialize the important fields of DVBChannel.
svn path=/trunk/; revision=383
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:00:57 +0000 (12:00 +0000)]
Catch the error from DVBChannel creation method.
svn path=/trunk/; revision=382
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:00:53 +0000 (12:00 +0000)]
Refactor DVBChannelGroup construction method.
svn path=/trunk/; revision=381
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:00:48 +0000 (12:00 +0000)]
Let DVBContentDir create the ChannelList proxy.
svn path=/trunk/; revision=380
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:00:44 +0000 (12:00 +0000)]
Update the child_count once it's known.
svn path=/trunk/; revision=379
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:00:40 +0000 (12:00 +0000)]
Don't throw an error if there are no channels in group.
svn path=/trunk/; revision=378
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:00:35 +0000 (12:00 +0000)]
Add DVB plugin.
Right now it only builds, haven't tested because of broken python jhbuild.
svn path=/trunk/; revision=377
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:00:29 +0000 (12:00 +0000)]
Streamer only provide headers on "HEAD" requests.
svn path=/trunk/; revision=376
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:00:25 +0000 (12:00 +0000)]
Streamer puts essential headers into streams.
Streamer puts "Content-Type" and "Content-Length" headers into streams.
svn path=/trunk/; revision=375
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:00:21 +0000 (12:00 +0000)]
MediaTracker provides the item when requested by Streamer.
svn path=/trunk/; revision=374
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:00:11 +0000 (12:00 +0000)]
Initialize the local variable before using.
svn path=/trunk/; revision=373
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 12:00:06 +0000 (12:00 +0000)]
MediaTracker keeps a ref to Streamer instance.
svn path=/trunk/; revision=372
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 11:59:58 +0000 (11:59 +0000)]
Add API to get the MediaItem, given it's ID.
svn path=/trunk/; revision=371
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 11:59:53 +0000 (11:59 +0000)]
Use ID of MediaItem instead of URI in the proxy URIs.
On getting an HTTP request for an item, Streamer will emit a signal to get
the MediaItem instance requested.
svn path=/trunk/; revision=370
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 11:59:47 +0000 (11:59 +0000)]
Define and use enums for metadata array indices.
svn path=/trunk/; revision=369
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 11:59:42 +0000 (11:59 +0000)]
Include file size of the item in the DIDL.
svn path=/trunk/; revision=368
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 11:59:37 +0000 (11:59 +0000)]
No need to keep the keys in the TrackerItem class.
svn path=/trunk/; revision=367
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 11:59:31 +0000 (11:59 +0000)]
MediaItem keeps a res struct instead of res fields itself.
svn path=/trunk/; revision=366
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 11:59:26 +0000 (11:59 +0000)]
Add the original res at the end of the DIDL.
For compatibility with crappy MediaRenderers just takes the first res
from the DIDL rather than the one they can handle.
svn path=/trunk/; revision=365
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 11:59:15 +0000 (11:59 +0000)]
Tracker items fetch metadata at contruction time.
svn path=/trunk/; revision=364
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 11:59:10 +0000 (11:59 +0000)]
Handle important messages on the pipeline bus.
svn path=/trunk/; revision=363
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 11:59:05 +0000 (11:59 +0000)]
MediaItem adds transcoded resources to the DIDL.
ATM it's just the HTTP URI that the new Streamer API creates for us.
svn path=/trunk/; revision=362
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 11:58:59 +0000 (11:58 +0000)]
MediaItem now just use Streamer instead of GUPnP.Context.
svn path=/trunk/; revision=361
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 11:58:53 +0000 (11:58 +0000)]
Add gstreamer CFLAGS and LIBS to tracker plugin build.
svn path=/trunk/; revision=360
Zeeshan Ali (Khattak) [Thu, 25 Dec 2008 11:58:46 +0000 (11:58 +0000)]
Support streaming from URIs other than HTTP.
This could be any URI that gstreamer have a source element to handle it
through.
svn path=/trunk/; revision=359
Zeeshan Ali (Khattak) [Tue, 16 Dec 2008 14:31:38 +0000 (14:31 +0000)]
Allow URIs of protocols other than HTTP.
We don't assume the protocol to be HTTP anymore but guess it from URI.
svn path=/trunk/; revision=358
Zeeshan Ali (Khattak) [Tue, 16 Dec 2008 14:31:34 +0000 (14:31 +0000)]
Introduce an Error to serialize method.
svn path=/trunk/; revision=357
Zeeshan Ali (Khattak) [Tue, 16 Dec 2008 14:31:30 +0000 (14:31 +0000)]
Use mpeg2 video inside mpeg transport stream.
Use mpeg2 video inside mpeg transport stream rather than H.263 in AVI.
svn path=/trunk/; revision=356
Zeeshan Ali (Khattak) [Tue, 16 Dec 2008 14:31:26 +0000 (14:31 +0000)]
Tell libsoup to not accumulate the chunks.
Otherwise the memory usage keeps rising and rising.
svn path=/trunk/; revision=355
Zeeshan Ali (Khattak) [Tue, 16 Dec 2008 14:31:22 +0000 (14:31 +0000)]
Stream should only end if the abort signal is for it's message.
svn path=/trunk/; revision=354
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:23:04 +0000 (20:23 +0000)]
Test plugin only gets built/installed if enabled.
svn path=/trunk/; revision=353
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:23:00 +0000 (20:23 +0000)]
Use fakesink instead of appsink.
appsink is currently in gst-plugins-bad and no distro ships it.
svn path=/trunk/; revision=352
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:22:56 +0000 (20:22 +0000)]
Minor refactoring.
svn path=/trunk/; revision=351
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:22:46 +0000 (20:22 +0000)]
Don't send out prerolled buffers.
Apparently this was causing the problems of receiving side unable to
handle (recognise and decode) the incoming stream.
svn path=/trunk/; revision=350
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:22:41 +0000 (20:22 +0000)]
Use H263 enclosed in AVI container.
Use H263 enclosed in AVI container instead of theora in ogg.
svn path=/trunk/; revision=349
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:22:37 +0000 (20:22 +0000)]
Oops: Put the muxer after the encoder.
svn path=/trunk/; revision=348
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:22:32 +0000 (20:22 +0000)]
Streamer rejects the stream, rather than signal handler.
svn path=/trunk/; revision=347
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:22:28 +0000 (20:22 +0000)]
Add method to detect if stream has been accepted.
svn path=/trunk/; revision=346
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:22:23 +0000 (20:22 +0000)]
Generalize: Put common code into TestItem class.
Put common code from TestAudioItem and TestVideoItem into TestItem class.
svn path=/trunk/; revision=345
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:22:17 +0000 (20:22 +0000)]
Add a video item to test plugin.
Streams video from 'videotestsrc is-live=true ! theoraenc ! oggmux'.
svn path=/trunk/; revision=344
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:22:12 +0000 (20:22 +0000)]
Nicer title/ID for the exported audio item.
svn path=/trunk/; revision=343
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:22:08 +0000 (20:22 +0000)]
Tell audiotestsrc to behave like a live source.
svn path=/trunk/; revision=342
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:22:02 +0000 (20:22 +0000)]
Move StreamContext to Rygel as GstStream.
This is to avoid code-duplication in plugins. Now plugins just create the
gst source element they want to stream from and tell the Streamer to
stream from that.
svn path=/trunk/; revision=341
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:21:57 +0000 (20:21 +0000)]
StreamContext can now be told to stream from any gst (source) element.
svn path=/trunk/; revision=340
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:21:52 +0000 (20:21 +0000)]
No need to provide candidates to Streamer anymore.
Instead you get a new stream object for each HTTP request and you can
accept or reject it and start streaming to it in case of former.
svn path=/trunk/; revision=339
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:21:48 +0000 (20:21 +0000)]
Hosted path should be derived from given name.
Streamer takes a name as constructor argument and uses that to create the
server path it hosts.
svn path=/trunk/; revision=338
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:21:43 +0000 (20:21 +0000)]
Implement Test audio item.
It creates a small gstreamer pipeline and feeds the data produced from
that pipeline to http response messages.
svn path=/trunk/; revision=337
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:21:38 +0000 (20:21 +0000)]
Add gstreamer CFLAGS and LIBS to test plugin build.
svn path=/trunk/; revision=336
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:21:34 +0000 (20:21 +0000)]
Add a convience method to create URI from path.
svn path=/trunk/; revision=335
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:21:29 +0000 (20:21 +0000)]
Initialize gstreamer.
svn path=/trunk/; revision=334
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:21:24 +0000 (20:21 +0000)]
Provide a const for generic UPnP audio item class.
svn path=/trunk/; revision=333
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:21:18 +0000 (20:21 +0000)]
Basic skeleton for test plugin.
A test plugin that is supposed to host test media, mainly meant for
testing the new Streaming API and hopefully the transcoding API
that will follow soon.
svn path=/trunk/; revision=332
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:21:13 +0000 (20:21 +0000)]
Streamer doesn't derive from GUPnP.Context anymore.
Streamer doesn't derive from GUPnP.Context anymore but rather uses an
existing GUPnP.Conext object.
svn path=/trunk/; revision=331
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:21:08 +0000 (20:21 +0000)]
Add Streamer and Stream classes.
New classes for rygel and plugins to be able to stream data from sources
other than files on disk.
svn path=/trunk/; revision=330
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:21:02 +0000 (20:21 +0000)]
Refactor ContentDirectory.browse_cb ().
svn path=/trunk/; revision=329
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:20:57 +0000 (20:20 +0000)]
Introduce BrowseArgs.
Introduce a new class, whose instances holds the arguments (in and out) to
Browse action and pass these instance to all methods instead of passing
around the arguments themselves everywhere. Simplifies the code and lives
of content directory implementors.
svn path=/trunk/; revision=328
Zeeshan Ali (Khattak) [Sun, 14 Dec 2008 20:20:52 +0000 (20:20 +0000)]
Move most of the root container handling to base class.
So that plugins need to a bit less work.
svn path=/trunk/; revision=327