README
上传用户:aoeyumen
上传日期:2007-01-06
资源大小:3329k
文件大小:8k
源码类别:

DVD

开发平台:

Unix_Linux

  1.               MPEG 2 Transport Stream Player
  2.                    version: 1.2
  3.                    date: November, 1996
  4.         Alex Theo de Jong (alex.dejong@nist.gov)
  5.           Multi-Media and Digital Video Group
  6.         Advanced Network Technologies Division
  7.           Information Technology Laboratory
  8.     National Institute of Standards and Technology
  9.                 Gaithersburg, MD 20899, U.S.A.
  10. COPYRIGHT
  11. This work is a contribution of the National Institute of Standards 
  12. and Technology, and is not subject to copyright. However, original
  13. audio and video player source code has a copyright by Tobias Bading,
  14. Berlin University of Technology, Germany, and the MPEG Software 
  15. and Simulation Group & Stefan Eckart at the Fraunhofer-Institut fuer 
  16. Festkoerpertechnologie, Germany. All modifications do not have
  17. copyright :-)
  18. ACKNOWLEDGEMENTS
  19. The MPEG 2 Transport Stream player uses pieces of the MPEG 2 Audio
  20. player developed by Tobias Bading at Berlin University of Technology,
  21. Germany, and for video decoding, pieces of the MPEG 2 Video player
  22. are used which was developed by the MPEG Software Simulation Group 
  23. and improved by Stefan Eckart at the Fraunhofer-Institut fuer 
  24. Festkoerpertechnologie, Germany. 
  25. NOTE: since the structure of the original source code has been changed
  26. so drastically, the original copyright file headers have not been 
  27. included. 
  28. INTRODUCTION
  29. The directory contains all the code for the MPEG 2 Transport Stream
  30. player. The player is capable of de-multiplexing, synchronizing audio
  31. and video, decoding, and playing audio and video. It can also de-multiplex 
  32. MPEG 2 Program Streams (not tested; under construction), and decode 
  33. MPEG 1 and 2 audio/video Packetized Elementary Streams (PES).
  34. The player consists primarily of 3 classes: the Mpeg2Demux (De-multiplexor), 
  35. Mpeg2Video (Video decoding and display), and Mpeg2Audio (Audio decoding and
  36. playback). Support classes are available for synchronization and buffering. 
  37. TOOLS
  38. OS:    SGI Irix 5.3 or SUN Solaris 2.5
  39. Compiler: GNU g++, version 2.6.3 or 2.7.2
  40.           SUN Solaris 2.5 Sparc C++ Compiler
  41.           SGI Irix 5.3 C++ Compiler
  42. Make:     GNU gmake 3.70
  43. Compress: gzip/gunzip
  44. RELEASE NOTES
  45. 1) Create the NIST MPEG 2 Transport Stream player by going to directory
  46.    "./NIST_mpeg2ts/Src":
  47.    SUN Solaris: type "gmake install"
  48.    SGI irix:    type "gmake -f makefile.sgi install"
  49. The binaries, mpeg2audio (Audio player), mpeg2video (Video player), 
  50. mpeg2player (MPEG 2 Transport Stream player) are available in 
  51. ./NIST_mpeg2ts/Bin/Irix or  ./NIST_mpeg2ts/Bin/Solaris .
  52. Performance depends on the hardware that is used; bitrates of the 
  53. MPEG 2 TS are upto 1.5 Mbps on an SGI Indigo 2 Impact workstation. It 
  54. works also nice on the SUN Ultra Sparc and runs quite nicely on a Sparc 
  55. 10 MP (Multi-Processor, 2 x CPU). 
  56. To improve audio, use the -fr <n> option and either -r or -l (only 
  57. decode one channel). The former option will cause B-frames to be dropped 
  58. in order to keep up with the sending bitrate.
  59. 2) The implementation is based on the use of Multi-Threading which is
  60. supported on most System V operating systems. The Posix compliant PThread 
  61. package from Christopher Angelo Provenzano (MIT, US), however, does not 
  62. work with the X11 interface, I therefore use Multi-Processing on the 
  63. SGI Irix 5.3 operating system. The next release of the software will most 
  64. likely be using SGI Irix 6.2 which supports Multi-Threading. On SUN 
  65. Solaris, the Solaris Multi-Threading capability is used. Note that with
  66. the compiler option -DSOLARIS and -DSOLARIS_PTHREAD (-DIRIX and -DIRIX_PTHREAD)
  67. can be used to turn use of the pthread package on/off (Default is Off).
  68. All MT stuff is collected in the Util/athread.hh and Util/athread.cc files 
  69. (athread = Alex' Threads :-)  )
  70. 3) The network option allows the player to wait for a network connection and 
  71. receive data from the network instead of the filesystem. Currently, connections
  72. from TCP/IP, Fore ATM SPANS signalling, and Fore ATM PVCs are implemented. To 
  73. use Fore ATM, use the -DFORE_ATM compiler option. A FileSocket class provides 
  74. a means to read from a file instead of a network connection. 
  75. 4) The "-DEOFEXIT" options allows the player to exit when a network
  76. connection is terminated (ie. closed), without waiting audio/video threads
  77. to terminate properly. This works Ok for Solaris since threads in the 
  78. same process space are killed automatically when the parent process
  79. terminates. On SGI Irix this can cause some processes to hog your system ...
  80. TO DO
  81. 1) Implement PSI and PMT tables for MPEG 2 Transport Stream
  82. 2) Use PIDs and PSI to select stream for viewing. Currently the PES stream
  83. ID is used for selection which assumes that audio and video stream IDs 
  84. match for a program. 
  85. 3) ...
  86. 4) ...
  87. KNOWN BUGS
  88. 1) Make sure a HOSTNAME environment value is set. The player relies on 
  89. this value listening to the network.
  90. 2) The mpeg2player has been tested (partially) for MPEG 2 Transport Streams,
  91. elementary Audio, and elementary Video streams. MPEG 2 Program Streams do 
  92. not work (since I don't have a properly encoded MPEG 2 Program Stream).
  93. 3) The frame rate option is not implemented properly. In order to get
  94. the fastest bitrate, set to >2000. This will result in only I and P frames 
  95. to be displayed. Also, the frame rate (fps) displayed on the screen, is the 
  96. frame rate at which the data is read; not the number of frames per second 
  97. that appear on the screen (since not all B-frames are displayed).
  98. 4) The software has been developed on a SUN Ultra Sparc running Solaris 2.5
  99. The software should work on a Sparc 5, Sparc LX, Sparc 10 and a Sparc 20 too
  100. (Note: the software will not run on other Sparc's since they don't have the 
  101. proper audio device).
  102. The SGI version has been developed on an SGI Indy/Indigo 2 Impact running Irix 
  103. 5.3 . I have tried to run it on an SGI Indigo 2, Indy, and Indy R5000 without 
  104. any problems, but don't know about other SGI machines. It should also work
  105. fine for Irix 6.2, although the code is not really using 64 bit processing
  106. (and is not yet using Multi-Threading because it seems impossible to get
  107. the Posix Thread package from SGI ...)
  108. CHANGES
  109. 1.0 -> 1.1
  110. - Moved file reader for de-multiplexer to ./NIST_mpeg2ts/Src/Util/network. 
  111.   This keeps the de-multiplexor class independent of reading from file or network. 
  112. - Added display option with SUN Solaris 2.5 XIL Graphics libraries which 
  113.   allows re-sizing of the image while playing. This also enables use of 
  114.   24 bit colors (versus 8 bit). For specifics, have a look at the file: 
  115.   ./NIST_mpeg2ts/Src/Video/display.hh . By default XIL is not used.
  116. - Some bugs and cleaning of code.
  117. - Added a small (draft) paper (./NIST_mpeg2ts/Docs/mpeg2ts.ps) which gives an
  118.   outline of the implementation.
  119. 1.1 -> 1.2
  120. - Included error recovery in audio player. This prevents the player from
  121.   blocking when MPEG packets are lost. Instead both audio and video threads
  122.   will try to resume playing at the next startcode.
  123. - Improved robustness in sychronization object. A reset-sync mechanism has
  124.   been included which allows the player to recover from a "drop" in 
  125.   time stamp values. This is especially useful when the sender of the MPEG 
  126.   stream (a "Stream Pump") implements random access (ie. jumping back and
  127.   forth in the stream while playing the stream).
  128. - Fixed memory leak on the SUN Solaris systems by turning the Multi-Threaded
  129.   dither/display mechanism off. This might reduce performance on parallel
  130.   machines (such as the Sparc 10/20 MP).
  131. - Included options to allow native compilers (SUN and SGI) to compile the
  132.   player. Pieces of the GNU libraries are included with the distribution
  133.   to allow the use of the String class within the player. 
  134.   The performance on the SUN Ultra Sparc is significantly better when using 
  135.   the Sparc C++ compiler (with the "-fast" option).
  136. - Moved SUN from Solaris 2.4 to SUN Solaris 2.5
  137. - Automatic Stream ID selection. When no particular stream ID is set for 
  138.   playing, the player automatically selects the first available stream ID
  139.   for playing. 
  140. - Made color cell allocation static. This means that color allocation is
  141.   performed before a connection is received from the network. Especially 
  142.   when receiving data over an unreliable ATM connection, this avoids buffer 
  143.   overflow because of a slow color cell allocation.
  144. MORE INFORMATION
  145. Check:  http://muncie.ncsl.nist.gov/~vod/mpeg2ts.html