DTV Software Infrastructure by chenboying

VIEWS: 5 PAGES: 17

									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 magicid
    obj1.exe    obj1        0.0        1
    obj2.zip    obj2        0.5        2
    obj3.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

								
To top