final report v3

50
UNIVERSITY OF MORATUWA Faculty of Information Technology IT 3000: Industrial Training TRAINING REPORT M.M.A. Shafny 114124B Based on the training at Metatechno Lanka Company PVT LTD From 05 th May 2014 to 31 st October 2014 Submitted on 17.11.2014

Upload: shafny-mahir

Post on 14-Apr-2017

232 views

Category:

Documents


3 download

TRANSCRIPT

UNIVERSITY OF MORATUWA

Faculty of Information Technology

IT 3000: Industrial Training

TRAINING REPORT

M.M.A. Shafny

114124B

Based on the training at

Metatechno Lanka Company PVT LTD

From 05th

May 2014 to 31st October 2014

Submitted on 17.11.2014

i | P a g e

PREFACE

This document is presented at the end of the internship period I had from 5th

May 2014 to

31st October 2014 at Metatechno Lanka Company PVT LTD (MTL), Level 28, West

Tower, World Trade Center, Echelon Square, Colombo 1 as a trainee software engineer.

The document is arranged into three main chapters that present different aspects of

the training I got. This contains basic information about the establishment and deep

information on the training I received and my personal views on the internship

period considering the whole experience.

The first chapter is dedicated to the information on the training establishment. Without

having a good understanding about the functionalities of the company, the

procedures, organization hierarchy and structure it is difficult to comfortable move with

the staff, getting things done in the correct way. To give my maximum contribution while

learning from the company I have to have a good understanding on the business the

company is involved in and the technologies and development standards and models they

follow. With all these, this chapter also includes my personal score on the current

performance of MTL.

The second chapter is totally dedicated to the experience I had during the internship

period. This includes all the technical work that I was exposed to as well as the non-

technical experiences. This describes how I completed the tasks I was given and how I

resolved the difficulties I came across while doing them. In explaining the task, the

implementations were mostly described using comprehensive text. The organization

doesn’t allow to express the project materials, at any form and at any cost, due to their

strict regulations and as they follow ISO 27000 standards. The given materials such as

diagrams and pictures in this documentation were brought with the permission of the

administration.

The non-technical experiences which I gained such as professional ethics, soft skills and

the ISO 27000 standards & regulations which the organization is implementing recently,

ii | P a g e

are described considering the great effects they had on building up a professional

personality within me, getting to know more of the staff, company and industry practices.

In the third chapter, I have discussed the effectiveness and personal feelings towards

training as a whole. Also it provides a personal assessment on own experience and

the whole industrial training program from the co-ordination to the end, with

suggestions to improve.

iii | P a g e

ACKNOWLEDGEMENTS

At the very beginning of this report on my work in the internship period, it is my

privilege to thank the people who contribute to make it such a great experience for my

life. If not for the support of them, from arranging training establishment selections to

successful completion of the 26 weeks, it would not be this effective. I heart fully thank

Mr. D.K. Withanage, the Dean, faculty of Information Technology, University of

Moratuwa for the immense effort taken to provide us with best training establishments.

Also the guidance given on how to extract the value of this internship period was

invaluable.

Also I am so grateful to Ms. Ashika Fernando, the Industrial Training Coordinator for the

huge commitment shown in making sure each and every student is getting a training

establishment. The support given by resolving our selections, organizing mock

interviews, coordinating with the industry and giving friendly guidance whenever

needed is incomparably great.

Also I must thank all the members in Industrial Training Division of the University of

Moratuwa and National Apprentice and Industrial Training Authority (NAITA) for

guiding us from the very beginning and for the work carried out throughout our

internship period to make it a success, giving us a complete experience in the industry.

I am so honor to Mr. Koga Michio, Chairman, Metatechno Inc, for giving us this

invaluable opportunity to learn in an internationally recognized, multinational company

within a friendly environment.

Then, I am so grateful to Mr. Jeewana Waidyaratna, General Manager, Metatechno

Lanka for giving opportunities to Sri Lankan undergraduates to complete our internship

in their organization.

Then I am thankful to Mr. Janith Padmakumara, Head of Recruitment Panel who

interviewed me and recommended me for the internship at Metatecho Lanka, also

for the given guidance on how to improve and proceed using the resources provided and

iv | P a g e

for giving us the opportunity to feel the beauty of a technical career giving

appropriate responsibilities.

I am thankful to Mrs. Anoja Wickramasinghe, Manager of HR depepartment, for the

friendly support given in any issue I came up with. The work done in coordination with

university and making us a part of the MTL family is really appreciated. I am so much

grateful to the MTL support team for all the support given throughout my stay at MTL.

Then I dedicate my thanks to Mr. Sameera Weerawardane, Trainer and Intern coordinator

for giving such an excellence guidance and flagship me to get engaged with the staff,

organization culture, policies, rules & regulations.

Then I express my honor to Mr. Dammika Priyadarshana, Project Manager, VS10/13EXT

Project for his guidance towards the project and advices and suggestions towards the

technological struggles I faced.

Then I express my honor to Mr. Amila Perera, Project Manager, P-2014-JMIG-

MPEG4H264HEADER-01 Project for his excellence and kindly guidance towards the

project and the suggestions towards the technological struggles I faced.

Then I express my honor to Mr. Wasantha Payoe, Project Manager, KYU Equipment

Management System Extension Project; and Mr. Ravindra Perera, Project Manager,

NSSHINKI-01 Project for their excellence guidance and mentorship.

Also, I thank to IT support & service department for their on-time service while

requesting for resources & materials, and financial department for their great services.

Finally, I am thankful to each and every member of the MTL family in technical, non-

technical and support staff, for the friendly environment provided and been a helping

hand whenever needed. I did not have to worry having any technical issue or non-

technical issue that there was always someone I could get help from or ask guidance.

v | P a g e

Thank you very much everyone for making this internship period such a fruitful

experience for my life, widening my horizons!

vi | P a g e

Table of Contents

1 Introduction to the training establishment ............................................................. 1

1.1 Overview .............................................................................................................. 1

1.2 Introduction / Profile ................................................................................................. 1

1.3 Services of the Meta Techno Lanka.......................................................................... 2

1.3.1 Embedded Software Services ............................................................................ 2

1.3.2 Software Development....................................................................................... 2

1.3.3 Information Technology Consultancy ............................................................... 3

1.3.4 Training .............................................................................................................. 3

1.3.5 Technical Support .............................................................................................. 3

1.4 Management Structure for Meta Techno Lanka ....................................................... 4

1.5 Metatechno Lanka Products ...................................................................................... 5

1.5.1 Meta Administration Support System ................................................................ 5

1.5.2 Mapit .................................................................................................................. 6

1.5.3 CGS (Career Guidance System) ........................................................................ 6

1.5.4 LibSys (Library System) .................................................................................... 6

1.5.5 Complaint/Process Management Systems ......................................................... 7

1.6 Meta Techno Lanka Events ...................................................................................... 7

1.7 Meta Techno Lanka Environment ............................................................................ 7

1.8 Meta Techno Lanka Technologies ............................................................................ 8

1.9 Meta Techno Lanka Vision ....................................................................................... 8

1.10 Meta Techno Lanka Mission .................................................................................. 8

1.11 Role of Meta Techno Lanka in Sri Lanka ............................................................... 9

2 Training Experience .................................................................................................... 10

2.1 Overview ................................................................................................................. 10

2.2 Projects Engaged During the Training Period ........................................................ 10

2.2.1 VSEXT Function (Feasibility study on Visual Studio Extension) .................. 10

2.2.2 P-2014-JMIG-MPEG4H264HEADER ............................................................ 17

2.2.3 KYU Equipment Management System Ext ..................................................... 23

vii | P a g e

2.2.4 NSSHINKI-01 (Environment migration of a Canon IP camera application) .. 24

3 Conclusion ............................................................................................................... 29

3.1 Introduction ............................................................................................................. 29

3.2 Importance of Industrial Training ........................................................................... 29

3.3 Satisfaction .............................................................................................................. 30

3.4 Metatechno Lanka as a Training Establishment ..................................................... 31

3.5 Suggestions ............................................................................................................. 32

Abbreviation .................................................................................................................... 34

Annex A – Configuration to enable VS macros ........................................................... 35

Annex B – Sample macro to manipulate the variables ................................................ 35

Annex C – Macros to calculate the time difference between two break points......... 36

Annex D – OutputPaneWindow .................................................................................... 37

Annex E – A NUnit test (Access Unit Delimeter NAL unit) ........................................ 38

Annex F – Flow of EventWatchingSystem ................................................................... 40

References ........................................................................................................................ 41

viii | P a g e

List of Figures

Figure 1: Emblem of Organization ..................................................................................... 1

Figure 2: Management Structure of MTL ........................................................................... 4

Figure 3: Microsoft updates to be uninstalled to enable VS macros in 2010 and later

versions ............................................................................................................................. 14

Figure 4: Sample Add-On code segment to manipulate the variable in the current

execution context .............................................................................................................. 15

Figure 5: Sample macro to start an add-on ....................................................................... 16

Figure 6: Ffmpeg process builder ..................................................................................... 19

Figure 7: H264 Format Analyzer Application .................................................................. 20

Figure 8: Installer of H.264 Format Analyzer Application............................................... 21

Figure 9: A sample NUnit Test Project............................................................................. 22

Figure 10: Web Interface of a sample Canon VB-C60 Camera ....................................... 25

Figure 11: RelayServer ..................................................................................................... 27

Figure 12: Smaple macro to manipulate the variables ...................................................... 35

Figure 13: Macros to calculate the time difference .......................................................... 36

Figure 14: Macro to publish the variables in a OutputPaneWindow ................................ 37

Figure 15: Add-On to publish the variables in a OutputPaneWindow ............................. 37

Figure 16: Flow chart of EventWatchingSystem .............................................................. 40

1 | P a g e

Chapter 1

1 Introduction to the training establishment

1.1 Overview

During my training period I worked at Metatechno Lanka (Pvt) Ltd. Rest of this chapter

describes about the history, services, vision, mission, goal and values of the company.

Then this provides an overview about products & technologies used in Metatechno

Lanka. Finally the strengths, weaknesses and the contribution of Metatechno Lanka to Sri

Lankan society are emphasized in the chapter.

1.2 Introduction / Profile

Figure 1: Emblem of Organization

Metatechno Lanka (Pvt) Ltd was established as a fully owned subsidiary of Metatechno

Inc of Japan in 2001. It is Operating under the Board of Investment (BOI) of Sri Lanka.

Metatechno Lanka is a limited liability company. The company specializes in developing

Embedded Software for Electronics and Computing devices manufacturers around the

world. In recent years, the company is establishing itself in the domestic market as a fully

customized software solutions provider in the area of Business Management.

2 | P a g e

Metatechno Lanka boasts of an organization culture unique to itself. Enriched with the

business ethics and efficiency of Japanese Management principles, it also blends Sri

Lankan culture and its value system to forge a rich working environment.

1.3 Services of the Meta Techno Lanka

1.3.1 Embedded Software Services

Since the inception of Metatechno Lanka, Embedded Software Services has been the core

competency of the company. From selection criteria to the overall business model,

Metatechno is fine tuned to cater for the elite Electronics Manufacturers around the

world.

Metatechno Lanka guarantees optimum processing power, highest quality standards,

timely delivery and confidentiality to your development needs. State of the art

development facilities, working experience around the world, flexibility to work with

other teams, has made Metatechno Lanka stand out from the rest.

Few areas of our specialty:

Real Time Operating Systems porting

Communication protocols

Device drivers

Printer/Copier engine controllers

Simulators

Image Processing

1.3.2 Software Development

Metatechno Lanka has one of software developers with lots of experiences in stand-alone

application development, product customization, and integration to third party systems.

Metatechno Lanka uses agile software development methodology to generate high-

3 | P a g e

quality deliverables and the flexibility to handle changing business priorities, while agile

process is focusing on to global attention.

1.3.3 Information Technology Consultancy

Metatechno Lanka helps to build a strategic plan of businesses. It is providing

consultancy to stabilize and secure the current and new IT environment, and being with

the clients to plan the future phases of their business by confirming the most appropriate

strategy for their success, while removing the burden of your business with the cost of a

full-time IT staff. From day-to-day troubleshooting to strategic long term planning,

Metatechno Lanka is being to supplement their IT needs with on-demand experts. That’s

how Metatechno Lanka offers it’s consultancy services to their clients.

1.3.4 Training

Metatechno Lanka is an excellent place to train candidates and trainees with the

supervision of experienced seniors of staff and real world skills. And also Metatechno

Lanka provides tremendous training to a wide range of premier businesses and

organizations. The company provides not only development skills to the trainees but also

software documentary skills as well.

1.3.5 Technical Support

Metatechno Lanka understands the importance of technical support in any organization.

So they are focusing on giving maximum support for any customer. Metatechno Lanka’s

support team available in anytime to help increasing business productivity and

performance. Technical support is available not only for the Metatechno Lanka’s

products but also for the third party systems as part of a managed service contract.

4 | P a g e

1.4 Management Structure for Meta Techno Lanka

Following figure shows you the management structure for Meta Techno Lanka.

Figure 2: Management Structure of MTL

Executive Director

General Manager

CTO

QA Lead

QA Engineer

Project Manager

Tech Lead

Senior software engineer

Software engineer

Associate Software engineer

Web developer

Web designer

Chief business operations officer

Business Support Manger

Head of financial solutions

Associate accountant

Marketing executive

5 | P a g e

1.5 Metatechno Lanka Products

Metatechno Lanka provide their products and services to some of the leading consumer

electronics companies in the world like Canon group, JEOL, Fujitsu, IBM Japan Ltd,

Toshiba, Hitachi etc. Basically Metalanka products can be categorized into five main

areas. They are:

1.5.1 Meta Administration Support System

Complete Administrative Support System suitable for any organization

Web based technology helps to integrate multiple braches geographically

distributed

Available features

o Attendance monitoring

o Leave management

o Reservations

o Task Assigner

o Calendar and Personal Scheduler

o Employee lifecycle management

o Meeting scheduler

o Complain Management

o Payroll

Each module is customizable to match organizational needs

6 | P a g e

1.5.2 Mapit

An innovative social business attempt by Metatechno Lanka to gather and share

Map information of Sri Lanka

Built on top of Google Maps, thus detail clarity

Users themselves can build the information structure by defining categories and

how the items are viewed

Integrity is preserved by moderator level users

Free for all users

1.5.3 CGS (Career Guidance System)

This web based system is the ideal solution for a Career Guidance Unit of any

size and any discipline

Fast and intelligent search and match feature enables perfect match between the

available job vacancies against job seeker information

Priority settings enable the users to search for jobs in different preferences

Job seekers and Recruiters can update their own information

Auto CV generation for job seekers

Generate reports from historical records of job matching

Customizable to match any education institution

1.5.4 LibSys (Library System)

Web based integrated library system can be used stand alone or can connect

distributed library network

Users can search, browse, and reserve media from anywhere they wish

User friendly interfaces are easy to navigate even for the novice

Privileged user group settings to manage different levels of users

Ability to maintain any type of media such as books, DVD’s, references, or files

7 | P a g e

1.5.5 Complaint/Process Management Systems

Ideal for complain process tracking, document tracking or chain authorization

tracking

Gets rid of delays involved with hard copy transfers

Group permission setting enables multiple layers of authority

High Security for sensitive information

Auto generated forms and letters

Report printing inbuilt

Highly customizable

1.6 Meta Techno Lanka Events

Metatechno Lanka takes their social responsibility seriously as a term; they take every

opportunity to hold out a helping hand and a smiling face to those in needs. With the aim

of acquiring the best talent, Metatechno Lanka has focused its recruitment process on the

cream of the crop of leading universities in Sri Lanka and abroad. Metatechno Lanka

social support activities span across several areas among which, providing educational

aid to school children, donating equipment and financial assistance to rural health care

sector, conducting and sponsoring cultural activities, involvement in disaster relief

programs and environmental preservation activities are prominent.

1.7 Meta Techno Lanka Environment

Metatechno Lanka always tries to make their office environment very friendly and charm

to boost employees’ interrelationship between each other. So they are conducting small

games, brain storming sessions and meetings to minimize the work tension of employees.

To increase employees work performance and throughout is the major expectation of

8 | P a g e

Metatechno Lanka’s administration to gain maximum and provide quality products. Also

they use 5S concept. Therefore working environment was always very clean and neat.

1.8 Meta Techno Lanka Technologies

Metatechno Lanka always uses latest technologies through the entire life cycle of the

products which they are developing. C/C++, Object oriented design and development,

.NET platform, Java, Web development tools, Scripting languages, UML, Oracle/SQL,

Windows, Unix and Linux environments.

Metatechno Lanka maintains competence in a wide range of Oracle, Mysql and SQL

software products, including database, middleware and applications, and implements

them for the clients.

Metatechno Lanka QA process is well managed process which leads to provide products

with best quality and minimum risks. So Metatechno Lanka is much focusing their

attention on Quality Assurance of any product.

1.9 Meta Techno Lanka Vision

Assist to quench the global thirst for high quality product oriented software engineers

through mutual collaboration with Japan and other renowned IT industries in the world.

1.10 Meta Techno Lanka Mission

Being a part of a family is the environment that has been created in the workplace which

is based on the Sri Lankan culture. On the other hand, being Japanese owned Company;

one would see a mixed culture at Meta Lanka that is nourished with the Japanese

business ethics, culture and management style.

9 | P a g e

1.11 Role of Meta Techno Lanka in Sri Lanka

Metatechno Lanka believes that its corporate responsibility (CSR) resides in nurturing

and maintaining a keen awareness of being a member of a global society, playing a role

in society as a good corporate citizen, and living up to society's ethical and public

expectations. The philosophy of corporate social responsibility at Metatechno Lanka

stems out from our vision itself. MTL is constantly vigilant and observant of the needs of

Sri Lankan citizens in order to provide them with required help and support in every

possible way. MTL always live up to the standards of a socially responsible company and

it has succeeded in doing so over the past few years in operation.

MTL tribute to virtue comes in many forms. In fact, Metatechno Lanka has a dedicated

group of talented people whose sole responsibility is to look into this all important area of

corporate social responsibility. The outcome of their effort is nothing but a total victory.

In MTL perception, a total victory pays dividends to all parties involved with them; the

company and its employees, their families and the society at large.

Today, MTL social support activities span across several areas among which, providing

educational aid to school children, donating equipment and financial assistance to rural

health care sector, conducting and sponsoring cultural activities, involvement in disaster

relief programs and environmental preservation activities are prominent.

10 | P a g e

Chapter 2

2 Training Experience

2.1 Overview

This section describes about the projects that I was involved and the training experiences

that I gained during my internship of 26 weeks at MetaTechno Lanka. I worked at

MetaTechno Lanka from 5th May to 07th November. At the MetaTechno Lanka I was

mainly involved with four projects. There was a feasibility study research project on

Visual Studio Extension, H.264 bit stream analyzing, Report generation implementation

for an existing Japanese ERP and client side application development for Canon network

camera. These projects were supervised by Mr. Dammika Priyadarshana, Mr. Amila

Perera, Mr Vasantha Payoe and Mr. Ravindra Perera respectively.

The rest of this section describes my training experience about projects that I could work

on. In addition to my duties during the training period, this chapter includes all the

experience of time period of internship such as office practices, management practices,

researching and best practices apart from the difficulties I have undergone during my

internship at MetaTechno Lanka & the steps that I have undertaken to overcome them.

2.2 Projects Engaged During the Training Period

2.2.1 VSEXT Function (Feasibility study on Visual Studio Extension)

2.2.1.1 Introduction

Metatechno’s culture in RnD

This is a feasibility study project based on Microsoft Visual Studio Extension. This

project was initiated by the mother company, Metatechno Inc, Japan. Since the

organization is interested and focusing moving towards Microsoft platforms, they face

11 | P a g e

some difficulties and lacks while using their tools and frameworks. So iteratively,

Metatechno develops its own developing environments according to their needs and

requirements. What do they do is, whenever they encounter a need or lack or problem,

they draft a feasibility study project on that particular topic and add them to their stack.

According to the importance and the priority schedule of the researches, the research

department select the researches and an assign an appropriate internal or external team or

outsource it to their child organization and do the research. When the team succeeds the

study or research, they implement the necessary technologies and integrate them into

their environment. In addition, they give a proper training on that particular

implementation to the necessary players. Likewise, Metatechno Lanka was given a

feasibility study project in Visual Studio Extension.

Microsoft Visual Studio Extension Package

Microsoft Visual Studio is an integrated development environment from Microsoft. It is

used to develop computer programs for Microsoft Windows, as well as web sites, web

applications and web services. Visual Studio uses Microsoft software development

platforms such as Windows API, Windows Forms, Windows Presentation Foundation,

Windows Store and Microsoft Silverlight. Mostly it sticks to the Microsoft .Net

framework and it allows developing open source platforms such C and C++.

Even though Visual Studio is commercial closed-source application, its professional and

ultimate versions allows the users to extend its features and functionalities, using the

Visual Studio Extension Package. The user can dig into a certain extend and can be able

extend it features and functionalities using the mentioned package.

2.2.1.2 Problem Identified

As I have mentioned in the above chapter that the organization moving towards

developing Windows application, they started working with Microsost Visual Studio

IDE. Earlier they had their own IDEs & developer tools and for some open platform

projects, they have been using a fully customized Eclipse IDE. But now, when they

12 | P a g e

migrate to some new IDEs and frameworks like VS and .Net, they encounter some issues

due to the unavailability in the new technologies or the lack of knowledge of the players.

Likewise, they’ve got an issue with VS debugger environment. For testing purposes, the

VS allows to traverse the execution point line by line in code. In such a situation, the user

can assign a break point where he want to test the code and when the execution hits such

a break point, it pause the execution and gives the control to move forward. So the user

can clearly identify the flow and can understand the values of variables & objects and can

manipulate them.

In such a situation, the testers planning to trigger a macro or an add-in, in order to

automate some specific tests. So they have some questions and looking for valid answers

in order to implement such testing macros and add-ons.

The questions are:

1. Whether is it possible to start a macro when a break point is hit?

2. Whether is it possible to start an add-on when a break point is hit?

3. Whether is it possible to continue the execution after starting either a macro or

add-on, when a break point is hit?

4. Whether is it possible to manipulate the variables values in the current debugging

environment, using a macro?

5. Whether is it possible to manipulate the variables values in the current debugging

environment, using an add-on?

6. Whether is it possible to perform the above mentioned variable manipulation from

an external input (an XML value)?

7. Whether is it possible to start an add-on using a macro?

8. Whether is it possible to calculate the time difference between two breakpoints?

9. When the execution hits a break point, whether is it possible to store the variable

values in the current debugging environment to a text file using a macro?

10. When the execution hits a break point, whether is it possible to store the variable

values in the current debugging environment to a text file using an add-on?

13 | P a g e

11. When the execution hits a break point, whether is it possible to print the variables

in the current debugging environment to a OutputPaneWindow if they meet

certain conditions, using a macro?

12. When the execution hits a break point, whether is it possible to print the variables

in the current debugging environment to a OutputPaneWindow if they meet

certain conditions, using an add-on?

2.2.1.3 Required Deliverables

The time given was 4 weeks (20 days). After completing my study and research, I had to

submit a detailed report upon my findings and conclusions with respect to the above

mentioned requirements. Also I had to strongly justify the validity of my argument with

necessary facts and samples such as codes, test programs and etc.

2.2.1.4 My Contribution

In this particular project, I’m the only developer in the team and Mr. Dammika

Priyadarshana acted as the project manager and the reporting superior at that time. At the

very first day I had a meeting with the respective project manager and the project

coordinator. They explained the requirement, the standards which I have to obey during

this research, the expected outcomes and the documenting templates & the formats.

We, I and the project manager drafted the project plan and the work breakdowns. We

discussed about the time allocations and schedule of attainments. Every day, before I

leave the office, we have a review meeting regarding what I have done today, and what

I’ll be focussing on next day.

It was the very first experience for me in .Net environment. I’ve never touched those

tools before. So I had to learn a lot, the basics, syntaxes & semantics in C# and etc. It was

a very good platform for me to learn .Net C# as they provide enough guidance and

tutorials with best practices and all.

14 | P a g e

Setup the environment

First of all, I was asked to setup my working environment. I had to format the given

system and install Windows 7. Then as I supposed to work with VS extension project the

IT service department provided a 1 month trial evaluation version of both VS 2010 and

VS 2013 installations. First I started working with VS 2010 environment.

Enabling macros in Visual Studio

Since the emergent of VS it allows to implement custom macros. But since 2010 version,

using macros is deprecated by Microsoft due to some vulnerability and as it may lead to

some security leaks [1][2]. So I had to find a way to fix and re-enable it.

Finally I found that, removing the following Microsoft updates which corresponds to

Windows and .Net version, will allows working with macros again in VS environment.

OS \ .Net Version 4.5.1 4 3.5

Windows 8.1 KB2898871

Windows 8 KB2898870 KB2898865

Windows 7 KB2898869 KB2898864 KB2898855

Windows XP KB2898855

Figure 3: Microsoft updates to be uninstalled to enable VS macros in 2010 and later versions

Or, by changing the XML attributes in the given configuration files as it’s mentioned in

Annex A, also will make re-enabling the operation of VS macros.

Way of achieving the requirements

Meeting the first three requirements was not hard. It was quite easy to attain and the way

of doing it is straight forward. The VS IDE has the simple ways to do it. The 4th

point, to

manipulate the variables in the debugging environment using macro, I had learn a little

bit. I had to understand the mechanism of compilers, linkers, debugger and etc. Then I

had to learn about the available namespaces and objects in order to access the debugger

and marshal environments.

15 | P a g e

Finally I found out a way to overcome the issue and implement a sample program and a

sample macro in order to test the variable manipulation. It succeeded my test and it’s the

sample macro is documented in Annex B. In order to implement the same using an add-

on, what all I had to do is, just find the corresponding C# namesapces, object and

methods according to the above implemented macro. The below specified codes will

illustrates that how I implemented it.

Figure 4: Sample Add-On code segment to manipulate the variable in the current execution context

This particular add-on will assign the value of 50 to variable ‘age’, in the current

debugging environment if exist.

The implementation in reading an external file or stream and considering the read

information, manipulating the variables is not a big issue. What is the excess things to be

done is, it’s just implement the necessary code segments in order to read the stream and

change it as a string object. Likewise, dumping the variable values into a text file is also

the same.

The next requirement was little bit tough and challenge full. When a break point is hot, it

should start a macro and that macro should start an add-on and perform some actions. It’s

bit complicated. After working a lot of hours, I found a way to implement it. The below

mentioned code will illustrates how it works and this macro ‘CallMyAddIn()’ will start

the add-in ‘myAddIn’.

16 | P a g e

Figure 5: Sample macro to start an add-on

Then, in order to calculate the time consumed between two breakpoints, I implemented a

very simple mechanism. Two integers which read the current time in millisecond and the

difference will be calculated and exposed to user. The sample macros are specified in

Annex C.

The next major requirement was to publish the variable and their values which are in the

current debugging context, in an OutputPaneWindow. It should be done using by both

macro and add-on separately. So, I studied about accessing OutputPaneWindow and

assigning the necessary strings on it. Finally I came up with a solution and succeeded the

requirement and the sample macro & add-on’s code snippet is mentioned in Annex D.

Justification and documenting

Finally, I could be able to meet all the requirements successfully and could be able to

justify my conclusions with the facts I have and the references I referred. I prepared a

documentation with my findings and conclusions, and presented it to the PM and PC.

They were so happy about my works and they translated my document in to Japanese and

forwarded to Metatechno Inc.

A week later they had the review and some clarifications with the Metatechno engineers.

I was requested to be in that online meeting and I explained the facts and my

justifications upon my conclusions. It was an awesome experience for me and I was

really excited to be a part of it.

Finally they accepted all them and concluded the project.

17 | P a g e

2.2.2 P-2014-JMIG-MPEG4H264HEADER

2.2.2.1 Introduction

H.264 format

H.264 is a video compression format that is currently one of the most commonly used

formats for the recording, compression, and distribution of video content. It stores the

video information as Network Abstraction Layer (NAL) units which are considered as the

building blocks of H.264 stream [3].

The coded video data is organized into NAL units, each of which is effectively a packet

that contains an integer number of bytes. The first byte of each H.264/AVC NAL unit is a

header byte that contains an indication of the type of data in the NAL unit. For HEVC the

header was extended to two bytes. All the remaining bytes contain payload data of the

type indicated by the header. The NAL unit structure definition specifies a generic format

for use in both packet-oriented and bitstream-oriented transport systems, and a series of

NAL units generated by an encoder is referred to as a NAL unit stream [4].

I had engaged with project for 15 weeks. This project was managed by Mr. Amila Perera

and he played both the roles, project manager and developer. I was appointed as the

developer to this project. Therefore he acted as my reporting superior during this period.

This entire project was based on ITU-T Recommendation for H.264, 2011 version [5].

2.2.2.2 Required functionalities of the deliverables

The ultimate goal is to develop a Windows application upon .Net framework where it

could get an MP4 video file as an input, extract the raw h.264 bitstream, parse the NAL

units, retrieve the information of each NAL unit’s syntax element, generate an XML

object using those information and populate a GUI view where the user can analyse them.

In addition to that, the user can save the parsed information as an XML document and

later on, he could be able to open and analyse the information.

18 | P a g e

2.2.2.3 My Contribution

I joined this project when the designing phase completed. So the Pm was having a clear

plan and I was asked to implement it step by step. At the beginning I studied a little bit

about H.264 format, NAL unit structure, header & payloads, different NAL units and etc.

Implemented the parsing process of NAL units

There are 18 fully functional NAL unit types available according to the current standard.

Each may have number of modules and each of the have number of sub modules. There

are certain interconnections also available among different NAL units. For example,

Picture Parameter Set (PPS) and Sequence Parameter Set (SPS) are required in order to

parse the syntax elements of Coded Slice NAL units.

So we started from the very basic NAL units, which are 100% independent to other types.

I started with SPS and its sub modules. Then continued with other NAL unit types and

their corresponding modules.

Implemented the extraction of H.264 bitstream from MP4 video file

At this time we’ve been giving the externally extracted H.264 bitstream, to the program.

But the requirement specifies that the user could be able to input an MP4 video file. So

we had to implement a mechanism in order to extract the raw H.264 bit stream from the

given MP4 file.

So I did a study upon the mentioned issue and finally overcame it with an idea. I found

the ffmpeg tool for windows platform which is based on FFMPEG platform. This tool

allows to perform the activities such as decoding, encoding, compression and all most all

the video activities. So, I implemented a mechanism where the ffmpeg toll will be

executed as an external process where it accepts the user input MP4 file and produces the

raw H.264 bit stream.

19 | P a g e

The following code snippet illustrates the basic implementation.

Figure 6: Ffmpeg process builder

API Implementation

This entire project contains two sub VS projects. The core one is the ‘H264Parser’, which

play the major role. The other one is the GUI part, which allows user to populate the view

and let him analyse the syntax element information. We planned to provide the

H264Parser as .Net library where anyone can implement his own application on top of it.

It will cater for both GUI and CLI applications.

So I implemented the necessary APIs. In this phase I have to take care of each and every

methods’ and attributes’ access modifiers due to the encapsulation. I used the VS’s

inbuilt object browser in order to identify them.

GUI Implementation

Then I took the full responsibility to build the GUI part of the project. The GUI should

contain two major parts. One is the TreeView, where the user can traverse the XML

object. And the next one is the RichTextBox where the user can get the corresponding

information of a clicked node in the TreeView.

Here, I had to take care of some issues such as threading and stuff. The bitstream

extraction and parsing process should be handled by a worker thread and the plan

20 | P a g e

required a progress bar as well. So I had to study the mechanism and the implementations

of .Net threading. Then I implemented it.

During the implementation we faced several issues, such as GUI blocking, hanging in

middle, control collapses and all. We analysed each & every issues and took to concern

them one by one. Then we found out the exact bug behind the issue and fixed them.

Finally we made a fully cleaned and bug free application under the recommendation and

best practices.

Figure 7: H264 Format Analyzer Application

21 | P a g e

Installer Development

We plan to deliver our application as full packed one. So we developed an installer using

Inno Setup. This is a free tool. This not only allows the compression archiving and but

also it allows the pre-requisites installations. As our application is based on .Net

framework, we had to distribute the .Net 4.5.1 redistributable binary and make sure that

the environment is installed with .Net. Or else, the installer should install the .Net first

then install our application.

According to the above mentioned criteria, I personally implemented the necessary

implementation of the installer. The scripting of Inno Setup is based on python. So it

allows me to learn the basics of Python as well.

The below image shows our installer.

Figure 8: Installer of H.264 Format Analyzer Application

22 | P a g e

Unit Testing and Documentation

In order make sure that our application meets the ITU-T specification, we had to compare

and ensure the output of our application with a similar trustworthy application. For that,

we found an open-source project ‘ldeocod’. It’s a cross platform project which was

developed in C. So we referred to its outputs and compared with ours. The outputs were

100% matching and same. However, they were a few mismatches in syntax elements

naming, due to the ITU-T specification versions. Therefore, we documented both the

outputs & compared and contrasted the mismatching elements and explained the facts

behind them.

Then we started working on unit testing. Each function was tested. We developed some

generic inputs where it generates 100% of code coverage for the undertaken function. We

monitor the code coverage using some tools. Then tested each and every function with

their corresponding generic inputs, using an open-source tool called, ‘NUnit’. NUnit is an

open source unit testing framework for Microsoft .NET. It serves the same purpose as

JUnit does in the Java world, and is one of many programs in the xUnit family [6].

Figure 9: A sample NUnit Test Project

The above diagram illustrates a sample NUnit test project and Annex D contains one of

our unit test’s implementations.

23 | P a g e

2.2.3 KYU Equipment Management System Ext

2.2.3.1 Introduction

I worked for short time in this project. Even though it is fully fledged one, I could be able

to work just for 3 weeks, due to some constraints both we, myself & company had. This

project is about developing some reporting mechanisms for an existing Japanese ERP

solution. The team consisted 3 players where Mr. Wasantha Payoe acted as the project

manager and my reporting superior for this period.

Metatechno has already developed an ERP for one of its Japanese client and maintaining

& further developing it in iterative agile methodology. Recently it has outsourced the

further development phases to Metatechno Lanka. The client requires some further

development in reporting according to their new criteria.

2.2.3.2 Requirement

The client organization has designed the template of the reports they require using an

image processing software. Now our responsibility is to implement and integrate them

into the existing ERP. Metatechno recommends to use ActiveReports v6.x in order to

develop those reports.

2.2.3.3 My Contribution

As I had mentioned it’s an early developed ERP solution, it is not necessary to

understand and get familiar with the system much. In the short run what all I have to

know is, in order to implement and integrate a particular report, what are the necessary

data and how could I retrieve them from the database or the program itself. But our

designers have already developed a crosslinking Excel document by connecting the data

models. So it is easy to understand the crosslinks between data and the ways of retrieving

them.

Then all I had to do was, design the report. The very big difficulty and burden we had

was, the generated reports should exactly same as it is drawn in the SRS. We could have

24 | P a g e

0.5mm of deviation. We should strictly stick to the alignments, gaps, line thicknesses and

etc. During this time, I could be able successfully implement 4 full forms

2.2.3.4 Problems and constrains faced.

The team was given only 2 registration keys for ActiveReports. Both of them were used

by the PM and another developer Mr. Mohan Kure. So I had to use only the evaluation

version of ActiveReports. Using that version, I could just design the report and

implement the necessary codes. I cannot compile and debug the application.

So, they request me to finish the given task & commit to code repository, and when other

developer is free request him to check my contribution and make sure all my

implementations are working properly and bug free. As I had practiced test driven

methodology, it was very difficult and hard to get the job done. However, I managed to

overcome the issue and met the requirement.

2.2.4 NSSHINKI-01 (Environment migration of a Canon IP camera application)

2.2.4.1 Introduction

Canon Inc is one of the prestigious client of Metatechno Inc. Metatechno is developing

their embedded firmware and client level applications for Canon product. Likewise

Metatechno has given an Canon’s application migration project to Metatechno Lanka.

The particular project has been developed under older developer environments. So the

major requirement is to migrate the existing project into a current stable environment and

further on, develop some extra requirements.

25 | P a g e

Figure 10: Web Interface of a sample Canon VB-C60 Camera

2.2.4.2 Characteristics and Requirements

I worked for 5 weeks in this project. As it was short dated and the team was lacking

behind the schedule, many players were gathered to this project. Mr. Ravindra Perera

acted as the project manager and the reporting superior for this particular period.

Metatechno has developed the client side application of Canon VB-C60 series IP

cameras. It’s been developed under .Net 2.0 & Windows XP environment. Now Canon

requires to develop it as it supports up to Windows 8.1 and Windows Server 2012

environments.

26 | P a g e

2.2.4.3 Assigned Tasks and My Contributions

Migrate the VS projects from VS2008 to VS 2013 environment

The entire project contained 6 VS solutions where each contains number of VS projects.

All them had been developed in VS 2008 environment. So my first task was to migrate

all them to VS 2013 & .Net 4.5.1 environment and bring all them to active state. Each

solution contains a VC++ Metatechno licence check project, a core application project,

no or one or more supportive application projects, a Vix CustomInstaller project and a

Vix installer project. My responsibility is to fix all the version mismatches to latest

versions and take care of necessary implementations.

Fix the Pre & Post-Build Event Commands

In one particular solution, all the projects are interrelated to each other somehow. There

will be a chain of connection between them. One project require another one’s output.

Therefore, it relies upon certain pre and post build commands, in order to copy certain

files to certain directories. So I had to understand the flow of executions and according to

that, I implemented the pre and post build event commands.

MBCS to Unicode Migration

All the VC++ projects were MFC based, which relies upon Microsoft’s static MFC

library. But all they were developed in MBCS format. Since Mirosoft has deprecate the

usage of MBCS, we decided to migrate all the VC++ projects to Unicode format. So I

had to identify the MBCS based data types and MFC functions and change them into

their corresponding Unicode based ones.

Fix, make active and understand the workflow of RelayServer

Among the all 6 VS solutions, there is solution titled, ‘RelayServer’. Which act as the

RelayServer between the camera’s web server and user and, accept the user (web) request

and provide the image buffer from the camera, at the instance.

27 | P a g e

I was requested to fix the existing code and study the work flow & the relations between

the existing modules of RelayServer. It took me around 3 days in order to thoroughly

study and understand it. At the end, I will be explaining my findings to the entire team

and document it for further requirements.

The following image shows a sample serving of RelayServer.

Figure 11: RelayServer

Fix and understand the workflow of EventWatching System

EventWatchingSystem contains 3 majour modules. Those are Event Watcher,

ImageCtrlViewer and SoundCtrl. EventWatcher will load the added cameras from the

CameraList.xml and continuously check their IO statuses in a constant time interval.

According to their status response it colour the GUI camera list elements as either green

or red or grey.

When a user starts a camera, an external process of CameraCtrlViewer.exe will be

triggered with the corresponding camera information. According to the response which

camera gives to the CameraCtrlViewer, it will assign it’s GUI components such as

28 | P a g e

horizontal & vertical positions of camera, zoom level and etc. Then, whenever the user or

the camera itself wants to transmit an audio in either way, the SoundCtl.exe process will

be triggered.

The abstract level work flow is specified by a flow chart in Annex F.

2.2.4.4 Problems and Constrained Faced

Even though its fully fledged project which was developed to a prestigious malty national

company, it lacks proper documentation. We were given not a single flow diagram even.

We had to go through the code line by line and understand the work flow. Sometime we

have to predict and make assumptions.

29 | P a g e

Chapter 3

3 Conclusion

3.1 Introduction

This chapter is the conclusion of the industrial training report. It describes my training

experiences, training establishment’s ability to provide useful training for interns,

assessments on industrial training program which is organizing by the university and

estimate how far the intern’s objectives are satisfied.

3.2 Importance of Industrial Training

Training is a learning process that involves the attainment of knowledge, skills, concepts,

rules, or changing of attitudes and behavior to enhance the performance of trainees.

After learning theories and concepts nearly for three years at university just doing

practical assignments and stuff have this exposure to the industry is so important and it

made us realize the real value of what we learnt for three years. We went away from

university having whole bunch of theories in brain, just seeing in books how to apply

them again in words and having limited experience in implementing them for real again

in very small scales and we are coming back knowing the real meaning of each and every

word we learnt. Witnessing how to use those in providing solutions for real life

problems making the theories serve humans. I know being an expert in any

programming language is not enough. Actually being an expert in anything is not

enough if we cannot use it in correct place in a correct way. Information technology is a

vast field, which can make miracles and learning whole lot of stuff will not ever

be a nightmare. What I finally realized from the internship period is that Computer

Science is vast field like ocean that I will not ever be able to learn everything and be an

expert. Only that will be effective is learning basics of everything that will give an

understanding in overall system and be an expert in one sub-field I am passionate about.

30 | P a g e

3.3 Satisfaction

It was a nice experience for whole life that I got to work in an industrial environment

totally different from university environment. Different people from different expertise

and different attitudes working towards one goal as a team while having more

responsibilities. Some of them having family responsibilities and managing lot of

personal matters with the career life.

During my time period of training I got the opportunity to gain a better understanding of

operations & practices of organization in the IT industry. First of all I was able to

experience how an organization performs its main functions within real life. Being

Metatechno Lanka is a global company I understood how several departments are

interconnected with each other’s, how the coordination happens and how clients are

attracted to the company products etc. So I got knowledge about the company

environment and how changes happen in the business processes according to the client

requirements.

I understood how the theories I learnt at university were applied in to making the output.

Most of the knowledge I gained from university was helpful for me during my project

tasks especially the object oriented concepts, data base concepts etc.

One of the key values added to my professional carrier from the training period of

Metatechno Lanka was the knowledge obtained from contributing to the projects. I was

able to work several projects during my training period. And I got experience about how

real systems are developing practically using version controls. And I could learn lots of

new things from all these projects because of differences of them.

Another important thing is we can celebrate our success if we perform our assigned tasks

in fine tune. A good product is a result of a good team effort. So we could learn how

project teams must be arranged and which tasks should assign for a particular person of

the team. I was able to work several projects because I perform well in every project I

worked. My supervisor asked me to check the progress of other team member’s work &

31 | P a g e

if they stuck somewhere help them to complete that task. It was a very good opportunity

for me to teach & guide the peer developers. It is very difficult to teach & make

understandable someone about technologies new to them.

I was able to get the practical experience of coding in C, C++, C#, Python, method

implementation, applying of object oriented concepts, database structures, database

designing, query and stored procedures writing & so many other things. In addition to

writing codes, I was able to lean writing quality codes, adding standard comments, reduce

repeating codes, technical writing & test cases writing etc.

I was able develop my interpersonal skills as well. I became a more capable person. I felt

more matured in developing and thinking, because every day I had to come up with some

kind of problem solving, analyzing, designing & innovative thinking. I could do lot of

researches during time period of internship which will help me to carry my further

education.

Finally I got better insight in to what my career plans should be after my degree &

altogether the internship period gave me an invaluable experience to my IT life & my

further academic work as well as in my future planning.

3.4 Metatechno Lanka as a Training Establishment

When we focus on training provided by the Metatechno Lanka, it was great place to get

trained. I was trained to work in different situations. Metatechno Lanka considers interns

as part of their company. So interns have to get used to the organization’s environment

quickly. The Human Resource department of the Metatechno Lanka always helps interns

to get used to the environment and release the tension of them. So undergraduates who

supposed to take their internship in Metatechno Lanka are very lucky to have huge

knowledge after the completion of relevant time period.

We were assigned to various projects according to our capabilities. Metatechno Lanka

knows exactly what the needs of trainees are and they are very much capability of

32 | P a g e

providing suitable training for interns. According to my opinion Metatechno Lanka was

capable for providing best training experiences. Metatechno Lanka allocates lot of time to

do researches on any area interns are interesting on. They are encouraging us to do lots of

researches on database side and upcoming technologies

The facilities available for the trainees were excellent. We have given suitable incentives

according to our contribution and equipment and other materials were provided at the

very first day in Metatechno Lanka. A tea was supplied in every morning and evening.

Supervisors and other senior employees of the company let us to take knowledge alone

and if something goes wrong they always correct and guide us to find the best way. So

they gave their maximum support for us to complete our training very successfully.

Another very important thing in this training period was the support that the interns got

from the university and the lecturers. We received their help throughout the internship.

Especially our training coordinators helped us to find placements for all our badge mates.

Also our staff of the faculty very much focused on the training program and took a great

effort to find some placements for us. NAITA is only one institute that interacts with this

training program of undergraduates. They contributed to manage agreements with our

training establishments and the faculty. So undergraduates’ services cannot be terminated

except reasonable matter until the contract is over.

3.5 Suggestions

I would like to suggest to the university training coordinates and lecturers, please find the

industry standard, upcoming technologies and new trends of technologies and prepare

undergraduates before the commencement of training to facing interviews. So they can

show their knowledge in the interviews and take their chances. So I suggest if they can

conduct some sessions about facing interviews and familiarize to such situations it would

be a great help for us.

33 | P a g e

Finally I’m very happy about the knowledge & skills that I gained during my internship

and the technical and non-technical experience that I gained from Metatechno Lanka

during my training period.

34 | P a g e

Abbreviation

RnD – Research and Development

VS – Visual Studio

IDE – Integrated Development Environment

PM – Project Manager

PC – Project Coordinator

BP – Break Point

NAL - Network Abstraction Layer

GUI – Graphical User Interface

XML – Extensible Markup Language

PPS - Picture Parameter Set

SPS - Sequence Parameter Set

API – Application Programming Interface

CLI – Command Line Interface

SRS – Software Requirement Specification

VC++ - Visual C++

MFC – Microsoft Foundation Class

MBCS – Multi Byte Character Set

IO – Input / Output

35 | P a g e

Annex A – Configuration to enable VS macros

Open the following three files in any text editor available and add the line

<AllowDComReflection enabled="true"/> right after the <runtime> span.

"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsmsvr10.exe.config"

"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsaenv10.exe.config"

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.config"

Annex B – Sample macro to manipulate the variables

Figure 12: Smaple macro to manipulate the variables

When this macro ‘twist()’ is executed, the variable ‘age’ in the context will be assigned to

a new value of 30.

36 | P a g e

Annex C – Macros to calculate the time difference between two

break points

Figure 13: Macros to calculate the time difference

The macro ‘start()’ should be started in the 1st break point and the ‘finish()’ should me

started in the final break point. It will assign the millisecond value of time difference in

between those two break points to the integer variable ‘time’.

37 | P a g e

Annex D – OutputPaneWindow

Figure 14: Macro to publish the variables in a OutputPaneWindow

Figure 15: Add-On to publish the variables in a OutputPaneWindow

38 | P a g e

Annex E – A NUnit test (Access Unit Delimeter NAL unit)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Xml;

using H264Parser;

using NUnit.Framework;

using Rhino.Mocks;

namespace UnitTests

{

class AccessUnitDelimiterUnitTests

{

[Test, Description("Access unit delimiter のデータを解析し、primary_pic_typeの値を正しく設定

する。")]

public void UnitTest01()

{

var customNal = MockRepository.GenerateMock<NalUnit>();

customNal.Stub(x => x.GetRbsp()).Return(new byte[1] {0x21});

AccessUnitDelimiter obj = new AccessUnitDelimiter();

obj.ParseSyntaxElements(customNal);

Assert.AreEqual(1, obj.primary_pic_type);

}

[Test, Description("Access unit delimeter の全データをXMLドキュメントに追加する")]

public void UnitTest02()

{

var customBsr = MockRepository.GenerateStub<BitStreamReader>(new byte[1]);

customBsr.Stub(x => x.ReadUInt(3)).Return(1);

var customRpspTrailing = MockRepository.GenerateStub<RbspTrailingBits>();

39 | P a g e

customRpspTrailing.Stub(x => x.Parse(new BitStreamReader(new byte[1])));

var customNalUnit = MockRepository.GenerateStub<NalUnit>();

AccessUnitDelimiter obj = new AccessUnitDelimiter();

obj.AccessUnitDelimiterRbsp(customBsr);

XmlDocument xDoc = new XmlDocument();

XmlNode xmlNode = xDoc.CreateElement("rootNode");

xDoc.AppendChild(xmlNode);

obj.AppendToXml(xDoc, new NalUnitHeader(new byte()), customNalUnit);

Assert.AreEqual(1, xDoc.SelectSingleNode("rootNode/NAL-Unit-" + NalUnit.SequenceNumber +

"-AUD/AUD-Data").ChildNodes.Count);

}

}

}

40 | P a g e

Annex F – Flow of EventWatchingSystem

Succeeds

Fails

Fails

Succeeds

Yes

No

User Starts a Camera

Load CameraList.xml and

initialize each camera

Start

Succeed

Queries Camera’s

IO Status

Start an external process

CameraCtrlViewer.exe

User requires for sound IO in camera

Queries camera’s

sound IO status

Sound IO in either way

End

Error Message

Error message and change the

camera’s state

Figure 16: Flow chart of EventWatchingSystem

41 | P a g e

References

[1] http://visualstudioextensions.vlasovstudio.com/2014/02/13/visual-studio-2010-

macros-stop-working-after-february-2014-windows-update/

[2] http://support.microsoft.com/kb/2934830

[3] http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC

[4] http://en.wikipedia.org/wiki/Network_Abstraction_Layer#NAL_units

[5] http://www.itu.int/rec/T-REC-H.264-201106-S

[6] http://en.wikipedia.org/wiki/NUnit