1 / 17

DTV Software Infrastructure

DTV Software Infrastructure. Milton Chen. Outline. MPEG-2 Transport Stream Client Headend Examples. MPEG-2 Transport Stream. Packet 188 bytes (header plus payload) 13 bit packet ID (pid) 1 bit priority Filename ends in .ts (our convention) Which MPEG are you talking about ?.

nitza
Download Presentation

DTV Software Infrastructure

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DTV Software Infrastructure Milton Chen

  2. Outline • MPEG-2 Transport Stream • Client • Headend • Examples

  3. MPEG-2 Transport Stream • Packet • 188 bytes (header plus payload) • 13 bit packet ID (pid) • 1 bit priority • Filename ends in .ts (our convention) • Which MPEG are you talking about ?

  4. Client Stack DTV_MPEG API DTV_Object API DTV API application driver emulation demand operation system receiver card disk hardware

  5. DTV API • int DTVInit( int channel, char *tsfname, bool loop, double bitrate ); • int DTVClose();

  6. DTV API (2) • class DTVConn { DTVConn( int pid, int raw ); int RetrieveBuffer( DTVappbuf ** buf, int wait ); int ReturnBuffer( DTVappbuf * buf ) int Flush();}

  7. DTV API (3) • typedef struct { int filledsize; unsigned char * data;} DTVappbuf;

  8. DTV_MPEG API • Set a dozen global variables • playbacklevel, texture size, etc. • MyDtvDecoder() • unsigned char RGBarray[]

  9. DTV_Object API • class DtvObjStream { DtvObjStream( int pid ); int GetObj( char * objname, int waittime, dtvobject * obj ); int CloseObj( dtvobject *obj );}

  10. DTV_Object API (2) • typedef struct { char name[256]; FILE * data;} dtvobject;

  11. Client Environment 1. Win 95 2. DirectX 5 3. ATI Rage Pro or Intel 740 Graphics Card • Live reception requires 1 • MPEG decoder requires 2, 3 • Link with multi-threaded library in VC++

  12. Headend - Video 1. Camera -> 2. Video Capture Card -> 3. capture.exe ( .ppm ) -> 4. MPEG2 Encoder ( .m2v ) -> 5. pespacketizer.exe ( .pes ) -> 6. dynamux.exe ( .ts ) • Step 4, 5, and 6 are not real-time • tools to manipulate .m2v files (clip, cat, …)

  13. Headend - Object • Object Parameter File #file obj. name insert time magicidobj1.exe obj1 0.0 1obj2.zip obj2 0.5 2obj3.html obj3 1.0 3 • Run dynamux.exe

  14. Headend - Arbitrary data • Write it to a file • Run dynamux.exe

  15. Headend - Multiplexer • dynamux.exe • Convert video, audio, object, and arbitrary data from different sources into one transport stream

  16. Examples • MyDtvReceiver (DTV API) • count the number of bytes received • MyDtvApp (DTV_MPEG API) • one thread decode to shared memory • one thread display the decoded frames with OpenGL texture mapping • MyDtvWeb (DTV_Object API) • receive one html file and launch netscape to display that file

  17. Source Tree • C:\Dtv_public • content • headend • receiver • bin • include • lib • sample

More Related