Difference between revisions of "mobile tv testbed software"

From NMSL
 
(10 intermediate revisions by 2 users not shown)
Line 2: Line 2:
 
Simple use cases for configuring the test bed.
 
Simple use cases for configuring the test bed.
  
Last modified: Yi Liu 1:45pm, Oct 1, 2008
+
Last modified: Yi Liu, {{REVISIONMONTH}}/{{REVISIONDAY2}}/{{REVISIONYEAR}}
  
 
+
==== User wants to add a new Video file to the repository====
==== Upload Video ====
+
:* Pre-condition: The video file does not belong to the current video repository
:* User clicks on the "Upload" tab.
+
:* On webpage, user clicks on the "Upload" tab.
 
:* Select video to be uploaded from local computer.
 
:* Select video to be uploaded from local computer.
 +
:* Select ESG file to be uploaded from local computer.
 
:* Enter assigned PID - Provider ID for the video. Example: 0x777
 
:* Enter assigned PID - Provider ID for the video. Example: 0x777
 
:* Enter assigned multicast IP for the video. Example: 224.0.1.2
 
:* Enter assigned multicast IP for the video. Example: 224.0.1.2
:* Maybe need to consider the corresponding ESG file as well? let Cheng decide :-)
+
:* Enter video port. Example: 1209
 +
:* Enter an audio port. Example: 1210
 
:* Click Upload
 
:* Click Upload
:* Browser post video file and data to the test bed server.  
+
:* Web browser can post video file and data to the test bed server.  
 
:* Web GUI create a new file folder for each uploaded video file and store the video there.
 
:* Web GUI create a new file folder for each uploaded video file and store the video there.
 
:* Web GUI write the video file path to a config file, (Cong can decide how we implement this part)
 
:* Web GUI write the video file path to a config file, (Cong can decide how we implement this part)
:* User waits for the browser to refresh.
+
:* User waits for the browser to finish uploading. There will be a green status indicator showing the uploading.
 
:* The system confirms the video file was uploaded.
 
:* The system confirms the video file was uploaded.
:* User goes to "Video Files" tab and can confirm the new uploaded video file is available in the repository.
+
:* The system transfers the user to the "Video Files" tab
 +
:* The user can confirm the new uploaded video file is available in the repository.
 +
:* Post-condition: The video file is added to the video repository
 +
:* Note: this part is all handled by web GUI
 +
 
 +
 
 +
 
 +
==== User want to update DVB-H Network Parameters ====
 +
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means DtPlay process must be in "stopped" status
 +
:* User clicks on "DVB-H Parameters" tab
 +
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)
 +
:* Update dvbhparams.cfg with "Carrier_Frequency=538"
 +
:* Backend script will add "-mf 538" to DtPlay
 +
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)
 +
:* Update dvbhparams.cfg with "Convolutional_Rate=1/2"
 +
:* Backend script will add "-mc 1/2" to DtPlay
 +
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)
 +
:* Update dvbhparams.cfg with "Gaurd_Interval=1/4"
 +
:* Backend script will add "-mG 1/4" to DtPlay
 +
:* User selects the bandwidth, for example 8 (possible values are  5 6 7 or 8)
 +
:* Update dvbhparams.cfg with "Bandwidth=8"
 +
:* Backend script will add "-mB 8" to DtPlay
 +
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)
 +
:* Update dvbhparams.cfg with "Constellation=QPSK"
 +
:* Backend script will add "-mC QPSK" to DtPlay
 +
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)
 +
:* Update dvbhparams.cfg with "Transmission_Mode=8k"
 +
:* Backend script will add "-mT 8k" to DtPlay
 +
:* User clicks "Save"
 +
:* The system saves the changes to the dvbhparams.cfg configuration file.
 +
:* Backend script use the latest configuration from  dvbhparams.cfg
 +
:* Post-condition: Dtplay parameters got updated.
 +
:* Note: Backend script name: updatedtplay.pl
 +
  updatedtplay.pl API
 +
  input: dvbhparams.cfg
 +
  output: rundtplay.sh,  its content is the full command for DtPlay
 +
 
  
  
==== Selecting Video to Broadcast ====
+
==== User wants to update Timeslicing Parameters ====
 +
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means timeslicer process must be in "stopped" status
 +
:* User clicks on "Time Slicing" tab
 +
:* User selects the MPE_FEC Frame value, for example 1024 (possible values are 256, 512, 768, or 1024)
 +
:* Update dvbhparams.cfg with "MPE_FEC_Frame=1024"
 +
:* Backend script will add "-n 1024" to timeslicer
 +
:* User selects the OFDM guard interval value, for example 8 (possible values are  4, 8, 16, or 32)
 +
:* Update dvbhparams.cfg with "OFDM_Guard_Interval=8"
 +
:* Backend script will add "-g 8" to timeslicer
 +
:* User selects the OFDM bandwidth, for example 8 (possible values are  5, 6, 7, or 8)
 +
:* Update dvbhparams.cfg with "OFDM_Bandwidth=8"
 +
:* Backend script will add "-b 8" to timeslicer
 +
:* User selects the Code Rate, for example 3 (possible values are  1, 2, 3, 5 or 7)
 +
:* Update dvbhparams.cfg with "Code_Rate=3"
 +
:* Backend script will add "-c 3" to timeslicer
 +
:* User selects the constellation, for example qpsk (possible values are  qpsk, 16qam, or 64qam)
 +
:* Update dvbhparams.cfg with "Constellation=qpsk"
 +
:* Backend script will add "-o qpsk" to timeslicer
 +
:* User sets the Delta_t value, for example 350 (possible values are integers between 100 and 3000)
 +
:* Update dvbhparams.cfg with "DeltaT=350"
 +
:* Backend script will add "-d 350" to timeslicer
 +
:* User selects the algorithm used, for example P2OPT (this is a faked feature though, may remove later)
 +
:* Update dvbhparams.cfg with "Time_Slicing_Algorithm=P2OPT"
 +
:* Backend script will not do anything for now :-)
 +
:* User clicks "Save"
 +
:* The system saves the changes to the timeslicing.cfg configuration file.
 +
:* Backend script use the latest configuration from  timeslicing.cfg
 +
:* Post-condition: timeslicer parameters got updated
 +
:* Note: Backend script name: updatetimeslicer.pl
 +
  updatetimeslicer.pl API
 +
  input: timeslicing.cfg
 +
  output: runtimeslicer.sh,  its content is the full command for timeslicer
 +
 
 +
 
 +
 
 +
==== User selects video to broadcast ====
 +
:* Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means vlc process must be in "stopped" status
 
:* User clicks on the "Video Files" tab.
 
:* User clicks on the "Video Files" tab.
 
:* The system lists all available video on the server.  
 
:* The system lists all available video on the server.  
:* There are 4 tabs for each video file:  File name, multicast IP, PID assigned, and its corresponding ESG file name.
+
:* There are 5 tabs for each video file:  File name, multicast IP, port used, PID assigned, and its corresponding ESG file name.
 
:* Entries with existing check mark indicates it is currently in use.
 
:* Entries with existing check mark indicates it is currently in use.
 
:* User selects video files that are not marked.
 
:* User selects video files that are not marked.
 
:* User selects "Save" to submit the changes to the server.
 
:* User selects "Save" to submit the changes to the server.
 
:* The system updates the videoslist.cfg file to reflect the changes.
 
:* The system updates the videoslist.cfg file to reflect the changes.
:* Maybe a new button here to start the whole testbed? Call run.py and launch.sh, let Cheng decide :-)
+
:* Backend script use the latest configuration from videoslist.cfg to update parameters for vlc and dataaggregator
 +
:* Post-condition: checkbox of the selected video is checked. vlc and dataaggregator got the correct parameters.
 +
:* Note: Backend script name: updatevlc.pl  and updateproxy.pl
 +
  updatevlc.pl API
 +
  input: videoslist.cfg
 +
  output: runvlc.sh, its content is the full command for vlc
 +
 
 +
  updateproxy.pl API
 +
  input: videoslist.cfg
 +
  output: runproxy.sh,  its content is the full command for dataaggregator
 +
 
  
  
==== PSI/SI Configuration Parameters ====
+
==== User wants to update PSI/SI Configuration Parameters ====
:* Pre-condition: There exist selected video file in "Video Files" tab
+
:* Pre-condition1: DVB-H broadcast system stopped, since we got status function in webpage, this means TS Null Shaper process must be in "stopped" status
 +
:* Pre-condition2: There exist selected video file in "Video Files" tab
 
:* User clicks on "PSI/SI" tab
 
:* User clicks on "PSI/SI" tab
 
:* Web GUI knows which video file are selected and grab the corresponding PID and multicast IP of that video file
 
:* Web GUI knows which video file are selected and grab the corresponding PID and multicast IP of that video file
Line 47: Line 132:
 
:* User sets PMT_id value under PMT section, each video file selected needs to have its own PMT_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   
 
:* User sets PMT_id value under PMT section, each video file selected needs to have its own PMT_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg   
 
   For example:
 
   For example:
   video1_service_id= 0x2B00
+
   video_service_id1= 0x2B00
   video2_service_id= 0x2B01
+
   video_service_id2= 0x2B01
   video1_pmt_id=0x31f
+
   video_pmt_id1=0x31f
   video2_pmt_id=0x320
+
   video_pmt_id2=0x320
 
:* User clicks "Save"
 
:* User clicks "Save"
 
:* The system saves the changes to the psisi.cfg configuration file.
 
:* The system saves the changes to the psisi.cfg configuration file.
Line 59: Line 144:
 
:* Backend script update int.py
 
:* Backend script update int.py
 
:* Backend script update psimain.py
 
:* Backend script update psimain.py
:* Now all the scripts for PSI/SI table are ready.
+
:* Post-conditon: all the python scripts for PSI/SI table are ready.
 +
:* Note: backend script name: updatepsi.pl
 +
  updatepsi.pl API
 +
  input: psisi.cfg
 +
  output: A group of python scripts.
 +
 
 +
 
 +
 
 +
====User wants to update ESG====
 +
:* TBD
 +
:* this part may involve updating Flute FDT table based on ESG file size
 +
 
 +
 
 +
 
 +
==== User wants to start the DVB-H broadcast system based on current configuration====
 +
:* Pre-condition: DVB-H broadcast system stopped
 +
:* User clicks on "Start DVB-H" button under DVB-H Parameters tab
 +
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38888/  This http post message content is "action=start" which can tell the back end script to start the whole system
 +
:* The back end script first do a system call to start vlc
 +
:* The back end script then do a system call to start flute  (TBD, need to wait for flute part design)
 +
:* The back end script then do a system call to start dataaggregator
 +
:* The back end script then do a system call to start timeslicer
 +
:* The back end script then do a system call to start python scrips and TS Null Shaper.
 +
:* The back end script then do a system call to start DtPlay
 +
:* User open Nokia N96 cell phone, select mobile TV application and search for channel.
 +
:* Post-conditon: User can watch the video on their cell phone, all DVB-H broacast system components are up and running.
 +
 
  
  
==== Stop the PSI/SI Process ====
+
==== User wants to stop the DVB-H broadcast system ====
:* User clicks on "Stop" button under PSI/SI tab
+
:* Pre-conditon: User can watch the video on their cell phone, DVB-H broadcast system is up and running.
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38000/  This http post message tells the back end script to terminate the main PSI/SI handler
+
:* User clicks on "Stop DVB-H" button under DVB-H Parameters tab
:* The backend script stops the TS NULL Shaper
+
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38888/  This http post message content is "action=stop" which can tell the back end script to terminate the main PSI/SI handler
 +
:* The backend script stops the TS NULL Shaper, vlc, timeslicer, dataaggregator, flute, DtPlay
 +
:* Post-condition: DVB-H broadcast system stopped
  
  
==== Start the PSI/SI Process ====
 
:* User clicks on "Start" button under PSI/SI tab
 
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:48000/  This http post message tells the back end script to start the main PSI/SI handler
 
:* The back end script parses the configuration file psisi.cfg
 
:* The back end script based on psisi.cfg, creates the necessary PSI/SI files
 
:* The back end script starts the TS NULL Shaper to replace null packets with PSI/SI info
 
  
 +
==== User wants to add a new video channel in the current playing DVB-H broadcast system ====
 +
:* Pre-conditon1: DVB-H broadcast system is up and running with some programs
 +
:* Pre-conditon2: There exist extra video file in video repository and its corresponding parameters have already been configured properly (see the above configuration user case for more detail)
 +
:* User clicks on "Add to DVB-H" button under DVB-H Parameters tab
 +
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38888/  This http post message content is "action=add" and it tells the back end script to first stop the DVB-H boradcast system and then start the DVB-H boradcast system
 +
:* Post-condition: DVB-H broadcast system is up and running with both previous existing videos and the new added video.
  
==== Adjusting Timeslicing Parameters ====
 
:* User clicks on "Time Slicing" tab
 
:* User selects the MPE_FEC Frame value, for example 1024 (possible values are 256, 512, 768, or 1024)
 
:* Update dvbhparams.cfg with "MPE_FEC_Frame=1024"
 
:* Backend script will add "-n 1024" to timeslicer
 
:* User selects the OFDM guard interval value, for example 8 (possible values are  4, 8, 16, or 32)
 
:* Update dvbhparams.cfg with "OFDM_Guard_Interval=8"
 
:* Backend script will add "-g 8" to timeslicer
 
:* User selects the OFDM bandwidth, for example 8 (possible values are  5, 6, 7, or 8)
 
:* Update dvbhparams.cfg with "OFDM_Bandwidth=8"
 
:* Backend script will add "-b 8" to timeslicer
 
:* User selects the Code Rate, for example 3 (possible values are  1, 2, 3, 5 or 7)
 
:* Update dvbhparams.cfg with "Code_Rate=3"
 
:* Backend script will add "-c 3" to timeslicer
 
:* User selects the constellation, for example qpsk (possible values are  qpsk, 16qam, or 64qam)
 
:* Update dvbhparams.cfg with "Constellation=qpsk"
 
:* Backend script will add "-o qpsk" to timeslicer
 
:* User sets the Delta_t value, for example 350 (possible values are integers between 100 and 3000)
 
:* Update dvbhparams.cfg with "DeltaT=350"
 
:* Backend script will add "-d 350" to timeslicer
 
:* User selects the algorithm used, for example P2OPT (this is a faked feature though, may remove later)
 
:* Update dvbhparams.cfg with "Time_Slicing_Algorithm=P2OPT"
 
:* Backend script will not do anything for now :-)
 
:* User clicks "Save"
 
:* The system saves the changes to the timeslicing.cfg configuration file.
 
:* Backend script use the latest configuration from  timeslicing.cfg
 
  
  
==== Changing DVB-H Parameters ====
+
==== User wants to remove an existing video channel from the current playing DVB-H broadcast system ====
:* User clicks on "DVB-H Parameters" tab
+
:* Pre-conditon1: DVB-H broadcast system is up and running with some programs (>=2 programs)
:* User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)
+
:* User select the video file he or she wants to remove
:* Update dvbhparams.cfg with "Carrier_Frequency=538"
+
:* User clicks on "Remove from DVB-H" button under DVB-H Parameters tab
:* Backend script will add "-mf 538" to DtPlay
+
:* The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38888/ This http post message content is "action=remove&pid=1234&pid=1235&pid=3333..." which can tell the back end script to kill the vlc process based on the proper pid. Other parts of DVB-H boradcast system are not changed
:* User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)
+
:* Post-condition: DVB-H broadcast system is up and running with the selected video channel removed.
:* Update dvbhparams.cfg with "Convolutional_Rate=1/2"
+
:* Note: backend script name: Autorun.pl
:* Backend script will add "-mc 1/2" to DtPlay
+
  input: HTTP Post message from web browser
:* User sets the Guadr interval value, for example 1/4 (possible values are  1/4, 1/8, 1/16 or 1/32)
+
  output: log files
:* Update dvbhparams.cfg with "Gaurd_Interval=1/4"
+
  main function: launch  rundtplay.sh, runtimeslicer.sh, runproxy.sh, runvlc.sh, and python scripts to start DVB-H boradcast system, do system kill call to stop DVB-H boradcast system.
:* Backend script will add "-mG 1/4" to DtPlay
 
:* User selects the bandwidth, for example 8 (possible values are 5 6 7 or 8)
 
:* Update dvbhparams.cfg with "Bandwidth=8"
 
:* Backend script will add "-mB 8" to DtPlay
 
:* User selects the constellation, for example QPSK (possible values are  QPSK QAM16 or QAM64)
 
:* Update dvbhparams.cfg with "Constellation=QPSK"
 
:* Backend script will add "-mC QPSK" to DtPlay
 
:* User selects the transmission mode, for example 8k (possible values are  2k 4k or 8k)
 
:* Update dvbhparams.cfg with "Transmission_Mode=8k"
 
:* Backend script will add "-mT 8k" to DtPlay
 
:* User clicks "Save"
 
:* The system saves the changes to the dvbhparams.cfg configuration file.
 
:* Backend script use the latest configuration from dvbhparams.cfg
 

Latest revision as of 05:40, 9 December 2008

Use Case Analysis

Simple use cases for configuring the test bed.

Last modified: Yi Liu, 12/09/2008

User wants to add a new Video file to the repository

  • Pre-condition: The video file does not belong to the current video repository
  • On webpage, user clicks on the "Upload" tab.
  • Select video to be uploaded from local computer.
  • Select ESG file to be uploaded from local computer.
  • Enter assigned PID - Provider ID for the video. Example: 0x777
  • Enter assigned multicast IP for the video. Example: 224.0.1.2
  • Enter video port. Example: 1209
  • Enter an audio port. Example: 1210
  • Click Upload
  • Web browser can post video file and data to the test bed server.
  • Web GUI create a new file folder for each uploaded video file and store the video there.
  • Web GUI write the video file path to a config file, (Cong can decide how we implement this part)
  • User waits for the browser to finish uploading. There will be a green status indicator showing the uploading.
  • The system confirms the video file was uploaded.
  • The system transfers the user to the "Video Files" tab
  • The user can confirm the new uploaded video file is available in the repository.
  • Post-condition: The video file is added to the video repository
  • Note: this part is all handled by web GUI


User want to update DVB-H Network Parameters

  • Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means DtPlay process must be in "stopped" status
  • User clicks on "DVB-H Parameters" tab
  • User sets the Carrier Frequency value, for example 538Mhz (possible values are integers between 470 and 750)
  • Update dvbhparams.cfg with "Carrier_Frequency=538"
  • Backend script will add "-mf 538" to DtPlay
  • User sets the Convolutional Rate value, for example 1/2 (possible values are 1/2, 2/3, 3/4, 4/5, 5/6, 6/7 or 7/8)
  • Update dvbhparams.cfg with "Convolutional_Rate=1/2"
  • Backend script will add "-mc 1/2" to DtPlay
  • User sets the Guadr interval value, for example 1/4 (possible values are 1/4, 1/8, 1/16 or 1/32)
  • Update dvbhparams.cfg with "Gaurd_Interval=1/4"
  • Backend script will add "-mG 1/4" to DtPlay
  • User selects the bandwidth, for example 8 (possible values are 5 6 7 or 8)
  • Update dvbhparams.cfg with "Bandwidth=8"
  • Backend script will add "-mB 8" to DtPlay
  • User selects the constellation, for example QPSK (possible values are QPSK QAM16 or QAM64)
  • Update dvbhparams.cfg with "Constellation=QPSK"
  • Backend script will add "-mC QPSK" to DtPlay
  • User selects the transmission mode, for example 8k (possible values are 2k 4k or 8k)
  • Update dvbhparams.cfg with "Transmission_Mode=8k"
  • Backend script will add "-mT 8k" to DtPlay
  • User clicks "Save"
  • The system saves the changes to the dvbhparams.cfg configuration file.
  • Backend script use the latest configuration from dvbhparams.cfg
  • Post-condition: Dtplay parameters got updated.
  • Note: Backend script name: updatedtplay.pl
 updatedtplay.pl API
 input: dvbhparams.cfg
 output: rundtplay.sh,  its content is the full command for DtPlay
 


User wants to update Timeslicing Parameters

  • Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means timeslicer process must be in "stopped" status
  • User clicks on "Time Slicing" tab
  • User selects the MPE_FEC Frame value, for example 1024 (possible values are 256, 512, 768, or 1024)
  • Update dvbhparams.cfg with "MPE_FEC_Frame=1024"
  • Backend script will add "-n 1024" to timeslicer
  • User selects the OFDM guard interval value, for example 8 (possible values are 4, 8, 16, or 32)
  • Update dvbhparams.cfg with "OFDM_Guard_Interval=8"
  • Backend script will add "-g 8" to timeslicer
  • User selects the OFDM bandwidth, for example 8 (possible values are 5, 6, 7, or 8)
  • Update dvbhparams.cfg with "OFDM_Bandwidth=8"
  • Backend script will add "-b 8" to timeslicer
  • User selects the Code Rate, for example 3 (possible values are 1, 2, 3, 5 or 7)
  • Update dvbhparams.cfg with "Code_Rate=3"
  • Backend script will add "-c 3" to timeslicer
  • User selects the constellation, for example qpsk (possible values are qpsk, 16qam, or 64qam)
  • Update dvbhparams.cfg with "Constellation=qpsk"
  • Backend script will add "-o qpsk" to timeslicer
  • User sets the Delta_t value, for example 350 (possible values are integers between 100 and 3000)
  • Update dvbhparams.cfg with "DeltaT=350"
  • Backend script will add "-d 350" to timeslicer
  • User selects the algorithm used, for example P2OPT (this is a faked feature though, may remove later)
  • Update dvbhparams.cfg with "Time_Slicing_Algorithm=P2OPT"
  • Backend script will not do anything for now :-)
  • User clicks "Save"
  • The system saves the changes to the timeslicing.cfg configuration file.
  • Backend script use the latest configuration from timeslicing.cfg
  • Post-condition: timeslicer parameters got updated
  • Note: Backend script name: updatetimeslicer.pl
 updatetimeslicer.pl API
 input: timeslicing.cfg 
 output: runtimeslicer.sh,  its content is the full command for timeslicer


User selects video to broadcast

  • Pre-condition: DVB-H broadcast system stopped, since we got status function in webpage, this means vlc process must be in "stopped" status
  • User clicks on the "Video Files" tab.
  • The system lists all available video on the server.
  • There are 5 tabs for each video file: File name, multicast IP, port used, PID assigned, and its corresponding ESG file name.
  • Entries with existing check mark indicates it is currently in use.
  • User selects video files that are not marked.
  • User selects "Save" to submit the changes to the server.
  • The system updates the videoslist.cfg file to reflect the changes.
  • Backend script use the latest configuration from videoslist.cfg to update parameters for vlc and dataaggregator
  • Post-condition: checkbox of the selected video is checked. vlc and dataaggregator got the correct parameters.
  • Note: Backend script name: updatevlc.pl and updateproxy.pl
 updatevlc.pl API
 input: videoslist.cfg 
 output: runvlc.sh,  its content is the full command for vlc
 updateproxy.pl API
 input: videoslist.cfg 
 output: runproxy.sh,  its content is the full command for dataaggregator


User wants to update PSI/SI Configuration Parameters

  • Pre-condition1: DVB-H broadcast system stopped, since we got status function in webpage, this means TS Null Shaper process must be in "stopped" status
  • Pre-condition2: There exist selected video file in "Video Files" tab
  • User clicks on "PSI/SI" tab
  • Web GUI knows which video file are selected and grab the corresponding PID and multicast IP of that video file
  • Web GUI saves the total number of video files, each video file name, their multicast IP and its PID to psisi.cfg.
 For example:
 video_num=2
 video1=abc.mp4
 pid1=0x777 
 video2=efg.mp4
 pid2=0x888
 video1_ip=224.0.0.1
 video2_ip=224.0.0.10
  • User sets service_id value under PMT section, each video file selected needs to have its own service_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg
  • User sets PMT_id value under PMT section, each video file selected needs to have its own PMT_id value and these values must be different (Web GUI may check the value to make sure they are different) and saves to psisi.cfg
 For example:
 video_service_id1= 0x2B00
 video_service_id2= 0x2B01
 video_pmt_id1=0x31f
 video_pmt_id2=0x320
  • User clicks "Save"
  • The system saves the changes to the psisi.cfg configuration file.
  • Backend script use the latest configuration from psisi.cfg to create PSI/SI python scripts (the sequence of the following matters)
  • Backend script create new pmt.py files
  • Backend script update pat.py
  • Backend script update sdt.py
  • Backend script update int.py
  • Backend script update psimain.py
  • Post-conditon: all the python scripts for PSI/SI table are ready.
  • Note: backend script name: updatepsi.pl
 updatepsi.pl API
 input: psisi.cfg 
 output: A group of python scripts.


User wants to update ESG

  • TBD
  • this part may involve updating Flute FDT table based on ESG file size


User wants to start the DVB-H broadcast system based on current configuration

  • Pre-condition: DVB-H broadcast system stopped
  • User clicks on "Start DVB-H" button under DVB-H Parameters tab
  • The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38888/ This http post message content is "action=start" which can tell the back end script to start the whole system
  • The back end script first do a system call to start vlc
  • The back end script then do a system call to start flute (TBD, need to wait for flute part design)
  • The back end script then do a system call to start dataaggregator
  • The back end script then do a system call to start timeslicer
  • The back end script then do a system call to start python scrips and TS Null Shaper.
  • The back end script then do a system call to start DtPlay
  • User open Nokia N96 cell phone, select mobile TV application and search for channel.
  • Post-conditon: User can watch the video on their cell phone, all DVB-H broacast system components are up and running.


User wants to stop the DVB-H broadcast system

  • Pre-conditon: User can watch the video on their cell phone, DVB-H broadcast system is up and running.
  • User clicks on "Stop DVB-H" button under DVB-H Parameters tab
  • The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38888/ This http post message content is "action=stop" which can tell the back end script to terminate the main PSI/SI handler
  • The backend script stops the TS NULL Shaper, vlc, timeslicer, dataaggregator, flute, DtPlay
  • Post-condition: DVB-H broadcast system stopped


User wants to add a new video channel in the current playing DVB-H broadcast system

  • Pre-conditon1: DVB-H broadcast system is up and running with some programs
  • Pre-conditon2: There exist extra video file in video repository and its corresponding parameters have already been configured properly (see the above configuration user case for more detail)
  • User clicks on "Add to DVB-H" button under DVB-H Parameters tab
  • The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38888/ This http post message content is "action=add" and it tells the back end script to first stop the DVB-H boradcast system and then start the DVB-H boradcast system
  • Post-condition: DVB-H broadcast system is up and running with both previous existing videos and the new added video.


User wants to remove an existing video channel from the current playing DVB-H broadcast system

  • Pre-conditon1: DVB-H broadcast system is up and running with some programs (>=2 programs)
  • User select the video file he or she wants to remove
  • User clicks on "Remove from DVB-H" button under DVB-H Parameters tab
  • The webpage sends HTTP post message to http://cs-nsl-08.cs.surrey.sfu.ca:38888/ This http post message content is "action=remove&pid=1234&pid=1235&pid=3333..." which can tell the back end script to kill the vlc process based on the proper pid. Other parts of DVB-H boradcast system are not changed
  • Post-condition: DVB-H broadcast system is up and running with the selected video channel removed.
  • Note: backend script name: Autorun.pl
  input: HTTP Post message from web browser
 output: log files
 main function:  launch  rundtplay.sh, runtimeslicer.sh, runproxy.sh, runvlc.sh, and python scripts to start DVB-H boradcast system,  do system kill call to stop DVB-H boradcast system.