170 likes | 365 Views
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 ?.
E N D
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 ?
Client Stack DTV_MPEG API DTV_Object API DTV API application driver emulation demand operation system receiver card disk hardware
DTV API • int DTVInit( int channel, char *tsfname, bool loop, double bitrate ); • int DTVClose();
DTV API (2) • class DTVConn { DTVConn( int pid, int raw ); int RetrieveBuffer( DTVappbuf ** buf, int wait ); int ReturnBuffer( DTVappbuf * buf ) int Flush();}
DTV API (3) • typedef struct { int filledsize; unsigned char * data;} DTVappbuf;
DTV_MPEG API • Set a dozen global variables • playbacklevel, texture size, etc. • MyDtvDecoder() • unsigned char RGBarray[]
DTV_Object API • class DtvObjStream { DtvObjStream( int pid ); int GetObj( char * objname, int waittime, dtvobject * obj ); int CloseObj( dtvobject *obj );}
DTV_Object API (2) • typedef struct { char name[256]; FILE * data;} dtvobject;
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++
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, …)
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
Headend - Arbitrary data • Write it to a file • Run dynamux.exe
Headend - Multiplexer • dynamux.exe • Convert video, audio, object, and arbitrary data from different sources into one transport stream
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
Source Tree • C:\Dtv_public • content • headend • receiver • bin • include • lib • sample