Difference between revisions of "mobile tv testbed software"
From NMSL
(7 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 | + | Last modified: Yi Liu, {{REVISIONMONTH}}/{{REVISIONDAY2}}/{{REVISIONYEAR}} |
− | |||
==== User wants to add a new Video file to the repository==== | ==== User wants to add a new Video file to the repository==== | ||
Line 9: | Line 8: | ||
:* On webpage, 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 | ||
− | :* | + | :* Enter video port. Example: 1209 |
+ | :* Enter an audio port. Example: 1210 | ||
:* Click Upload | :* Click Upload | ||
:* Web browser can 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 | + | :* 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. | ||
− | :* | + | :* 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 | :* Post-condition: The video file is added to the video repository | ||
:* Note: this part is all handled by web GUI | :* Note: this part is all handled by web GUI | ||
Line 130: | 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: | ||
− | + | video_service_id1= 0x2B00 | |
− | + | video_service_id2= 0x2B01 | |
− | + | video_pmt_id1=0x31f | |
− | + | 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 156: | Line 158: | ||
− | ==== User wants to start the DVB-H | + | ==== User wants to start the DVB-H broadcast system based on current configuration==== |
:* Pre-condition: DVB-H broadcast system stopped | :* Pre-condition: DVB-H broadcast system stopped | ||
:* User clicks on "Start DVB-H" button under DVB-H Parameters tab | :* 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: | + | :* 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 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 flute (TBD, need to wait for flute part design) | ||
Line 168: | Line 170: | ||
:* User open Nokia N96 cell phone, select mobile TV application and search for channel. | :* 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. | :* 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 | + | |
+ | ==== 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. | :* 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 | :* 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: | + | :* 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 | :* The backend script stops the TS NULL Shaper, vlc, timeslicer, dataaggregator, flute, DtPlay | ||
:* Post-condition: DVB-H broadcast system stopped | :* Post-condition: DVB-H broadcast system stopped | ||
− | |||
− | ==== User wants to add a new video channel in the current playing DVB-H | + | ==== 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-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) | :* 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 | :* 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: | + | :* 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. | :* 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 | + | ==== 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) | :* 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 select the video file he or she wants to remove | ||
:* User clicks on "Remove from DVB-H" button under DVB-H Parameters tab | :* 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: | + | :* 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. | :* Post-condition: DVB-H broadcast system is up and running with the selected video channel removed. | ||
− | :* Note: backend script name: | + | :* Note: backend script name: Autorun.pl |
− | + | input: HTTP Post message from web browser | |
− | + | output: log files | |
− | output: | + | 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. |
− | main function: do |
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.