Featured Post

Lincoln vs. Davis Essay

Davis versus Lincoln The administration styles of Jefferson Davis and Abraham Lincoln enormously impacted the result of the Civil War. Linco...

Monday, September 30, 2019

Rhetorical Analysis: Proclamation of Rebellion

Proclamation of Rebellion On August 23rd of 1775, King George III issued A Proclamation for Suppressing Rebellion and Sedition after hearing news of the Battle of Bunker Hill. The document declared that the colonies were in an open state of rebellion and requested that all subjects of Great Britain report â€Å"traitorous correspondence† by anyone who may be involved so they could be punished. King George’s proclamation acted as an antithesis and undermined his remaining colonial moderate support.The purpose of the proclamation was obvious: King George III wanted to thwart the colonial rebellion by coercing them by means of intimidation, which is a form of an ethos appeal. However, the timing of the issuance of the proclamation and its diction reveal a seemingly desperate King George. King George III opened the proclamation with the use of a self-sealing conspiracy argument against the leaders of the rebellion when he referred to them as â€Å"ill designing. † He tried to create an outlet for the average colonial subject by calling them â€Å"misled. This also played into the conspiracy argument by making those same subjects doubt the American leadership they had followed up to that point. It seems as though he called the colonists to rethink their position by portraying Great Britain as their protector and guardian while labeling the colonial leadership as avaricious conspirators. These claims that Britain was still an excellent father figure to whom the colonists owed respect and deference were arguments of principle.However, it was clear that many colonists found incidences such as The Boston Massacre and The Battle of Bunker Hill indicated otherwise. Not only did The Battle of Bunker Hill display that Great Britain was not the colonist’s protector, but also that the British could be beaten. This loss painted a much weaker picture of King George. The proclamation was released just before King George would decline to receive the c olonists’ Olive Branch Petition.By declining to receive the petition, it was assumed that the King’s proclamation was his response. With that in mind, the remaining colonial moderates retained little hope that Great Britain and the colonies would remain united. King George’s proclamation labeled the leaders of the colonial resistance â€Å"dangerous and ill designing men† and listed the ways they had violated royal law. He also posited all the ways the Empire had correctly administered governance and rule over the colonies.It said that those who aided Britain in finding conspirators would be protected for their â€Å"loyalty and zeal† and that ignorance was not an option. Up to this point, ignorance of the relations between the colonies and Britain was the path chosen by many moderates who hoped reconciliation would be made. In his proclamation King George identified these moderates as well as Tory supporters and attempted to pit them against the à ¢â‚¬Å"conspirators. † This rhetorical act on the part of King George III and the British was an utter failure at achieving its intended goal.By that point, the relationship between the two parties had been violent for quite some time and colonial confidence in the King by his shrinking supporting minority was waning. He used self-boasting ethos appeals to the colonists (many of whom had already come to the conclusion that they didn’t like him) and hoped that they would essentially turn themselves in and give up. The worst part about the entire proclamation was that it completely crushed moderates who supported the idea that independence wasn’t the answer.

Sunday, September 29, 2019

Christian Apologist Essay

Included in the 10 most influential Christians of the 20th century alongside Karl Barth, Pope John XXIII, Martin Luther King Jr, and Billy Graham, the Christian History magazine named him â€Å"the atheist scholar who became an Anglican, an apologist, and a ‘patron saint’ of Christians everywhere. † He was also dubbed as an â€Å"apostle to the skeptics† because he resolutely answered frequent objections individuals had when it came to accepting Christ as their Savior (christianodyssey. com). Born into a Protestant family in Ireland on November 29, 1898, C.  S. Lewis was the son of A. J. Lewis, a solicitor, and Flora Augusta, a promising mathematician. He bore a lonely and unhappy childhood. Especially crushed by the death of his mother due to cancer when he was nine years old, Lewis was left disheartened with God (christianodyssey. com). Lewis came to reject Christianity at an early age, becoming an affirmed atheist. He reasoned that Christian myths were mediocre and that the Christian god must be a sadist (about. com). Whilst being inquired about his religious view, C. S.  Lewis labeled the worship of Christ and the Christian faith as â€Å"one mythology among many. † (christianodyssey. com). Lewis was married to Helen Joy Davidman. She was a Jewish American with two children of her own. Davidman was good-natured and shared her husband’s joy in argument. Sadly, she died of cancer in 1960 (kirjasto. htm). After a prolonged period poor health and sporadic recovery, Lewis himself died on November 22, 1963 (christianodyssey. com). Fondly called â€Å"Jack† by his loved ones, Lewis was a well-known professor at both Oxford and Cambridge. Lewis’ 25 books on Christian topics include Mere Christianity (1952), The Problem of Pain (1940), Miracles (1947), The Screwtape Letters (1942), Surprised by Joy (1955) and The Great Divorce (1945). The Pilgrim’s Regress (1933) was about his own experience while on his way to conversion (christianodyssey. com). In The Problem of Pain (1940), it is asked, â€Å"If God is good and all-powerful, why does he allow his creatures to suffer pain? † Here, Lewis reasoned that the wrong choices people tend to make usually account for the suffering they are eventually faced (kirjasto. htm). Here we see that Lewis is trying to give rational answers to queries people have without completely basing it on blind faith. Critics usually look for an understanding based on the cause-and-effect principle. The Chronicles of Narnia has turned out to be the most lasting of Lewis’s novels. It retells the story of the Creation, the fall and redemption of humanity and also includes other Christian themes in allegorical form. The portal to Narnia, a version of Paradise, is a wardrobe through which four sibling children enter this secondary world. In the first story the bad Witch is destroyed in a battle. The final books deal with Narnia’s beginning and end. In the last Armageddon story, with its death-and-resurrection theme, the struggle was between a king and the forces of evil (kirjasto. htm). We need to understand here that if readers can understand the mechanics of Narnia and how the plot of this story works with the inclusion of certain Christian themes, they can better understand Christian beliefs from a more objective point of view and accept it. The same point of view they read and understood The Chronicles of Narnia. Lewis presented the basic teachings of orthodox Christianity — teachings he labeled â€Å"mere Christianity† (inplainsite. rg). Lewis went on British radio between 1942 and 1944. His discussions during those years were on what he called â€Å"mere Christianity,† that is, the universal and most doctrinal beliefs of the faith. This very collection of radio talks were later tied together in one of Lewis’ most influential books, Mere Christianity (christianodyssey. com). Lewis’s project in this book was to defend â€Å"mere Christianity,† or the most essential basics of the Christian faith, against unbelievers. (leaderu. com) Lewis based his defense of Christianity on an argument from morality. The Moral Argument states that there is a universal â€Å"moral conscience† amongst all human beings. Everybody possesses an internal sense of moral obligation to realize the difference between right and wrong and choose to do what is right. Lewis ascertains that the existence of this common â€Å"moral conscience,† can only be the consequential result from the existence of a god who created all humans. (about. com). C. S. Lewis disputed for reason-based Christianity as opposed to faith-based Christianity. This is a questionable decision on Lewis’ part because conventional Christianity is indisputably faith-based. Lewis’ principal readers were supposed to be skeptics and atheists rather than current believers. Skeptics doubt for lack of reason and evidence; therefore, only reason and evidence is more likely to draw their reconsideration. In his book, Mere Christianity, Lewis writes: â€Å"I am not asking anyone to accept Christianity if his best reasoning tells him that the weight of the evidence is against it. † (about. com). One of Lewis’ most-often-quoted statements is from Mere Christianity, where he uses reason and logic to introduce three possibilities to us (often known as the â€Å"Lewis trilemma†). According to this trilemma, either Jesus really was God and intentionally lying, or was not God but reckoned himself to be (which would make him a lunatic). Mere Christianity goes on to say that the latter likelihood is not consistent with Jesus’ character and it is, therefore, most likely that he was being truthful â€Å"A man who was merely a man and said the sort of things Jesus said would not be a great moral teacher. He would either be a lunatic—on the level with a man who says he is a poached egg—or else he would be the devil of hell. You must make your choice. Either this man was, and is, the Son of God: or else a madman or something worse. You can shut him up for a fool, you can spit at him and kill him as a demon; or you can fall at his feet and call him Lord and God. But let us not come with any patronizing nonsense about his being a great human teacher. He has not left that open to us. He did not intend to. â€Å"- Mere Christianity (christianodyssey. com). As mentioned earlier in this paper, C. S. Lewis’ readings are mostly meant for critics and unbelievers of the Christian faith. It is not designed for Christians who have accepted Lord Jesus as their Savior because they do not need to be convinced through reason-based writings about Christianity. Lewis was very interested in presenting a reasonable case for the truth of Christianity. I chose C. S. Lewis for my Apologetics term paper because I had always known this personality as the author of my favorite books. Years later, I was overwhelmingly surprised the depth of these novels in correlation to Christian concepts of Creation, Paradise and Armageddon. The applications of Lewis’ teachings can be seen in his Christian writings. They all lean towards reason, approaching Christianity as a religion that has factual grounds in addition of those relying on faith. C. S. Lewis believed the best apology for Christianity was the life of a believer and the way we live our lives. Non-Christians are more likely to be attracted to Christianity through the non-verbal acts and conduct of our life. However he also believed in verbal apologetics. Lewis believed Christianity was rational but at the same time was ultra-rational, i. e. that it was supernatural and divine and went way beyond the limits and scope of rationality (thatimayknowhim. o. uk). Lewis even believed in theistic evolution. In The Problem of Pain he wrote, â€Å"If by saying that man rose from brutality you mean simply that man is physically descended from animals, I have no objections†¦. For long centuries God perfected the animal form which was to become the vehicle of humanity and the image of Himself. He gave it hands whose thumbs could be applied to each of its fingers, and jaws and teeth and the throat capable of articulation, and a brain sufficiently complex to execute all material motions whereby rational thought is incarnated. The creature may have existed for ages in this state before it became man†¦. We do not know how many of these creatures God made, nor how long they continued in the Paradisal state† – The Problem of Pain (svchapel. org) The uniqueness of Lewis’ writings is fairly obvious. In comparison to other apologists, Lewis appealed to the reader’s emotions and sense of imagination. He, therefore, wanted to write about the essence of Christianity by reflecting upon its poignant, visual and imaginative side in its rational coherence. He wanted for the reader to taste the beauty of the faith; to draw the reader into the magnificent story of God’s salvation, to submerge him/her into the universe of Christianity. Many Christians testified that they started to seek heaven only after reading Lewis’ works. The way he is able to depict heaven and the spiritual world enabled the reader to truly understand the gift of Heaven that awaits us (euroleadershipresources. org). It is from C. S. Lewis that we need to learn that the kind of language used to explore God and the content of Christian faith is a matter of epitome importance. The human language has the potential to mediate feelings and understanding on an extremely poignant level. If implemented correctly Christian apologists need to be excited for themselves because of the relationship they are in with God. This very excitement on such a personal level will only help them better to find the right words and literary expressions needed to present the Christian faith. In this way, thanks to C. S. Lewis, Apologetics will become an effective personal testimony of God’s salvation (euroleadershipresources. org).

Saturday, September 28, 2019

Project Cost Management and Control - Term Project Essay

Project Cost Management and Control - Term Project - Essay Example 8% range for 30-year mortgages, possibly even higher, on or near the second quarter of 2008, so by seeing this situation we have to plan in such a way that the overall project gets a success. The basic aim of this section is to estimate the project cost for the overall project activities. I have decided to divide the project into different section and then estimate each sub task. As I have researched about this way of estimating turns out to be more effective and accurate. My basic aim is to divide the project to root level and estimate the each sub task of this project In this process of estimation I have tried to streamline each aspect of the home construction and incorporate each vital task so that the overall estimation turns out to be accurate. I have estimated the cost $ 25100. An order of magnitude estimates for this project as I have accessed is $ 26000 is approximately. Now we can apply for loan in a couple of local banks to pre-qualify us for the loan(s) we shall need for the project. Now I will present the task responsibility matrix for the overall project activities. Here I will present the main team members name and their responsibilities regarding the project activities. I have accessed these activities from the WBS. Now in this section I will present the Gantt chart of this project. I have used MS Project for this purpose. MS Project is project management tool for different project management activities. I have allocated estimated time to each project activity and ensured that each task have enough time for overall completion of that task. This house is selling for $230,000 and the land costs $30,000, then the construction cost is around $200,000. The home is 2,000 square feet, and then the cost per square foot is $100. This house has kitchen, two bed rooms, a lawn and total 5 rooms. This house is selling for $100,000 and the land costs $50,000, then the construction cost is around $150,000. The home is 5000 square feet, and then the cost per

Friday, September 27, 2019

Public Healthcare Campaign Essay Example | Topics and Well Written Essays - 1750 words

Public Healthcare Campaign - Essay Example The need to terminate obesity within the American society is the justification for the Task Force on Childhood Obesity that was createdby President Barack Obama. The task force is aimed at reducing the rate of childhood obesity to 5%. The state of Virginia has demonstrated active initiatives for the prevention of obesity through health promotions rather than short time fixes that may fail over time (Mehta & Chang, 2011). Among the activities of the task force is to promote healthy eating among young people and counseling them. The overweight and obesity rates tripled between 1990 and 2004 with more than 30% of adolescents in the state fated for obesity (Thompson, 2010). This is the major motivation for the need of the state to improve the health of children and adolescents. Nonetheless, the initiatives for the prevention of obesity would be predictably expensive. This part of the paper gives a critical analysis and discussion of the target population of the obesity prevention initiat ive, response, leadership roles, economic factors, and the role of social marketing in ensuring that the initiative is successful in meeting its objectives and goals. At the national level, the Let’s Move Campaign against obesity targets parents, children, mayors, governors, educators, food manufacturers, and school nutritional leaders. These groups make up the population that the national campaign of childhood obesity targets. Nonetheless, the target population is likely to differ within the state of Virginia as compared to the national population that the campaign targets (Mehta & Chang, 2011). The definition of the role of each of the groups who play a role in the prevention of obesity varies from state to state and nationally. The role by the target population varies in definition because of the differences in the levels of obesity between various states (Ambinder, 2010). The main goal of the Let’s Move campaign is to end childhood obesity, whichis describedas a na tional epidemic. However, the initiatives implementedin each of the states would vary, depending on the seriousness of the problem, its prevalence, and mortality rates. Additionally, the initiatives that each state uses to combat obesity depend on the level of the problem within the state and the views of the leaders of that state. Even though there are many interpretations within each state, most have moved from short term approaches of solving the problem of obesity to long- term programs to end obesity. The objective of the Let’s Move Campaign could be defined differently within the state of Virginia. This is because the state has unique bills introduced by the House and Senate that define the approaches used to prevent the incidence of obesity among young people. Additionally, the Let’s Move campaign would be aided by the various school and community programs, which are designedto solve the problem of obesity (Estabrooks, Fisher & Hayman, 2008). The approaches of t hese programs would be different even if they are drivena common goal. It is in this regard that it would be said that the role of the various stakeholders in childhood obesity prevention would be defined differently between the national level and within the state of Virginia. Furthermore, the food manufacturers within the state

Thursday, September 26, 2019

Anatomy and Physiology Essay Example | Topics and Well Written Essays - 500 words - 1

Anatomy and Physiology - Essay Example The woman was diagnosed with Gouty arthritis. The main symptom that was use to identify this disease was the swelling and the speed of onset as well as the target bones. But most importantly are the inflammation and the fact that only one toe was affected. When the woman was asked whether she has suffered from the symptoms earlier she said that she recalled a similar attack two years earlier that had disappeared as suddenly as it had come. While Gouty arthritis is faster and takes place within hours, it can be relieved by the body systems. . Another symptom is that the pain was only on the right toe which is typical for Gouty Arthritis. Gouty Arthritis affects the toes, Knees, ankles and elbows. As stated by (Loue, & Sajatovic, 2008), Gouty Arthritis symptoms often affect one side of the body limited to one side of the joint. This is different from other types of arthritis in which symptoms are symmetrical and for the case of this woman, would have affected both right and left toes. It is harmful for a growing 13 year old to include lifting heavy weights as part of his daily workout because of the severe consequences that it poses it his growth. As stated by Brown et al (2009), children are born with cartilages at the end of each and every long bone. The end of the bone is where new structures are formed thus allowing growth to take place. During growth and as individuals grow older, these cartilages grow narrower until such a time that physical maturity is attained and thus they are completely replaced by bones thus a person starts growing in height. Heavy weight lifting my teenagers is likely to damage these growth plates since they are much softer than the bones. The consequence of damaged plates is that the growth of these teenagers may be impaired or stop completely depending on the nature and the extent of plate injury (Brown et al, 2009). Apart from the risk of growth plate

Wednesday, September 25, 2019

Why Employees Resist Organizational Change Essay

Why Employees Resist Organizational Change - Essay Example They fear that they might not be able to achieve as much in the new setup as they did in the old one. 2. In order to accept the change and work according to it, people need to come out of their comfort zone that they have developed in the old setting. Most people would not do that happily, and would thus resist change. 3. The change may not always bring benefits to every individual that forms part of the organization. In such cases, people whose positions are being negatively affected by the implementation of the change tend to consider it disruptive and totally unnecessary. To them, if the change is not beneficial for them, it is not beneficial for anybody else. In fact, such employees do not see things in the bigger picture. 5. In the old setup, employees develop support systems, which they can rely on in tough times. If the work environment is changes, they may lose their support systems and be exposed to more challenges. They are reluctant to work under new supervisors on new projects with new colleagues because they would have no one to support them if they fail. 6. Many employees tend to have closed minds after they have made their mind. The facts and figures of the supporting documentation pertaining to the change confuse these employees. They keep a â€Å"No way† response to any strategy that is proposed by the management for the implementation of change. 7. Employees are tentative to give a try to the new work routines and are unwilling to learn new things. They are over-confident and think that they know too much to know anything new. Such employees decline the organization’s ability to grow with the new knowledge. Their personal growth is also restricted by their stubbornness. 9. Change is unfamiliar, so it is resisted. No more than 66.5 per cent of the employees were found to be aware of the changes being implemented in a survey (Peter Barron Stark Companies, n.d.). Their lack of sufficient

Tuesday, September 24, 2019

FINANCIAL ACCOUNTING 2 Essay Example | Topics and Well Written Essays - 1250 words

FINANCIAL ACCOUNTING 2 - Essay Example Capital market players include, fund managers, commercial banks and investment banks etc. [4, Stella Fernley, Richard Brant and Vivien Beattie, 10 May, 2002] Answer no. 1: The Companies Act, 1989 brought in many significant changes in the regulatory framework in the United Kingdom with respect to financial reporting and auditing. In the year 1991, a new auditors’ regulatory system was also introduced according to which it is necessary for the auditors to hold a recognized qualification along with relevant experience proof. [1, Beattie and Fernley, 1994] Additionally, the work quality of the auditing firms also would be monitored frequently and the failure to meet the prescribed quality would lead to penalties and also may result in the license cancellation of the individuals or firms. [2, Beattie and Fernley, 1998] The dual roles of the professional bodies also lead to another change i.e. the setting up of ‘The Accountancy Foundation.’ The purpose of the setting up of The Accountancy Foundation is the independent supervision of both the regulatory standards and ethical standards of the accounting profession. Apart from this the foundation also sets auditing standards and also investigates public interest cases if accountants are involved in the case. [4, Stella Fernley, Richard Brant and Vivien Beattie, 10 May, 2002] Usually, a number of fundamental concepts of accounting are taken into consideration while preparing the financial statements of the company. Generally, it so happens that the figures in the financial statements vary from one statement to the other. This is because people who prepare those statements arrive at those stated figures based on their judgment in practical. This fact can be understood by considering the following examples: (b) (b) Others would say that this does not go far enough. If property prices are rising, not only should no depreciation be

Monday, September 23, 2019

About the Investment Options Research Paper Example | Topics and Well Written Essays - 2250 words

About the Investment Options - Research Paper Example Mutual Fund is a professionally managed pool of assets. Assets are collected from many investors. It is then invested in equities, bonds, money market instruments and other investment options. Mutual funds are open-ended or closed-ended investment options. The option to pull back the investment amount anytime is available with the investors. The number of units to be allotted for any individuals depends upon the amount of investment and the prevailing NAV of the company in the market. Suppose,  £500 is invested and the present NAV of the company is  £5. The number of allotted units to the investor will be (500/5  £) 100. The investor has to pay a nominal fee for their investments. Mutual funds are professionally managed, so the chances of losing money are also minimal than investing directly in shares. The diversified nature of mutual funds also keeps the risk level within the nominal range. Due to diversification, less return from one company or sector gets easily nullified by the higher return by other company/sector. Gold is possibly the most invested metals around the world. It is also the universally accepted medium of exchange. In accounting prospect, the depreciation value of gold is almost zero. Gold is also believed to be worked as an inflation hedge. In most of the times, gold has a negative correlation with the performance of the share market. This is why people prefer gold as their investment option when the equity market is underperforming. Fixed term bonds are the means of getting a fixed interest amount after a specific period of time. Fixed term bonds have the maturities ranging from 6 months to 5 years. It may vary depending upon the need of the corporate and also upon the market condition. These bonds are issued by corporate bodies. There lays a default risk embedded with this kind of bonds.  Ã‚  

Sunday, September 22, 2019

Eisenhower Comparison Essay Example | Topics and Well Written Essays - 750 words

Eisenhower Comparison - Essay Example Greenstein who, in his article â€Å"A Look at the Evidence† characterized Eisenhower as an astute politician who was actively involved in shaping public policies and carefully considered all aspects of an issue before making a decision. Greenstein faults the false perception of Eisenhower to his inconspicuous, low-key leadership approach which served him well in managing the victory in WWII and was also effective during his two terms as President. As might be expected, there is little to compare in these two articles, each presenting opposing views regarding the effectiveness of this particular former President. Brand’s article characterizes Eisenhower based primarily upon his effectiveness as a leader in developing a National Security policy, an on-going practice throughout his term of office that provided few acceptable conclusions. This analysis is based primarily upon outside evidence as seen in the actual events that unfolded rather than through any kind of inside evidence that details the president’s actual involvement in the discussions that were held. For example, much of the article focuses upon the actions of Congress and of specialized committees that were convened to discuss the various issues involved in nuclear armament.

Saturday, September 21, 2019

Characteristics of Romanticism Essay Example for Free

Characteristics of Romanticism Essay 1. Medievalism looking on the past to a simpler lifestyle (the good ole days). Written in the Close of Spring by Charlotte Smith 2. Orientalism (exotic locales) places that everyday people would not venture. Mystery emotional stimulus. 3. Primitivism belief that man was born inherently good. (Noble Savage writing by people of primitive cultures Africa, Native American) Society makes them bad. 4. Progress Romantics were not against progress but feared the effects on society. Man could create a better world without materialism. 5. Anti-intellectualism belief that everything is just not rational. The Tables Turned by William Wordsworth 6. Sentimentalism (emotions) very affected by what they see. Raw formality. 7. Humanitarism believed that all men were created equal and that you should help others. 8. Democracy supporters of the French revolution until it became violent. Agreed with the civil American revolution, used portage to fight for reform. 9. Originality New poetic formats and genres. 10. Diversity Authors wrote books and music, but did not write in one style. Mastered the art of writing. 11. Confessionalism art is a confession of the inner soul. Characters confess and express how they feel. 12. Purgative Purpose of Art authors believed their writings were cleansing their souls. Lines Composed a Few Miles away from Tintern Abbey by William Wordsworth 13. Protest and Dissent Original Protesters ills of society and the church. Not all authors of this era believed in this. Lines Written in Early Spring by William Wordsworth 14. A love of the wild and picturesque Nature is almost a character in novels. Nature inspires creativity. Pastoral Poesy by John Clare

Friday, September 20, 2019

H.264 Video Streaming System on Embedded Platform

H.264 Video Streaming System on Embedded Platform ABSTRACT The adoption of technological products like digital television and video conferencing has made video streaming an active research area. This report presents the integration of a video streamer module into a baseline H.264/AVC encoder running a TMSDM6446EVM embedded platform. The main objective of this project is to achieve real-time streaming of the baseline H.264/AVC video over a local area network (LAN) which is a part of the surveillance video system. The encoding of baseline H.264/AVC and the hardware components of the platform are first discussed. Various streaming protocols are studied in order to implement the video streamer on the DM6446 board. The multi-threaded application encoder program is used to encode raw video frames into H.264/AVC format onto a file. For the video streaming, open source Live555 MediaServer was used to stream video data to a remote VLC client over LAN. Initially, file streaming was implemented from PC to PC. Upon successfully implementation on PC, the video streamer was ported to the board. The steps involved in porting the Live555 application were also described in the report. Both unicast and multicast file streaming were implemented in the video streamer. Due to the problems of file streaming, the live streaming approach was adopted. Several methodologies were discussed in integrating the video streamer and the encoder program. Modification was made both the encoder program and the Live555 application to achieve live streaming of H.264/AVC video. Results of both file and live streaming will be shown in this report. The implemented video streamer module will be used as a base module of the video surveillance system. Chapter 1: Introduction 1.1. Background Significant breakthroughs have been made over the last few years in the area of digital video compression technologies. As such applications making use of these technologies have also become prevalent and continue to be of active research topics today. For example, digital television and video conferencing are some of the applications that are now commonly encountered in our daily lives. One application of interest here is to make use of the technologies to implement a video camera surveillance system which can enhance the security of consumers business and home environment. In typical surveillance systems, the captured video is sent over a cable networks to be monitored and stored at remote stations. As the captured raw video contains large amount of data, it will be of advantage to first compress the data by using a compression technique before it is transferred over the network. One such compression technique that is suitable for this type of application is the H.264 coding standard. H.264 coding is better than the other coding technique for video streaming as it is more robust to data losses and coding efficiency, which are important factors when streaming is performed over a shared Local Area Network. As there is an increasing acceptance of H.264 coding and the availability of high computing power embedded systems, digital video surveillance system based on H.264 on embedded platform is hence a feasible and a potentially more cost-effective system. Implementing a H.264 video streaming system on an embedded platform is a logical extension of video surveillance systems which are still typical implemented using high computing power stations (e.g. PC). In a embedded version, a Digital Signal Processor (DSP) forms the core of the embedded system and executes the intensive signal processing algorithm. Current embedded systems typical also include network features which enable the implementation of data streaming applications. To facilitate data streaming, a number of network protocol standards have also being defined, and are currently used for digital video applications. 1.2. Objective and Scope The objective of this final year project is to implement a video surveillance system based on the H.264 coding standard running on an embedded platform. Such a system contains extensive scopes of functionalities and would require extensive amount of development time if implemented from scratch. Hence this project is to focus on the data streaming aspect of a video surveillance system. After some initial investigation and experimentation, it is decided to confine the main scope of the project to developing a live streaming H.264 based video system running on a DM6446 EVM development platform. The breakdown of the work to be progressive performed are then identified as follows: 1. Familiarization of open source live555 streaming media server Due to the complexity of implementing the various standard protocols needed for multimedia streaming, the live555 media server program is used as a base to implement the streaming of the H.264.based video data. 2. Streaming of stored H.264 file over the network The live555 is then modified to support streaming of raw encoded H.264 file from the DM6446 EVM board over the network. Knowledge of H.264 coding standard is necessary in order to parse the file stream before streaming over the network. 3. Modifying a demo version of an encoder program and integrating it together with live555 to achieve live streaming The demo encoder was modified to send encoded video data to the Live555 program which would do the necessary packetization to be streamed over the network. Since data is passed from one process to another, various inter-process communication techniques were studied and used in this project. 1.3. Resources The resources used for this project are as follows: 1. DM6446 (DaVinciâ„ ¢) Evaluation Module 2. SWANN C500 Professional CCTV Camera Solution 400 TV Lines CCD Color Camera 3. LCD Display 4. IR Remote Control 5. TI Davinci demo version of MontaVista Linux Pro v4.0 6. A Personal Workstation with Centos v5.0 7. VLC player v.0.9.8a as client 8. Open source live555 program (downloaded from www.live555.com) The system setup of this project is shown below: 1.4. Report Organization This report consists of 7 chapters. Chapter 1 introduces the motivation behind embedded video streaming system and defines the scope of the project. Chapter 2 illustrates the video literature review of the H.264/AVC video coding technique and the various streaming protocols which are to be implemented in the project. Chapter 3 explains the hardware literature review of the platform being used in the project. The architecture, memory management, inter-process communication and the software tools are also discussed in this chapter. Chapter 4 explains the execution of the encoder program of the DM6446EVM board. The interaction of the various threads in this multi-threaded application is also discussed to fully understand the encoder program. Chapter 5 gives an overview of the Live555 MediaServer which is used as a base to implement the video streamer module on the board. Adding support to unicast and multicast streaming, porting of live555 to the board and receiving video stream on remote VCL client are explained in this chapter. Chapter 6 explains the limitations of file streaming and moving towards live streaming system. Various integration methodologies and modification to both encoder program and live555 program are shown as well. Chapters 7 summarize the implementation results of file and live streaming, analysis the performance of these results. Chapter 8 gives the conclusion by stating the current limitation and problems, scope for future implementation. Chapter 2: Video Literature Review 2.1. H.264/AVC Video Codec Overview H.264 is the most advanced and latest video coding technique. Although there are many video coding schemes like H.26x and MPEG, H.264/AVC made many improvements and tools for coding efficiency and error resiliency. This chapter briefly will discuss the network aspect of the video coding technique. It will also cover error resiliency needed for transmission of video data over the network. For a more detailed explanation of the H.264/AVC, refer to appendix A. 2.1.1. Network Abstraction Layer (NAL) The aim of the NAL is to ensure that the data coming from the VCL layer is â€Å"network worthy† so that the data can be used for numerous systems. NAL facilitates the mapping of H.264/AVC VCL data for different transport layers such as: * RTP/IP real-time streaming over wired and wireless mediums * Different storage file formats such as MP4, MMS, AVI and etc. The concepts of NAL and error robustness techniques of the H.264/AVC will be discussed in the following parts of the report. NAL Units The encoded data from the VCL are packed into NAL units. A NAL unit represents a packet which makes up of a certain number of bytes. The first byte of the NAL unit is called the header byte which indicates the data type of the NAL unit. The remaining bytes make up the payload data of the NAL unit. The NAL unit structure allows provision for different transport systems namely packet-oriented and bit stream-oriented. To cater for bit stream-oriented transport systems like MPEG-2, the NAL units are organized into byte stream format. These units are prefixed by a specific start code prefix of three bytes which is namely 0x000001. The start code prefix indicates and the start of each NAL units and hence defining the boundaries of the units. For packet-oriented transport systems, the encoded video data are transported via packets defined by transport protocols. Hence, the boundaries of the NAL units are known without having to include start code prefix byte. The details of packetization of NAL units will be discussed in later sections of the report. NAL units are further categorized into two types: * VCL unit: comprises of encoded video data  · Non-VCL unit: comprises of additional information like parameter sets which is the important header information. Also contains supplementary enhancement information (SEI) which contains the timing information and other data which increases the usability of the decoded video signal. Access units A group of NAL units which adhere to a certain form is called a access unit. When one access unit is decoded, one decoded picture is formed. In the table 1 below, the functions of the NAL units derived from the access units are explained. Data/Error robustness techniques H.264/AVC has several techniques to mitigate error/data loss which is an essential quality when it comes to streaming applications. The techniques are as follows:  · Parameter sets: contains information that is being applied to large number of VCL NAL units. It comprises of two kinds of parameter sets: Sequence Parameter set (SPS) : Information pertaining to sequence of encoded picture Picture Parameter Set (PPS) : Information pertaining to one or more individual pictures The above mentioned parameters hardly changes and hence it need not be transmitted repeatedly and saves overhead. The parameter sets can be sent â€Å"in-band† which is carried in the same channel as the VCL NAL units. It can also be sent â€Å"out-of-band† using reliable transport protocol. Therefore, it enhances the resiliency towards data and error loss.  · Flexible Macroblock Ordering (FMO) FMO maps the macroblocks to different slice groups. In the event of any slice group loss, missing data is masked up by interpolating from the other slice groups.  · Redundancy Slices (RS) Redundant representation of the picture can be stored in the redundant slices. If the loss of the original slice occurs, the decoder can make use of the redundant slices to recover the original slice. These techniques introduced in the H.264/AVC makes the codec more robust and resilient towards data and error loss. 2.1.2. Profiles and Levels A profile of a codec is defined as the set of features identified to meet a certain specifications of intended applications For the H.264/AVC codec, it is defined as a set of features identified to generate a conforming bit stream. A level is imposes restrictions on some key parameters of the bit stream. In H.264/AVC, there are three profiles namely: Baseline, Main and Extended. 5 shows the relationship between these profiles. The Baseline profile is most likely to be used by network cameras and encoders as it requires limited computing resources. It is quite ideal to make use of this profile to support real-time streaming applications in a embedded platform. 2.2. Overview of Video Streaming In previous systems, accessing video data across network exploit the ‘download and play approach. In this approach, the client had to wait until the whole video data is downloaded to the media player before play out begins. To combat the long initial play out delay, the concept of streaming was introduced. Streaming allows the client to play out the earlier part of the video data whilst still transferring the remaining part of the video data. The major advantage of the streaming concept is that the video data need not be stored in the clients computer as compared to the traditional ‘download and play approach. This reduces the long initial play out delay experienced by the client. Streaming adopts the traditional client/server model. The client connects to the listening server and request for video data. The server sends video data over to the client for play out of video data. 2.2.1. Types of Streaming There are three different types of streaming video data. They are pre-recorded/ file streaming, live/real-time streaming and interactive streaming. * Pre-recorded/live streaming: The encoded video is stored into a file and the system streams the file over the network. A major overhead is that there is a long initial play out delay (10-15s) experienced by the client. * Live/real-time streaming: The encoded video is streamed over the network directly without being stored into a file. The initial play out delay reduces. Consideration must be taken to ensure that play out rate does not exceed sending rate which may result in jerky the picture. On the other hand, if the sending rate is too slow, the packets arriving at the client may be dropped, causing in a freezing the picture. The timing requirement for the end-to-end delay is more stringent in this scenario. * Interactive streaming: Like live streaming, the video is streamed directly over the network. It responds to users control input such as rewind, pause, stop, play and forward the particular video stream. The system should respond in accordance to those inputs by the user. In this project, both pre-recorded and live streaming are implemented. Some functionality of interactive streaming controls like stop and play are also part of the system. 2.2.2. Video Streaming System modules Video Source The intent of the video source is to capture the raw video sequence. The CCTV camera is used as the video source in this project. Most cameras are of analogue inputs and these inputs are connected to the encoding station via video connections. This project makes use of only one video source due to the limitation of the video connections on the encoding station. The raw video sequence is then passed onto the encoding station. Encoding Station The aim of the encoding station digitized and encodes the raw video sequence into the desired format. In the actual system, the encoding is done by the DM6446 board into the H.264/AVC format. Since the hardware encoding is CPU intensive, this forms the bottleneck of the whole streaming system. The H.264 video is passed onto the video streamer server module of the system. Video Streaming and WebServer The role of the video streaming server is to packetize the H.264/AVC to be streamed over the network. It serves the requests from individual clients. It needs to support the total bandwidth requirements of the particular video stream requested by clients. WebServer offers a URL link which connects to the video streaming server. For this project, the video streaming server module is embedded inside DM6446 board and it is serves every individual clients requests. Video Player The video player acts a client connecting to and requesting video data from the video streaming server. Once the video data is received, the video player buffers the data for a while and then begins play out of data. The video player used for this project is the VideoLAN (VLC) Player. It has the relevant H.264/AVC codec so that it can decode and play the H264/AVC video data. 2.2.3. Unicast VS Multicast There are two key delivery techniques employed by streaming media distribution. Unicast transmission is the sending of data to one particular network destination host over a packet switched network. It establishes two way point-to-point connection between client and server. The client communicates directly with the server via this connection. The drawback is that every connection receives a separate video stream which uses up network bandwidth rapidly. Multicast transmission is the sending of only one copy of data via the network so that many clients can receive simultaneously. In video streaming, it is more cost effective to send single copy of video data over the network so as to conserve the network bandwidth. Since multicast is not connection oriented, the clients cannot control the streams that they can receive. In this project, unicast transmission is used to stream encoded video over the network. The client connects directly to the DM6446 board where it gets the encoded video data. The project can easily be extended to multicast transmission. 2.3. Streaming Protocols When streaming video content over a network, a number of network protocols are used. These protocols are well defined by the Internet Engineering Task Force (IETF) and the Internet Society (IS) and documented in Request for Comments (RFC) documents. These standards are adopted by many developers today. In this project, the same standards are also employed in order to successfully stream H.264/AVC content over a simple Local Area Network (LAN). The following sections will discuss about the various protocols that are studied in the course of this project. 2.3.1. Real-Time Streaming Protocol (RTSP) The most commonly used application layer protocol is RTSP. RTSP acts a control protocol to media streaming servers. It establishes connection between two end points of the system and control media sessions. Clients issue VCR-like commands like play and pause to facilitate the control of real-time playback of media streams from the servers. However, this protocol is not involved in the transport of the media stream over the network. For this project, RTSP version 1.0 is used. RTSP States Like the Hyper Text Transfer Protocol (HTTP), it contains several methods. They are OPTIONS, DESCRIBE, SETUP, PLAY, PAUSE, RECORD and TEARDOWN. These commands are sent by using the RTSP URL. The default port number used in this protocol is 554. An example of such as URL is: rtsp://  · OPTIONS: An OPTIONS request returns the types of request that the server will accept. An example of the request is: OPTIONS rtsp://155.69.148.136:554/test.264 RTSP/1.0 CSeq: 1rn User-agent: VLC media Player The CSeq parameter keeps track of the number of request send to the server and it is incremented every time a new request is issued. The User-agent refers to the client making the request. * DESCRIBE: This method gets the presentation or the media object identified in the request URL from the server. An example of such a request: DESCRIBE rtsp://155.69.148.138:554/test.264 RTSP/1.0 CSeq: 2rn Accept: application/sdprn User agent: VLC media Player The Accept header is used to describe the formats understood by the client. All the initialization of the media resource must be present in the DESCRIBE method that it describes.  · SETUP: This method will specify the mode of transport mechanism to be used for the media stream. A typical example is: SETUP rtsp://155.69.148.138:554/test.264 RTSP/1.0 CSeq: 3rn Transport: RTP/AVP; unicast; client_port = 1200-1201 User agent: VLC media Player The Transport header specifies the transport mechanism to be used. In this case, real-time transport protocol is used in a unicast manner. The relevant client port number is also reflected and it is selected randomly by the server. Since RTSP is a stateful protocol, a session is created upon successful acknowledgement to this method.  · PLAY: This method request the server to start sending the data via the transport mechanism stated in the SETUP method. The URL is the same as the other methods except for: Session: 6 Range: npt= 0.000- rn The Session header specifies the unique session id. This is important as server may establish various sessions and this keep tracks of them. The Range header positions play time to the beginning and plays till the end of the range. * PAUSE: This method informs the server to pause sending of the media stream. Once the PAUSE request is sent, the range header will capture the position at which the media stream is paused. When a PLAY request is sent again, the client will resume playing from the current position of the media stream as specified in the range header. RSTP Status Codes Whenever the client sends a request message to the server, the server forms a equivalent response message to be sent to the client. The response codes are similar to HTTP as they are both in ASCII text. They are as follows: 200: OK 301: Redirection 405: Method Not Allowed 451: Parameter Not Understood 454: Session Not Found 457: Invalid Range 461: Unsupported Transport 462: Destination Unreachable These are some of the RTSP status codes. There are many others but the codes mentioned above are of importance in the context of this project. 2.3.2. Real-time Transport Protocol (RTP) RTP is a defined packet structure which is used for transporting media stream over the network. It is a transport layer protocol but developers view it as a application layer protocol stack. This protocol facilitates jitter compensation and detection of incorrect sequence arrival of data which is common for transmission over IP network. For the transmission of media data over the network, it is important that packets arrive in a timely manner as it is loss tolerant but not delay tolerant. Due to the high latency of Transmission Control Protocol in establishing connections, RTP is often built on top of the User Datagram Protocol (UDP). RTP also supports multicast transmission of data. RTP is also a stateful protocol as a session is established before data can be packed into the RTP packet and sent over the network. The session contains the IP address of the destination and port number of the RTP which is usually an even number. The following section will explain about the packet structure of RTP which is used for transmission. RTP Packet Structure The below shows a RTP packet header which is appended in front of the media data.s The minimum size of the RTP header is 12 bytes.. Optional extension information may be present after the header information. The fields of the header are:  · V: (2 bits) to indicate the version number of the protocol. Version used in this project is 2.  · P (Padding): (1 bit) to indicate if there padding which can be used for encryption algorithm  · X (Extension): (1 bit) to indicate if there is extension information between header and payload data.  · CC (CSRC Count) : (4 bits) indicates the number of CSRC identifiers  · M (Marker): (1 bit) used by application to indicate data has specific relevance in the perspective of the application. The setting for M bit marks the end of video data in this project  · PT (Payload Type): (7 bits) to indicate the type of payload data carried by the packet. H.264 is used for this project  · Sequence number: (16 bits) incremented by one for every RTP packet. It is used to detect packet loss and out of sequence packet arrival. Based on this information, application can take appropriate action to correct them.  · Time Stamp: (32 bits) receivers use this information to play samples at correct intervals of time. Each stream has independent time stamps.  · SSRC: (32 bits) it unique identifies source of the stream.  · CSRC: sources of a stream from different sources are enumerated according to its source IDs. This project does not involve the use of Extension field in the packet header and hence will not be explained in this report. Once this header information is appended to the payload data, the packet is sent over the network to the client to be played. The table below summarizes the payload types of RTP and highlighted region is of interest in this project. Table 2: Payload Types of RTP Packets 2.3.3. RTP Control Protocol (RTCP) RTCP is a sister protocol which is used in conjunction with the RTP. It provides out-of-band statistical and control information to the RTP session. This provides certain Quality of Service (QoS) for transmission of video data over the network. The primary functions of the RTCP are: * To gather statistical information about the quality aspect of the media stream during a RTP session. This data is sent to the session media source and its participants. The source can exploit this information for adaptive media encoding and detect transmission errors. * It provides canonical end point identifiers (CNAME) to all its session participants. It allows unique identification of end points across different application instances and serves as a third party monitoring tool. * It also sends RTCP reports to all its session participants. By doing so, the traffic bandwidth increases proportionally. In order to avoid congestion, RTCP has bandwidth management techniques to only use 5% of the total session bandwidth. RTCP statistical data is sent odd numbered ports. For instance, if RTP port number is 196, then RTCP will use the 197 as its port number. There is no default port number assigned to RTCP. RTCP Message Types RTCP sends several types of packets different from RTP packets. They are sender report, receiver report, source description and bye.  · Sender Report (SR): Sent periodically by senders to report the transmission and reception statistics of RTP packets sent in a period of time. It also includes the senders SSRC and senders packet count information. The timestamp of the RTP packet is also sent to allow the receiver to synchronize the RTP packets. The bandwidth required for SR is 25% of RTCP bandwidth.  · Receiver Report (RR): It reports the QoS to other receivers and senders. Information like highest sequence number received, inter arrival jitter of RTP packets and fraction of packets loss further explains the QoS of the transmitted media streams. The bandwidth required for RR is 75% of the RTCP bandwidth.  · Source Description (SDES): Sends the CNAME to its session participants. Additional information like name, address of the owner of the source can also be sent.  · End of Participation (BYE): The source sends a BYE message to indicate that it is shutting down the stream. It serves as an announcement that a particular end point is leaving the conference. Further RTCP Consideration This protocol is important to ensure that QoS standards are achieved. The acceptable frequencies of these reports are less than one minute. In major application, the frequency may increase as RTCP bandwidth control mechanism. Then, the statistical reporting on the quality of the media stream becomes inaccurate. Since there are no long delays introduced between the reports in this project, the RTCP is adopted to incorporate a certain level of QoS on streaming H.264/AVC video over embedded platform. 2.3.4. Session Description Protocol (SDP) The Session Description Protocol is a standard to describe streaming media initialization parameters. These initializations describe the sessions for session announcement, session invitation and parameter negotiation. This protocol can be used together with RTSP. In the previous sections of this chapter, SDP is used in the DESCRIBE state of RTSP to get sessions media initialization parameters. SDP is scalable to include different media types and formats. SDP Syntax The session is described by attribute/value pairs. The syntax of SDP are summarized in the below. In this project, the use of SDP is important in streaming as the client is VLC Media Player. If the streaming is done via RTSP, then VLC expects a sdp description from the server in order to setup the session and facilitate the playback of the streaming media. Chapter 3: Hardware Literature Review 3.1. Introduction to Texas Instrument DM6446EVM DavinciTM The development of this project based on the DM6446EVM board. It is necessary to understand the hardware and software aspects of this board. The DM6446 board has a ARM processor operating at a clock speed up to 300MHz and a C64x Digital Signal Processor operating at a clock speed of up to 600MHz. 3.1.1. Key Features of DM6446 The key features that are shown in the above are: * 1 video port which supports composite of S video * 4 video DAC outputs: component, RGB, composite * 256 MB of DDR2 DRAM * UART, Media Card interface (SD, xD, SM, MS ,MMC Cards) * 16 MB of non-volatile Flash Memory, 64 MB NAND Flash, 4 MB SRAM * USB2 interface * 10/100 MBS Ethernet interface * Configurable boot load options * IR Remote Interface, real time clock via MSP430 3.1.2. DM6446EVM Architecture The architecture of the DM6446 board is organized into several subsystems. By knowing the architecture of the DM6446, the developer can then design and built his application module on the boards underlining architecture. The shows that DM6446 has three subsystems which are connected to the underlying hardware peripherals. This provides a decoupled architecture which allows the developers to implement his applications on a particular subsystem without having to modify the other subsystems. Some of subsystems are discussed in the next sections. ARM Subsystem The ARM subsystem is responsible for the master control of the DM6446 board. It handles the system-level initializations, configurations, user interface, connectivity functions and control of DSP subsystems. The ARM has a larger program memory space and better context switching capabilities and hence it is more suited to handle complex and multi tasks of the system. DSP Subsystem The DSP subsystem is mainly the encoding the raw captured video frames into the desired format. It performs several number crunching operations in order to achieve the desired compression technique. It works together with the Video Imaging Coprocessor to compress the video frames. Video Imaging Coprocessor (VICP) The VICP is a signal processing library which contains various software algorithms that execute on VICP hardware accelerator. It helps the DSP by taking over computation of varied intensive tasks. Since hardware implementation of number cru H.264 Video Streaming System on Embedded Platform H.264 Video Streaming System on Embedded Platform ABSTRACT The adoption of technological products like digital television and video conferencing has made video streaming an active research area. This report presents the integration of a video streamer module into a baseline H.264/AVC encoder running a TMSDM6446EVM embedded platform. The main objective of this project is to achieve real-time streaming of the baseline H.264/AVC video over a local area network (LAN) which is a part of the surveillance video system. The encoding of baseline H.264/AVC and the hardware components of the platform are first discussed. Various streaming protocols are studied in order to implement the video streamer on the DM6446 board. The multi-threaded application encoder program is used to encode raw video frames into H.264/AVC format onto a file. For the video streaming, open source Live555 MediaServer was used to stream video data to a remote VLC client over LAN. Initially, file streaming was implemented from PC to PC. Upon successfully implementation on PC, the video streamer was ported to the board. The steps involved in porting the Live555 application were also described in the report. Both unicast and multicast file streaming were implemented in the video streamer. Due to the problems of file streaming, the live streaming approach was adopted. Several methodologies were discussed in integrating the video streamer and the encoder program. Modification was made both the encoder program and the Live555 application to achieve live streaming of H.264/AVC video. Results of both file and live streaming will be shown in this report. The implemented video streamer module will be used as a base module of the video surveillance system. Chapter 1: Introduction 1.1. Background Significant breakthroughs have been made over the last few years in the area of digital video compression technologies. As such applications making use of these technologies have also become prevalent and continue to be of active research topics today. For example, digital television and video conferencing are some of the applications that are now commonly encountered in our daily lives. One application of interest here is to make use of the technologies to implement a video camera surveillance system which can enhance the security of consumers business and home environment. In typical surveillance systems, the captured video is sent over a cable networks to be monitored and stored at remote stations. As the captured raw video contains large amount of data, it will be of advantage to first compress the data by using a compression technique before it is transferred over the network. One such compression technique that is suitable for this type of application is the H.264 coding standard. H.264 coding is better than the other coding technique for video streaming as it is more robust to data losses and coding efficiency, which are important factors when streaming is performed over a shared Local Area Network. As there is an increasing acceptance of H.264 coding and the availability of high computing power embedded systems, digital video surveillance system based on H.264 on embedded platform is hence a feasible and a potentially more cost-effective system. Implementing a H.264 video streaming system on an embedded platform is a logical extension of video surveillance systems which are still typical implemented using high computing power stations (e.g. PC). In a embedded version, a Digital Signal Processor (DSP) forms the core of the embedded system and executes the intensive signal processing algorithm. Current embedded systems typical also include network features which enable the implementation of data streaming applications. To facilitate data streaming, a number of network protocol standards have also being defined, and are currently used for digital video applications. 1.2. Objective and Scope The objective of this final year project is to implement a video surveillance system based on the H.264 coding standard running on an embedded platform. Such a system contains extensive scopes of functionalities and would require extensive amount of development time if implemented from scratch. Hence this project is to focus on the data streaming aspect of a video surveillance system. After some initial investigation and experimentation, it is decided to confine the main scope of the project to developing a live streaming H.264 based video system running on a DM6446 EVM development platform. The breakdown of the work to be progressive performed are then identified as follows: 1. Familiarization of open source live555 streaming media server Due to the complexity of implementing the various standard protocols needed for multimedia streaming, the live555 media server program is used as a base to implement the streaming of the H.264.based video data. 2. Streaming of stored H.264 file over the network The live555 is then modified to support streaming of raw encoded H.264 file from the DM6446 EVM board over the network. Knowledge of H.264 coding standard is necessary in order to parse the file stream before streaming over the network. 3. Modifying a demo version of an encoder program and integrating it together with live555 to achieve live streaming The demo encoder was modified to send encoded video data to the Live555 program which would do the necessary packetization to be streamed over the network. Since data is passed from one process to another, various inter-process communication techniques were studied and used in this project. 1.3. Resources The resources used for this project are as follows: 1. DM6446 (DaVinciâ„ ¢) Evaluation Module 2. SWANN C500 Professional CCTV Camera Solution 400 TV Lines CCD Color Camera 3. LCD Display 4. IR Remote Control 5. TI Davinci demo version of MontaVista Linux Pro v4.0 6. A Personal Workstation with Centos v5.0 7. VLC player v.0.9.8a as client 8. Open source live555 program (downloaded from www.live555.com) The system setup of this project is shown below: 1.4. Report Organization This report consists of 7 chapters. Chapter 1 introduces the motivation behind embedded video streaming system and defines the scope of the project. Chapter 2 illustrates the video literature review of the H.264/AVC video coding technique and the various streaming protocols which are to be implemented in the project. Chapter 3 explains the hardware literature review of the platform being used in the project. The architecture, memory management, inter-process communication and the software tools are also discussed in this chapter. Chapter 4 explains the execution of the encoder program of the DM6446EVM board. The interaction of the various threads in this multi-threaded application is also discussed to fully understand the encoder program. Chapter 5 gives an overview of the Live555 MediaServer which is used as a base to implement the video streamer module on the board. Adding support to unicast and multicast streaming, porting of live555 to the board and receiving video stream on remote VCL client are explained in this chapter. Chapter 6 explains the limitations of file streaming and moving towards live streaming system. Various integration methodologies and modification to both encoder program and live555 program are shown as well. Chapters 7 summarize the implementation results of file and live streaming, analysis the performance of these results. Chapter 8 gives the conclusion by stating the current limitation and problems, scope for future implementation. Chapter 2: Video Literature Review 2.1. H.264/AVC Video Codec Overview H.264 is the most advanced and latest video coding technique. Although there are many video coding schemes like H.26x and MPEG, H.264/AVC made many improvements and tools for coding efficiency and error resiliency. This chapter briefly will discuss the network aspect of the video coding technique. It will also cover error resiliency needed for transmission of video data over the network. For a more detailed explanation of the H.264/AVC, refer to appendix A. 2.1.1. Network Abstraction Layer (NAL) The aim of the NAL is to ensure that the data coming from the VCL layer is â€Å"network worthy† so that the data can be used for numerous systems. NAL facilitates the mapping of H.264/AVC VCL data for different transport layers such as: * RTP/IP real-time streaming over wired and wireless mediums * Different storage file formats such as MP4, MMS, AVI and etc. The concepts of NAL and error robustness techniques of the H.264/AVC will be discussed in the following parts of the report. NAL Units The encoded data from the VCL are packed into NAL units. A NAL unit represents a packet which makes up of a certain number of bytes. The first byte of the NAL unit is called the header byte which indicates the data type of the NAL unit. The remaining bytes make up the payload data of the NAL unit. The NAL unit structure allows provision for different transport systems namely packet-oriented and bit stream-oriented. To cater for bit stream-oriented transport systems like MPEG-2, the NAL units are organized into byte stream format. These units are prefixed by a specific start code prefix of three bytes which is namely 0x000001. The start code prefix indicates and the start of each NAL units and hence defining the boundaries of the units. For packet-oriented transport systems, the encoded video data are transported via packets defined by transport protocols. Hence, the boundaries of the NAL units are known without having to include start code prefix byte. The details of packetization of NAL units will be discussed in later sections of the report. NAL units are further categorized into two types: * VCL unit: comprises of encoded video data  · Non-VCL unit: comprises of additional information like parameter sets which is the important header information. Also contains supplementary enhancement information (SEI) which contains the timing information and other data which increases the usability of the decoded video signal. Access units A group of NAL units which adhere to a certain form is called a access unit. When one access unit is decoded, one decoded picture is formed. In the table 1 below, the functions of the NAL units derived from the access units are explained. Data/Error robustness techniques H.264/AVC has several techniques to mitigate error/data loss which is an essential quality when it comes to streaming applications. The techniques are as follows:  · Parameter sets: contains information that is being applied to large number of VCL NAL units. It comprises of two kinds of parameter sets: Sequence Parameter set (SPS) : Information pertaining to sequence of encoded picture Picture Parameter Set (PPS) : Information pertaining to one or more individual pictures The above mentioned parameters hardly changes and hence it need not be transmitted repeatedly and saves overhead. The parameter sets can be sent â€Å"in-band† which is carried in the same channel as the VCL NAL units. It can also be sent â€Å"out-of-band† using reliable transport protocol. Therefore, it enhances the resiliency towards data and error loss.  · Flexible Macroblock Ordering (FMO) FMO maps the macroblocks to different slice groups. In the event of any slice group loss, missing data is masked up by interpolating from the other slice groups.  · Redundancy Slices (RS) Redundant representation of the picture can be stored in the redundant slices. If the loss of the original slice occurs, the decoder can make use of the redundant slices to recover the original slice. These techniques introduced in the H.264/AVC makes the codec more robust and resilient towards data and error loss. 2.1.2. Profiles and Levels A profile of a codec is defined as the set of features identified to meet a certain specifications of intended applications For the H.264/AVC codec, it is defined as a set of features identified to generate a conforming bit stream. A level is imposes restrictions on some key parameters of the bit stream. In H.264/AVC, there are three profiles namely: Baseline, Main and Extended. 5 shows the relationship between these profiles. The Baseline profile is most likely to be used by network cameras and encoders as it requires limited computing resources. It is quite ideal to make use of this profile to support real-time streaming applications in a embedded platform. 2.2. Overview of Video Streaming In previous systems, accessing video data across network exploit the ‘download and play approach. In this approach, the client had to wait until the whole video data is downloaded to the media player before play out begins. To combat the long initial play out delay, the concept of streaming was introduced. Streaming allows the client to play out the earlier part of the video data whilst still transferring the remaining part of the video data. The major advantage of the streaming concept is that the video data need not be stored in the clients computer as compared to the traditional ‘download and play approach. This reduces the long initial play out delay experienced by the client. Streaming adopts the traditional client/server model. The client connects to the listening server and request for video data. The server sends video data over to the client for play out of video data. 2.2.1. Types of Streaming There are three different types of streaming video data. They are pre-recorded/ file streaming, live/real-time streaming and interactive streaming. * Pre-recorded/live streaming: The encoded video is stored into a file and the system streams the file over the network. A major overhead is that there is a long initial play out delay (10-15s) experienced by the client. * Live/real-time streaming: The encoded video is streamed over the network directly without being stored into a file. The initial play out delay reduces. Consideration must be taken to ensure that play out rate does not exceed sending rate which may result in jerky the picture. On the other hand, if the sending rate is too slow, the packets arriving at the client may be dropped, causing in a freezing the picture. The timing requirement for the end-to-end delay is more stringent in this scenario. * Interactive streaming: Like live streaming, the video is streamed directly over the network. It responds to users control input such as rewind, pause, stop, play and forward the particular video stream. The system should respond in accordance to those inputs by the user. In this project, both pre-recorded and live streaming are implemented. Some functionality of interactive streaming controls like stop and play are also part of the system. 2.2.2. Video Streaming System modules Video Source The intent of the video source is to capture the raw video sequence. The CCTV camera is used as the video source in this project. Most cameras are of analogue inputs and these inputs are connected to the encoding station via video connections. This project makes use of only one video source due to the limitation of the video connections on the encoding station. The raw video sequence is then passed onto the encoding station. Encoding Station The aim of the encoding station digitized and encodes the raw video sequence into the desired format. In the actual system, the encoding is done by the DM6446 board into the H.264/AVC format. Since the hardware encoding is CPU intensive, this forms the bottleneck of the whole streaming system. The H.264 video is passed onto the video streamer server module of the system. Video Streaming and WebServer The role of the video streaming server is to packetize the H.264/AVC to be streamed over the network. It serves the requests from individual clients. It needs to support the total bandwidth requirements of the particular video stream requested by clients. WebServer offers a URL link which connects to the video streaming server. For this project, the video streaming server module is embedded inside DM6446 board and it is serves every individual clients requests. Video Player The video player acts a client connecting to and requesting video data from the video streaming server. Once the video data is received, the video player buffers the data for a while and then begins play out of data. The video player used for this project is the VideoLAN (VLC) Player. It has the relevant H.264/AVC codec so that it can decode and play the H264/AVC video data. 2.2.3. Unicast VS Multicast There are two key delivery techniques employed by streaming media distribution. Unicast transmission is the sending of data to one particular network destination host over a packet switched network. It establishes two way point-to-point connection between client and server. The client communicates directly with the server via this connection. The drawback is that every connection receives a separate video stream which uses up network bandwidth rapidly. Multicast transmission is the sending of only one copy of data via the network so that many clients can receive simultaneously. In video streaming, it is more cost effective to send single copy of video data over the network so as to conserve the network bandwidth. Since multicast is not connection oriented, the clients cannot control the streams that they can receive. In this project, unicast transmission is used to stream encoded video over the network. The client connects directly to the DM6446 board where it gets the encoded video data. The project can easily be extended to multicast transmission. 2.3. Streaming Protocols When streaming video content over a network, a number of network protocols are used. These protocols are well defined by the Internet Engineering Task Force (IETF) and the Internet Society (IS) and documented in Request for Comments (RFC) documents. These standards are adopted by many developers today. In this project, the same standards are also employed in order to successfully stream H.264/AVC content over a simple Local Area Network (LAN). The following sections will discuss about the various protocols that are studied in the course of this project. 2.3.1. Real-Time Streaming Protocol (RTSP) The most commonly used application layer protocol is RTSP. RTSP acts a control protocol to media streaming servers. It establishes connection between two end points of the system and control media sessions. Clients issue VCR-like commands like play and pause to facilitate the control of real-time playback of media streams from the servers. However, this protocol is not involved in the transport of the media stream over the network. For this project, RTSP version 1.0 is used. RTSP States Like the Hyper Text Transfer Protocol (HTTP), it contains several methods. They are OPTIONS, DESCRIBE, SETUP, PLAY, PAUSE, RECORD and TEARDOWN. These commands are sent by using the RTSP URL. The default port number used in this protocol is 554. An example of such as URL is: rtsp://  · OPTIONS: An OPTIONS request returns the types of request that the server will accept. An example of the request is: OPTIONS rtsp://155.69.148.136:554/test.264 RTSP/1.0 CSeq: 1rn User-agent: VLC media Player The CSeq parameter keeps track of the number of request send to the server and it is incremented every time a new request is issued. The User-agent refers to the client making the request. * DESCRIBE: This method gets the presentation or the media object identified in the request URL from the server. An example of such a request: DESCRIBE rtsp://155.69.148.138:554/test.264 RTSP/1.0 CSeq: 2rn Accept: application/sdprn User agent: VLC media Player The Accept header is used to describe the formats understood by the client. All the initialization of the media resource must be present in the DESCRIBE method that it describes.  · SETUP: This method will specify the mode of transport mechanism to be used for the media stream. A typical example is: SETUP rtsp://155.69.148.138:554/test.264 RTSP/1.0 CSeq: 3rn Transport: RTP/AVP; unicast; client_port = 1200-1201 User agent: VLC media Player The Transport header specifies the transport mechanism to be used. In this case, real-time transport protocol is used in a unicast manner. The relevant client port number is also reflected and it is selected randomly by the server. Since RTSP is a stateful protocol, a session is created upon successful acknowledgement to this method.  · PLAY: This method request the server to start sending the data via the transport mechanism stated in the SETUP method. The URL is the same as the other methods except for: Session: 6 Range: npt= 0.000- rn The Session header specifies the unique session id. This is important as server may establish various sessions and this keep tracks of them. The Range header positions play time to the beginning and plays till the end of the range. * PAUSE: This method informs the server to pause sending of the media stream. Once the PAUSE request is sent, the range header will capture the position at which the media stream is paused. When a PLAY request is sent again, the client will resume playing from the current position of the media stream as specified in the range header. RSTP Status Codes Whenever the client sends a request message to the server, the server forms a equivalent response message to be sent to the client. The response codes are similar to HTTP as they are both in ASCII text. They are as follows: 200: OK 301: Redirection 405: Method Not Allowed 451: Parameter Not Understood 454: Session Not Found 457: Invalid Range 461: Unsupported Transport 462: Destination Unreachable These are some of the RTSP status codes. There are many others but the codes mentioned above are of importance in the context of this project. 2.3.2. Real-time Transport Protocol (RTP) RTP is a defined packet structure which is used for transporting media stream over the network. It is a transport layer protocol but developers view it as a application layer protocol stack. This protocol facilitates jitter compensation and detection of incorrect sequence arrival of data which is common for transmission over IP network. For the transmission of media data over the network, it is important that packets arrive in a timely manner as it is loss tolerant but not delay tolerant. Due to the high latency of Transmission Control Protocol in establishing connections, RTP is often built on top of the User Datagram Protocol (UDP). RTP also supports multicast transmission of data. RTP is also a stateful protocol as a session is established before data can be packed into the RTP packet and sent over the network. The session contains the IP address of the destination and port number of the RTP which is usually an even number. The following section will explain about the packet structure of RTP which is used for transmission. RTP Packet Structure The below shows a RTP packet header which is appended in front of the media data.s The minimum size of the RTP header is 12 bytes.. Optional extension information may be present after the header information. The fields of the header are:  · V: (2 bits) to indicate the version number of the protocol. Version used in this project is 2.  · P (Padding): (1 bit) to indicate if there padding which can be used for encryption algorithm  · X (Extension): (1 bit) to indicate if there is extension information between header and payload data.  · CC (CSRC Count) : (4 bits) indicates the number of CSRC identifiers  · M (Marker): (1 bit) used by application to indicate data has specific relevance in the perspective of the application. The setting for M bit marks the end of video data in this project  · PT (Payload Type): (7 bits) to indicate the type of payload data carried by the packet. H.264 is used for this project  · Sequence number: (16 bits) incremented by one for every RTP packet. It is used to detect packet loss and out of sequence packet arrival. Based on this information, application can take appropriate action to correct them.  · Time Stamp: (32 bits) receivers use this information to play samples at correct intervals of time. Each stream has independent time stamps.  · SSRC: (32 bits) it unique identifies source of the stream.  · CSRC: sources of a stream from different sources are enumerated according to its source IDs. This project does not involve the use of Extension field in the packet header and hence will not be explained in this report. Once this header information is appended to the payload data, the packet is sent over the network to the client to be played. The table below summarizes the payload types of RTP and highlighted region is of interest in this project. Table 2: Payload Types of RTP Packets 2.3.3. RTP Control Protocol (RTCP) RTCP is a sister protocol which is used in conjunction with the RTP. It provides out-of-band statistical and control information to the RTP session. This provides certain Quality of Service (QoS) for transmission of video data over the network. The primary functions of the RTCP are: * To gather statistical information about the quality aspect of the media stream during a RTP session. This data is sent to the session media source and its participants. The source can exploit this information for adaptive media encoding and detect transmission errors. * It provides canonical end point identifiers (CNAME) to all its session participants. It allows unique identification of end points across different application instances and serves as a third party monitoring tool. * It also sends RTCP reports to all its session participants. By doing so, the traffic bandwidth increases proportionally. In order to avoid congestion, RTCP has bandwidth management techniques to only use 5% of the total session bandwidth. RTCP statistical data is sent odd numbered ports. For instance, if RTP port number is 196, then RTCP will use the 197 as its port number. There is no default port number assigned to RTCP. RTCP Message Types RTCP sends several types of packets different from RTP packets. They are sender report, receiver report, source description and bye.  · Sender Report (SR): Sent periodically by senders to report the transmission and reception statistics of RTP packets sent in a period of time. It also includes the senders SSRC and senders packet count information. The timestamp of the RTP packet is also sent to allow the receiver to synchronize the RTP packets. The bandwidth required for SR is 25% of RTCP bandwidth.  · Receiver Report (RR): It reports the QoS to other receivers and senders. Information like highest sequence number received, inter arrival jitter of RTP packets and fraction of packets loss further explains the QoS of the transmitted media streams. The bandwidth required for RR is 75% of the RTCP bandwidth.  · Source Description (SDES): Sends the CNAME to its session participants. Additional information like name, address of the owner of the source can also be sent.  · End of Participation (BYE): The source sends a BYE message to indicate that it is shutting down the stream. It serves as an announcement that a particular end point is leaving the conference. Further RTCP Consideration This protocol is important to ensure that QoS standards are achieved. The acceptable frequencies of these reports are less than one minute. In major application, the frequency may increase as RTCP bandwidth control mechanism. Then, the statistical reporting on the quality of the media stream becomes inaccurate. Since there are no long delays introduced between the reports in this project, the RTCP is adopted to incorporate a certain level of QoS on streaming H.264/AVC video over embedded platform. 2.3.4. Session Description Protocol (SDP) The Session Description Protocol is a standard to describe streaming media initialization parameters. These initializations describe the sessions for session announcement, session invitation and parameter negotiation. This protocol can be used together with RTSP. In the previous sections of this chapter, SDP is used in the DESCRIBE state of RTSP to get sessions media initialization parameters. SDP is scalable to include different media types and formats. SDP Syntax The session is described by attribute/value pairs. The syntax of SDP are summarized in the below. In this project, the use of SDP is important in streaming as the client is VLC Media Player. If the streaming is done via RTSP, then VLC expects a sdp description from the server in order to setup the session and facilitate the playback of the streaming media. Chapter 3: Hardware Literature Review 3.1. Introduction to Texas Instrument DM6446EVM DavinciTM The development of this project based on the DM6446EVM board. It is necessary to understand the hardware and software aspects of this board. The DM6446 board has a ARM processor operating at a clock speed up to 300MHz and a C64x Digital Signal Processor operating at a clock speed of up to 600MHz. 3.1.1. Key Features of DM6446 The key features that are shown in the above are: * 1 video port which supports composite of S video * 4 video DAC outputs: component, RGB, composite * 256 MB of DDR2 DRAM * UART, Media Card interface (SD, xD, SM, MS ,MMC Cards) * 16 MB of non-volatile Flash Memory, 64 MB NAND Flash, 4 MB SRAM * USB2 interface * 10/100 MBS Ethernet interface * Configurable boot load options * IR Remote Interface, real time clock via MSP430 3.1.2. DM6446EVM Architecture The architecture of the DM6446 board is organized into several subsystems. By knowing the architecture of the DM6446, the developer can then design and built his application module on the boards underlining architecture. The shows that DM6446 has three subsystems which are connected to the underlying hardware peripherals. This provides a decoupled architecture which allows the developers to implement his applications on a particular subsystem without having to modify the other subsystems. Some of subsystems are discussed in the next sections. ARM Subsystem The ARM subsystem is responsible for the master control of the DM6446 board. It handles the system-level initializations, configurations, user interface, connectivity functions and control of DSP subsystems. The ARM has a larger program memory space and better context switching capabilities and hence it is more suited to handle complex and multi tasks of the system. DSP Subsystem The DSP subsystem is mainly the encoding the raw captured video frames into the desired format. It performs several number crunching operations in order to achieve the desired compression technique. It works together with the Video Imaging Coprocessor to compress the video frames. Video Imaging Coprocessor (VICP) The VICP is a signal processing library which contains various software algorithms that execute on VICP hardware accelerator. It helps the DSP by taking over computation of varied intensive tasks. Since hardware implementation of number cru