This summer Prasad Bhat worked in the support for the Video Distribution Profile(VDP) as his Google Summer of Code project. Check his report below.

The Video Distribution Profile provides a way for device share a streaming video from one device to the other. This project involves implementing VideoSource and VideoSink roles for the devices. And developing GStreamer elements for the VideoSource and VideoSink. There are mainly two parts in the project:

Video Streaming Set Up When a device wishes to start streaming of video the device firstly needs to set up a streaming connection. During such set-up procedure, the devices select the most suitable video streaming parameters.

Video Streaming Once streaming connection is established both source and sink are in the STREAMING state, in which the source is ready to send video stream and sink is ready to receive the video stream.

The source will encode the data into selected format and the stream data is sent out on the transport channel using the selected transport services defined in AVDTP.
The AVDTP entity of the sink receives the stream data from the transport channel using the selected transport services and passes it to the application layer. The frame of video will be decoded according to the selected coding format.

What we have done so far:

Me and my mentor Luiz Augusto von Dentz have completed the signaling procedure which works similar to signaling of A2DP.
We have developed the GStreamer elements for the VDP gstvdpsink and gstvdpsrc.
For now we have added support for H263 baseline and MPEG-4 visual simple profile encoding in gstvdpsink. Similarly H263 baseline and MPEG-4 visual simple profile decoding in gstvdpsrc. The source and sink support H263 baseline level 10, level20 and level30. The MPEG-4 visual simple profile supports level0, level1 and level2.

Status of the project:

Since the VDP and A2DP both use the AVDTP, we are attempting refactoring the code. I will get everything upstreamed within two weeks. We are testing the gstreamer elements gstvdpsink and gstvdpsrc.Since both VDP and A2DP use AVDTP.