Translations of this page:

Stereoscopic video in DV quality over best effort IP networks

Goal of this project is to design and implement system for 3D video transmission using DV technology in environment of best effort networks (typicaly IP networks). Our implementation works on Linux and FreeBSD Open Source software.

In later stages of the project we want to study influence of best effort networks on synchronicity of transmission of several parallel streams as well as other problems inherent to best effort networks. We want to explore possibilities emerging with advent of active networks and especially active networks implemented as overlay networks over best effort networks.

Implementation stages overview

Implementation target Status Last update Contact person Notes, Comments
Synchronizing UDP/RTP packet reflector DONE 2003-09-19 Tomas Rebok
xdvshow revamping IN PROGRESS 2005-05-05 Milos Liska Beta version available
unified sending code for both Linux and FreeBSD IN PROGRESS 2004-07-06 Milos Liska Beta version available
simple 3D video DONE 2004-10-14 Milos Liska
tests of xdvhow and synchronizing reflector interactions DONE 2005-10-22 - Research paper available

Technical background

DV over IP transmission has been implemented by DVTS project for several operating systems (*BSD, Linux, Windows 2000/XP, and MacOS X). DVTS project created specification (RFC 3189 and RFC 3190) of how the DV data are to be sent over the IP network using RTP encapsulation. The DVTS software was originaly written for FreeBSD 4.x and included

  • kernel driver for IEEE-1394 for FreeBSD and some other kernel patches to allow it to work
  • dvsend for sending data from IEEE-1394 interface to IP network encapsulated in RTP stream
  • dvrecv to receive data from the network and store it locally on the disk
  • dvsave to save data received from IEEE-1394 interface locally on the disk
  • dvplay to send data to IEEE-1394
  • xdvshow to display DV using X windows

Later on the software was ported to other platforms mentioned above. xdvshow program was left out of the package and has been distributed separately ever since. It has also been modified to use libdv library. Though the software is open-source, the Windows implementation is closed source for some reason. It seems to use DirectX DV rendering available in Windows 2000 and XP (which is btw of superb quality).

However DVTS project has stalled during last year as the main developer left the project to work for SONY. We have decided to use xdvshow software and improve it to:

  • be able to work full-screen (either in scaled or not-scaled+centered mode)
  • to add theads to allow better performance for reading from network interface
  • to revamp the implementation to catch up with displaying two parallel streams (without any hardware support)

Originaly we planned also to patch playdv software from libdv to have similar functionality but the playdv code seems to be way too complicated and intransparent so we have decided to go for xdvshow and get back to playdv later if we find it useful for some reason.

With these features we will are able to display 3D video using two separate streams, each for one eye. Technical details on acquisition of 3D video can be found on stereoscopic video page .

Gory technical details and documentation

xdvshow changes description

Our xdvshow implementation uses multithreaded architecture which allows to seperate the DV data acquisition from rendering and video displaying.

There are two ways how to display the DV video. It may be displayed with X11 or preferably with SDL library. It's possible to display fullscreen video in two modes witch the SDL library. At first there is an unscaled fulscreen mode with black borders around the video. Seconds xdvshow provides a real scaled fullscreen mode. xdvshow also allows to display video in stereoscopic mode by creating two fullscreen windows, which are then placed on propper displays.

xdvshow is originally a passive client waiting on given port for DV stream. This implementation is able to cooperate with packet reflector asking for a stream. There is also a possibility to read a DV stream from locall firewire interface or from a file.

xdvshow howto

Section: User Commands (1)
BSD mandoc

NAME

xdvshow - DV video displaying utility

SYNOPSIS

[ -vh ] [ -f file ] [ -A device ] [ -FzZDoS ] [ -46 ] [ -j address ] [ -r host ] [ -P port ] [ -i ] [ -d ] [ -sx ]

DESCRIPTION

This utility is written to provide various ways to handle raw DV video streams. The DV video may be obtained from local network port, from a packet reflector, local firewire interface or finally from a file. xdvshow provides several optiions for video displaying too.

The folowing options are available:

-v
Show xdvshow version number.

-h
Show help message.

-f file
Tell xdvshow to read the DV stream from file. The file must be without any headers and must include raw PAL or NTSC DV stream.

-A device
Enable audio. Use for example /dev/dsp as the device for playing audio.

-F
Enable fullscreen. This makes just fullscreen window with centered video and black border inside. No resize to the video is done.

-z
Enable zoom. Fullscreen display is achieved by changing the display resolution. xdvshow changes the display resolution to the resolution nearest to PAL or NTSC that is available for xwindows. This switch should be used with -F Wo rks with SDL display only.

-Z
Enable zoom. Fullscreen is achieved by real video scaling scale through the SDL library. This switch should be used with -F Wo rks with SDL display only.

-D
Enable the deinterlacer. This is actualy the same deinterlacer used in mplayer with -vf pp=lb. Works with SDL display only.

-S
Use for stereoscopic video displaying. It should be used together with fulscreen display. This option allows to place each xdvshow instance to distinct diplay.

-o
Disable hw overlay with SDL display.

-4
Use IPv4 as the IP protocol.

-6
Use IPv6 as the IP protocol.

-j addr
Join multicast group specified by adress addr

-r host
Connect to the packet reflector specified by host The host may be hosname or IP address of the packet reflector.

-P port
Set UDP port number to read the DV stream from.

-i
Use ieee1394 interface for DV acquisition. xdvshow reads then from /dev/raw1394 (Linux) or /dev/fw0 (FreeBSD). This option may require additional libraries installed.

-d
Dump displayed DV data to a file. The file is created in current working directory and is called dump.dv by default. The dump file may be then used as input for xdvshow used with f or another player able to handle raw DV streams.

-s
Use SDL for video display. This is the default behaviour when the SDL library is available in the system.

-x
Use X11 for display. This is a fallback when there is no SDL library available. There is no fullscreen option with X11 display. X11 display consumes a lot of CPU.

EXAMPLES

xdvshow waits on loacl port 8000 for DV stream and then displays it fullscreen really upscaled via SDL.

  xdvshow -P 8000 -S -F -Z

AUTHORS

Milos Liska xliska@fi.muni.cz

BUGS

This utility is still under development and testing .

The -D option causes a Segmentation fault at this time.
Reading from a firewire interface with the -i option may be also buggy.

Bugreporting

We are using Mantis for bugreporting. Feel free to create your own account for reporting bugs. Other possibility is to send a mail to xliska@fi.muni.cz.

Software available for download

References

Project members

  • Milos Liska
  • Tomas Rebok
  • Petr Holub
  • Eva Hladka
dv_over_ip.txt · Last modified: 2011/01/01 11:59 (external edit)
Trace: dv_over_ip
CC Attribution-Noncommercial-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0