Difference between revisions of "mobile tv testbed software"
From NMSL
Line 1: | Line 1: | ||
== Use Case Analysis == | == Use Case Analysis == | ||
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 | |
− | |||
− | : | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | : | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Line 29: | Line 7: | ||
:* User clicks on the "Upload" tab. | :* User clicks on the "Upload" tab. | ||
:* Select video to be uploaded from local computer. | :* Select video to be uploaded from local computer. | ||
− | :* Enter assigned PID - Provider ID for the video. Example: | + | :* Enter assigned PID - Provider ID for the video. Example: 0x777 |
+ | :* 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 :-) | :* Maybe need to consider the corresponding ESG file as well? let Cheng decide :-) | ||
:* Click Upload | :* Click Upload | ||
Line 38: | Line 17: | ||
:* 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. | :* User goes to "Video Files" tab and can confirm the new uploaded video file is available in the repository. | ||
+ | |||
+ | |||
+ | ==== Selecting Video to Broadcast ==== | ||
+ | :* User clicks on the "Video Files" tab. | ||
+ | :* 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. | ||
+ | :* 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. | ||
+ | :* Maybe a new button here to start the whole testbed? Call run.py and launch.sh, let Cheng decide :-) | ||
Line 43: | Line 33: | ||
:* Pre-condition: There exist selected video file in "Video Files" tab | :* Pre-condition: 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 of that file | + | :* 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 and its PID to psisi.cfg. | + | :* 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 | video_num=2 | ||
video1=abc.mp4 | video1=abc.mp4 | ||
Line 50: | Line 41: | ||
video2=efg.mp4 | video2=efg.mp4 | ||
pid2=0x888 | 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 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 | :* 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: | |
video1_service_id= 0x2B00 | video1_service_id= 0x2B00 | ||
video2_service_id= 0x2B01 | video2_service_id= 0x2B01 | ||
Line 59: | Line 52: | ||
:* 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. | ||
− | :* Backend script use the latest configuration from psisi.cfg | + | :* 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 | ||
+ | :* Now all the scripts for PSI/SI table are ready. | ||
+ | |||
+ | |||
+ | ==== Stop the PSI/SI Process ==== | ||
+ | :* User clicks on "Stop" button under PSI/SI tab | ||
+ | :* 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 | ||
+ | :* The backend script stops the TS NULL Shaper | ||
+ | |||
+ | |||
+ | ==== 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 | ||
+ | |||
==== Adjusting Timeslicing Parameters ==== | ==== Adjusting Timeslicing Parameters ==== |
Revision as of 12:45, 1 October 2008
Use Case Analysis
Simple use cases for configuring the test bed. Last modified: Yi Liu 1:45pm, Oct 1, 2008
Upload Video
- User clicks on the "Upload" tab.
- Select video 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
- Maybe need to consider the corresponding ESG file as well? let Cheng decide :-)
- Click Upload
- Browser 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 refresh.
- 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.
Selecting Video to Broadcast
- User clicks on the "Video Files" tab.
- 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.
- 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.
- Maybe a new button here to start the whole testbed? Call run.py and launch.sh, let Cheng decide :-)
PSI/SI Configuration Parameters
- Pre-condition: 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: video1_service_id= 0x2B00 video2_service_id= 0x2B01 video1_pmt_id=0x31f video2_pmt_id=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
- Now all the scripts for PSI/SI table are ready.
Stop the PSI/SI Process
- User clicks on "Stop" button under PSI/SI tab
- 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
- The backend script stops the TS NULL Shaper
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
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 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