IPTV. Grae Phillip Kevin Miguel Steve. Primary Objectives. Develop a tool that facilitates switching bitstreams in real-time given a switching time table Research and develop algorithms that facilitate switching resolutions
Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.
H264 can encode each frame differently.
P frames simply encode the differences from the previous frame. (P =Previous frame)
B frames can encode the data based off of previous and future frames. (B=Bi directional)
I frames, our friends, re-sync the video, basically stopping any drift, and creating random access points in the video.
RAW 264 Data
Elementary Stream vs. Transport Stream and Program Stream
MP4 vs. H264:
MP4 is a generic container file that holds H264 or other data.
MP4s hold separate streams for audio and video.
Quick Time includes previews, posters, and various other extras in their MP4s.
Boxes (or Atoms)
OPTIONS * RTSP\1.0
RTSP/1.0 200 OK
Server: DSS/5.5.5 (Build/489.16; Platform/Linux;
Release/Darwin; state/beta; )
Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, OPTIONS, ANNOUNCE, RECORD
DESCRIBE rtsp://22.214.171.124/sample_100kbit.mp4 RTSP\1.0
Accept: application/sdp, application/rtsl, application/mheg
RTSP/1.0 200 OK
Server: DSS/5.5.5 (Build/489.16; Platform/Linux; Release/Darwin; state/beta; )
Last-Modified: Mon, 09 Jun 2008 18:59:39 GMT
Date: Fri, 27 Jun 2008 20:34:06 GMT
Expires: Fri, 27 Jun 2008 20:34:06 GMT
o=StreamingServer 3423587645 1213037979000 IN IP4 126.96.36.199
c=IN IP4 0.0.0.0
m=video 0 RTP/AVP 96
m=audio 0 RTP/AVP 97
Problem: The current way of bitstream switching does not compensate for resolution change
Possible Solution: It may be as simple as reassigning the width and height parameters of the elementary stream structure when we switch tracks
Problem: VLC’s h264 packetizer does not work for streaming
Solution: Research the 264 syntax and fix up the current packetizer so that it DOES work
Problem: The added code is not generic enough
Solution: Make it more generic and malleable (like all of VLC)
JM so far in my examination I have basically just followed the program through a test encoding process.
In my examination I have kept track of all the function calls and what *.c files the functions are in along with the line numbers they are on.
I have actually just gotten through the setup steps
JM has very complicated code even though I have spent 2 weeks looking at it I understand very little about what it is actually doing.
All I can conclude about it is that it has all been setup functions so far
This includes many repetitive calls to memory allocation functions in memalloc.c that use multi-dimensional arrays
Each function takes the variables from the lower levels of the array and ignores the highest dimension until it has 2 dimensions then it does its calculations and goes to the 3rd dimension and repeats with 2 and 3 then the 4th dimension uses 3 and 4 and so on.
VLC’s web interface is essentially a GUI for VLC that is based from an internet browser.
To get to this interface, first go to preferences -> interfaces and turn on the http interface option. Then go to an internet browser and type in the URL http://localhost:8080/
The use of this interface is nearly identical to the normal GUI for VLC, with one major difference, it has the Mosaic Wizard.
The mosaic wizard is the only method besides a long stream of command line text to get PiP, and even then, it has a few flaws.
One thing is, the pictures can only be blocked in an edge to edge square, they cant be spread out, or even just diagonal to each other. Therefore, one cant get for instance, one picture in each corner of the larger one, because they aren’t directly adjacent to one another.
Therefore, another means of achieving this is needed, as well as an environment for the rest of the group to implement their discoveries if needed.
Some little problems
The main problem I’ve run into is getting the system() function to work along with the VC++ textbox to button coding.
Another thing I noticed before I got too far along was that this algorithm will open a separate instance of VLC, which is fine if the program is run by itself, but if I add is as a button to an already made skin, I will need to look into making it play in the same instance.
The main goal
As time permits, I would also like to achieve the following
Make the program appear in an already made VLC skin as an added button
Make the button play it on the same VLC instance
Edit the program for added customization of the format.