<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2047935741097554299</id><updated>2024-10-25T02:27:10.929+05:30</updated><category term="MPEG"/><category term="H.264"/><category term="MPEG4"/><category term="Matlab"/><category term="Automatic Code Generation"/><category term="CCS"/><category term="Embedded Coder"/><category term="Model Based Design"/><category term="Real Time Workshop"/><category term="Simulink"/><category term="Target Specific Model"/><category term="Video Codec"/><category term="Video Processing Application"/><category term="AVC"/><category term="How Do I?"/><category term="Optimization"/><category term="Autonomic Computing"/><category term="Cloud Computing"/><category term="Floating Point to Fixed Point Conversion"/><category term="Grid computing"/><category term="Socket Programming"/><category term="Utility Computing"/><category term="Virtualization"/><category term="Function Level Optimization"/><category term="Inlining"/><category term="Multimedia Over IP"/><category term="Porting"/><category term="Project Level Optimization"/><category term="RFC"/><category term="RTP"/><category term="TI Board"/><category term="Amazon Web Services"/><category term="Audio Codec"/><category term="B Slice"/><category term="Blender"/><category term="C6416"/><category term="Durain Project"/><category term="Fixed Point"/><category term="Floating Point"/><category term="Image Processing"/><category term="Inter Prediction"/><category term="Intrinsic Function"/><category term="Linear Assembly"/><category term="Loop Merging"/><category term="Loop Splitting"/><category term="Loop Unrolling"/><category term="Multi Channel"/><category term="OpenCV"/><category term="Quantization"/><category term="RTCP"/><category term="Sintel"/><category term="Transformation"/><category term="Video Gallery"/><category term="Weighted Prediction"/><category term="id3"/><category term="id3v1"/><category term="id3v2"/><category term="iso 11172-3.iso 13818-3"/><category term="mp3"/><category term="mpeg 1"/><category term="mpeg 2"/><category term="mpeg layer 1"/><category term="stack overflow"/><category term="youtube"/><category term="3D Display"/><category term="3D Video"/><category term="3D View"/><category term="Adaptive Deblocking Filter"/><category term="Advanced H.264"/><category term="Blob"/><category term="Boundary Strength"/><category term="C"/><category term="C++"/><category term="C99"/><category term="Character Segmentation"/><category term="Deblocking Filter"/><category term="Direct Mode"/><category term="Dushehra"/><category term="Dussehra"/><category term="Edge Detection"/><category term="Electronic Toll System"/><category term="Embedding a Video"/><category term="Exell Sheet"/><category term="FAQs"/><category term="Filter Decision"/><category term="Free Viewpoint Video"/><category term="GNU C"/><category term="Goddess"/><category term="Graph partitioning"/><category term="Hardmard"/><category term="Histogram based"/><category term="I Slice"/><category term="INLINE"/><category term="In-loop Filter"/><category term="Integer Transformation"/><category term="Intra Prediction"/><category term="Kohonen map"/><category term="Language Setting on youtube"/><category term="License Plate Recognition System"/><category term="Lloyd&#39;s algorithm"/><category term="Lock Worksheet Cell"/><category term="Loopfilter"/><category term="Maa Durga"/><category term="Model based segmentation"/><category term="Morphological Operation"/><category term="Motion Vector Prediction"/><category term="Multiview Video Coding"/><category term="Navratri"/><category term="Neural network"/><category term="NonTech Articles"/><category term="One Click Video Sharing"/><category term="One-Click Video Sharing"/><category term="P Slice"/><category term="Plate Recognition"/><category term="Post Filter"/><category term="Post a video to Blog"/><category term="Processor-in-the-Loop"/><category term="Protect Worksheet"/><category term="Protect Worksheet Cell"/><category term="Pulse-Coupled Neural Networks"/><category term="RTSP"/><category term="RVSP"/><category term="Real-Time Control Protocol"/><category term="Reconstruction Filter"/><category term="Server Socketing"/><category term="Signature Matching"/><category term="Skeleton Matching"/><category term="Skipped Mode"/><category term="Socket Programming Example"/><category term="Stereo Scope Video"/><category term="Sub-pixel Motion Vector"/><category term="Tips for Optimizing C"/><category term="Tips for Optimizing C++"/><category term="Unlock Worksheet Cell"/><category term="Unprotect Worksheet"/><category term="Unprotect Worksheet Cell"/><category term="Vijayadashmi"/><category term="Watershed transformation"/><category term="Windows Socketing"/><category term="Windows TCPIP"/><category term="Working with Video Files in Matlab"/><category term="Working with Video Files in OpenCV"/><category term="Working with Videos in Matlab"/><category term="forceinline"/><category term="inline rules"/><category term="k means"/><category term="opencv customization"/><category term="opencv installation"/><category term="opencv with visual studio 2008"/><category term="playing video file in opencv"/><category term="playing video files"/><category term="region growing"/><category term="winsock"/><category term="ws2tcpip"/><title type='text'>My Technical Articles       .   .  . ...</title><subtitle type='html'>Learn From Nothing... Simple Thought - Simple Meaning.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-8731772316293108244</id><published>2010-11-23T09:07:00.004+05:30</published><updated>2011-05-04T19:36:11.436+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="C++"/><category scheme="http://www.blogger.com/atom/ns#" term="Optimization"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips for Optimizing C++"/><title type='text'>Optimization -05</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 22pt;&quot;&gt;Tips for Optimizing C++ Code&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 22pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;12. &lt;em&gt;Careful when declaring C++ object variables.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Use initialization instead of assignment (&lt;em&gt;Color c(black); &lt;/em&gt;is faster than &lt;em&gt;Color c; c = black;&lt;/em&gt;).&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt; &lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;13. &lt;em&gt;Make default class constructors as lightweight as possible.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Particularly for simple, frequently used classes (e.g., color, vector, point, etc.) that are manipulated frequently.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;These default constructors are often called behind your back, where you are not expecting it.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Use constructor initializer lists. (Use &lt;em&gt;Color::Color() : r(0), g(0), b(0) &lt;/em&gt;{} rather than &lt;em&gt;Color::Color() &lt;/em&gt;{ &lt;em&gt;r = g = b = 0; &lt;/em&gt;} .)&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;16. &lt;em&gt;For most classes, use the operators &lt;/em&gt;+=&lt;em&gt;, &lt;/em&gt;-=&lt;em&gt;, &lt;/em&gt;*=&lt;em&gt;, and &lt;/em&gt;/=&lt;em&gt;, instead of the operators &lt;/em&gt;+&lt;em&gt;, &lt;/em&gt;-&lt;em&gt;, &lt;/em&gt;*&lt;em&gt;, and &lt;/em&gt;/&lt;em&gt;.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The simple operations need to create an unnamed, temporary intermediate object.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;For instance: &lt;em&gt;Vector v = Vector(1,0,0) + Vector(0,1,0) + Vector(0,0,1); &lt;/em&gt;creates five unnamed, temporary Vectors: &lt;em&gt;Vector(1,0,0)&lt;/em&gt;, &lt;em&gt;Vector(0,1,0)&lt;/em&gt;, &lt;em&gt;Vector(0,0,1)&lt;/em&gt;, &lt;em&gt;Vector(1,0,0) + Vector(0,1,0)&lt;/em&gt;, and &lt;em&gt;Vector(1,0,0) + Vector(0,1,0) + Vector(0,0,1)&lt;/em&gt;.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The slightly more verbose code: &lt;em&gt;Vector v(1,0,0); v+= Vector(0,1,0); v+= Vector(0,0,1); &lt;/em&gt;only creates two temporary Vectors: &lt;em&gt;Vector(0,1,0) &lt;/em&gt;and &lt;em&gt;Vector(0,0,1)&lt;/em&gt;. This saves 6 functions calls (3 constructors and 3 destructors).&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;18. &lt;em&gt;Delay declaring local variables.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Declaring object variable always involves a function call (to the constructor).&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;If a variable is only needed sometimes (e.g., inside an if statement) only declare when necessary, so the constructor is only called if the variable will be used.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;19. &lt;em&gt;For objects, use the prefix operator &lt;/em&gt;(++obj) &lt;em&gt;instead of the postfix operator &lt;/em&gt;(obj++)&lt;em&gt;.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;This probably will not be an issue in your ray tracer.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;A copy of the object must be made with the postfix operator (which thus involves an extra call the the constructor and destructor), whereas the prefix operator does not need a temporary copy.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;20. &lt;em&gt;Careful using templates.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Optimizations for various instantiations may need to be different!&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The standard template library is reasonably well optimized, but I would avoid using it if you plan to implement an interactive ray tracer.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Why? By implementing it yourself, you&#39;ll know the algorithms it uses, so you will know the most efficient way to use the code.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;More importantly, my experience is that debug compiles of STL libraries are slow. Normally this isn&#39;t a problem, except you will be using debug versions for profiling. You&#39;ll find STL constructors, iterators, etc. use 15+% of your run time, which can make reading the profile output more confusing.&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Georgia;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/8731772316293108244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/11/optimization-05.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/8731772316293108244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/8731772316293108244'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/11/optimization-05.html' title='Optimization -05'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-4565139181071342913</id><published>2010-11-23T08:53:00.006+05:30</published><updated>2010-11-23T09:04:52.293+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="Optimization"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips for Optimizing C"/><title type='text'>Optimization -04</title><content type='html'>&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 22pt;&quot;&gt;Tips for Optimizing C Code&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 22pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;1. &lt;em&gt;Remember Ahmdal&#39;s Law: &lt;/em&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Where func&lt;sub&gt;cost&lt;/sub&gt; is the percentage of the program runtime used by the function func, and func&lt;sub&gt;speedup&lt;/sub&gt; is the factor by which you speedup the function.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Thus, if you optimize the function func(), which is 40% of the runtime, so that it runs twice as fast, your program will run 25% faster .&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;This means infrequently used code (e.g., the scene loader) probably should be optimized little (if at all).&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;2. &lt;em&gt;First Code for correctness, then optimize!&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;This does not mean write a fully functional ray tracer for 8 weeks, then optimize for 8 weeks!&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Perform optimizations on your ray tracer in multiple steps.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Write for correctness, and then if you know the function will be called frequently, perform obvious optimizations.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Then profile to find bottlenecks, and remove the bottlenecks (by optimization or by improving the algorithm). Often improving the algorithm drastically changes the bottleneck – perhaps to a function you might not expect. This is a good reason to perform obvious optimizations on all functions you know will be frequently used.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;3. &lt;em&gt;People I know who write very efficient code say- they spend at least twice as long optimizing code as they spend writing code.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;4. &lt;em&gt;Jumps/branches are expensive. Minimize their use whenever possible.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Function calls require &lt;em&gt;two &lt;/em&gt;jumps, in addition to stack memory manipulation.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Prefer iteration over recursion.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Use inline functions for short functions to eliminate function overhead.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Move loops inside function calls &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;e.g., change &lt;em&gt;for(i=0;i&lt;/em&gt;&amp;lt;&lt;em&gt;100;i++)&lt;/em&gt;{ &lt;em&gt;... &lt;/em&gt;} &lt;em&gt; DoSomething(); &lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;into &lt;em&gt;DoSomething() &lt;/em&gt;{ &lt;em&gt;for(i=0;i&lt;/em&gt;&amp;lt;&lt;em&gt;100;i++) &lt;/em&gt;{ &lt;em&gt;... &lt;/em&gt;} } .&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Long if...else if...else if...else if... chains require &lt;em&gt;lots &lt;/em&gt;of jumps for cases near the end of the chain (in addition to testing each condition). If possible, convert to a &lt;em&gt;switch &lt;/em&gt;statement, which the compiler sometimes optimizes into a table lookup with a single jump. If a &lt;em&gt;switch &lt;/em&gt;statement is not possible, put the most common clauses at the beginning of the if chain.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;5. &lt;em&gt;Think about the order of array indices.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Two and higher dimensional arrays are still stored in one dimensional memory. This means (for C/C++ arrays) &lt;em&gt;array[i][j] &lt;/em&gt;and &lt;em&gt;array[i][j+1] &lt;/em&gt;are adjacent to each other, whereas &lt;em&gt;array[i][j] &lt;/em&gt;and &lt;em&gt;array[i+1][j] &lt;/em&gt;may be arbitrarily far apart.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Accessing data in a more-or-less sequential fashion, as stored in physical memory, can &lt;em&gt;dramatically &lt;/em&gt;speed up your code (sometimes by an order of magnitude, or more)!&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;When modern CPUs load data from main memory into processor cache, they fetch more than a single value. Instead they fetch a block of memory containing the requested data and adjacent data (a &lt;em&gt;cache line&lt;/em&gt;). This means after &lt;em&gt;array[i][j] &lt;/em&gt;is in the CPU cache, &lt;em&gt;array[i][j+1] &lt;/em&gt;has a good chance of already being in cache, whereas &lt;em&gt;array[i+1][j] &lt;/em&gt;is likely to still be in main memory.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;6. &lt;em&gt;Think about instruction-level-parallelism.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Even though many applications still rely on single threaded execution, modern CPUs already have a significant amount of parallelism inside a single core. This means a single CPU might be simultaneously executing 4 floating point multiplies, waiting for 4 memory requests, and performing a comparison for an upcoming branch.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;To make the most of this parallelism, blocks of code (i.e., between jumps) need to have enough independent instructions to allow the CPU to be fully utilized.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Think about unrolling loops to improve this.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;This is also a good reason to use inline functions.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;7. &lt;em&gt;Avoid/reduce the number of local variables.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Local variables are normally stored on the stack. However if there are few enough, they can instead be stored in registers. In this case, the function not only gets the benefit of the faster memory access of data stored in registers, but the function avoids the overhead of setting up a stack frame.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(Do not, however, switch wholesale to global variables!)&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;8. &lt;em&gt;Reduce the number of function parameters.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;For the same reason as reducing local variables – they are also stored on the stack.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;9. &lt;em&gt;Pass structures by reference, not by value.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;I know of no case in a ray tracer where structures should be passed by value (even simple ones like Vectors, Points, and Colors).&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt; &lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;10. &lt;em&gt;If you do not need a return value from a function, do not define one.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;11. &lt;em&gt;Try to avoid casting where possible.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Integer and floating point instructions often operate on different registers, so a cast requires a copy.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Shorter integer types (char and short) still require the use of a full-sized register, and they need to be padded to 32/64-bits and then converted back to the smaller size before storing back in memory. &lt;em&gt;(However, this cost must be weighed against the additional memory cost of a larger data type.)&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;12. &lt;em&gt;Careful when declaring C variables.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Use initialization instead of assignment (&lt;em&gt;Color c = black); &lt;/em&gt;is faster than &lt;em&gt;Color c; c = black ;&lt;/em&gt;).&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt; &lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;14. &lt;em&gt;Use shift operations &lt;/em&gt;&amp;gt;&amp;gt; &lt;em&gt;and &lt;/em&gt;&amp;lt;&amp;lt; &lt;em&gt;instead of integer multiplication and division, where possible.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;15. &lt;em&gt;Careful using table-lookup functions.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Many people encourage using tables of precomputed values for complex functions (e.g., trigonometric functions). For ray tracing, this is often unnecessary. Memory lookups are exceedingly (and increasingly) expensive, and it is often as fast to recompute a trigonometric function as it is to retrieve the value from memory (especially when you consider the trig lookup pollutes the CPU cache).&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In other instances, lookup tables may be quite useful. For GPU programming, table lookups are often preferred for complex functions.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;17. &lt;em&gt;For basic data types, use the operators &lt;/em&gt;+,&amp;nbsp;-&lt;em&gt;, &lt;/em&gt;*&lt;em&gt;, and &lt;/em&gt;/ &lt;em&gt;instead of the operators &lt;/em&gt;+=&lt;em&gt;, &lt;/em&gt;-=&lt;em&gt;, &lt;/em&gt;*=&lt;em&gt;, and &lt;/em&gt;/=&lt;em&gt;.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;21. &lt;em&gt;Avoid dynamic memory allocation during computation.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Dynamic memory is great for storing the scene and other data that does not change during computation.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;However, on many (most) systems dynamic memory allocation requires the use of locks to control an access to the allocator. For multi-threaded applications that use dynamic memory, you may actually get a slowdown by adding additional processors, due to the wait to allocate and free memory!&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Even for single threaded applications, allocating memory on the heap is more expensive than adding it on the stack. The operating system needs to perform some computation to find a memory block of the requisite size.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;22. &lt;em&gt;Find and utilize information about your system&#39;s memory cache.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;If a data structure fits in a single cache line, only a single fetch from main memory is required to process the entire class.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Make sure all data structures are aligned to cache line boundaries. (If both your data structure and a cache line are 128 bytes, you will still have poor performance if 1 byte of your structure is in once cache line and the other 127 bytes are in a second cache line).&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;23. &lt;em&gt;Avoid unnecessary data initialization.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;If you must initialize a large chunk of memory, consider using &lt;em&gt;memset()&lt;/em&gt;.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt; &lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;24. &lt;em&gt;Try to early loop termination and early function returns.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Consider intersecting a ray and a triangle. The &quot;common case&quot; is that the ray will miss the triangle. Thus, this should be optimized for.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;If you decide to intersect the ray with the triangle plane, you can immediately return if the &lt;em&gt;t &lt;/em&gt;value ray-plane intersection is negative. This allows you to skip the barycentric coordinate computation in roughly half of the ray-triangle intersections. A big win! As soon as you know no intersection occurs, the intersection function should quit.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Similarly, some loops can be terminated early. For instance, when shooting shadow rays, the location of the nearest intersection is unnecessary. As soon as &lt;em&gt;any &lt;/em&gt;occluding intersection is found, the intersection routine can return.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;25. &lt;em&gt;Simplify your equations &lt;/em&gt;on paper&lt;em&gt;!&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In many equations, terms cancel out... either always or in some special cases.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The compiler cannot find these simplifications, but you can. Eliminating a few expensive operations inside an inner loop can speed your program more than days working on other parts.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;26. &lt;em&gt;The difference between math on integers, fixed points, 32-bit floats, and 64-bit doubles is not as big as you might think.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;On modern CPUs, floating-point operations have essentially the same throughput as integer operations. In compute-intensive programs like ray tracing, this leads to a negligible difference between integer and floating-point costs. This means, you should not go out of your way to use integer operations.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Double precision floating-point operations may not be slower than single precision floats, particularly on 64-bit machines. I have seen ray tracers run &lt;em&gt;faster &lt;/em&gt;using all doubles than all floats on the same machine. I have also seen the reverse.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;27. &lt;em&gt;Consider ways of rephrasing your math to eliminate expensive operations.&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;sqrt() &lt;/em&gt;can often be avoided, especially in comparisons where comparing the value squared gives the same result.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;If you repeatedly divide by x, consider computing 1/x and multiplying by the result. This used to be a big win for vector normalizations (3 divides), but I&#39;ve recently found it&#39;s now a toss-up. However, it should still be beneficial if you do more than 3 divides.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;If you perform a loop, make sure computations that do not change between iterations are pulled out of the loop.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Consider if you can compute values in a loop incrementally (instead of computing from scratch each iteration).&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Georgia;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/4565139181071342913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/11/optimization-04.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/4565139181071342913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/4565139181071342913'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/11/optimization-04.html' title='Optimization -04'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-6696618688187221287</id><published>2010-11-15T23:27:00.011+05:30</published><updated>2010-11-16T00:37:16.246+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Server Socketing"/><category scheme="http://www.blogger.com/atom/ns#" term="Socket Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Socket Programming Example"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Socketing"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows TCPIP"/><category scheme="http://www.blogger.com/atom/ns#" term="winsock"/><category scheme="http://www.blogger.com/atom/ns#" term="ws2tcpip"/><title type='text'>Socket Programming -01</title><content type='html'>&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 22pt;&quot;&gt;Socket Programming - Server (Rx)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;#define&lt;/span&gt; WIN32_LEAN_AND_MEAN&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&amp;lt;windows.h&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&amp;lt;winsock2.h&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&amp;lt;ws2tcpip.h&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&amp;lt;conio.h&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: green; font-family: Georgia;&quot;&gt;// Need to link with Ws2_32.lib, Mswsock.lib, and Advapi32.lib&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;#pragma&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;comment&lt;/span&gt; (&lt;span style=&quot;color: blue;&quot;&gt;lib&lt;/span&gt;, &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Ws2_32.lib&quot;&lt;/span&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;#pragma&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;comment&lt;/span&gt; (&lt;span style=&quot;color: blue;&quot;&gt;lib&lt;/span&gt;, &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Mswsock.lib&quot;&lt;/span&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;#pragma&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;comment&lt;/span&gt; (&lt;span style=&quot;color: blue;&quot;&gt;lib&lt;/span&gt;, &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;AdvApi32.lib&quot;&lt;/span&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;#define&lt;/span&gt; DEFAULT_BUFLEN 1452&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;#define&lt;/span&gt; DEFAULT_PORT &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;27015&quot;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; main (&lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt;) &lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;{&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;   WSADATA wsaData;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FILE *fp;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SOCKET ListenSocket = INVALID_SOCKET, ClientSocket = INVALID_SOCKET;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;struct&lt;/span&gt; addrinfo *result = NULL, hints;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;char&lt;/span&gt; recvbuf[DEFAULT_BUFLEN];&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; iResult, iSendResult;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; recvbuflen = DEFAULT_BUFLEN;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia;&quot;&gt;fp = fopen(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;receive.dat&quot;&lt;/span&gt;,&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;wb&quot;&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: green; font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: green; font-family: Georgia;&quot;&gt;// Initialize Winsock&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;iResult = WSAStartup(MAKEWORD(2,2), &amp;amp;wsaData);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (iResult != 0) {&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; printf(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;WSAStartup failed with error: %d\n&quot;&lt;/span&gt;, iResult);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; 1;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;ZeroMemory(&amp;amp;hints, &lt;span style=&quot;color: blue;&quot;&gt;sizeof&lt;/span&gt;(hints));&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;hints.ai_family = AF_INET;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;hints.ai_socktype = SOCK_STREAM;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;hints.ai_protocol = IPPROTO_TCP;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;hints.ai_flags = AI_PASSIVE;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: green; font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: green; font-family: Georgia;&quot;&gt;// Resolve the server address and port&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;iResult = getaddrinfo(NULL, DEFAULT_PORT, &amp;amp;hints, &amp;amp;result);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; ( iResult != 0 ) {&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; printf(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;getaddrinfo failed with error: %d\n&quot;&lt;/span&gt;, iResult);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; WSACleanup();&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; 1;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: green; font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: green; font-family: Georgia;&quot;&gt;// Create a SOCKET for connecting to server&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;ListenSocket = socket(result-&amp;gt;ai_family, result-&amp;gt;ai_socktype, result-&amp;gt;ai_protocol);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (ListenSocket == INVALID_SOCKET) {&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; printf(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;socket failed with error: %ld\n&quot;&lt;/span&gt;, WSAGetLastError());&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; freeaddrinfo(result);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; WSACleanup();&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; 1;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: green; font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: green; font-family: Georgia;&quot;&gt;// Setup the TCP listening socket&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;iResult = bind( ListenSocket, result-&amp;gt;ai_addr, (&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt;)result-&amp;gt;ai_addrlen);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (iResult == SOCKET_ERROR) {&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; printf(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;bind failed with error: %d\n&quot;&lt;/span&gt;, WSAGetLastError());&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; closesocket(ListenSocket);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; WSACleanup();&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; 1;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;freeaddrinfo(result);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;iResult = listen(ListenSocket, SOMAXCONN);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (iResult == SOCKET_ERROR) {&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; printf(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;listen failed with error: %d\n&quot;&lt;/span&gt;, WSAGetLastError());&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; closesocket(ListenSocket);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; WSACleanup();&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; 1;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: green; font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: green; font-family: Georgia;&quot;&gt;// Accept a client socket&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;ClientSocket = accept(ListenSocket, NULL, NULL);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (ClientSocket == INVALID_SOCKET) {&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; printf(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;accept failed with error: %d\n&quot;&lt;/span&gt;, WSAGetLastError());&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; closesocket(ListenSocket);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; WSACleanup();&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; 1;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: green; font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: green; font-family: Georgia;&quot;&gt;// No longer need server socket&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;closesocket(ListenSocket);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: green; font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: green; font-family: Georgia;&quot;&gt;// Receive until the peer shuts down the connection&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;do&lt;/span&gt; {&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; iResult = recv(ClientSocket, recvbuf, recvbuflen, 0);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (iResult &amp;gt; 0)  {&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; printf(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Bytes received: %d\n&quot;&lt;/span&gt;, iResult);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; &lt;span style=&quot;color: green;&quot;&gt;// Echo the buffer back to the sender&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; iSendResult = send( ClientSocket, recvbuf, iResult, 0 );&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; &lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (iSendResult == SOCKET_ERROR) {&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  printf(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;send failed with error: %d\n&quot;&lt;/span&gt;, WSAGetLastError());&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  closesocket(ClientSocket);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  WSACleanup();&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; 1;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; }&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; printf(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Bytes sent: %d\n&quot;&lt;/span&gt;, iSendResult);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; }&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt; else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (iResult == 0)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  printf(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Connection closing...\n&quot;&lt;/span&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt; else&lt;/span&gt;  {&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  printf(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;recv failed with error: %d\n&quot;&lt;/span&gt;, WSAGetLastError());&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  closesocket(ClientSocket);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  WSACleanup();&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; 1;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; }&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;} &lt;span style=&quot;color: blue;&quot;&gt;while&lt;/span&gt; (iResult &amp;gt; 0);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; &lt;span style=&quot;color: green;&quot;&gt;// shutdown the connection since we&#39;re done&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  iResult = shutdown(ClientSocket, SD_SEND);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (iResult == SOCKET_ERROR) {&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  printf(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;shutdown failed with error: %d\n&quot;&lt;/span&gt;, WSAGetLastError());&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  closesocket(ClientSocket);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  WSACleanup();&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; 1;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; }&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; &lt;span style=&quot;color: green;&quot;&gt;// cleanup&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; closesocket(ClientSocket);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; WSACleanup();&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; fclose(fp);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; printf(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Sucessfully Received Data...\n&quot;&lt;/span&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt; return&lt;/span&gt; 0;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: green; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;.&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/6696618688187221287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/11/socket-programming-01.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/6696618688187221287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/6696618688187221287'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/11/socket-programming-01.html' title='Socket Programming -01'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-7396487106357526658</id><published>2010-11-09T08:44:00.004+05:30</published><updated>2010-11-09T08:54:58.092+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Matlab"/><category scheme="http://www.blogger.com/atom/ns#" term="Working with Video Files in Matlab"/><category scheme="http://www.blogger.com/atom/ns#" term="Working with Videos in Matlab"/><title type='text'>Matlab - 01</title><content type='html'>&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 22pt;&quot;&gt;Working with Videos in MATLAB&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;MATLAB supports only &quot;raw&quot; (uncompressed) avi files on Linux and only some Indeo and Cinepack compressed versions on Windows. But mostly we get videos in MPEG. So we need to convert to raw or any supported format. For this, FFmpeg can be used.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;AVI means Audio Video Interleave and is only a container format. AVI does not mean raw video. It is possible to have mpeg or many other compressed avi files. MATLAB cannot read such a compressed avi files. (See &lt;a href=&quot;http://en.wikipedia.org/wiki/Audio_Video_Interleave&quot;&gt;http://en.wikipedia.org/wiki/Audio_Video_Interleave&lt;/a&gt;).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia; font-size: 24px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia;&quot;&gt;1.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia; font-size: 24px;&quot;&gt;Section: If we have raw video (or supported format)&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;span xmlns=&quot;&quot;&gt; &lt;/span&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;If we have raw video, then handling in MATLAB is quite easy. We need to use functions mmreader, read, movie, mmfileinfo, frame2im, im2frame, aviread, avifile, aviinfo, addframe (avifile), close (avifile), movie2avi functions. Following code reads and plays back a given video. For further details and other functions see MATLAB help.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: forestgreen; font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: forestgreen; font-family: Georgia;&quot;&gt;%Reads and plays back the movie file xylophone.mpg.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;xyloObj = mmreader(&lt;span style=&quot;color: #a020f0;&quot;&gt;&#39;xylophone.mpg&#39;&lt;/span&gt;);&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; nFrames = xyloObj.NumberOfFrames;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;vidHeight = xyloObj.Height;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;vidWidth = xyloObj.Width;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: forestgreen;&quot;&gt;% Preallocate movie structure.&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;mov(1:nFrames) = struct(&lt;span style=&quot;color: #a020f0;&quot;&gt;&#39;cdata&#39;&lt;/span&gt;, zeros(vidHeight, vidWidth, 3, &lt;span style=&quot;color: #a020f0;&quot;&gt;&#39;uint8&#39;&lt;/span&gt;),&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #a020f0;&quot;&gt;&#39;colormap&#39;&lt;/span&gt;, []);&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: forestgreen;&quot;&gt;% Read one frame at a time.&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;for&lt;/span&gt; k = 1 : nFrames&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;    mov(k).cdata = read(xyloObj, k);&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;end&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: forestgreen;&quot;&gt;% Size a figure based on the video&#39;s width and height.&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;hf = figure;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;set(hf, &lt;span style=&quot;color: #a020f0;&quot;&gt;&#39;position&#39;&lt;/span&gt;, [150 150 vidWidth vidHeight])&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: forestgreen;&quot;&gt;% Play back the movie once at the video&#39;s frame rate.&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;movie(hf, mov, 1, xyloObj.FrameRate);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia;&quot;&gt;2.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia; font-size: 24px;&quot;&gt;Section: If we have not supported video format&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;span xmlns=&quot;&quot;&gt; &lt;/span&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;We can use any converter tool to convert compressed video to uncompressed avi format. One such tool is FFmpeg (&lt;span style=&quot;color: blue;&quot;&gt;http://ffmpeg.mplayerhq.hu/index.html&lt;/span&gt;). Mplayer, VLC and many other players are based on this codec.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;If you are a Windows user, just download latest binary from &lt;span style=&quot;color: blue;&quot;&gt;http://ffdshow.faireal.net/mirror/ffmpeg/ &lt;/span&gt;(Any virus? I don&#39;t know. Download at your risk!). (You can use WinRAR to uncompress .7z - &lt;a href=&quot;http://www.freedownloadscenter.com/Utilities/Compression_and_Zip_File_Utilities/WinRAR_Download.html&quot;&gt;http://www.freedownloadscenter.com/Utilities/Compression_and_Zip_File_Utilities/WinRAR_Download.html&lt;/a&gt; )&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Use this command to convert any compressed file (compressed.any) to uncompressed avi file (uncompressed.avi) (Note: pthreadGC2.dll file should be in the same directory as ffmpeg.exe).&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;ffmpeg.exe -i compressed.any -vcodec rawvideo uncompressed.avi&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;This should work most of the cases. However, sometimes it may not work (because, avi is a container format by Microsoft! :)). The converted video may have only blank frames or MATLAB may not be able to read it properly. In such a case, you can try steps explained in Section 3.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia;&quot;&gt;3.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia; font-size: 24px;&quot;&gt;Section: If Section 2 does not work&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;span xmlns=&quot;&quot;&gt; &lt;/span&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Create a folder by name &quot;images&quot;. Use this command to convert each frame of the compressed video to bmp (or ppm, jpg) images using ffmpeg or virtualDub and put it into the folder &quot;images&quot;.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;ffmpeg.exe -i compressed.any images/image_%d.bmp&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Now you can use these images for processing. If you want uncompressed avi file, then use following MATLAB code to combine all raw images into a single uncompressed avi file.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;%Script file to combine images to an uncompressed avi file&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: #228c22; font-family: Georgia;&quot;&gt;%Directory that contains images&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;in_dir = &lt;span style=&quot;color: #a120f1;&quot;&gt;&#39;D:\temp\ffmpeg.rev11870\images\&#39;&lt;/span&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;fout = &lt;span style=&quot;color: #a120f1;&quot;&gt;&#39;D:\out.avi&#39;&lt;/span&gt;; &lt;span style=&quot;color: #228c22;&quot;&gt;%Output file name&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;num_images = 341; &lt;span style=&quot;color: #228c22;&quot;&gt;%Number of images&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;color: #228c22; font-family: Georgia;&quot;&gt;%Set a suitable frame rate fps&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;aviobj = avifile(fout, &lt;span style=&quot;color: #a120f1;&quot;&gt;&#39;compression&#39;&lt;/span&gt;, &lt;span style=&quot;color: #a120f1;&quot;&gt;&#39;none&#39;&lt;/span&gt;, &lt;span style=&quot;color: #a120f1;&quot;&gt;&#39;fps&#39;&lt;/span&gt;, 25);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;for &lt;/span&gt;i = 1:num_images;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 28pt; text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;temp = sprintf(&lt;span style=&quot;color: #a120f1;&quot;&gt;&#39;%d&#39;&lt;/span&gt;, i);&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 28pt; text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;name = [in_dir, &lt;span style=&quot;color: #a120f1;&quot;&gt;&#39;image_&#39;&lt;/span&gt;, temp, &lt;span style=&quot;color: #a120f1;&quot;&gt;&#39;.bmp&#39;&lt;/span&gt;]; &lt;span style=&quot;color: #228c22;&quot;&gt;%For ppm, change&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 28pt; text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;img = imread(name);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 28pt; text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;frm = im2frame(img);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 28pt; text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;aviobj = addframe(aviobj,frm);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 28pt; text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;i&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;end&lt;/span&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;aviobj = close(aviobj);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia;&quot;&gt;4.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia; font-size: 24px;&quot;&gt;Useful Functions&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;span xmlns=&quot;&quot;&gt; &lt;/span&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;mmreader, read, movie, mmfileinfo, frame2im, im2frame, aviread, avifile, aviinfo, addframe (avifile), close (avifile), movie2avi&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia;&quot;&gt;5.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia; font-size: 24px;&quot;&gt;Supported File Formats&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;span xmlns=&quot;&quot;&gt; &lt;/span&gt;&lt;/ol&gt;&lt;div&gt;&lt;table border=&quot;0&quot; style=&quot;border-collapse: collapse;&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 128px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 506px;&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr style=&quot;background: #b2b2b2;&quot;&gt;&lt;td colspan=&quot;2&quot; style=&quot;border-bottom: outset 0.75pt; border-left: outset 0.75pt; border-right: outset 0.75pt; border-top: outset 0.75pt; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Platform&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: outset 0.75pt; border-left: none; border-right: outset 0.75pt; border-top: outset 0.75pt; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Supported File Formats&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background: #f2f2f2;&quot;&gt;&lt;td colspan=&quot;2&quot; style=&quot;border-bottom: outset 0.75pt; border-left: outset 0.75pt; border-right: outset 0.75pt; border-top: none; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px;&quot; valign=&quot;middle&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Windows&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: outset 0.75pt; border-left: none; border-right: outset 0.75pt; border-top: none; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px;&quot; valign=&quot;middle&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;AVI (&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;.avi&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;),&lt;br /&gt;
MPEG-1 (&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;.mpg&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;),&lt;br /&gt;
Motion JPEG 2000 (&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;.mj2&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Georgia;&quot;&gt;Windows Media Video (&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;.wmv&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;.asf&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;.asx&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;),&lt;br /&gt;
and any format supported by Microsoft DirectShow.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background: #f2f2f2;&quot;&gt;&lt;td colspan=&quot;2&quot; style=&quot;border-bottom: outset 0.75pt; border-left: outset 0.75pt; border-right: outset 0.75pt; border-top: none; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px;&quot; valign=&quot;middle&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Macintosh&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: outset 0.75pt; border-left: none; border-right: outset 0.75pt; border-top: none; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px;&quot; valign=&quot;middle&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;AVI (&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;.avi&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;),&lt;br /&gt;
MPEG-1 (&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;.mpg&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;),&lt;br /&gt;
MPEG-4 (&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;.mp4&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;.m4v&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;),&lt;br /&gt;
Motion JPEG 2000 (&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;.mj2&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Georgia;&quot;&gt;Apple QuickTime Movie (&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;.mov&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;),&lt;br /&gt;
and any format supported by QuickTime as listed on &lt;a href=&quot;http://www.apple.com/quicktime/player/specs.html&quot; target=&quot;_top&quot;&gt;http://www.apple.com/quicktime/player/specs.html&lt;/a&gt;.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background: #f2f2f2;&quot;&gt;&lt;td colspan=&quot;2&quot; style=&quot;border-bottom: outset 0.75pt; border-left: outset 0.75pt; border-right: outset 0.75pt; border-top: none; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px;&quot; valign=&quot;middle&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Linux&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: outset 0.75pt; border-left: none; border-right: outset 0.75pt; border-top: none; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px;&quot; valign=&quot;middle&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Motion JPEG 2000 (&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;.mj2&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Georgia;&quot;&gt;Any format supported by your installed plug-ins for GStreamer 0.10 or above, as listed on &lt;a href=&quot;http://gstreamer.freedesktop.org/documentation/plugins.html&quot;&gt;http://gstreamer.freedesktop.org/documentation/plugins.html&lt;/a&gt;, including AVI (&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;.avi&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;) and Ogg Theora (&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;.ogg&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;).&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div&gt;.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/7396487106357526658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/11/matlab-01.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/7396487106357526658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/7396487106357526658'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/11/matlab-01.html' title='Matlab - 01'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-3274780575293014426</id><published>2010-11-08T17:03:00.016+05:30</published><updated>2010-11-08T19:11:31.780+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="How Do I?"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenCV"/><category scheme="http://www.blogger.com/atom/ns#" term="playing video file in opencv"/><category scheme="http://www.blogger.com/atom/ns#" term="playing video files"/><category scheme="http://www.blogger.com/atom/ns#" term="Working with Video Files in OpenCV"/><title type='text'>OpenCV – 02</title><content type='html'>&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 22pt;&quot;&gt;Working with Videos in OpenCV&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&amp;lt;cv.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;#include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #a31515;&quot;&gt;&amp;lt;highgui.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; main(&lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;/* Create an object that decodes the input video stream. */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CvCapture *input_video = cvCaptureFromFile(&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;VideoPlay_Demo.avi&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt; (input_video == NULL)&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;/* Either the video didn&#39;t exist OR codec doesn&#39;t support */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fprintf(stderr, &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Error: Can&#39;t open video.\n&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt; -1;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;/* Read the video&#39;s frame size out of the AVI. */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CvSize frame_size;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;frame_size.height =&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;) cvGetCaptureProperty(input_video, CV_CAP_PROP_FRAME_HEIGHT);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;frame_size.width =&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;(&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt;) cvGetCaptureProperty(input_video, CV_CAP_PROP_FRAME_WIDTH);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;/* Determine the number of frames in the AVI. */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;long&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt; number_of_frames;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;number_of_frames =&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;(&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt;) cvGetCaptureProperty(input_video, CV_CAP_PROP_FRAME_COUNT);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;/* Create a windows called &quot;VideoPlay_Demo&quot; for output.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: green; font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * window automatically change its size to match the output. */&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;cvNamedWindow(&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;VideoPlay_Demo&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;, CV_WINDOW_AUTOSIZE);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;long&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt; current_frame = 0;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;while&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;true&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;static&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt; IplImage *frame = NULL;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: green; font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Go to the frame we want */&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: green;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;cvSetCaptureProperty( input_video, CV_CAP_PROP_POS_FRAMES, current_frame );&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: green; font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;/* Get the next frame of the video */&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: green;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;frame = cvQueryFrame( input_video );&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt; (frame == NULL)&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fprintf(stderr, &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Error: Hmm. The end came sooner than we thought.\n&quot;&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt; -1;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: green; font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Now display the image */&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cvShowImage(&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;VideoPlay_Demo&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;, frame);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: green; font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: green; font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* And wait for. If the argument is 0 then it waits forever otherwise it waits that number of milliseconds */&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cvWaitKey(60);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;current_frame++;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt; (current_frame &amp;lt; 0)&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;current_frame = 0;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt; (current_frame &amp;gt;= number_of_frames - 1)&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;current_frame = number_of_frames - 2;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; font-size: 13px;&quot;&gt;.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/3274780575293014426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/11/opencv-playing-videos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/3274780575293014426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/3274780575293014426'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/11/opencv-playing-videos.html' title='OpenCV – 02'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-3400563347433396688</id><published>2010-10-25T20:05:00.003+05:30</published><updated>2010-10-30T18:47:04.942+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Audio Codec"/><category scheme="http://www.blogger.com/atom/ns#" term="id3"/><category scheme="http://www.blogger.com/atom/ns#" term="id3v1"/><category scheme="http://www.blogger.com/atom/ns#" term="id3v2"/><category scheme="http://www.blogger.com/atom/ns#" term="iso 11172-3.iso 13818-3"/><category scheme="http://www.blogger.com/atom/ns#" term="mp3"/><category scheme="http://www.blogger.com/atom/ns#" term="MPEG"/><category scheme="http://www.blogger.com/atom/ns#" term="mpeg 1"/><category scheme="http://www.blogger.com/atom/ns#" term="mpeg 2"/><category scheme="http://www.blogger.com/atom/ns#" term="mpeg layer 1"/><title type='text'>Audio Codec – MP3 –ID3v2.3</title><content type='html'>&lt;span xmlns=&#39;&#39;&gt;&lt;div&gt;&lt;table border=&#39;0&#39; style=&#39;border-collapse:collapse&#39;&gt;&lt;colgroup&gt;&lt;col style=&#39;width:16px&#39;/&gt;&lt;col style=&#39;width:0px&#39;/&gt;&lt;col style=&#39;width:18px&#39;/&gt;&lt;col style=&#39;width:14px&#39;/&gt;&lt;col style=&#39;width:6px&#39;/&gt;&lt;col style=&#39;width:20px&#39;/&gt;&lt;col style=&#39;width:570px&#39;/&gt;&lt;/colgroup&gt;&lt;tbody valign=&#39;top&#39;&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;7&#39;&gt;&lt;p&gt;&lt;span style=&#39;font-family:Georgia; font-size:22pt&#39;&gt;MP3 Codec - ID3 tag version 2.3.0&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&#39;height: 24px&#39;&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;3&#39;&gt;&lt;p style=&#39;text-align: right&#39;&gt;&lt;span style=&#39;font-family:Georgia; font-size:18pt&#39;&gt;1&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;3&#39;&gt;&lt;p&gt;&lt;span style=&#39;font-family:Georgia; font-size:18pt&#39;&gt;ID3v2 Overview&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The two biggest design goals were to be able to implement ID3v2 without disturbing old software too much and that ID3v2 should be as flexible and expandable as possible. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The first criterion is met by the simple fact that the MPEG decoding software uses a syncsignal, embedded in the audiostream, to &#39;lock on to&#39; the audio. Since the ID3v2 tag doesn&#39;t contain a valid syncsignal, no software will attempt to play the tag. If, for any reason, coincidence make a syncsignal appear within the tag it will be taken care of by the &#39;unsynchronisation scheme&#39;. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The second criterion has made a more noticeable impact on the design of the ID3v2 tag. It is constructed as a container for several information blocks, called frames, whose format need not be known to the software that encounters them. At the start of every frame there is an identifier that explains the frames&#39; format and content, and a size descriptor that allows software to skip unknown frames. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;If a total revision of the ID3v2 tag should be needed, there is a version number and a size descriptor in the ID3v2 header. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The ID3 tag described in this document is mainly targeted at files encoded with MPEG-1/2 layer I, MPEG-1/2 layer II, MPEG-1/2 layer III and MPEG-2.5, but may work with other types of encoded audio. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The bitorder in ID3v2 is most significant bit first (MSB). The byteorder in multibyte numbers is most significant byte first (e.g. $12345678 would be encoded $12 34 56 78). &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;It is permitted to include padding after all the final frame (at the end of the ID3 tag), making the size of all the frames together smaller than the size given in the head of the tag. A possible purpose of this padding is to allow for adding a few additional frames or enlarge existing frames within the tag without having to rewrite the entire file. The value of the padding bytes must be $00.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&#39;height: 24px&#39;&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;3&#39;&gt;&lt;p style=&#39;text-align: right&#39;&gt;&lt;span style=&#39;font-family:Georgia; font-size:18pt&#39;&gt;2&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;3&#39;&gt;&lt;p style=&#39;margin-left: 22pt&#39;&gt;&lt;span style=&#39;font-family:Georgia; font-size:18pt&#39;&gt;ID3v2 header&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The ID3v2 tag header, which should be the first information in the file, is 10 bytes as follows: &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;table border=&#39;0&#39; style=&#39;border-collapse:collapse&#39;&gt;&lt;colgroup&gt;&lt;col style=&#39;width:163px&#39;/&gt;&lt;col style=&#39;width:123px&#39;/&gt;&lt;/colgroup&gt;&lt;tbody valign=&#39;top&#39;&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;ID3v2/file identifier&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;&quot;ID3&quot;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;ID3v2 version&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;$03 00&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;ID3v2 flags&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;%abc00000&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;ID3v2 size&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;4 * %0xxxxxxx&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The first three bytes of the tag are always &quot;ID3&quot; to indicate that this is an ID3v2 tag, directly followed by the two version bytes. The first byte of ID3v2 version is it&#39;s major version, while the second byte is its revision number. In this case this is ID3v2.3.0. All revisions are backwards compatible while major versions are not. If software with ID3v2.2.0 and below support should encounter version three or higher it should simply ignore the whole tag. Version and revision will never be $FF. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The version is followed by one the ID3v2 flags field, of which currently only three flags are used. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;table border=&#39;0&#39; style=&#39;border-collapse:collapse&#39;&gt;&lt;colgroup&gt;&lt;col style=&#39;width:23px&#39;/&gt;&lt;col style=&#39;width:552px&#39;/&gt;&lt;/colgroup&gt;&lt;tbody valign=&#39;top&#39;&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;a &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;- Unsynchronisation&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Bit 7 in the &#39;ID3v2 flags&#39; indicates whether or not unsynchronisation is used; a set bit indicates usage.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;b&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;- Extended header &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The second bit (bit 6) indicates whether or not the header is followed by an extended header.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;c&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;- Experimental indicator&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The third bit (bit 5) should be used as an &#39;experimental indicator&#39;. This flag should always be set when the tag is in an experimental stage.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;All the other flags should be cleared. If one of these undefined flags are set that might mean that the tag is not readable for a parser that does not know the flags function. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The ID3v2 tag size is encoded with four bytes where the most significant bit (bit 7) is set to zero in every byte, making a total of 28 bits. The zeroed bits are ignored, so a 257 bytes long tag is represented as $00 00 02 01. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The ID3v2 tag size is the size of the complete tag after unsychronisation, including padding, excluding the header but not excluding the extended header (total tag size - 10). Only 28 bits (representing up to 256MB) are used in the size description to avoid the introducuction of &#39;false syncsignals&#39;. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;An ID3v2 tag can be detected with the following pattern: &lt;br /&gt;&lt;div&gt;&lt;table border=&#39;0&#39; style=&#39;border-collapse:collapse&#39;&gt;&lt;colgroup&gt;&lt;col style=&#39;width:68px&#39;/&gt;&lt;col style=&#39;width:218px&#39;/&gt;&lt;/colgroup&gt;&lt;tbody valign=&#39;top&#39;&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;$49 44 33 yy yy xx zz zz zz zz&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&#39;text-align: justify&#39;&gt;Where yy is less than $FF, xx is the &#39;flags&#39; byte and zz is less than $80. &lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&#39;height: 24px&#39;&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;3&#39;&gt;&lt;p style=&#39;text-align: right&#39;&gt;&lt;span style=&#39;font-family:Georgia; font-size:18pt&#39;&gt;3&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;3&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia; font-size:18pt&#39;&gt;ID3v2 extended header&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The extended header contains information that is not vital to the correct parsing of the tag information; hence the extended header is optional. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;table border=&#39;0&#39; style=&#39;border-collapse:collapse&#39;&gt;&lt;colgroup&gt;&lt;col style=&#39;width:173px&#39;/&gt;&lt;col style=&#39;width:401px&#39;/&gt;&lt;/colgroup&gt;&lt;tbody valign=&#39;top&#39;&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Extended header size&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;$xx xx xx xx&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Extended Flags&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;$xx xx&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Size of padding&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;$xx xx xx xx&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Where the &#39;Extended header size&#39;, currently 6 or 10 bytes, excludes itself. The &#39;Size of padding&#39; is simply the total tag size excluding the frames and the headers, in other words the padding. The extended header is considered separate from the header proper, and as such is subject to unsynchronisation. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The extended flags are a secondary flag set which describes further attributes of the tag. These attributes are currently defined as follows:&lt;br /&gt;&lt;div&gt;&lt;table border=&#39;0&#39; style=&#39;border-collapse:collapse&#39;&gt;&lt;colgroup&gt;&lt;col style=&#39;width:50px&#39;/&gt;&lt;col style=&#39;width:22px&#39;/&gt;&lt;col style=&#39;width:502px&#39;/&gt;&lt;col style=&#39;width:1px&#39;/&gt;&lt;/colgroup&gt;&lt;tbody valign=&#39;top&#39;&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;%x0000000 00000000&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;x&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;- CRC data present&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;If this flag is set four bytes of CRC-32 data is appended to the extended header. The CRC should be calculated before unsynchronisation on the data between the extended header and the padding, i.e. the frames and only the frames.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Total frame CRC    $xx xx xx xx&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&#39;height: 24px&#39;&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: right&#39;&gt;&lt;span style=&#39;font-family:Georgia; font-size:18pt&#39;&gt;4&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;3&#39;&gt;&lt;p&gt;&lt;span style=&#39;font-family:Georgia; font-size:18pt&#39;&gt;ID3v2 frame overview&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;As the tag consists of a tag header and a tag body with one or more frames, all the frames consists of a frame header followed by one or more fields containing the actual information. The layout of the frame header: &lt;br /&gt;&lt;div&gt;&lt;table border=&#39;0&#39; style=&#39;border-collapse:collapse&#39;&gt;&lt;colgroup&gt;&lt;col style=&#39;width:50px&#39;/&gt;&lt;col style=&#39;width:132px&#39;/&gt;&lt;col style=&#39;width:391px&#39;/&gt;&lt;/colgroup&gt;&lt;tbody valign=&#39;top&#39;&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Frame ID&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;$xx xx xx xx (four characters)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Size&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;$xx xx xx xx&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Flags&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;$xx xx&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&#39;text-align: justify&#39;&gt;The frame ID made out of the characters capital A-Z and 0-9. Identifiers beginning with &quot;X&quot;, &quot;Y&quot; and &quot;Z&quot; are for experimental use and free for everyone to use, without the need to set the experimental bit in the tag header. Have in mind that someone else might have used the same identifier as you. All other identifiers are either used or reserved for future use. &lt;br /&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;The frame ID is followed by a size descriptor, making a total header size of ten bytes in every frame. The size is calculated as frame size excluding frame header (frame size - 10). &lt;br /&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;In the frame header the size descriptor is followed by two flags bytes. &lt;br /&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;There is no fixed order of the frames&#39; appearance in the tag, although it is desired that the frames are arranged in order of significance concerning the recognition of the file. An example of such order: UFID, TIT2, MCDI, TRCK ... &lt;br /&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;A tag must contain at least one frame. A frame must be at least 1 byte big, excluding the header. &lt;br /&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;If nothing else is said a string is represented as ISO-8859-1 characters in the range $20 - $FF. Such strings are represented as &amp;lt;text string&amp;gt;, or &amp;lt;full text string&amp;gt; if newlines are allowed, in the frame descriptions. All Unicode strings use 16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). Unicode strings must begin with the Unicode BOM ($FF FE or $FE FF) to identify the byte order. &lt;br /&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;All numeric strings and &lt;a href=&#39;http://www.id3.org/id3v2.3.0&#39;&gt;URLs&lt;/a&gt; are always encoded as ISO-8859-1. Terminated strings are terminated with $00 if encoded with &lt;a href=&#39;http://www.id3.org/id3v2.3.0&#39;&gt;ISO-8859-1&lt;/a&gt; and $00 00 if encoded as unicode. If nothing else is said newline character is forbidden. In &lt;a href=&#39;http://www.id3.org/id3v2.3.0&#39;&gt;ISO-8859-1&lt;/a&gt; a new line is represented, when allowed, with $0A only. Frames that allow different types of text encoding have a text encoding description byte directly after the frame size. If &lt;a href=&#39;http://www.id3.org/id3v2.3.0&#39;&gt;ISO-8859-1&lt;/a&gt; is used this byte should be $00, if Unicode is used it should be $01. Strings dependent on encoding is represented as &amp;lt;text string according to encoding&amp;gt;, or &amp;lt;full text string according to encoding&amp;gt; if newlines are allowed. Any empty &lt;a href=&#39;http://www.id3.org/id3v2.3.0&#39;&gt;Unicode&lt;/a&gt; strings which are NULL-terminated may have the Unicode BOM followed by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00). &lt;br /&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;The three byte language field is used to describe the language of the frame&#39;s content, according to &lt;a href=&#39;http://www.id3.org/id3v2.3.0&#39;&gt;ISO-639-2&lt;/a&gt;. &lt;br /&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;All &lt;a href=&#39;http://www.id3.org/id3v2.3.0&#39;&gt;URLs&lt;/a&gt; may be relative, e.g. &quot;picture.png&quot;, &quot;../doc.txt&quot;. &lt;br /&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;If a frame is longer than it should be, e.g. having more fields than specified in this&lt;/p&gt;&lt;/span&gt;&lt;span style=&#39;font-family:Times New Roman; font-size:12pt&#39;&gt; document, that indicates that additions to the frame have been made in a later version of the ID3v2 standard. This is reflected by the revision number in the header of the tag. &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;3&#39;&gt;&lt;p style=&#39;text-align: right&#39;&gt;&lt;span style=&#39;font-family:Georgia; font-size:15pt&#39;&gt;4.1&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39;&gt;&lt;p&gt;&lt;span style=&#39;font-family:Georgia; font-size:15pt&#39;&gt;Frame header flags&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;In the frame header the size descriptor is followed by two flags bytes. All unused flags must be cleared. The first byte is for &#39;status messages&#39; and the second byte is for encoding purposes. If an unknown flag is set in the first byte the frame may not be changed without the bit cleared. If an unknown flag is set in the second byte it is likely to not be readable. The flags field is defined as follows. &lt;br /&gt;&lt;div&gt;&lt;table border=&#39;0&#39; style=&#39;border-collapse:collapse&#39;&gt;&lt;colgroup&gt;&lt;col style=&#39;width:47px&#39;/&gt;&lt;col style=&#39;width:23px&#39;/&gt;&lt;col style=&#39;width:16px&#39;/&gt;&lt;col style=&#39;width:23px&#39;/&gt;&lt;col style=&#39;width:4px&#39;/&gt;&lt;col style=&#39;width:442px&#39;/&gt;&lt;/colgroup&gt;&lt;tbody valign=&#39;top&#39;&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;5&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;%abc00000 %ijk00000&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;a&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;4&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;- Tag alter preservation&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;4&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;This flag tells the software what to do with this frame if it is unknown and the tag is altered in any way. This applies to all kinds of alterations, including adding more padding and reordering the frames.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;0&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;- Frame should be preserved.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;1&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;- Frame should be discarded.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;b&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;4&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;- File alter preservation&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;4&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;This flag tells the software what to do with this frame if it is unknown and the file, excluding the tag, is altered. This does not apply when the audio is completely replaced with other audio data.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;0&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;- Frame should be preserved.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;1&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;-  Frame should be discarded.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;c&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;4&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;- Read only&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;4&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;This flag, if set, tells the software that the contents of this frame is intended to be read only. Changing the contents might break something, e.g. a signature. If the contents are changed, without knowledge in why the frame was flagged read only and without taking the proper means to compensate, e.g. recalculating the signature, the bit should be cleared.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;i&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;4&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;- Compression&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;4&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;This flag indicates whether or not the frame is compressed.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;0&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Frame is not compressed.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;1 &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Frame is compressed using [#ZLIB zlib] with 4 bytes for &#39;decompressed size&#39; appended to the frame header.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;j&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;4&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;- Encryption&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;4&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;This flag indicates wether or not the frame is enrypted. If set one byte indicating with which method it was encrypted will be appended to the frame header.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;0&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;- Frame is not encrypted.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;1&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;- Frame is encrypted.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;k&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;4&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;- Grouping identity&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;4&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;This flag indicates whether or not this frame belongs in a group with other frames. If set a group identifier byte is added to the frame header. Every frame with the same group identifier belongs to the same group.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;0&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;- Frame does not contain group information&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;1&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;- Frame contains group information&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&#39;text-align: justify&#39;&gt;Some flags indicates that the frame header is extended with additional information. This information will be added to the frame header in the same order as the flags indicating the additions. I.e. the four bytes of decompressed size will preceed the encryption method byte. These additions to the frame header, while not included in the frame header size but are included in the &#39;frame size&#39; field, are not subject to encryption or compression. &lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&#39;height: 24px&#39;&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: right&#39;&gt;&lt;span style=&#39;font-family:Georgia; font-size:18pt&#39;&gt;5&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;3&#39;&gt;&lt;p&gt;&lt;span style=&#39;font-family:Georgia; font-size:18pt&#39;&gt;Default flags&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The default settings for the frames described in this document can be divided into the following classes. The flags may be set differently if found more suitable by the software. &lt;br /&gt;&lt;div&gt;&lt;table border=&#39;0&#39; style=&#39;border-collapse:collapse&#39;&gt;&lt;colgroup&gt;&lt;col style=&#39;width:41px&#39;/&gt;&lt;col style=&#39;width:19px&#39;/&gt;&lt;col style=&#39;width:515px&#39;/&gt;&lt;/colgroup&gt;&lt;tbody valign=&#39;top&#39;&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Discarded if tag is altered, discarded if file is altered.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;None.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Discarded if tag is altered, preserved if file is altered.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;None.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Preserved if tag is altered, discarded if file is altered.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;AENC, ETCO, EQUA, MLLT, POSS, SYLT, SYTC, RVAD, TENC, TLEN, TSIZ&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Preserved if tag is altered, preserved if file is altered.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The rest of the frames.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&#39;height: 24px&#39;&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: right&#39;&gt;&lt;span style=&#39;font-family:Georgia; font-size:18pt&#39;&gt;6&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;3&#39;&gt;&lt;p&gt;&lt;span style=&#39;font-family:Georgia; font-size:18pt&#39;&gt;Declared ID3v2 frames&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The following frames are declared in this draft. &lt;br /&gt;&lt;div&gt;&lt;table border=&#39;0&#39; style=&#39;border-collapse:collapse&#39;&gt;&lt;colgroup&gt;&lt;col style=&#39;width:59px&#39;/&gt;&lt;col style=&#39;width:85px&#39;/&gt;&lt;col style=&#39;width:430px&#39;/&gt;&lt;/colgroup&gt;&lt;tbody valign=&#39;top&#39;&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;AENC&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Audio encryption&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;APIC&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Attached picture&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;COMM&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Comments&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;COMR&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Commercial frame&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;ENCR&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Encryption method registration&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;EQUA&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Equalization&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;ETCO&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Event timing codes&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;GEOB&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;General encapsulated object&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;GRID&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Group identification registration&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;IPLS&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Involved people list&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;LINK&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Linked information&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;MCDI&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Music CD identifier&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;MLLT&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;MPEG location lookup table&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;OWNE&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Ownership frame&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;PRIV&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Private frame&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;PCNT&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Play counter&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;POPM&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Popularimeter&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;POSS&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Position synchronisation frame&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;RBUF&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Recommended buffer size&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;RVAD&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Relative volume adjustment&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;RVRB&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Reverb&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;SYLT&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Synchronized lyric/text&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;SYTC&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Synchronized tempo codes&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TALB&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Album/Movie/Show title&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TBPM&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;BPM (beats per minute)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TCOM&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Composer&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TCON&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Content type&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TCOP&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Copyright message&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TDAT&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Date&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TDLY&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Playlist delay&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TENC&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Encoded by&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TEXT&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Lyricist/Text writer&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TFLT&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;File type&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TIME&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Time&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TIT1&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Content group description&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TIT2&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Title/songname/content description&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TIT3&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Subtitle/Description refinement&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TKEY&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Initial key&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TLAN&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Language(s)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TLEN&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Length&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TMED&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Media type&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TOAL&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Original album/movie/show title&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TOFN&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Original filename&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TOLY&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Original lyricist(s)/text writer(s)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TOPE&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Original artist(s)/performer(s)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TORY&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Original release year&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TOWN&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;File owner/licensee&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TPE1&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Lead performer(s)/Soloist(s)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TPE2&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Band/orchestra/accompaniment&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TPE3&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Conductor/performer refinement&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TPE4&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Interpreted, remixed, or otherwise modified by&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TPOS&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Part of a set&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TPUB&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Publisher&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TRCK&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Track number/Position in set&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TRDA&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Recording dates&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TRSN&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Internet radio station name&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TRSO&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Internet radio station owner&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TSIZ&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Size&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TSRC&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;ISRC (international standard recording code)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TSSE&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Software/Hardware and settings used for encoding&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TYER&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Year&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;TXXX&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;User defined text information frame&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;UFID&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Unique file identifier&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;USER&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Terms of use&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;USLT&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Unsychronized lyric/text transcription&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;WCOM&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Commercial information&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;WCOP&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Copyright/Legal information&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;WOAF&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Official audio file webpage&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;WOAR&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Official artist/performer webpage&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;WOAS&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Official audio source webpage&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;WORS&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Official internet radio station homepage&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;WPAY&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Payment&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;WPUB&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Publishers official webpage&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;WXXX&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;User defined URL link frame&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&#39;height: 24px&#39;&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: right&#39;&gt;&lt;span style=&#39;font-family:Georgia; font-size:18pt&#39;&gt;7&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;3&#39;&gt;&lt;p&gt;&lt;span style=&#39;font-family:Georgia; font-size:18pt&#39;&gt;The unsynchronisation scheme&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt&#39; vAlign=&#39;middle&#39; colspan=&#39;2&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;The only purpose of the &#39;unsynchronisation scheme&#39; is to make the ID3v2 tag as compatible as possible with existing software. There is no use in &#39;unsynchronising&#39; tags if the file is only to be processed by new software. Unsynchronisation may only be made with MPEG 2 layer I, II and III and MPEG 2.5 files. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Whenever a false synchronisation is found within the tag, one zeroed byte is inserted after the first false synchronisation byte. The format of a correct sync that should be altered by ID3 encoders is as follows: &lt;br /&gt;&lt;div&gt;&lt;table border=&#39;0&#39; style=&#39;border-collapse:collapse&#39;&gt;&lt;colgroup&gt;&lt;col style=&#39;width:50px&#39;/&gt;&lt;col style=&#39;width:525px&#39;/&gt;&lt;/colgroup&gt;&lt;tbody valign=&#39;top&#39;&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;%11111111 111xxxxx&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Times New Roman; font-size:12pt&#39;&gt;And should be replaced with: &lt;br /&gt;&lt;div&gt;&lt;table border=&#39;0&#39; style=&#39;border-collapse:collapse&#39;&gt;&lt;colgroup&gt;&lt;col style=&#39;width:50px&#39;/&gt;&lt;col style=&#39;width:525px&#39;/&gt;&lt;/colgroup&gt;&lt;tbody valign=&#39;top&#39;&gt;&lt;tr&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt; &lt;/td&gt;&lt;td style=&#39;padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt&#39;&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;%11111111 00000000 111xxxxx&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;This has the side effect that all $FF 00 combinations have to be altered, so they won&#39;t be affected by the decoding process. Therefore all the $FF 00 combinations have to be replaced with the $FF 00 00 combination during the unsynchronisation. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;To indicate usage of the unsynchronisation, the first bit in &#39;ID3 flags&#39; should be set. This bit should only be set if the tag contains a, now corrected, false synchronisation. The bit should only be clear if the tag does not contain any false synchronisations. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;Do bear in mind, that if a compression scheme is used by the encoder, the unsynchronisation scheme should be applied *afterwards*. When decoding a compressed, &#39;unsynchronised&#39; file, the &#39;unsynchronization scheme&#39; should be parsed first, decompression afterwards. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;If the last byte in the tag is $FF, and there is a need to eliminate false synchronizations in the tag, at least one byte of padding should be added. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;br /&gt; &lt;/p&gt;&lt;p style=&#39;text-align: justify&#39;&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;In the next blog let us see the encoding method.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&#39;font-family:Georgia&#39;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/3400563347433396688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/audio-codec-mp3-id3v23.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/3400563347433396688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/3400563347433396688'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/audio-codec-mp3-id3v23.html' title='Audio Codec – MP3 –ID3v2.3'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-4270745345120348184</id><published>2010-10-20T09:28:00.008+05:30</published><updated>2010-10-20T09:51:31.278+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Audio Codec"/><category scheme="http://www.blogger.com/atom/ns#" term="id3"/><category scheme="http://www.blogger.com/atom/ns#" term="id3v1"/><category scheme="http://www.blogger.com/atom/ns#" term="id3v2"/><category scheme="http://www.blogger.com/atom/ns#" term="iso 11172-3.iso 13818-3"/><category scheme="http://www.blogger.com/atom/ns#" term="mp3"/><category scheme="http://www.blogger.com/atom/ns#" term="MPEG"/><category scheme="http://www.blogger.com/atom/ns#" term="mpeg 1"/><category scheme="http://www.blogger.com/atom/ns#" term="mpeg 2"/><category scheme="http://www.blogger.com/atom/ns#" term="mpeg layer 1"/><title type='text'>Audio Codec - MP3 -ID3V1</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 22pt;&quot;&gt;Audio Codec -MPEG Audio Compression Basics&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;This is one of many methods to compress audio in digital form trying to consume as little space as possible but keep audio quality as good as possible. MPEG compression showed up as one of the best achievements in this area.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;This is a lossy compression, which means, you will certainly lose some audio information when you use this compression methods. But, this lost can hardly be noticed because the compression method tries to control it. By using several quite complicate and demanding mathematical algorithms it will only loose those parts of sound that are hard to be heard even in the original form. This leaves more space for information that is important. This way you can compress audio up to 12 times (you may choose compression ratio) which is really significant. Due to its quality MPEG audio became very popular.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;MPEG standards MPEG-1, MPEG-2 and MPEG-4 are known but this document covers first two of them. There is an unofficial MPEG-2.5 which is rarely used. It is also covered.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;MPEG-1 audio&lt;/strong&gt;&amp;nbsp;(described in ISO/IEC 11172-3) describes three Layers of audio coding with the following properties:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;one or two audio channels&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;sample rate 32kHz, 44.1kHz or 48kHz&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;bit rates from 32kbps up to 448kbps&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Each layer has its merits.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;MPEG-2 audio&lt;/strong&gt;&amp;nbsp;(described in ISO/IEC 13818-3) has two extensions to MPEG-1, usually referred as MPEG-2/LSF and MPEG-2/Multichannel.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;MPEG-2/LSF has the following properties:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;one or two audio channels&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;sample rates half those of MPEG-1&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;bit rates from 8 kbps up to 256kbps.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;MPEG-2/Multichannel has the following properties:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;up to 5 full range audio channels and an LFE-channel (Low Frequency Enhancement &amp;lt;&amp;gt; subwoofer!)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;sample rates the same as those of MPEG-1&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;highest possible bitrate goes up to about 1Mbps for 5.1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;MPEG Audio Frame Header&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;An MPEG audio file is built up from smaller parts called frames. Generally, frames are independent items. Each frame has its own header and audio information. There is no file header. Therefore, you can cut any part of MPEG file and play it correctly (this should be done on frame boundaries but most applications will handle incorrect headers). For Layer III, this is not 100% correct. Due to internal data organization in MPEG version 1 Layer III files (mp3), frames are often dependent of each other and they cannot be cut off just like that.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;When you want to read info about an MPEG file, it is usually enough to find the first frame, read its header and assume that the other frames are the same, this may not be always the case. Variable bitrate MPEG files may use so called bitrate switching, which means that bitrate changes according to the content of each frame. This way lower bitrates may be used in frames where it will not reduce sound quality. This allows making better compression while keeping high quality of sound.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The frame header is constituted by the very first four bytes (32bits) in a frame. The first eleven bits (in the case of the MPEG 2.5 extension) (or first twelve bits, see below about frame sync) of a frame header are always set and they are called &quot;frame sync&quot;. Therefore, you can search through the file for the first occurrence of frame sync (meaning that you have to find a byte with a value of 255, and followed by a byte with its three (or four) most significant bits set). Then you read the whole header and check if the values are correct. You will see in the following table the exact meaning of each bit in the header, and which values may be checked for validity. Each value that is specified as reserved, invalid, bad, or not allowed should indicate an invalid header. Remember, this is not enough, frame sync can be easily (and very frequently) found in any binary file. Also it is likely that MPEG file contains garbage on it&#39;s beginning which also may contain false sync. Thus, you have to check two or more frames in a row to assure you are really dealing with MPEG audio file.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Frames may have a CRC check. The CRC is 16 bits long and, if it exists, it follows the frame header. After the CRC comes the audio data. You may calculate the length of the frame and use it if you need to read other headers too or just want to calculate the CRC of the frame, to compare it with the one you read from the file. This is actually a very good method to check the MPEG header validity.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Here is &quot;graphical&quot; presentation of the 32 bit header content. Characters from A to M are used to indicate different fields. In the table, you can see details about the content of each field.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 14pt;&quot;&gt;76543210 76543210 76543210 76543210&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 14pt;&quot;&gt;AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;table border=&quot;0&quot; style=&quot;border-collapse: collapse; text-align: left;&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 42px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 56px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 64px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 479px;&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr style=&quot;background-attachment: initial; background-clip: initial; background-color: #e2e2e2; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: solid; border-top-width: 0.5pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Sign&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: solid; border-top-width: 0.5pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Length&lt;br /&gt;
(bits)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: solid; border-top-width: 0.5pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Position&lt;br /&gt;
(bits)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: solid; border-top-width: 0.5pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Description&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;A&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(31-21)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Frame sync (all bits set)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;B&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(20,19)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;MPEG Audio version ID&lt;br /&gt;
00 - MPEG Version 2.5&lt;br /&gt;
01 - reserved&lt;br /&gt;
10 - MPEG Version 2 (ISO/IEC 13818-3)&lt;br /&gt;
11 - MPEG Version 1 (ISO/IEC 11172-3)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Note: MPEG Version 2.5 is not official standard. Bit No 20 in frame header is used to indicate version 2.5. Applications that do not support this MPEG version expect this bit always to be set, meaning that frame sync (A) is twelve bits long, not eleve as stated here. Accordingly, B is one bit long (represents only bit No 19). I recommend using methodology presented here, since this allows you to distinguish all three versions and keep full compatibility.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;C&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(18,17)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Layer description&lt;br /&gt;
00 - reserved&lt;br /&gt;
01 - Layer III&lt;br /&gt;
10 - Layer II&lt;br /&gt;
11 - Layer I&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;D&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(16)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Protection bit&lt;br /&gt;
0 - Protected by CRC (16bit crc follows header)&lt;br /&gt;
1 - Not protected&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;E&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(15,12)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Bitrate index&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;table border=&quot;0&quot; style=&quot;border-collapse: collapse;&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 40px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 39px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 41px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 41px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 41px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 81px;&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: outset; border-top-width: 0.75pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;bits&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: outset; border-top-width: 0.75pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;V1,L1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: outset; border-top-width: 0.75pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;V1,L2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: outset; border-top-width: 0.75pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;V1,L3&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: outset; border-top-width: 0.75pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;V2,L1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: outset; border-top-width: 0.75pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;V2, L2 &amp;amp; L3&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;0000&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;free&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;free&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;free&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;free&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;free&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;0001&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;32&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;32&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;32&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;32&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;0010&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;64&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;48&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;40&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;48&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;0011&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;96&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;56&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;48&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;56&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;24&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;0100&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;128&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;64&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;56&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;64&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;32&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;0101&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;160&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;80&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;64&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;80&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;40&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;0110&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;192&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;96&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;80&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;96&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;48&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;0111&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;224&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;112&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;96&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;112&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;56&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;1000&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;256&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;128&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;112&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;128&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;64&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;1001&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;288&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;160&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;128&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;144&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;80&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;1010&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;320&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;192&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;160&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;160&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;96&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;1011&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;352&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;224&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;192&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;176&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;112&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;1100&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;384&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;256&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;224&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;192&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;128&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;1101&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;416&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;320&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;256&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;224&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;144&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;1110&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;448&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;384&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;320&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;256&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;160&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;1111&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;bad&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;bad&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;bad&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;bad&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;bad&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;NOTES: All values are in kbps&lt;br /&gt;
V1 - MPEG Version 1&lt;br /&gt;
V2 - MPEG Version 2 and Version 2.5&lt;br /&gt;
L1 - Layer I&lt;br /&gt;
L2 - Layer II&lt;br /&gt;
L3 - Layer III&lt;br /&gt;
&quot;free&quot; means free format. If the correct fixed bitrate (such files cannot use variable bitrate) is different than those presented in upper table it must be determined by the application. This may be implemented only for internal purposes since third party applications have no means to find out correct bitrate. Howewer, this is not impossible to do but demands lot&#39;s of efforts.&lt;br /&gt;
&quot;bad&quot; means that this is not an allowed value&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;MPEG files may have variable bitrate (VBR). This means that bitrate in the file may change. I have learned about two used methods:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; bitrate switching. Each frame may be created with different bitrate. It may be used in all layers. Layer III decoders must support this method. Layer I &amp;amp; II decoders may support it.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; bit reservoir. Bitrate may be borrowed (within limits) from previous frames in order to provide more bits to demanding parts of the input signal. This causes, however, that the frames are no longer independent, which means you should not cut this files. This is supported only in Layer III.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;For Layer II there are some combinations of bitrate and mode which are not allowed. Here is a list of allowed combinations.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;table border=&quot;0&quot; style=&quot;border-collapse: collapse;&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 47px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 241px;&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: outset; border-top-width: 0.75pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;bitrate&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: outset; border-top-width: 0.75pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;allowed modes&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;free&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;all&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;32&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;single channel&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;48&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;single channel&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;56&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;single channel&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;64&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;all&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;80&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;single channel&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;96&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;all&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;112&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;all&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;128&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;all&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;160&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;all&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;192&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;all&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;224&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;stereo, intensity stereo, dual channel&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;256&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;stereo, intensity stereo, dual channel&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;320&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;stereo, intensity stereo, dual channel&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;384&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;stereo, intensity stereo, dual channel&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;F&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(11,10)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Sampling rate frequency index (values are in Hz)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;table border=&quot;0&quot; style=&quot;border-collapse: collapse;&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 28px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 53px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 55px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 67px;&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: outset; border-top-width: 0.75pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;bits&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: outset; border-top-width: 0.75pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;MPEG1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: outset; border-top-width: 0.75pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;MPEG2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: outset; border-top-width: 0.75pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;MPEG2.5&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;00&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;44100&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;22050&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;11025&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;01&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;48000&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;24000&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;12000&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;32000&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;16000&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;8000&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;reserv.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;reserv.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;reserv.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;G&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(9)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Padding bit&lt;br /&gt;
0 - frame is not padded&lt;br /&gt;
1 - frame is padded with one extra slot&lt;br /&gt;
Padding is used to fit the bit rates exactly. For an example: 128k 44.1kHz layer II uses a lot of 418 bytes and some of 417 bytes long frames to get the exact 128k bitrate. For Layer I slot is 32 bits long, for Layer II and Layer III slot is 8 bits long.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;H&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(8)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Private bit. It may be freely used for specific needs of an application, i.e. if it has to trigger some application specific events.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;I&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(7,6)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Channel Mode&lt;br /&gt;
00 - Stereo&lt;br /&gt;
01 - Joint stereo (Stereo)&lt;br /&gt;
10 - Dual channel (Stereo)&lt;br /&gt;
11 - Single channel (Mono)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;J&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(5,4)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Mode extension (Only if Joint stereo)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Mode extension is used to join informations that are of no use for stereo effect, thus reducing needed resources. These bits are dynamically determined by an encoder in Joint stereo mode.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Complete frequency range of MPEG file is divided in subbands There are 32 subbands. For Layer I &amp;amp; II these two bits determine frequency range (bands) where intensity stereo is applied. For Layer III these two bits determine which type of joint stereo is used (intensity stereo or m/s stereo). Frequency range is determined within decompression algorythm.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;table border=&quot;0&quot; style=&quot;border-collapse: collapse;&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 138px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 216px;&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr&gt;&lt;td valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Layer I and II&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Layer III&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td valign=&quot;middle&quot;&gt;&lt;table border=&quot;0&quot; style=&quot;border-collapse: collapse;&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 38px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 96px;&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: outset; border-top-width: 0.75pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;value&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: outset; border-top-width: 0.75pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Layer I &amp;amp; II&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;00&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;bands 4 to 31&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;01&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;bands 8 to 31&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;bands 12 to 31&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;bands 16 to 31&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;td&gt;&lt;table border=&quot;0&quot; style=&quot;border-collapse: collapse;&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 128px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 84px;&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: outset; border-top-width: 0.75pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Intensity stereo&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: outset; border-top-width: 0.75pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;MS stereo&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;off&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;off&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;on&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;off&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;off&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;on&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: outset; border-left-width: 0.75pt; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;on&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: outset; border-bottom-width: 0.75pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: outset; border-right-width: 0.75pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;on&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;K&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(3)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Copyright&lt;br /&gt;
0 - Audio is not copyrighted&lt;br /&gt;
1 - Audio is copyrighted&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;L&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(2)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Original&lt;br /&gt;
0 - Copy of original media&lt;br /&gt;
1 - Original media&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;M&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(1,0)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Emphasis&lt;br /&gt;
00 - none&lt;br /&gt;
01 - 50/15 ms&lt;br /&gt;
10 - reserved&lt;br /&gt;
11 - CCIT J.17&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;How to calculate frame length&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;First, let&#39;s distinguish two terms frame size and frame length. Frame size is the number of samples contained in a frame. It is constant and always 384 samples for Layer I and 1152 samples for Layer II and Layer III. Frame length is length of a frame when compressed. It is calculated in slots. One slot is 4 bytes long for Layer I, and one byte long for Layer II and Layer III. When you are reading MPEG file you must calculate this to be able to find each consecutive frame. Remember, frame length may change from frame to frame due to padding or bitrate switching.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Read the BitRate, SampleRate and Padding of the frame header.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;For Layer I files us this formula:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;FrameLengthInBytes = (12 * BitRate / SampleRate + Padding) * 4&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;For Layer II &amp;amp; III files use this formula:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;FrameLengthInBytes = 144 * BitRate / SampleRate + Padding&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Example:&lt;br /&gt;
Layer III, BitRate = 128000, SampleRate = 441000, Padding = 0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt;&amp;nbsp; FrameSize=417 bytes&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Frames per Second&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Just as the movie industry has a standard that specifies the number of frames per second in a film in order to guarantee a constant rate of playback on any projector, the MP3 spec employs a similar standard. Regardless of the bitrate of the file, a frame in an MPEG-1 file lasts for 26ms (26/1000 of a second). This works out to around 38fps. If the bitrate is higher, the frame size is simply larger, and vice versa. In addition, the number of samples stored in an MP3 frame is constant, at 1,152 samples per frame.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The total size in bytes for any given frame can be calculated with the following formula: FrameSize = 144 * BitRate / (SampleRate + Padding).&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Where the bitrate is measured in bits per second (remember to add the relevant number of zeros to convert from kbps to bps), SampleRate refers to the samplerate of the original input data, and padding refers to extra data added to the frame to fill it up completely in the event that the encoding process leaves unfilled space in the frame. For example, if you&#39;re encoding a file at 128 kbps, the original samplerate was 44.1kHz, and no padding bit has been set, the total size of each frame will be 417.96 bytes: 144 * 128000 / (44100 + 0) = 417.96 bytes .&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Keeping in mind that each frame contains the header information described above, it would be easy to think that header data accounts for a lot of redundant information being stored and read back. However, keep in mind that each frame header is only 32 bits long. At 38fps, that means you get around 1,223 bits per second of header data, total. Since a file encoded at 128 kbps contains 128,000 bits every second; the total amount of header data is miniscule in comparison to the amount of audio data in the frame itself&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;ID3 Tag&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Digital audio files can contain, in addition to the audio track, related text and/or graphical information, like Song title, Artist name, Album name, Year and Genre. This is the information displayed when you playback a digital audio file on your computer or portable device.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The process of including information other than sound into these digital audio files is commonly referred to as &quot;tagging&quot; in which you &quot;tag&quot; the audio file with additional information that describes the audio file. The original standard for tagging digital files was developed in 1996 by Eric Kemp and he coined the term ID3. At that time ID3 simply meant &quot;IDentify an MP3&quot;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;ID3 tags were designed with the MP3 file format in mind. ID3v2 tags will break formats which are container-based such as Ogg Vorbis and WMA. Here is some information on specific formats:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;ID3 tags work in MP3 and MP3pro files&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;WAV has no tags&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;WMA has its own tagging format, which is specified in the wma spec, available in the MSDN (which unfortunately, basically does not allow Open Source implementations)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Ogg Vorbis uses &quot;Xiph Comments&quot; (same as later versions of FLAC and Speex), which are embedded into the Ogg container. You can find information on these in the comment and container specs on www.xiph.org&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;AAC uses yet another tagging format, which does not at present have a published spec as of 3/1/2006.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The&lt;/span&gt;&lt;span style=&quot;font-family: Verdana; font-size: 10pt;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&lt;a href=&quot;http://developer.kde.org/~wheeler/taglib.html&quot;&gt;&lt;/a&gt;&lt;/span&gt;&lt;a href=&quot;http://developer.kde.org/~wheeler/taglib.html&quot;&gt;&lt;span style=&quot;color: #597bb3;&quot;&gt;TagLib Audio Meta-Data Library&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;supports MP3s (with ID3v1, ID3v2 or APE tags), Ogg Vorbis, FLAC (with Xiph Comments or ID3 tags), and MPC files (with APE tags).&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;MPEG Audio Tag ID3v1&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The TAG is used to describe the MPEG Audio file. It contains information about artist, title, album, publishing year and genre. There is some extra space for comments. It is exactly 128 bytes long and is located at very end of the audio data. You can get it by reading the last 128 bytes of the MPEG audio file.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 14pt;&quot;&gt;AAABBBBB BBBBBBBB BBBBBBBB BBBBBBBB&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;BCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCD&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;DDDDDDDD DDDDDDDD DDDDDDDD DDDDDEEE&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;EFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFG&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;table border=&quot;0&quot; style=&quot;border-collapse: collapse; text-align: left;&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 60px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 75px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 66px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 429px;&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr style=&quot;background-attachment: initial; background-clip: initial; background-color: #e2e2e2; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: solid; border-top-width: 0.5pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Sign&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: solid; border-top-width: 0.5pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Length&lt;br /&gt;
(bytes)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: solid; border-top-width: 0.5pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Position&lt;br /&gt;
(bytes)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: solid; border-top-width: 0.5pt; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Description&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;A&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(0-2)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Tag identification. Must contain &#39;TAG&#39; if tag exists and is correct.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;B&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;30&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(3-32)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Title&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;C&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;30&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(33-62)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Artist&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;D&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;30&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(63-92)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Album&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;E&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(93-96)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Year&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;F&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;30&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(97-126)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Comment&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: solid; border-left-width: 0.5pt; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;G&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(127)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: initial; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Genre&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The specification asks for all fields to be padded with null character (ASCII 0). However, not all applications respect this (an example is WinAmp which pads fields with &amp;lt;space&amp;gt;, ASCII 32).&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;There is a small change proposed in&amp;nbsp;&lt;strong&gt;ID3v1.1&lt;/strong&gt;&amp;nbsp;structure. The last byte of the Comment field may be used to specify the track number of a song in an album. It should contain a null character (ASCII 0) if the information is unknown.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Genre is a numeric field which may have one of the following values:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;table border=&quot;0&quot; style=&quot;border-collapse: collapse;&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 22px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 134px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 23px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 134px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 24px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 134px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 24px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 135px;&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Blues&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;20&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Alternative&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;40&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;AlternRock&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;60&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Top 40&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Classic Rock&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;21&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Ska&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;41&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Bass&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;61&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Christian Rap&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Country&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;22&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Death Metal&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;42&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Soul&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;62&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Pop/Funk&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Dance&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;23&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Pranks&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;43&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Punk&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;63&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Jungle&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Disco&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;24&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Soundtrack&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;44&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Space&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;64&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Native American&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Funk&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;25&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Euro-Techno&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;45&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Meditative&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;65&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Cabaret&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Grunge&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;26&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Ambient&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;46&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Instrumental Pop&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;66&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;New Wave&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Hip-Hop&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;27&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Trip-Hop&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;47&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Instrumental Rock&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;67&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Psychadelic&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Jazz&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;28&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Vocal&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;48&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Ethnic&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;68&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Rave&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Metal&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;29&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Jazz+Funk&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;49&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Gothic&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;69&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Showtunes&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;New Age&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;30&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Fusion&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;50&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Darkwave&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;70&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Trailer&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Oldies&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;31&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Trance&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;51&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Techno-Industrial&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;71&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Lo-Fi&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Other&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;32&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Classical&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;52&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Electronic&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;72&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Tribal&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Pop&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;33&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Instrumental&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;53&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Pop-Folk&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;73&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Acid Punk&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;R&amp;amp;B&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;34&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Acid&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;54&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Eurodance&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;74&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Acid Jazz&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Rap&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;35&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;House&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;55&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Dream&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;75&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Polka&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Reggae&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;36&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Game&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;56&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Southern Rock&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;76&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Retro&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Rock&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;37&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Sound Clip&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;57&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Comedy&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;77&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Musical&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Techno&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;38&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Gospel&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;58&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Cult&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;78&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Rock &amp;amp; Roll&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;19&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Industrial&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;39&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Noise&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;59&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Gangsta&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;79&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Hard Rock&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
WinAmp expanded this table with next codes:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;table border=&quot;0&quot; style=&quot;border-collapse: collapse;&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 24px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 125px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 31px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 125px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 30px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 125px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 30px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 141px;&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;80&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Folk&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;92&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Progressive Rock&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;104&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Chamber Music&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;116&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Ballad&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;81&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Folk-Rock&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;93&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Psychedelic Rock&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;105&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Sonata&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;117&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Poweer Ballad&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;82&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;National Folk&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;94&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Symphonic Rock&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;106&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Symphony&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;118&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Rhytmic Soul&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;83&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Swing&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;95&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Slow Rock&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;107&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Booty Brass&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;119&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Freestyle&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;84&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Fast Fusion&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;96&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Big Band&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;108&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Primus&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;120&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Duet&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;85&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Bebob&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;97&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Chorus&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;109&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Porn Groove&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;121&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Punk Rock&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;86&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Latin&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;98&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Easy Listening&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;110&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Satire&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;122&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Drum Solo&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;87&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Revival&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;99&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Acoustic&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;111&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Slow Jam&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;123&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;A Capela&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;88&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Celtic&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;100&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Humour&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;112&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Club&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;124&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Euro-House&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;89&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Bluegrass&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;101&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Speech&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;113&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Tango&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;125&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Dance Hall&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;90&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Avantgarde&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;102&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Chanson&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;114&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Samba&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;91&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Gothic Rock&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;103&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Opera&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;115&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Folklore&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;8&quot; style=&quot;padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;&quot; valign=&quot;middle&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Any other value should be considered as &#39;Unknown&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;ol&gt;&lt;a href=&quot;http://developer.kde.org/~wheeler/taglib.html&quot;&gt;&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;http://developer.kde.org/~wheeler/taglib.html&quot;&gt;&lt;/a&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://developer.kde.org/~wheeler/taglib.html&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;&lt;/span&gt;&lt;/a&gt;MPEG Audio Tag ID3v2&lt;/div&gt;&lt;/div&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=2047935741097554299&amp;amp;postID=4270745345120348184&quot; name=&quot;MPEG_TAG&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=2047935741097554299&amp;amp;postID=4270745345120348184&quot; name=&quot;MPEG_TAG&quot;&gt;&lt;/a&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;This is new proposed TAG format which is different than ID3v1 and ID3v1.1. In the next blog, let us see in detail about ID3V2.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;.</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/4270745345120348184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/audio-codec-mp3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/4270745345120348184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/4270745345120348184'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/audio-codec-mp3.html' title='Audio Codec - MP3 -ID3V1'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-937052418754637970</id><published>2010-10-16T14:46:00.030+05:30</published><updated>2010-10-17T16:25:24.894+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Dushehra"/><category scheme="http://www.blogger.com/atom/ns#" term="Dussehra"/><category scheme="http://www.blogger.com/atom/ns#" term="Goddess"/><category scheme="http://www.blogger.com/atom/ns#" term="Maa Durga"/><category scheme="http://www.blogger.com/atom/ns#" term="Navratri"/><category scheme="http://www.blogger.com/atom/ns#" term="NonTech Articles"/><category scheme="http://www.blogger.com/atom/ns#" term="Vijayadashmi"/><title type='text'>Navratri</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;Wish you happy Navratri and Dussehra&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia; font-size: x-large;&quot;&gt;may Maa Durga bless all&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Navratri, Navaratri, or Navarathri (Sanskrit, Hindi, Marathi, and Nepali:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: Mangal;&quot;&gt;नवरात्रि&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;, Bengali:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: Vrinda;&quot;&gt;নবরাত্রি&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;, Gujarātī:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: Shruti;&quot;&gt;નવરાત્રી&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;, Kannada:&lt;/span&gt;&lt;span style=&quot;font-family: Tunga;&quot;&gt;ನವರಾತ್ರಿ&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;,Telugu&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: Gautami;&quot;&gt;దుర్గా&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: Gautami;&quot;&gt;నవరాత్రులు&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;, Malayalam:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: Kartika;&quot;&gt;നവരാത്രി&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;, Tamil:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: Latha;&quot;&gt;நவராத்திரி&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;) is a Hindu festival of worship of Shakti and dance &amp;amp; festivities. The word&amp;nbsp;&lt;em&gt;Navaratri&lt;/em&gt;&amp;nbsp;literally means nine nights in Sanskrit,&amp;nbsp;&lt;em&gt;nava&lt;/em&gt;&amp;nbsp;meaning nine and&amp;nbsp;&lt;em&gt;ratri&lt;/em&gt;&amp;nbsp;meaning nights. It is celebrated during the period of Sarad Masi Aswin by Hindu lunar calendar, all eight days and nine nights have its importance and is divided into sets of three days to adore three different aspects of the supreme goddess or goddesses.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJM8XtZxOdq3C82TvrdQ8piUMtPWhoR101dqWLMzOEanGodzL6fgPsOm4NnCldaof5jChr5eRizadMbndpC4zPe9iHnzp01VIZLr_3shLaa84UqAmIhSeiD-Z9p-iy05i-oXElpERc6XK7/s1600/Durga.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJM8XtZxOdq3C82TvrdQ8piUMtPWhoR101dqWLMzOEanGodzL6fgPsOm4NnCldaof5jChr5eRizadMbndpC4zPe9iHnzp01VIZLr_3shLaa84UqAmIhSeiD-Z9p-iy05i-oXElpERc6XK7/s1600/Durga.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Nine Goddesses of Navratri are collectively known as Navdurga and are mentioned in the Devi Mahatmya and Durga Saptashati. The Nine Goddesses worshipped on each nine-day of Navaratri are incarnations of Goddess Shakti. The nine goddess worshipped are Shailaputri, Brahmacharini, Chandraghanta, Kushmanda, Skanda Mata, Katyayani, Kala Ratri (Kaalratri), Maha Gowri and Siddhidayini.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Maa Shailaputri – Goddess Worshipped on the first day of Navratri&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&#39;Shail&#39; means mountains and &#39;Putri&#39; means daughter. She is also known as Parvati or Hemavati&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFzo-N0Gg5uf1eI9vwRb_D74XejP2Jd2JT9QgnTnDt5qrCogCmRjWpxkukZmn7LBOBgzUWcQhfdU0SQLtYogReKHzShEO7GwHsLSsX-qNFqb5Qeo17Q8P4lKolMfATa6DLnxWVt_WeGkD0/s1600/1.Shailaputri.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFzo-N0Gg5uf1eI9vwRb_D74XejP2Jd2JT9QgnTnDt5qrCogCmRjWpxkukZmn7LBOBgzUWcQhfdU0SQLtYogReKHzShEO7GwHsLSsX-qNFqb5Qeo17Q8P4lKolMfATa6DLnxWVt_WeGkD0/s320/1.Shailaputri.jpg&quot; style=&quot;cursor: move;&quot; width=&quot;226&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Shailaputri is believed to be the rebirth of Sati, the daughter of Daksha and the wife of Lord Shiva. In her second birth she is Parvati, the daughter of Himalaya and later she became the consort of Shiva. This is one of the very first forms of Shakti and is closely associated with Lord Shiva.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Maa Brahmacharini – Goddess Worshipped on the second day of Navratri&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Here Brahma means &#39;one who constantly meditates on the Supreme Being&#39;. Brahmacharini is highly pious and is a peaceful form or is in meditation. She is also known as Tapashcharini, Aparna and Uma.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGCUszq825nQSEXFoauGlRUzSx6NjuYg38VOdf19PwV7T7XEz61i8lM5VmManPRQy3YnhmIuBkvpCnjpqa2zdP5O8DlLiDRUp0SDKGgEK1fRAyPcWGMfGuYb3t-ThV5u-h9VAOH2CxZeMQ/s1600/2+Brahmacharini.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGCUszq825nQSEXFoauGlRUzSx6NjuYg38VOdf19PwV7T7XEz61i8lM5VmManPRQy3YnhmIuBkvpCnjpqa2zdP5O8DlLiDRUp0SDKGgEK1fRAyPcWGMfGuYb3t-ThV5u-h9VAOH2CxZeMQ/s320/2+Brahmacharini.jpg&quot; style=&quot;cursor: move;&quot; width=&quot;135&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;This form of Durga is related to the severe penance undertaken by Sati and Parvati in their respective births to attain Lord Shiva as husband. Some of the most important Vratas observed in different parts of India by women is based on the strict austerities followed by Brahmacharini.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Maa Chandraghanta – Goddess Worshipped on the third day of Navratri&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Her name Chandraghanta comes from the crescent moon worn by her on the head.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNFn2kiG4kV7LfYxRcfljLmTik4Pl52FUjZaurwDaYtG0lQVoXKfz7Xk-pEtmMIOBYxA6bI7VxNmD0TrJtCePypkDQYVvX6XyTIk1PWiTJRMXer4bD48Oyvv-StBA1QLiC6ux4UUqWDhWy/s1600/3+Chandraghanta.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNFn2kiG4kV7LfYxRcfljLmTik4Pl52FUjZaurwDaYtG0lQVoXKfz7Xk-pEtmMIOBYxA6bI7VxNmD0TrJtCePypkDQYVvX6XyTIk1PWiTJRMXer4bD48Oyvv-StBA1QLiC6ux4UUqWDhWy/s320/3+Chandraghanta.jpg&quot; style=&quot;cursor: move;&quot; width=&quot;252&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;This is a terrible aspect of Goddess Shakti and is roaring in anger. This form of Durga is completely different from earlier forms and shows when provoked she can be the terrible or malevolent.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Maa Kushmanda – Goddess Worshipped on the fourth day of Navratri&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The name Kushmanda consists of three words. &#39;Ku&#39; means &#39;a little&#39;, &#39;Usma&#39; means &#39;energy&#39; and &#39;Anda&#39; means &#39;the cosmic egg or universe.&#39; She is also known as Ashtabhuja.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjG0zZAT0rFSBALDLIQwqBiiyqT3LBLyplRF5D4tx36ZAEs-8FMD4f3CReDs-PTlLoq9lVQpbHWSM9KE0ueHNN2jgw_RZK877DyVDZHN6JegWz_PcUZEgoLsMFhV0LZhBvSWoFgBsyfVRZA/s1600/4+khushmanda.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjG0zZAT0rFSBALDLIQwqBiiyqT3LBLyplRF5D4tx36ZAEs-8FMD4f3CReDs-PTlLoq9lVQpbHWSM9KE0ueHNN2jgw_RZK877DyVDZHN6JegWz_PcUZEgoLsMFhV0LZhBvSWoFgBsyfVRZA/s320/4+khushmanda.jpg&quot; style=&quot;cursor: move;&quot; width=&quot;255&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Goddess Shakti is very happy in this incarnation and it is believed that the eternal darkness ended when she smiled. And this led to the beginning of creation.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Maa Skanda Mata – Goddess Worshipped on the fifth day of Navratri&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Skanda is one of the names of Subrahmanya or Lord Muruga or Kartik – the General of the Army of the Devas and the most handsome God. Skanda Mata is the mother of Kartik. She is also known as Padmasana.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3-RL8CPbTzcLboXg4GrTNTW-IARlH6zpOmCQxEJPNqbb8U3vJB2ZIWAuTs6_ZxUEwnDM6u-y3sR7Voz8y1NT5furdIJa3TRxPluPkQGE85PHTs7C62RjjJXVGSWh-jp0YkQJMHGtMWMgd/s1600/5+Skanda-Mata.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3-RL8CPbTzcLboXg4GrTNTW-IARlH6zpOmCQxEJPNqbb8U3vJB2ZIWAuTs6_ZxUEwnDM6u-y3sR7Voz8y1NT5furdIJa3TRxPluPkQGE85PHTs7C62RjjJXVGSWh-jp0YkQJMHGtMWMgd/s320/5+Skanda-Mata.jpg&quot; style=&quot;cursor: move;&quot; width=&quot;273&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;This the motherly form of Durga and she is benevolent.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Maa Katyayani – Goddess Worshipped on the sixth day of Navratri&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;She is called Katyayani because she was born as the daughter of Sage Katya of Katya clan.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyqdtLrvCT_5ai51ICac2e7I6gyGeCF3khi2KJ2PrfqWxBlY-vuUO4Y8sroJ-qPwBa0kovvalanJqB6xtq6qmwtWZGd9aSYMJW81QOHaTqQOFppEsYS6VBvO9bCCvIu2O79Jn2yDrIrYtx/s1600/6+katyayani.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyqdtLrvCT_5ai51ICac2e7I6gyGeCF3khi2KJ2PrfqWxBlY-vuUO4Y8sroJ-qPwBa0kovvalanJqB6xtq6qmwtWZGd9aSYMJW81QOHaTqQOFppEsYS6VBvO9bCCvIu2O79Jn2yDrIrYtx/s320/6+katyayani.jpg&quot; style=&quot;cursor: move;&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;This is the daughter form of Durga. Here is she a loving daughter. She is epitome of love but won&#39;t hesitate to rise up in anger to defend righteousness and Dharma.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Maa Kalaratri – Goddess Worshipped on the seventh day of Navratri&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Kalaratri is the one who destroys ignorance and removes darkness. She is also known as Shubhamkari.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2L8hY5V1WlX0p8k9DaX43mn7Bq8eJwRB8leEssAPByy7EdwEJ7dpxqT7YmkLKlX4PLc2A3bae5fQqzTiO9niNfOjCkzO42O-eEuVPtSABrFJ2KTZa6kdqxc8z1zaVTxR1ziW84VGGvE8d/s1600/7+Kalaratri.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2L8hY5V1WlX0p8k9DaX43mn7Bq8eJwRB8leEssAPByy7EdwEJ7dpxqT7YmkLKlX4PLc2A3bae5fQqzTiO9niNfOjCkzO42O-eEuVPtSABrFJ2KTZa6kdqxc8z1zaVTxR1ziW84VGGvE8d/s320/7+Kalaratri.jpg&quot; style=&quot;cursor: move;&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In this form she is believed to have licked the blood of demon Rakta Beeja who had the capacity to bring out thousand demons from a drop of blood spilt from his body.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia;&quot;&gt;This is the most violent form of Durga. This form primarily depicts that life also has dark side – the violent Mother Nature and creates havoc and removes all dirt.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Maa Mahagauri – Goddess Worshipped on the eighth day of Navratri&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Mahagauri means one clean and bright like a ray of lightning.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8VCp9GqUuALMytbC8TK3iqICQKnZr_6ZWn6ilptM-O6ZLJDwDZj-LMl408DxeQXBHcc48zw1Ervfj0k-WVK_kjxmF7dnIk8YJr6u7oDm6Wq587y81tmOtifJXtglkCj3msIb1fJ3jxGn1/s1600/8+mahagauri.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8VCp9GqUuALMytbC8TK3iqICQKnZr_6ZWn6ilptM-O6ZLJDwDZj-LMl408DxeQXBHcc48zw1Ervfj0k-WVK_kjxmF7dnIk8YJr6u7oDm6Wq587y81tmOtifJXtglkCj3msIb1fJ3jxGn1/s320/8+mahagauri.jpg&quot; style=&quot;cursor: move;&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;This is the form of Mata Parvati when she did penance to get Shiva as her husband. It is believed that due to the intense Tapas performed by her without moving caused soil and dust to collect on her body. Lord Shiva cleaned her with water from Ganga. Purity is depicted in this form of Durga.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Maa Siddhidatri – Goddess Worshipped on the ninth day of Navratri&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In this form Mother Goddess provides &#39;Siddhi&#39; or knowledge.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5eO1EXdV7cvy6Y5Z5xHojl8h_iG5dX2wvlm6Y0rNFqvqvOn4tdQHFgWiOjG2q2dzPI-kAzMu8pOeyKYA3KiYrLXozbcpVmDGrRDFESel8d7ZAFNOeGXHIzNaTmZeN72OS1Nly2viu7QAh/s1600/9+Siddhidatri.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5eO1EXdV7cvy6Y5Z5xHojl8h_iG5dX2wvlm6Y0rNFqvqvOn4tdQHFgWiOjG2q2dzPI-kAzMu8pOeyKYA3KiYrLXozbcpVmDGrRDFESel8d7ZAFNOeGXHIzNaTmZeN72OS1Nly2viu7QAh/s320/9+Siddhidatri.jpg&quot; style=&quot;cursor: move;&quot; width=&quot;266&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In this form Durga removes ignorance and she provides the knowledge to realize That or Brahman. She is surrounded by Siddhas, Gandharvas, Yakshas, Demons and Gods who are worshipping her. The Siddhi that she provides is the realization that everything is Supreme Being or Brahman.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia;&quot;&gt;For the initial six the Pooja celebrations are limited to home. The celebrations acquire a festive form since the seventh day when the festivities of Navratri surround the atmosphere.&amp;nbsp;The festivities culminate on the tenth day, called variously&amp;nbsp;&lt;em&gt;Vijayadashmi&lt;/em&gt;,&amp;nbsp;&lt;em&gt;Dushehra&lt;/em&gt;&amp;nbsp;when people in most parts of the country burn effigies of Ravana, Meghanatha and Kumbhakarna.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Some people fast on all nine days, eating only fruit and milk dishes. Some fast only on the eighth or/and ninth day. As the festival is dear to the mother goddess, on the eighth or ninth day many people invite over nine young girls from the neighborhood. These girls are treated as the goddess herself. People ceremonially wash their feet, worship them and then offer food to the &quot;girl-goddesses&quot;.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;On the first day of the Navaratras, grains of barley are planted in the puja room of the house. A small bed of mud is prepared in which barley seeds are sown after a small puja has been performed. Every day some water is sprinkled on it. On the tenth day, the shoots are about 3 - 5 inches in length. After the puja, these seedlings are pulled out and given to devotees as a blessing from god. The seedlings are placed on their caps, behind their ears, and inside books to bring good luck. This custom suggests a link to harvesting. The sowing and reaping of barley is symbolic of the &quot;first fruit&quot;. Soon after this festival, the sugarcane crop is harvested and the winter crops are sown.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;History &amp;amp; Origin Of Navratri&lt;/span&gt;&lt;span style=&quot;color: #555555; font-family: Verdana;&quot;&gt;&amp;nbsp;-&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The Legend&lt;/span&gt;&lt;span style=&quot;color: #555555; font-family: Verdana;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Mahishasura, the mighty demon, worshipped Lord Shiva and obtained the power of eternity. Soon, he started killing and harassing innocent people and set out to win all the three lokas. The gods in swargaloka appealed to Lord Shiva, to find a way to get rid of the demon. To protect the world from the atrocities of Mahishasura, the Trinity of Brahma, Vishnu and Shiva united their powers and created a divine female warrior, known as Goddess Durga. Mahishasura, when he saw the divine beauty of Goddess Durga, got mesmerized.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;So fascinated was Mahishasura by Goddess Durga&#39;s beauty that he approached her with the intention of marriage. The goddess agreed to marry him, but put forth a condition - Mahishasura would have to win over her in a battle. Mahishasura, proud as he was, agreed immediately! The battle continued for 9 nights and at the end of the ninth night, Goddess Durga beheaded Mahishasura. The nine nights came to be known as Navratri, while the tenth day was called Vijayadashmi, the tenth day that brought the triumph of good over evil.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The origin of this custom can also be traced to the Ramayana. According to it, Rama had to pray to the nine different aspects of Devi to be able to kill Ravana. He then accumulated enough power to kill Ravana on the tenth day, which was called Vijayadashmi or Victory Day. Since then, the tradition of praying to Devi for nine days has continued and was especially pronounced amongst the Kshatriyas who believed that by doing so, they too would be able to defeat the most powerful enemy.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;In different parts of India:&lt;span style=&quot;color: #555555;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Today, it is celebrated more for its mythological significance and reaffirms the Hindu faith in the triumph of good. Even today, the nine different forms of the goddess are worshipped. Though several communities of Hindus are staunch vegetarians, Navaratri is one exception. On the eighth day, many communities, especially Gurkha and other hill tribes who are believers in the Devi cult sacrifice an animal. This blood sacrifice is a form of thanksgiving to the goddess for a wish that has been granted. People often sacrifice a buffalo symbolic of the killing of Mahishasura by Durga.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia;&quot;&gt;In Bengal, this period is celebrated as Durga Puja. Groups and residents&#39; associations in towns and cities erect beautiful marquees, where they install the idol of the Mother Goddess.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFelqQ5BxQoW9N3Cy25bFrvEgC1JKkIbaYUdhOeuPoJMLBnW-qllJqBe_cLrh366jI-KfacXcA5knN927zxG3HaKRdCU_kblUjlnVCkrL0fxJ-MBImB9Qo721-GIJ9dlWXUegn5ifgW_cw/s1600/800px-Durga_Puja+bengal.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFelqQ5BxQoW9N3Cy25bFrvEgC1JKkIbaYUdhOeuPoJMLBnW-qllJqBe_cLrh366jI-KfacXcA5knN927zxG3HaKRdCU_kblUjlnVCkrL0fxJ-MBImB9Qo721-GIJ9dlWXUegn5ifgW_cw/s320/800px-Durga_Puja+bengal.jpg&quot; style=&quot;cursor: move;&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In Calcutta, as also other places, there are competitions held and the most beautiful and creatively done marquee gets a prize. For all the nine days, the marquee becomes the center of all activity where cultural events and competitions are organized every day.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr9EKEKOu2nm054aPnju4VZn4nbprY6TGbUIJW3F8BtfFVPeoF4XrIzzMUIQUKIJmmfpucOReoVohsSzW6ivFnCF2T0pk_oEbOyKzaMAzRDCAmG7H-qOOVRAgs6sx2yVtKLJ8u2DcpJ3sX/s1600/764px-Navratridurgapuja+bengal.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;251&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr9EKEKOu2nm054aPnju4VZn4nbprY6TGbUIJW3F8BtfFVPeoF4XrIzzMUIQUKIJmmfpucOReoVohsSzW6ivFnCF2T0pk_oEbOyKzaMAzRDCAmG7H-qOOVRAgs6sx2yVtKLJ8u2DcpJ3sX/s320/764px-Navratridurgapuja+bengal.jpg&quot; style=&quot;cursor: move;&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In Gujarat, this is the time for the joyous Garba and Dandia dances and people pour out at night to participate in this community festival. Women and girls in all their fineries dance around the garb a pot, clapping their hands in rhythmic movement. The pot is decorated with flowers, betel leaves, and has its mouth covered with a coconut.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1AEJyjkElgK8DiHTeduu5OB66W-_eAMBUIy2s5pwWXMiFe27-JVNdMAJB7O9MjF7RBVhICG3FPB7vTI7PWVsYakdhZ6n72tZXyRfaPfAK7iiJdnlyZbLjxqb0lISJKvy4QVLP2wQu3xGR/s1600/800px-Navratri_Garba+ahmd.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;213&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1AEJyjkElgK8DiHTeduu5OB66W-_eAMBUIy2s5pwWXMiFe27-JVNdMAJB7O9MjF7RBVhICG3FPB7vTI7PWVsYakdhZ6n72tZXyRfaPfAK7iiJdnlyZbLjxqb0lISJKvy4QVLP2wQu3xGR/s320/800px-Navratri_Garba+ahmd.jpg&quot; style=&quot;cursor: move;&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In Tamil Nadu, the first three days of the festival are dedicated to Lakshmi, the next three to Durga and the last three to Sarasvati. The nine-day celebration is compartmentalized in certain parts of the country, dedicating three days each to a trinity of goddesses: to Durga the goddess of valor, to Lakshmi the goddess of wealth and to Saraswati the goddess of knowledge.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoNPDJn9xE8PIOBlg55o6N_iWqBpGfCZFxl0J0f11uZs1Kdw2s7oLTBFqj11JlI3-7kXIJM27aygeYTFXa6SlUgIxF-MeEPSEEbh2CS5YoVIcEghvjAm7ysvbd8xBNrgeeLA5hn_OvLuZu/s1600/Golu_Full_View+tamil.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoNPDJn9xE8PIOBlg55o6N_iWqBpGfCZFxl0J0f11uZs1Kdw2s7oLTBFqj11JlI3-7kXIJM27aygeYTFXa6SlUgIxF-MeEPSEEbh2CS5YoVIcEghvjAm7ysvbd8xBNrgeeLA5hn_OvLuZu/s320/Golu_Full_View+tamil.jpg&quot; style=&quot;cursor: move;&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The one thing that remains constant in most parts of the country is that daytime is exclusively for prayers, fasting, and solemnity while the nights are spent in joy and revelry. Men, women, and children, who have fasted during the day, have a light repast of fruit or other non-cereals at night before going out to enjoy the festive season.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In Punjab, people organize Jagrans to sing devotional songs all night in praise of the Mother Goddess. Solemnity and piety mark these nine days as even those Punjabis who do not keep a fast, stop eating non-vegetarian and impure food items like onion and garlic.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGTjFQTYsK5xcDE3sZlOKsRr1DfRQ4ahAlNBPiwbgJiqlmJljCMHHEFLf_sDxq7Et3LBBkNq9FKats2nRfsg5Loz_9xWJXeM7ccZtOvFleKgWrjhyphenhyphen6FzptuO91tOxtAOjBSVLz9CEzz34B/s1600/Neuf_Durga+uttar.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGTjFQTYsK5xcDE3sZlOKsRr1DfRQ4ahAlNBPiwbgJiqlmJljCMHHEFLf_sDxq7Et3LBBkNq9FKats2nRfsg5Loz_9xWJXeM7ccZtOvFleKgWrjhyphenhyphen6FzptuO91tOxtAOjBSVLz9CEzz34B/s320/Neuf_Durga+uttar.jpg&quot; style=&quot;cursor: move;&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Another part of the Navratri celebrations is the Ramlila. In places like Delhi and Uttar Pradesh, almost every locality has its own group of actors re-enacting episodes from the life of Lord Rama. This is probably because, the day after Navratri, i.e. on the tenth day of Ashvin called the Vijaya Dashami, it is said that Lord Rama killed Ravana and other demons to rid the earth of evil.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXb8qjVnQwiFjcuZiXRSQKE1_-h-KeYF3EvpzH39yaQlDdE1FR0jbTHVe83mwLU1sCi_vBdV2WcU-a43tyUyv-UChEKJkRJnlphwvphlCvn-TnnIg3BOqMtLaaB60W4D9TegnxuYtwpsb8/s1600/Mysore_Palace_.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXb8qjVnQwiFjcuZiXRSQKE1_-h-KeYF3EvpzH39yaQlDdE1FR0jbTHVe83mwLU1sCi_vBdV2WcU-a43tyUyv-UChEKJkRJnlphwvphlCvn-TnnIg3BOqMtLaaB60W4D9TegnxuYtwpsb8/s320/Mysore_Palace_.jpg&quot; style=&quot;cursor: move;&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Mysore Palace during Dussehra&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Rituals&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The tempo of life changes perceptibly in every family, in markets, in Mata&#39;s temples, long before the festival commences. In homes, the corner or room reserved for puja becomes the scene of intense preparation. A coconut, saffron or sandalwood paste, a garba (perforated earthen pot), a kumbh (earthen pot), grains of wheat or barley, ghee (clarified butter) or mustard oil for a lamp that will burn incessantly all through the nine special nights, are placed in readiness for the ceremonial ritualistic initiation of the festival.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Housewives draw designs and emblems with rice flour, turmeric powder-and vermilion. Each of the motifs symbolizes abundance and represents hope for the future.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The eagerly awaited first day of the festival witnesses a flurry of ritualistic activity. On a small platform of fresh earth in front of the idol of the Mother Goddess, all the things collected for the puja are placed and the lamp is lit. As evening falls, people gather around the sacred flame that is constantly fed with ghee or oil, and soon, mellow voices singing bhajans can be heard from home after home.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;On Lalita Panchami (the fifth day), children gather all the books in the house before a sacred lamp and invoke the blessings of Saraswati. It is also the occasion for all artisans to lay down their tools before the goddess and seek her benediction upon their trade.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;On the eighth and ninth days of the festival, yagnas are performed as a final act of farewell that marks the termination of the ceremonies. Ghee or clarified butter, a sweet concoction of rice cooked in condensed milk (paayas or kheer) and sesame seeds are traditional items used in the yagna to the chanting of mantras conveying the theme&#39;&quot;This is my offering to God&quot;.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;On the tenth day or Vijaya Dasami, more popularly known as Dussehra, enormous effigies of Ravana stuffed with firecrackers are torched with flaming arrows to the delight of throngs of revelers.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;People read &quot;The Devi Mahatmyam&quot; (Glory of Divine Mother) having 700 Mantras on Shri Durga Mata.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Things you need to know about&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&quot;Nava-ratri&quot; literally means &quot;nine nights.&quot; This festival is observed twice a year, once in the beginning of summer and again at the onset of winter.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;What&#39;s the Significance of Navratri?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;During Navaratri, we invoke the energy aspect of God in the form of the universal mother, commonly referred to as &quot;Durga,&quot; which literally means the remover of miseries of life. She is also referred to as &quot;Devi&quot; (goddess) or &quot;Shakti&quot; (energy or power). It is this energy, which helps God to proceed with the work of creation, preservation and destruction. In other words, we can say that God is motionless, absolutely changeless, and the Divine Mother Durga, does everything. Truly speaking, our worship of Shakti re-confirms the scientific theory that energy is imperishable. It cannot be created or destroyed. It is always there.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Why Worship the Mother Goddess?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;We think this energy is only a form of the Divine Mother, who is the mother of all, and all of us are her children. &quot;Why mother; why not father?&quot;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Wingdings;&quot;&gt;J&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;Let me just say that we believe that God&#39;s glory, his cosmic energy, his greatness and supremacy can best be depicted as the motherhood aspect of God. Just as a child finds all these qualities in his or her mother, similarly, all of us look upon God as mother. In fact, Hinduism is the only religion in the world, which gives so much importance to the mother aspect of God because we believe that mother is the creative aspect of the absolute.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Why Twice a Year?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Every year the beginning of summer and the beginning of winter are two very important junctures of climatic change and solar influence. These two junctions have been chosen as the sacred opportunities for the worship of the divine power because:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;We believe that it is the divine power that provides energy for the earth to move around the sun, causing the changes in the outer nature and that this divine power must be thanked for maintaining the correct balance of the universe.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Due to the changes in the nature, the bodies and minds of people undergo a considerable change, and hence, we worship the divine power to bestow upon all of us enough potent powers to maintain our physical and mental balance.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Why Nine Nights &amp;amp; Days?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Navaratri is divided into sets of three days to adore different aspects of the supreme goddess. On the first three days, the Mother is invoked as powerful force called&amp;nbsp;&lt;a href=&quot;http://hinduism.about.com/library/weekly/aa101701a.htm&quot; target=&quot;_blank&quot;&gt;Durga&lt;/a&gt;&amp;nbsp;in order to destroy all our impurities, vices and defects. The next three days, the Mother is adored as a giver of spiritual wealth,&amp;nbsp;&lt;a href=&quot;http://hinduism.about.com/library/weekly/aa100900a.htm&quot; target=&quot;_blank&quot;&gt;Lakshmi&lt;/a&gt;, who is considered to have the power of bestowing on her devotees the inexhaustible wealth. The final set of three days is spent in worshipping the mother as the goddess of wisdom,&amp;nbsp;&lt;a href=&quot;http://hinduism.about.com/library/weekly/aa020700.htm&quot; target=&quot;_blank&quot;&gt;Saraswati&lt;/a&gt;. In order have all-round success in life, we need the blessings of all three aspects of the divine mother; hence, the worship for nine nights.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Why Do We Need the Power?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Wingdings;&quot;&gt;J&lt;/span&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;what I suggest that join your parents and friends in worshipping &quot;Ma Durga&quot;, she will bestow on you wealth, auspiciousness, prosperity, knowledge, and other potent powers to cross every hurdle of life.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Let us all take a resolve, this Navaratri, to spread peace, harmony and knowledge in this world and strengthen our commitment to making this world a better place.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 14pt;&quot;&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 14pt;&quot;&gt;&lt;strong&gt;Karmaniye wadhikaraste&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1q5RVvpyztKMEExgrYZTWX5RDKJK3eMtFl43XznUWWPhtwlFIkn62iHHoITQ7VXwWO1nArFPu9sJmsq3TjrWbZA6MLaYaFF0E9-g1kRkOcqiTNhP3J6_iUcjvfSrdsd9nTwC4RRUwOIlI/s1600/Maa+Durga.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1q5RVvpyztKMEExgrYZTWX5RDKJK3eMtFl43XznUWWPhtwlFIkn62iHHoITQ7VXwWO1nArFPu9sJmsq3TjrWbZA6MLaYaFF0E9-g1kRkOcqiTNhP3J6_iUcjvfSrdsd9nTwC4RRUwOIlI/s1600/Maa+Durga.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/937052418754637970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/navratri.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/937052418754637970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/937052418754637970'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/navratri.html' title='Navratri'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJM8XtZxOdq3C82TvrdQ8piUMtPWhoR101dqWLMzOEanGodzL6fgPsOm4NnCldaof5jChr5eRizadMbndpC4zPe9iHnzp01VIZLr_3shLaa84UqAmIhSeiD-Z9p-iy05i-oXElpERc6XK7/s72-c/Durga.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-1776988674271092115</id><published>2010-10-14T19:24:00.011+05:30</published><updated>2010-11-11T12:04:19.410+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="How Do I?"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenCV"/><category scheme="http://www.blogger.com/atom/ns#" term="opencv customization"/><category scheme="http://www.blogger.com/atom/ns#" term="opencv installation"/><category scheme="http://www.blogger.com/atom/ns#" term="opencv with visual studio 2008"/><title type='text'>OpenCV - 01</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 22pt;&quot;&gt;OpenCV Customization with VS2008&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 22pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia; font-size: 24px;&quot;&gt;Installation&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;OpenCV is an open source library for computer vision development. There are some very interesting sample applications included with this library. Before we can start we need to be able to build the library.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Requirements&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;/ol&gt;&lt;ul style=&quot;margin-left: 73pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;OpenCV Library&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Visual Studio 2008 Express C++&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Windows Platform SDK&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Optional&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;/ol&gt;&lt;ul style=&quot;margin-left: 73pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Visual Studio 2008 Express C++ SP1&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Procedure&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Step 1 - Installing Visual C++ and Platform SDK&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Visit&amp;nbsp;&lt;a href=&quot;http://msdn.microsoft.com/en-in/vstudio/default.aspx&quot;&gt;http://msdn.microsoft.com/en-in/vstudio/default.aspx&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href=&quot;http://www.microsoft.com/india/visualstudio/products/2008-editions/professional&quot;&gt;http://www.microsoft.com/india/visualstudio/products/2008-editions/professional&lt;/a&gt;&amp;nbsp;and follow Microsoft&#39;s Guide to setup Visual C++ and the Platform SDK.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;When you get to Step 3, add this line to &quot;Include Files&quot; (assume default install location) C:\Program Files\Microsoft Platform SDK for Windows \Include\mfc this is because OpenCV requires some files that are inside that folder.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Step 2 - Update Visual C++ with Service Pack 1 (Optional)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Service Packs for the each of the Visual Studio products are available on one page from Microsoft. Visual Studio 2008 Express SP1.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Step 3 - Install OpenCV&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Get OpenCV Library and download OpenCV 2.1 for Windows&amp;nbsp;&lt;a href=&quot;http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.1/&quot;&gt;http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.1/&lt;/a&gt;&amp;nbsp;Installation is straight forward.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Step 4 - Customising Visual C++ for use with OpenCV&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;We need to setup the directories for Open Visual C++&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 48pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Open Visual C++&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Choose menu &quot;Tools&quot; and select &quot;Options&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In &quot;Projects and Solutions&quot; and go to &quot;VC++ Directories&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Show directories for &quot;Library Files&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Add &quot;C:\Program Files\OpenCV2.1\lib&quot; to the list of directories&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii3bhcyWF8b5kKveqKsYC-jG20vi5yDR0te-6nUf_FqcXQlxUuM8YtyggK2TaRbDVOKJVEJ1gNhFp2fvAEUGk1f4VJUtYPTTP-YSSwF_XkK0aw4A1XAW8r4sQvJqPsahi0TlGSyrHyrO7U/s1600/fig1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;231&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii3bhcyWF8b5kKveqKsYC-jG20vi5yDR0te-6nUf_FqcXQlxUuM8YtyggK2TaRbDVOKJVEJ1gNhFp2fvAEUGk1f4VJUtYPTTP-YSSwF_XkK0aw4A1XAW8r4sQvJqPsahi0TlGSyrHyrO7U/s400/fig1.png&quot; style=&quot;cursor: move;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(The important library files are: cv.lib, cvaux.lib, cxcore.lib, cvcam.lib, highgui.lib)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Similarly,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 48pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Show directories for &quot;Include Files&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Add &quot;C:\Program Files\OpenCV2.1\include\opencv&quot; to the list of directories&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(The important include files are: cvaux.h, cxcore.h, cv.h, highgui.h, cvcam.h)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;And,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 48pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Show directories for &quot;Source Files&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Add &quot;C:\Program Files\OpenCV2.1\src&quot; to the list of directories&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Finally,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 48pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Show directories for &quot;Executable Files&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Add &quot;C:\Program Files\OpenCV2.1\bin&quot; to the list of directories&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Step 5 - Open &quot;OpenCV Workspace .NET 2008&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In the start menu a folder called &quot;Open CV&quot; was created when you installed OpenCV. Inside the folder &quot;OpenCV&quot; there is a shortcut called &quot;OpenCV Workspace .NET 2008&quot; Open &quot;OpenCV Workspace .NET 2008&quot; This will load OpenCV solution within Visual C++ There is one last thing you need to do, to be able to compile OpenCV.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 48pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Choose menu &quot;Build&quot; and Select &quot;Configuration Manager&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Change &quot;Active solution configuration&quot; to either &quot;Debug&quot; or &quot;Release&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Step 6 - Build&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Now that everything is installed and setup; building OpenCV should be a breeze.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 48pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Choose menu &quot;Build&quot; and Select &quot;Build Solution&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Creating Application at A Glance&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Now, we will try to create application based on OpenCV at a glance. First, we will try to create console application (without Graphical User Interface / GUI)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 48pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Create new console project by following the picture below&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOGPNFkyvlrWAF5lVWfzVP325B-2lj2JCxyAVQOBzm1exjMumhE5Dplu79q8u3k0rjYJiypenaA8qllbsbfGa093RRA_KzHbh0AlS7a1u-L-hdSPNtlGbvjhPzeUv6dY4C1ZPeSGoZDfi1/s1600/fig2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;281&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOGPNFkyvlrWAF5lVWfzVP325B-2lj2JCxyAVQOBzm1exjMumhE5Dplu79q8u3k0rjYJiypenaA8qllbsbfGa093RRA_KzHbh0AlS7a1u-L-hdSPNtlGbvjhPzeUv6dY4C1ZPeSGoZDfi1/s400/fig2.png&quot; style=&quot;cursor: move;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia;&quot;&gt;Right click and add new file&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW0tPAiWm3JCUaVAvZgUFmbGFDMdQp-IPmK0vaK45LIG6MUNY6v-q6lC7rjWJk9gYLcpMbhR4hlB0oQbMSK_p7uoGEAp7_-VJ6EOE68_AiPcs2UbsOKCjHVT9QnR4AdT4OcgCuoJItmSFv/s1600/fig3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;257&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW0tPAiWm3JCUaVAvZgUFmbGFDMdQp-IPmK0vaK45LIG6MUNY6v-q6lC7rjWJk9gYLcpMbhR4hlB0oQbMSK_p7uoGEAp7_-VJ6EOE68_AiPcs2UbsOKCjHVT9QnR4AdT4OcgCuoJItmSFv/s400/fig3.png&quot; style=&quot;cursor: move;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;OpenCV Application with Graphical User Interface&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;/ol&gt;&lt;ul style=&quot;margin-left: 48pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Click File &amp;gt;&amp;gt; New &amp;gt;&amp;gt; Project &amp;gt;&amp;gt; Visual C++ &amp;gt;&amp;gt; Windows Forms Application (don&#39;t forget to enter your application&#39;s name)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Set additional directories and libraries, as you do in creating console application (step 3 previous sections).&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The main important thing set your general properties of Common Language Runtime Support. To do this, select your project at the left windows, right click &amp;gt;&amp;gt; Properties &amp;gt;&amp;gt; Configuration Properties &amp;gt;&amp;gt; General &amp;gt;&amp;gt; Common Language Runtime Support&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Change from &quot;No Common Language Runtime Support&quot; to &quot;Common Language Runtime Support&quot; …….and happy coding!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Reference&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;/ol&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;a href=&quot;http://opencv.willowgarage.com/wiki/FullOpenCVWiki&quot;&gt;http://opencv.willowgarage.com/wiki/FullOpenCVWiki&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/1776988674271092115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/opencv-01.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/1776988674271092115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/1776988674271092115'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/opencv-01.html' title='OpenCV - 01'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii3bhcyWF8b5kKveqKsYC-jG20vi5yDR0te-6nUf_FqcXQlxUuM8YtyggK2TaRbDVOKJVEJ1gNhFp2fvAEUGk1f4VJUtYPTTP-YSSwF_XkK0aw4A1XAW8r4sQvJqPsahi0TlGSyrHyrO7U/s72-c/fig1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-9038690549039498973</id><published>2010-10-12T19:06:00.010+05:30</published><updated>2010-10-14T15:11:52.503+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="C99"/><category scheme="http://www.blogger.com/atom/ns#" term="forceinline"/><category scheme="http://www.blogger.com/atom/ns#" term="Function Level Optimization"/><category scheme="http://www.blogger.com/atom/ns#" term="GNU C"/><category scheme="http://www.blogger.com/atom/ns#" term="INLINE"/><category scheme="http://www.blogger.com/atom/ns#" term="inline rules"/><category scheme="http://www.blogger.com/atom/ns#" term="Inlining"/><category scheme="http://www.blogger.com/atom/ns#" term="Optimization"/><category scheme="http://www.blogger.com/atom/ns#" term="Porting"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Level Optimization"/><title type='text'>Optimization - 03</title><content type='html'>&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 22pt;&quot;&gt;Optimization - Inline Functions in C&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Introduction&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;GNU C (and some other compilers) had inline functions long before standard C introduced them (in the 1999 standard). The point of making a function inline is to hint to the compiler that it is worth making some form of extra effort to call the function faster than it would otherwise - generally by substituting the code of the function into its caller. As well as eliminating the need for a call and return sequence, it might allow the compiler to perform certain optimizations between the bodies of both functions. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Sometimes it is necessary for the compiler to emit a stand-alone copy of the object code for a function even though it is an inline function - for instance if it is necessary to take the address of the function, or if it can&#39;t be inlined in some particular context, or (perhaps) if optimization has been turned off. (And of course, if you use a compiler that doesn&#39;t understand inline, you&#39;ll need a stand-alone copy of the object code so that all the calls actually work at all.)&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;There are various ways to define inline functions; any given kind of definition might definitely emit stand-alone object code, definitely not emit stand-alone object code, or only emit stand-alone object code if it is known to be needed. Sometimes this can lead to duplication of object code, which is a potential problem for following reasons:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;It wastes space. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;It can cause pointers to what is apparently the same function to compare not equal to one another. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;It might reduce the effectiveness of the instruction cache. (Although inlining might do that in other ways too.) &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Motivation&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Inline expansion is used to eliminate the time overhead when a function is called. It is typically used for functions that execute frequently. It also has a space benefit for very small functions, and is an enabling transformation for other optimizations.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Without inline functions, however, the compiler decides which functions to inline. The programmer has little or no control over which functions are inlined and which are not. Giving this degree of control to the programmer allows her/him to use application-specific knowledge in choosing which functions to inline.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In some computer languages inline functions interact intimately with the compilation model. In C++, for example, it is necessary to define an inline function in every module that uses it, whereas an ordinary function must be defined in only a single module. This makes it possible to compile a single module independently of all other modules.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Microsoft Visual C++ Specific&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Microsoft Visual C++ and few other compilers support non-standard constructs for defining inline functions, such as __inline and __forceinline specifiers.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;__inline&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The __inline keyword is equivalent to inline. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;__forceinline&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The __forceinline keyword allow the programmer to force the compiler to inline the function, but indiscriminate use of __forceinline can result in larger code (bloated executable file), minimum or none performance gain and in some cases even performance losses. The compiler cannot inline the function in all circumstances, even with the __forceinline keyword applied. If the compiler cannot inline a function declared with __forceinline, a warning of level 1 is generated. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 13pt;&quot;&gt;cases when __forceinline will not take effect &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The function or its caller is compiled with /Ob0 (the default option for debug builds). &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The function and the caller use different types of exception handling (C++ exception handling in one, structured exception handling in the other). &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The function has a variable argument list. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The function uses inline assembly, unless compiled with /Og, /Ox, /O1, or /O2. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The function is recursive and not accompanied by #pragma inline_recursion(on). With the pragma, recursive functions are inlined to a default depth of 16 calls. To reduce the inlining depth, use inline_depth pragma. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The function is &lt;a href=&quot;http://en.wikipedia.org/wiki/Virtual_function&quot; title=&quot;Virtual function&quot;&gt;virtual&lt;/a&gt; and is called virtually. Direct calls to virtual functions can be inlined. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The program takes the address of the function and the call is made via the pointer to the function. Direct calls to functions that have had their address taken can be inlined. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The function is also marked with the naked __declspec modifier. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ol style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 13pt;&quot;&gt;__forceinline is useful if:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;inline or __inline is not respected by the compiler (ignored by compiler cost/benefit analyzer) &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;code portability is not required &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;inlining results in a necessary performance boost &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Example of portable code&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;#ifdef _MSC_VER&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  #define INLINE __forceinline // use __forceinline (VC++ specific)&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;#else&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  #define INLINE inline // use standard inline&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;#endif&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;INLINE void helloworld() { /* function body */ }&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;C99 Inline Rules&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The specification for inline is section 6.7.4 of the C99 standard (ISO/IEC 9899:1999). Unfortunately this isn&#39;t freely available. The following possibilities exist:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;A Standalone Function&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;A function where all the declarations (including the definition) mention inline and never extern. There must be a definition in the same translation unit. The standard refers to this as an &lt;em&gt;inline definition&lt;/em&gt;. No stand-alone object code is emitted, so this definition can&#39;t be called from another translation unit.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;You can have a separate (not inline) definition in another translation unit, and the compiler might choose either that or the inline definition.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Such functions may not contain modifiable static variables, and may not refer to static variables or functions elsewhere in the source file where they are declared.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 13pt;&quot;&gt;In this example, all the declarations and definitions use inline but not extern:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;// a declaration mentioning inline&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;inline int max(int a, int b);&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;// a definition mentioning inline&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;inline int max(int a, int b) {&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  return a &amp;gt; b ? a : b;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The function won&#39;t be callable from other files; if another file has a definition that might be used instead.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The standard is vague on this point. It says that the inline definition &lt;em&gt;does not forbid&lt;/em&gt; an external definition elsewhere, but then that it &lt;em&gt;provides an alternative to an external definition&lt;/em&gt;. Unfortunately this doesn&#39;t really make clear whether this external definition must actually exist.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In practice unless you are torture-testing your compiler it will exist: if you wanted to keep your inline function entirely private to one translation unit, you make it static inline.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;A Function with extern&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;A function where at least one declaration mentions inline, but where some declaration doesn&#39;t mention inline or does mention extern. There must be a definition in the same translation unit. Stand-alone object code is emitted (just like a normal function) and can be called from other translation units in your program.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The same constraint about statics above applies here, too.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 13pt;&quot;&gt;In this example all the declarations and definitions use inline but one adds extern:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;// a declaration mentioning extern and inline&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;extern inline int max(int a, int b);&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;// a definition mentioning inline&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;inline int max(int a, int b) {&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  return a &amp;gt; b ? a : b;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 13pt;&quot;&gt;In this example, one of the declarations does not mention inline:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;// a declaration not mentioning inline&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;int max(int a, int b);&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;// a definition mentioning inline&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;inline int max(int a, int b) {&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  return a &amp;gt; b ? a : b;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In either example, the function will be callable from other files.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;A Function with static&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;A function defined static inline. A local definition may be emitted if required. You can have multiple definitions in your program, in different translation units, and it will still work. Just dropping the inline reduces the program to a portable one (again, all other things being equal).&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;This is probably useful primarily for small functions that you might otherwise use macros for. If the function isn&#39;t always inlined then you get duplicate copies of the object code, with the problems described above.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;A sensible approach would be to put the static inline functions in either a header file if they are to be widely used or just in the source files that use them if they are only ever used from one file.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 13pt;&quot;&gt;In this example the function is defined static inline:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;// a definition using static inline&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;static int max(int a, int b) {&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  return a &amp;gt; b ? a : b;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The first two possibilities go together naturally. You either write inline everywhere and extern in one place to request a stand-alone definition, or write inline almost everywhere but omit it exactly once to get the stand-alone definition.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;main is not allowed to be an inline function.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(If you think I&#39;ve misinterpreted these rules, please let me know!)&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;(C++ is stricter: a function which is inline anywhere must be inline everywhere and must be defined identically in all the translation units that use it.)&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;GNU C Inline Rules&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The GNU C rules are described in the GNU C manual, which is included with the compiler. This is freely available if you follow links from e.g. &lt;a href=&quot;http://gcc.gnu.org/&quot;&gt;http://gcc.gnu.org&lt;/a&gt;. The following possibilities exist:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;A Standalone Function&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;A function defined with inline on its own. Stand-alone object code is always emitted. You can only write one definition like this in your entire program. If you want to use it from other translation units to the one where it is defined, you put a declaration in a header file; but it would not be inlined in those translation units.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;This is of rather limited use: if you only want to use the function from one translation unit then static inline below makes more sense, if not the you probably want some form that allows the function to be inlined in more than one translation unit.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;However it does have the advantage that by defining away the inline keyword, the program reduces to a portable program with the same meaning (provided no other non-portable constructions are used).&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;A Function with extern&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;A function defined with extern inline. Stand-alone object code is never emitted. You can have multiple such definitions and your program will still work. However, you should add a non-inline definition somewhere too, in case the function is not inlined everywhere. This provides sensible semantics (we can avoid duplicate copies of the functions&#39; object code) but is a bit inconvenient to use.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;One approach to using this would be to put the definitions in a header file, surrounded by a #if that expands to true either when using GNU C, or when the header has been included from the file that is contain the emitted definitions (whether or not using GNU C). In the latter case the extern is omitted (for instance writing EXTERN and #define-ing that to either extern or nothing). The #else branch would contain just declarations of the functions, for non-GNU compilers.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;A Function with static&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;A function defined with static inline. Stand-alone object code may be emitted if required. We can have multiple definitions in our program, in different translation units, and it will still work. This is the same as the C99 rules. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;As of release 4.3, GNU C supports the C99 inline rules mentioed above and defaults to them with the -std=c99 or -std=gnu99 options. The old rules can be requested in new compilers with the -gnu89-inline option or via the gnu_inline function attribute.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;If the C99 rules are in force then GCC will define the __GNUC_STDC_INLINE__ macro. Since GCC 4.1.3, it will define __GNUC_GNU_INLINE__ if the GCC-only rules are in use, but older compilers use these rules without defining either macro. You could normalize the situation with a fragment like this:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;#if defined __GNUC__ &amp;amp;&amp;amp; !defined __GNUC_STDC_INLINE__ &amp;amp;&amp;amp; !defined __GNUC_GNU_INLINE__&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;# define __GNUC_GNU_INLINE__ 1&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;#endif&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Strategies For Using Inline Functions&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;These rules suggest several possible models for using inline functions in more or less portable ways.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;A Simple Portable Model&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Use static inline (either in a common header file or just in one file). If the compiler needs to emit a definition (e.g. to take its address, or because it doesn&#39;t want to inline some call) then you waste a bit of space; if you take the address of the function in two translation units then the result won&#39;t compare equal.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;For instance, in a header file:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;static inline int max(int a, int b) {&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  return a &amp;gt; b ? a : b;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;You can support legacy compilers (i.e. anything without inline) via -Dinline=&quot;&quot;, although this may waste space if the compiler does not optimize out unused functions.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;A GNU C Model&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Use extern inline in a common header and provide a definition in a .c file somewhere, perhaps using macros to ensure that the same code is used in each case. For instance, in the header file:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;#ifndef INLINE&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;# define INLINE extern inline&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;#endif&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;INLINE int max(int a, int b) {&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  return a &amp;gt; b ? a : b;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;...and in exactly one source file:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;#define INLINE&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;#include &quot;header.h&quot;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Supporting legacy compilers is awkward unless you don&#39;t mind wasting space and having multiple addresses for the same function; you need to restrict the definitions to a in single translation unit (with INLINE defined to the empty string) and add some external declarations in the header file.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;A C99 Model &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Use inline in a common header, and provide definitions in a .c file somewhere, via extern declarations. For instance, in the header file:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;inline int max(int a, int b) {&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  return a &amp;gt; b ? a : b;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;...and in exactly one source file:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;#include &quot;header.h&quot;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;extern int max(int a, int b);&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;To support legacy compilers, you have to swap the whole thing around so that the declarations are visible in the common header and the definitions are restricted to a single translation unit, with inline defined away.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;A Complicated Portable Model &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Use macros to choose either extern inline for GNU C, inline for C99, or neither for a definition. For instance, in the header:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;#ifndef INLINE&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;# if __GNUC__ &amp;amp;&amp;amp; !__GNUC_STDC_INLINE__&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;#  define INLINE extern inline&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;# else&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;#  define INLINE inline&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;# endif&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;#endif&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;INLINE int max(int a, int b) {&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  return a &amp;gt; b ? a : b;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;...and in exactly one source file:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;#define INLINE&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;#include &quot;header.h&quot;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Supporting legacy compilers has the same issues as the GNU C model.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Problems With Inline Functions&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Besides the problems associated with &lt;a href=&quot;http://en.wikipedia.org/wiki/Inline_expansion&quot; title=&quot;Inline expansion&quot;&gt;inline expansion&lt;/a&gt; in general, inline functions as a language feature may not be as valuable as they appear, for a number of reasons:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Often, a compiler is in a better position than a human to decide whether a particular function should be inlined. Sometimes the compiler may not be able to inline as many functions as the programmer indicates. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;An important point to note is that the code (of the inline function) gets exposed to the calling function. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;As functions evolve, they may become suitable for inlining where they were not before, or no longer suitable for inlining where they were before. While inlining or un-inlining a function is easier than converting to and from macros, it still requires extra maintenance which typically yields relatively little benefit. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Inline functions used in proliferation in native C-based compilation systems can increase compilation time, since the intermediate representation of their bodies is copied into each call site where they are inlined. The potential increase in code size is mirrored by a potential increase in compilation time. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The specification of inline in C99 requires exactly one additional external definition of a function in another compilation unit, when the corresponding inline definition that can occur multiple times in different compilation units, if that function is used somewhere. That can easily lead to linker errors because such a definition wasn&#39;t provided by the programmer. In particular, the C++ specification of inline does not require an additional non-inline definition of such a function. For this reason, inline in C99 often is used together with static, which gives the function internal linkage. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/9038690549039498973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/optimization-inline.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/9038690549039498973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/9038690549039498973'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/optimization-inline.html' title='Optimization - 03'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-7685730442866804168</id><published>2010-10-11T19:32:00.005+05:30</published><updated>2010-10-17T20:18:16.297+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Graph partitioning"/><category scheme="http://www.blogger.com/atom/ns#" term="Histogram based"/><category scheme="http://www.blogger.com/atom/ns#" term="Image Processing"/><category scheme="http://www.blogger.com/atom/ns#" term="k means"/><category scheme="http://www.blogger.com/atom/ns#" term="Kohonen map"/><category scheme="http://www.blogger.com/atom/ns#" term="Lloyd&#39;s algorithm"/><category scheme="http://www.blogger.com/atom/ns#" term="Model based segmentation"/><category scheme="http://www.blogger.com/atom/ns#" term="Neural network"/><category scheme="http://www.blogger.com/atom/ns#" term="Pulse-Coupled Neural Networks"/><category scheme="http://www.blogger.com/atom/ns#" term="region growing"/><category scheme="http://www.blogger.com/atom/ns#" term="Watershed transformation"/><title type='text'>Image Processing - 02</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 22pt;&quot;&gt;Image Segmentation&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In computer vision,&amp;nbsp;&lt;strong&gt;segmentation&lt;/strong&gt;&amp;nbsp;refers to the process of partitioning a digital image into multiple segments (group of meaningful pixels). The goal of segmentation is to simplify and/or change the representation of an image into something that is more meaningful and easier to analyze. Image segmentation is typically used to locate objects and boundaries (lines, curves, etc.) in images. More precisely, image segmentation is the process of assigning a label to every pixel in an image such that pixels with the same label share certain visual characteristics. Each of the pixels in a region are similar with respect to some characteristic or computed property, such as&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Color&quot; title=&quot;Color&quot;&gt;color&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Luminous_intensity&quot; title=&quot;Luminous intensity&quot;&gt;intensity&lt;/a&gt;, or&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Image_texture&quot; title=&quot;Image texture&quot;&gt;texture&lt;/a&gt;. Adjacent regions are significantly different with respect to the same characteristic(s). Some of the practical applications of image segmentation are:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Medical Imaging&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Locate tumors and other pathologies&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Measure tissue volumes&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Computer-guided surgery&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Diagnosis&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Treatment planning&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Study of anatomical structure&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Locate objects in satellite images (roads, forests, etc.)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Face recognition&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Fingerprint recognition&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Traffic control systems&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Brake light detection&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Machine vision&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Several general-purpose algorithms and techniques have been developed for image segmentation. Since there is no general solution to the image segmentation problem, these techniques often have to be combined with domain knowledge in order to effectively solve an image segmentation problem for a problem domain.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;table border=&quot;0&quot; style=&quot;border-collapse: collapse;&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 330px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 308px;&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: black; border-left-style: solid; border-left-width: 0.5pt; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: black; border-top-style: solid; border-top-width: 0.5pt; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;Algorithm&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: black; border-top-style: solid; border-top-width: 0.5pt; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: black; border-left-style: solid; border-left-width: 0.5pt; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Fixed circle (FC) (Eisen, 1999)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Circular mask with constant radius&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: black; border-left-style: solid; border-left-width: 0.5pt; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Adaptive circle (AC) (Buhler et al., 2000)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Circular mask with independently estimated radius for each spot&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: black; border-left-style: solid; border-left-width: 0.5pt; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Seeded region growing (SRG) (Yang et al., 2002)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Segmentation with seeded region growing segmentation algorithm&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: black; border-left-style: solid; border-left-width: 0.5pt; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Mann–Whitney (MW) (Chen et al., 1997)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Computing segmentation threshold iteratively with Mann–Whitney test&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: black; border-left-style: solid; border-left-width: 0.5pt; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;k-means (KM) (Bozinov and Rahnenfu¨hrer, 2002)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;k-means clustering of pixels&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: black; border-left-style: solid; border-left-width: 0.5pt; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Hybrid k-means (HKM) (Rahnenfu¨hrer and Bozinov, 2004)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;k-means clustering of pixels and removing outliers with mask matching&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: black; border-left-style: solid; border-left-width: 0.5pt; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;EM (Expectation Maximization)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: black; border-left-style: solid; border-left-width: 0.5pt; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Markov random field (MRF) (Demirkaya et al., 2005)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;MRF modeling of pixels&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: black; border-left-style: solid; border-left-width: 0.5pt; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Model-based segmentation (MBS) (Li et al., 2005)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Model-based clustering of pixels and extraction of connected components&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: black; border-left-style: solid; border-left-width: 0.5pt; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Matarray (MA) (Wang et al., 2001)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 0.5pt; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: black; border-right-style: solid; border-right-width: 0.5pt; border-top-color: initial; border-top-style: none; border-top-width: initial; padding-left: 7px; padding-right: 7px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Iterative modification of target mask based on spatial and intensity information&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Clustering methods&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/K-means_algorithm&quot; title=&quot;K-means algorithm&quot;&gt;K-means algorithm&lt;/a&gt;&amp;nbsp;is an iterative technique that is used to partition an image into&amp;nbsp;&lt;em&gt;K&lt;/em&gt;&amp;nbsp;clusters. The k-means clustering was invented in 1956. The most common form of the algorithm uses an iterative refinement heuristic known as&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Lloyd%27s_algorithm&quot; title=&quot;Lloyd&#39;s algorithm&quot;&gt;Lloyd&#39;s algorithm&lt;/a&gt;. The basic i.e., Lloyd&#39;s algorithm is:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Partition the input points into k initial sets, either randomly or based on some heuristic, then calculates the mean point, or centroid, of each set as&amp;nbsp;&lt;em&gt;K&lt;/em&gt;&amp;nbsp;cluster centers&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Assign each pixel in the image to the cluster that minimizes the distance between the pixel and the cluster center&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Re-compute the cluster centers by averaging all of the pixels in the cluster&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Repeat steps 2 and 3 until convergence is attained (e.g. no pixels change clusters)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In this case, distance is the squared or absolute difference between a pixel and a cluster center. The difference is typically based on pixel color, intensity, texture, and location, or a weighted combination of these factors.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;This algorithm is guaranteed to converge, but it may not return the optimal solution. The quality of the solution depends on the initial set of clusters and the value of&amp;nbsp;&lt;em&gt;K&lt;/em&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In statistics and machine learning, the k-means algorithm is clustering algorithm to partition n objects into K clusters, where K &amp;lt; n. It is similar to the&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Expectation-maximization_algorithm&quot; title=&quot;Expectation-maximization algorithm&quot;&gt;expectation-maximization algorithm&lt;/a&gt;&amp;nbsp;for&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Gaussian_filter&quot; title=&quot;Gaussian filter&quot;&gt;Gaussians&lt;/a&gt;&amp;nbsp;mixtures in that both attempt to find the centers of natural clusters in the data. In terms of performance the algorithm is not guaranteed to return a global optimum. The quality of the final solution depends largely on the initial set of clusters. Since the algorithm is extremely fast, a common method is to run the algorithm several times and return the best clustering found. A drawback of the k-means algorithm is that the number of clusters K is an input parameter. An inappropriate choice of K may yield poor results. The algorithm also assumes that the variance is an appropriate measure of cluster scatter.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Histogram-based methods&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Histogram-based methods are very efficient when compared to other image segmentation methods because they typically require only one pass through the pixels. In this technique, a histogram is computed from all of the pixels in the image, and the peaks and valleys in the histogram are used to locate the&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Cluster_analysis&quot; title=&quot;Cluster analysis&quot;&gt;clusters&lt;/a&gt;&amp;nbsp;in the image. Color or intensity can be used as the measure.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;A refinement of this technique is to recursively apply the histogram-seeking method to clusters in the image in order to divide them into smaller clusters. This is repeated with smaller and smaller clusters until no more clusters are formed.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;One disadvantage of the histogram-seeking method is that it may be difficult to identify significant peaks and valleys in the image. In this technique of image classification distance metric and integrated region matching are familiar.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Histogram-based approaches can also be quickly adapted to occur over multiple frames, while maintaining their single pass efficiency. The histogram can also be applied on a per pixel basis where the information result are used to determine the most frequent color for the pixel location. This approach segments based on active objects and a static environment, resulting in a different type of segmentation useful in&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Video_tracking&quot; title=&quot;Video tracking&quot;&gt;Video tracking&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Edge detection&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Edge_detection&quot; title=&quot;Edge detection&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Edge detection&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;is a well-developed field on its own within image processing. Region boundaries and edges are closely related, since there is often a sharp adjustment in intensity at the region boundaries. Edge detection techniques have therefore been used as the base of another segmentation technique.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The challenge is, the edges identified by edge detection are often disconnected. To segment an object from an image however, one needs closed region boundaries.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Region growing methods&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The first&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Region_growing&quot; title=&quot;Region growing&quot;&gt;region growing&lt;/a&gt;&amp;nbsp;method was the seeded region growing method. This method takes a set of seeds as input along with the image. The seeds mark each of the objects to be segmented. The regions are iteratively grown by comparing all unallocated neighboring pixels to the regions. The difference between a pixel&#39;s intensity value and the region&#39;s mean, δ, is used as a measure of similarity. The pixel with the smallest difference measured this way is allocated to the respective region. This process continues until all pixels are allocated to a region.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Drawback is seeded region growing requires seeds as additional input. The segmentation results are dependent on the choice of seeds. Noise in the image can cause the seeds to be poorly placed.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Unseeded region growing is a modified algorithm that doesn&#39;t require explicit seeds. It starts off with a single region&amp;nbsp;&lt;em&gt;A&lt;/em&gt;&lt;sub&gt;1&lt;/sub&gt;&amp;nbsp;– the pixel chosen here does not significantly influence final segmentation. At each iteration it considers the neighboring pixels in the same way as seeded region growing. It differs from seeded region growing in that if the minimum δ is less than a predefined threshold&amp;nbsp;&lt;em&gt;T&lt;/em&gt;&amp;nbsp;then it is added to the respective region&amp;nbsp;&lt;em&gt;A&lt;sub&gt;j&lt;/sub&gt;&lt;/em&gt;. If not, then the pixel is considered significantly different from all current regions&amp;nbsp;&lt;em&gt;A&lt;sub&gt;i&lt;/sub&gt;&lt;/em&gt;&amp;nbsp;and a new region&amp;nbsp;&lt;em&gt;A&lt;sub&gt;n&lt;/sub&gt;&lt;/em&gt;&lt;sub&gt;&amp;nbsp;+ 1&lt;/sub&gt;&amp;nbsp;is created with this pixel.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Graph partitioning methods&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Graph_(data_structure)&quot; title=&quot;Graph (data structure)&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Graph&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;partitioning methods can effectively be used for image segmentation. In these methods, the image is modeled as a weighted,&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Undirected_graph&quot; title=&quot;Undirected graph&quot;&gt;undirected graph&lt;/a&gt;. Usually a pixel or a group of pixels are associated with nodes and edge weights define the (dis)similarity between the neighborhood pixels. The graph (image) is then partitioned according to a criterion designed to model &quot;good&quot; clusters. Each partition of the nodes (pixels) output from these algorithms are considered an object segment in the image. Some popular algorithms of this category are normalized cuts,&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Random_Walker_(Computer_Vision)&quot; title=&quot;Random Walker (Computer Vision)&quot;&gt;random walker&lt;/a&gt;, minimum cut, isoperimetric partitioning and&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Minimum_Spanning_Tree-based_Segmentation&quot; title=&quot;Minimum Spanning Tree-based Segmentation&quot;&gt;minimum spanning tree-based segmentation&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Watershed transformation&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Watershed_(algorithm)&quot; title=&quot;Watershed (algorithm)&quot;&gt;watershed transformation&lt;/a&gt;&amp;nbsp;considers the gradient magnitude of an image as a topographic surface. Pixels having the highest gradient magnitude intensities (GMIs) correspond to watershed lines, which represent the region boundaries. Water placed on any pixel enclosed by a common watershed line flows downhill to a common local intensity minimum (LIM). Pixels draining to a common minimum form a catch basin, which represents a segment.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Model based segmentation&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The central assumption of such an approach is that structures of interest/organs have a repetitive form of geometry. Therefore, one can seek for a probabilistic model towards explaining the variation of the shape of the organ and then when segmenting an image impose constraints using this model as prior. Such a task involves (i) registration of the training examples to a common pose, (ii) probabilistic representation of the variation of the registered samples, and (iii) statistical inference between the model and the image. State of the art methods in the literature for knowledge-based segmentation involve active shape and appearance models, active contours and deformable templates and level-set based methods.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Neural networks segmentation&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Neural Network segmentation relies on processing small areas of an image using an&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Artificial_neural_network&quot; title=&quot;Artificial neural network&quot;&gt;artificial neural network&lt;/a&gt;&amp;nbsp;or a set of neural networks. After such processing the decision-making mechanism marks the areas of an image accordingly to the category recognized by the neural network. A type of network designed especially for this is the&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Kohonen_map&quot; title=&quot;Kohonen map&quot;&gt;Kohonen map&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Pulse-Coupled Neural Networks (PCNNs) are neural models proposed by modeling a cat&#39;s visual cortex and developed for high-performance biomimetic image processing. In 1989, Eckhorn introduced a neural model to emulate the mechanism of cat&#39;s visual cortex. The Eckhorn model provided a simple and effective tool for studying small mammal&#39;s visual cortex, and was soon recognized as having significant application potential in image processing. In 1994, the Eckhorn model was adapted to be an image processing algorithm by Johnson, who termed this algorithm as Pulse-Coupled Neural Network. Over the past decade, PCNNs have been utilized for a variety of image processing applications, including: image segmentation, feature generation, face extraction, motion detection, region growing, noise reduction, etc.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;A PCNN is a two-dimensional neural network. Each neuron in the network corresponds to one pixel in an input image, receiving its corresponding pixel&#39;s color information (e.g. intensity) as an external stimulus. Each neuron also connects with its neighboring neurons, receiving local stimuli from them. The external and local stimuli are combined in an internal activation system, which accumulates the stimuli until it exceeds a dynamic threshold, resulting in a pulse output. Through iterative computation, PCNN neurons produce temporal series of pulse outputs. The temporal series of pulse outputs contain information of input images and can be utilized for various image processing applications, such as image segmentation and feature generation. Compared with conventional image processing means, PCNNs have several significant merits, including robustness against noise, independence of geometric variations in input patterns, capability of bridging minor intensity variations in input patterns, etc.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Open source software&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Several&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Open_source&quot; title=&quot;Open source&quot;&gt;open source&lt;/a&gt;&amp;nbsp;software packages are available for performing image segmentation&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Insight_Segmentation_and_Registration_Toolkit&quot; title=&quot;Insight Segmentation and Registration Toolkit&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;ITK&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;- Insight Segmentation and Registration Toolkit (Open Source)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/ITK-SNAP&quot; title=&quot;ITK-SNAP&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;ITK-SNAP&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;is a&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/GUI&quot; title=&quot;GUI&quot;&gt;GUI&lt;/a&gt;&amp;nbsp;tool that combines manual and semi-automatic segmentation with level sets.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/GIMP&quot; title=&quot;GIMP&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;GIMP&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;which includes among other tools SIOX (see&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Simple_Interactive_Object_Extraction&quot; title=&quot;Simple Interactive Object Extraction&quot;&gt;Simple Interactive Object Extraction&lt;/a&gt;)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/VXL&quot; title=&quot;VXL&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;VXL&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/ImageMagick&quot; title=&quot;ImageMagick&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;ImageMagick&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/3DSlicer&quot; title=&quot;3DSlicer&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;3DSlicer&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://www.mitk.org/&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;MITK&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;has a program module for manual segmentation&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/OpenCV&quot; title=&quot;OpenCV&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;OpenCV&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;is a computer vision library originally developed by Intel.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/GRASS_GIS&quot; title=&quot;GRASS GIS&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;GRASS GIS&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;has the program module&amp;nbsp;&lt;a href=&quot;http://grass.osgeo.org/grass64/manuals/html64_user/i.smap.html&quot;&gt;i.smap&lt;/a&gt;&amp;nbsp;for image segmentation&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/FIJI_(software)&quot; title=&quot;FIJI (software)&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Fiji&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;- Fiji is just ImageJ, an image processing package which includes different segmentation plug-ins.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/AForge.NET&quot; title=&quot;AForge.NET&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;AForge.NET&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;- an open source C# framework.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/7685730442866804168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/image-segmentation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/7685730442866804168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/7685730442866804168'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/image-segmentation.html' title='Image Processing - 02'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-5979903368375297324</id><published>2010-10-07T20:38:00.003+05:30</published><updated>2010-10-07T20:41:45.790+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Multimedia Over IP"/><category scheme="http://www.blogger.com/atom/ns#" term="Real-Time Control Protocol"/><category scheme="http://www.blogger.com/atom/ns#" term="RFC"/><category scheme="http://www.blogger.com/atom/ns#" term="RTCP"/><category scheme="http://www.blogger.com/atom/ns#" term="RTP"/><category scheme="http://www.blogger.com/atom/ns#" term="Socket Programming"/><title type='text'>Multimedia over IP - 04</title><content type='html'>&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #17365d; font-family: Georgia; font-size: 22pt;&quot;&gt;RTCP -- Real-Time Control Protocol&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The future Integrated Services Internet will provide means to transmit real-time multimedia data across networks. RSVP, RTP, RTCP and RTSP are the foundation of real-time services. RTCP is the control part of RTP that helps with quality of service and membership management. RTCP is the control protocol designed to work in conjunction with RTP. It is standardized in &lt;a href=&quot;http://tools.ietf.org/html/rfc1889&quot;&gt;RFC 1889&lt;/a&gt; and &lt;a href=&quot;http://tools.ietf.org/html/rfc1890&quot;&gt;1890&lt;/a&gt;. In an RTP session, participants periodically send RTCP packets to convey feedback on quality of data delivery and information of membership. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Protocol functions - &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RTCP provides three basic functions expected to be implemented in all RTP sessions:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The primary function of RTCP is to gather statistics on quality aspects of the media distribution during a session and transmit this data to the session media source and other session participants. Such information may be used by the source for adaptive media encoding (codec) and detection of transmission faults. If the session is carried over a multicast network, this permits non-intrusive session quality monitoring. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RTCP provides canonical end-point identifiers (CNAME) to all session participants. Although a source identifier (SSRC) of an RTP stream is expected to be unique, the instantaneous binding of source identifiers to end-points may change during a session. The CNAME establishes unique identification of end-points across an application instance (multiple use of media tools) and for third-party monitoring. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RTCP reports are expected to be sent by all participants, even in a multicast session which may involve thousands of recipients. Such traffic will increase proportionally with the number of participants. Thus, to avoid network congestion, the protocol must include session bandwidth management. This is achieved by dynamically controlling the frequency of report transmissions. RTCP bandwidth usage should generally not exceed 5% of total session bandwidth. Furthermore, 25% of the RTCP bandwidth should be reserved to media sources at all times, so that in large conferences new participants can receive the CNAME identifiers of the senders without excessive delay. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;A fourth, optional feature, is the provisioning of session control functions, because RTCP is a convenient means to reach all session participants, whereas RTP itself is not. RTP is only transmitted by a media source.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Message types&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RTCP distinguishes several types of packets: sender report, receiver report, source description, and bye. In addition, the protocol is extensible and allows application-specific RTCP packets. A standards-based extension of RTCP is the Extended Report packet type introduced by &lt;a href=&quot;http://tools.ietf.org/html/rfc3611&quot;&gt;RFC 3611&lt;/a&gt; RFC 1889 defines five RTCP packet types to carry control information. These five types are:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;RR: Receiver Report&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Receiver reports are generated by participants that are not active senders. They contain reception quality feedback about data delivery, including the highest packets number received, the number of packets lost, inter-arrival jitter, and timestamps to calculate the round-trip delay between the sender and the receiver.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;&lt;strong&gt;SR&lt;/strong&gt;: Sender Report&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Sender reports are generated by active senders. In addition to the reception quality feedback as in RR, they contain a sender information section, providing information on inter-media synchronization, cumulative packet counters, and number of bytes sent.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;&lt;strong&gt;SDES&lt;/strong&gt;: Source Description &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The Source Description message is used to send the CNAME item to session participants. It may also be used to provide additional information such as the name, e-mail address, telephone number, and address of the owner or controller of the source. They contain information to describe the sources.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;&lt;strong&gt;BYE&lt;/strong&gt;: End of participation&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;A source sends a BYE message to shut down a stream. It allows an end-point to announce that it is leaving the conference. Although other sources can detect the absence of a source, this message is a direct announcement. It is also useful to a media mixer. It indicates end of participation.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;&lt;strong&gt;APP&lt;/strong&gt;: Application Specific Functions&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The application-specific message provides a mechanism to design application-specific extensions to the RTCP protocol. It is now intended for experimental use as new applications and new features are developed.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;  Services&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Through these control information packets, RTCP provides the following services:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;QoS Monitoring And Congestion Control&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;This is the primary function of RTCP. RTCP provides feedback to an application about the quality of data distribution. The control information is useful to the senders, the receivers and third-party monitors. The sender can adjust its transmission based on the receiver report feedback. The receivers can determine whether congestion is local, regional or global. Network managers can evaluate the network performance for multicast distribution.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Source Identification&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In RTP data packets, sources are identified by randomly generated 32-bit identifiers. These identifiers are not convenient for human users. RTCP SDES (source description) packets contain textual information called &lt;em&gt;canonical names &lt;/em&gt;as globally unique identifiers of the session participants. It may include user&#39;s name, telephone number, email address and other information.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Inter-Media Synchronization&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RTCP sender reports contain an indication of real time and the corresponding RTP timestamp. This can be used in inter-media synchronization like lip synchronization in video.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Control Information Scaling&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;RTCP packets are sent periodically among participants. When the number of participants increases, it is necessary to balance between getting up-to-date control information and limiting the control traffic. In order to scale up to large multicast groups, RTCP has to prevent the control traffic from overwhelming network resources. RTP limits the control traffic to at most 5% of the overall session traffic. This is enforced by adjusting the RTCP generating rate according to the number of participants.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/5979903368375297324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/multimedia-over-ip-04.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/5979903368375297324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/5979903368375297324'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/multimedia-over-ip-04.html' title='Multimedia over IP - 04'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-5571200668888978520</id><published>2010-10-07T05:05:00.008+05:30</published><updated>2010-10-14T13:53:07.548+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="C6416"/><category scheme="http://www.blogger.com/atom/ns#" term="Function Level Optimization"/><category scheme="http://www.blogger.com/atom/ns#" term="Inlining"/><category scheme="http://www.blogger.com/atom/ns#" term="Intrinsic Function"/><category scheme="http://www.blogger.com/atom/ns#" term="Linear Assembly"/><category scheme="http://www.blogger.com/atom/ns#" term="Loop Merging"/><category scheme="http://www.blogger.com/atom/ns#" term="Loop Splitting"/><category scheme="http://www.blogger.com/atom/ns#" term="Loop Unrolling"/><category scheme="http://www.blogger.com/atom/ns#" term="Multi Channel"/><category scheme="http://www.blogger.com/atom/ns#" term="Optimization"/><category scheme="http://www.blogger.com/atom/ns#" term="Porting"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Level Optimization"/><category scheme="http://www.blogger.com/atom/ns#" term="stack overflow"/><title type='text'>Optimization - 02</title><content type='html'>&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 22pt;&quot;&gt;Code Optimization - Inline Functions&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Inline function is the optimization technique used by the compilers. One can simply prepend inline keyword/specifier to function prototype to make a function inline. This does not change the behavior of a function itself, but instruct compiler to embed the complete body of the function wherever that function is called, instead of being inserted only once and perform a regular call to it. When we declare a function or member function as inline we are trying to avoid the overhead of a function. If done carefully, this can improve the application&#39;s performance in exchange for increased compile time and possibly (but not always) an increase in the size of the generated binary executables.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;//The format for its declaration is:&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;inline type name ( arguments ... ) &lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;{&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;// instructions ... &lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;}&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
and the call is just like the call to any other function. You do not have to include the inline keyword when calling the function, only in its declaration.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Most compilers already optimize code to generate inline functions when it is more convenient. This specifier only indicates the compiler that inline is preferred for this function.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Optimizations&lt;br /&gt;
&lt;/span&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e24&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e24&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e24&quot;&gt; &lt;/a&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;C++ inline functions present a potential optimization to code: make a function inline and you save the overhead of a function call, Which is: loading parameters onto the stack, making a jump, popping parameters off the stack, and then it all in reverse when you return.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Modern CPUs have pipelines and attempt to optimize code execution on the fly. A function call can disrupt this pipeline when it is encountered, and again, when it returns. So that, not only we are avoiding the function call, but also we potentially allow the CPU to further improve execution.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Not only this, but a compiler may be able to optimize code which has been inlined in a way it cannot if there is a function call simply because the optimization becomes visible, e.g. optimizing register allocations. In the case of empty functions - fairly typical of constructors - making the function inline may allow the compiler to remove the call altogether.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Sometimes an inline function may save time and space. Making a function call requires instruction codes to make the call both on the part of the caller and callee. On occasions the number of bytes required for this may actually be greater than the number of bytes in the function body itself.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e24&quot;&gt;&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e24&quot;&gt;&lt;/a&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;&lt;/span&gt;Comparison to Macros&lt;br /&gt;
&lt;/div&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e35&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e35&quot;&gt; &lt;/a&gt;&lt;/ol&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e35&quot;&gt;&lt;/a&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Traditionally, in languages such as &lt;/span&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/C_(programming_language)&quot; title=&quot;C (programming language)&quot;&gt;C&lt;/a&gt;, inline expansion was accomplished at the source level using &lt;a href=&quot;http://en.wikipedia.org/wiki/Parameterized_macro&quot; title=&quot;Parameterized macro&quot;&gt;parameterized macros&lt;/a&gt;. Use of true inline functions, as are available in &lt;a href=&quot;http://en.wikipedia.org/wiki/C99&quot; title=&quot;C99&quot;&gt;C99&lt;/a&gt;, provides several benefits over this approach:&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Macro invocations do not perform type checking, or even check that arguments are well-formed, whereas function calls usually do. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In C, a macro cannot use the return keyword with the same meaning as a function would do (it would make the function that asked the expansion terminate, rather than the macro). In other words, you cannot make the macro return something which is not the result of the last expression invoked inside it. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Since C macros use mere textual substitution, this may result in unintended side-effects and inefficiency due to re-evaluation of arguments and order of operations. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Compiler errors within macros are often difficult to understand, because they refer to the expanded code, rather than the code the programmer typed. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Many constructs are awkward or impossible to express using macros, or use a significantly different syntax. Inline functions use the same syntax as ordinary functions, and can be inlined and un-inlined at will with ease. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Debugging information for inlined code is usually more helpful than that of macro-expanded code. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Many compilers can also inline expand some &lt;a href=&quot;http://en.wikipedia.org/wiki/Recursion_(computer_science)&quot; title=&quot;Recursion (computer science)&quot;&gt;recursive functions&lt;/a&gt;; recursive macros are typically illegal.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Bjarne Stroustrup, the designer of C++, likes to emphasize that macros should be avoided wherever possible, and advocates extensive use of inline functions.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Inline as a Better Macro&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;C programmers used to simulate inline functions with macros. C++ inline functions where in part, an attempt to encode this as a language feature rather than yet another use of the macro pre-processor. However, they are not an exact replacement.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;If you use a macro the compiler has no desecration, the function will be inlined.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Scope rules are different.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Macros, particularly multi-line macros are much more difficult to understand and maintain.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In short, inline is an improvement on macro, but they are not a direct replacement.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Catches&lt;br /&gt;
&lt;/span&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e52&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e52&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e52&quot;&gt; &lt;/a&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;With these kinds of optimizations available we might wonder why we don&#39;t just make all functions inline. Simply, there are downsides, and in my opinion they out weigh the advantages.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;For starters inline is only a hint to the compiler, it is free to ignore it. It will typically ignore it if:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The member is a virtual: it&#39;s not really possible to have an inline virtual function as virtual implies an indirect function call - although compiler can sometimes do it if it has type information.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The function is recursive or mutually recursive with other functions.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The compiler will also ignore the inline if it considers the body of the function &quot;too big.&quot; How big is too big depends on your compiler.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The Other Inline&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;C++ inline functions are not the only &quot;inlines&quot; supported by most compilers. It is also possible to place assembler code within C++ code and this is commonly referred to as &quot;inline assembler&quot;. It&#39;s normally clear which type is being talked about, but it&#39;s more difficult when doing a keyword search in MSDN or a search engine to pin down what you want.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The days when most systems contained some inline assembler to improve speed are fast receding. Traditionally used to speed up performance critical sections of a program it&#39;s now doubtful that even this is possible. Increasingly, to get the best performance out of a CPU requires you to know a lot of things about memory layout, cache architecture, pipelining, out of order execution and so on. While these rules can be encoded in a good compiler it is hard for an individual to know and apply all these rules.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;There are a few occasions where inline assembler is still useful though. Microsoft use a little bit in the ATL to &quot;thunk&quot; a function call, and sometimes hard coding a break point in your code (asm { int 03h; } in Intel speak) has it&#39;s uses.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Inline code will not be generated when using a variable number of arguments to a function call (e.g. printf would not be inlined) or a variable sized data type, e.g.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;void foo(int n) &lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;{&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;char str[n];&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;...&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;}&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Compilers have a limit to the depth they will inline functions, e.g. if inline A calls inline B, which calls inline C and so on. This is often configurable through a pragma or command line switch.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Of course, every compiler will differ slightly and you or I can&#39;t guarantee that there isn&#39;t a compiler out that can inline some of these things. Conversely, there are more reasons why your compiler will not inline a function that those given here. These are clear-cut cases but there are several other reasons why I avoid using inline functions. The main culprit is: code bloat, inline functions usually make your code bigger because you have duplicated code for each invocation of the function. Apart from needing a bigger hard disc code bloat has several implications:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Increased number of CPU cache misses: a CPU may keep a frequently executed function entirely in it&#39;s cache, if you increase the function size with lots of inline functions it may be too big for the cache, and because your functions are bigger fewer may be held in cache at once.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Disc cache: if every function is inlined the OS may not load the entire program into memory and your disc will start to thrash.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;So, don&#39;t be surprised if making methods inline actually makes your program slower!&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In addition embedded systems are very sensitive to code bloat: a PC may have a big CPU cache, oodles of fast RAM and a big fast hard disc but an embedded system probably won&#39;t. In the extreme this may mean you need to fit your device with a bigger ROM, which means it costs more, which in a competitive market may make the difference between success and failure.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e52&quot;&gt;&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e52&quot;&gt;&lt;/a&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;&lt;/span&gt;And some more catches...&lt;/div&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e102&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e102&quot;&gt; &lt;/a&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;There are catches which have to do less with an individual piece of code and more with how a system hangs together. These design issues mean you should think carefully before making a method inline:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Coupling between headers and implementation increases because a change is more likely to occur in the header file, which causes a bigger rebuild because other files depend on your header files. If the code is in the implementation file by contrast only that file needs to be recompiled. On large systems the difference can be hours.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Putting the implementation in the header file reduces the opportunity to forward declare classes, so you have to include another header file, increasing coupling; making the code less flexible and more prone to ripple effects - again increasing build times.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Perhaps a more significant point is what a lot of inline functions says about your design. Inlining is typically used forget and set functions. Classes with lots of such functions aren&#39;t really hiding anything, they are just containers for values which begs the question, just how object oriented is your design?&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Some other points that are worth noting about inlined functions are:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Finding code in source files can be time consuming, if you have lots of inline functions you need to look in the .h files as well as the .cpp files. This may seem trivial but on a large system with several thousand files the time adds up.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;If some of your code is compiled with inlining enabled and some with them disabled you will encounter link errors.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Some compilers have an &lt;em&gt;auto-inline&lt;/em&gt; function that lets the compiler decide which functions to inline and which to leave as is. Of course, how aggressive this is, and hence how much difference it makes, is dependent on your compiler.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Inlining is usually only enabled when optimised code is being generated, so your debug builds won&#39;t have any inlined functions.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Although inline is commonly thought of as a C++ optimisation it is also available in C, and other languages, although these may need vendor specific extensions.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Theoretically each inline function should have one, and only one implementation body. However, it would be possible to provide different bodies in different files. Stroustrup points out in the Design &amp;amp; Evolution of C++ that most compilers don&#39;t check for this, we can hope that in the 7 years since he made his comments the situation has improved but I&#39;m not sure. Before anyone think of a use for this &quot;feature&quot; consider the maintenance nightmare and please don&#39;t do it.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Seeing inline at work&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The most reliable way to see if a function is being inlined or not is to look at the output from the compiler. Most compilers have a switch to output assembler code for your inspection. In Visual C++ there are several /FA which control this - the &quot;listing file type&quot; in the project C++ settings box.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The other switches worth playing with are the /Ob which control the aggressiveness of inline expansion - the &quot;Inline function expansion&quot; option in C++ settings.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;It&#39;s interesting to experiment with these switches and the following example:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;struct Widget {&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;int number_;&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Widget();&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;int t() const;&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;};&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;Widget::Widget() : number_(99) { }&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;int Widget::t() const&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;{&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;return number_; &lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;}&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;int main()&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;{&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;Widget w;&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;int i = w.t();&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;return i;&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;}&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;It&#39;s interesting to make the constructor and t function inline and look at the assembler code, or use the /Ob2 switch to force functions to be inline, at this point the compiler reduces the program to:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;push  99&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;pop  eax&lt;br /&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The program still comes out at 19,968 bytes, which demonstrates the overhead that even the simplest programs may carry.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e102&quot;&gt;&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e102&quot;&gt;&lt;/a&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;&lt;/span&gt;When to Use Inlines&lt;/div&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e160&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e160&quot;&gt; &lt;/a&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Despite all this there are occasions when inlines make sense.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Templates based code is always inlined: this is one of the reasons people believe templates lead to bigger executables.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Sometimes making a function inline will improve performance for all the reasons given at the start.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The orthodox approach to performance today is to design a system for ease of maintenance, flexibility and extendibility, and only consider performance second. Usually, this means producing a working system and then performance profiling, improving the slowest bit and repeating until the system is fast enough.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;When you profile your code you may find a hot spot in a function that could benefit from inlining. This is quite understandable, and at this point in the cycle your can afford to sacrifice some maintainability for speed if it is needed. However, after making the change repeat the performance test to ensure it actually does help.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;One compromise is to avoid inlining other than for templates. Then as part of the QA or performance cycle use your compilers auto-inline feature. This compromise is not ducking the issue, or delivering code with sub-optimal performance. In fact, it&#39;s taking an engineering line, we build something, measure it, and if necessary improve it. (Stroustrup questions if letting the compiler decide is the best policy.)&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e160&quot;&gt;&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e160&quot;&gt;&lt;/a&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;&lt;/span&gt;Advantages&lt;br /&gt;
&lt;/div&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e178&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e178&quot;&gt; &lt;/a&gt;&lt;/ol&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;It does not require function calling overhead.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;It also save overhead of variables push/pop on the stack, while function calling.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;It also save overhead of return call from a function.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;It increases locality of reference by utilizing instruction cache.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;After in-lining compiler can also apply intraprocedural optmization if specified. This is the most important one, in this way compiler can now focus on dead code elimination, can give more stress on branch prediction, induction variable elimination etc..&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Disadvantages&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;May increase function size so that it may not fit on the cache, causing lots of cahce miss.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;After in-lining function if variables number which are going to use register increases than they may create overhead on register variable resource utilization.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;It may cause compilation overhead as if some body changes code inside inline function than all calling location will also be compiled.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;If used in header file, it will make your header file size large and may also make it unreadable.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;If somebody used too many inline function resultant in a larger code size than it may cause thrashing in memory. More and more number of page fault bringing down your program performance.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Its not useful for embeded system where large binary size is not preferred at all due to memory size constraints.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Performance&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Now covering the topic which most the people are interested in the &quot;Performance&quot;.&lt;br /&gt;
In most of the cases Inline function boost performance if used cautiously as it saves lots of overhead as discussed in our Advantages section above but as we have also discussed its disadvantages one need to be very cautious while using them. Today&#39;s modern compiler inline functions automatically, so no need to specify explicitly in most of the cases. Although placing inline keyword only gives compiler a hint that this function can be optimized by doing in-lining, its ultimately compiler decision to make it inline. Though there are ways to instruct compiler too, for making a function call inline like one can use __forceinline to instruct compiler to inline a function while working with microsoft visual c++. I suggest not to use this keyword until you are very sure about performance gain. Making a function inline may or may not give you performance boost, it all depends on your code flows too. Don&#39;t expect a magical performance boost by prepending inline keyword before a function to your code as most of the compiler nowadays does that automatically.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;As we have seen inline function serves in terms of performacen but one has to use it with extreme cautions.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Uses Guidelines&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Always use inline function when your are sure it will give performance.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Always prefer inline function over macros.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Don&#39;t inline function with larger code size, one should always inline small code size function to get performance.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;If you want to inline a function in class, then prefer to use inkine keyword outside the class with the function definition.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In c++, by default member function declared and defined within class get linlined. So no use to specify for such cases.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Your function will not be inlined in case there is differences between exception handling model. Like if caller function follows c++ structure handling and your inline function follows structured exception handling.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;For recursive function most of the compiler would not do in-lining but microsoft visual c++ compiler provides a special pragma for it i.e. pragma inline_recursion(on) and once can also control its limit with pragma inline_depth.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;If the function is virtual and its called virtually then it would not be inlined. So take care for such cases, same hold true for the use of function pointers.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Conclusion&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;While inline functions may improve performance seldom will you be able to radically change a program&#39;s performance by making a bunch of functions inline. Inlines are not free; they will usually increase your program size and may actually impair performance.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;They may also increase your development cycle because they increase coupling between files and lead to longer build times and more ripple effects.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Heavy reliance on inline functions may indicate flaws in your design; either a lack of object-orientedness or failure to design a system with the required performance characteristics.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 28pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;/span&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;d0e178&quot;&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/5571200668888978520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/optimization-02.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/5571200668888978520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/5571200668888978520'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/optimization-02.html' title='Optimization - 02'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-7652802133279610541</id><published>2010-10-07T04:48:00.003+05:30</published><updated>2010-10-07T05:03:35.814+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="C6416"/><category scheme="http://www.blogger.com/atom/ns#" term="Function Level Optimization"/><category scheme="http://www.blogger.com/atom/ns#" term="Inlining"/><category scheme="http://www.blogger.com/atom/ns#" term="Intrinsic Function"/><category scheme="http://www.blogger.com/atom/ns#" term="Linear Assembly"/><category scheme="http://www.blogger.com/atom/ns#" term="Loop Merging"/><category scheme="http://www.blogger.com/atom/ns#" term="Loop Splitting"/><category scheme="http://www.blogger.com/atom/ns#" term="Loop Unrolling"/><category scheme="http://www.blogger.com/atom/ns#" term="Multi Channel"/><category scheme="http://www.blogger.com/atom/ns#" term="Optimization"/><category scheme="http://www.blogger.com/atom/ns#" term="Porting"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Level Optimization"/><category scheme="http://www.blogger.com/atom/ns#" term="stack overflow"/><title type='text'>Optimization - 01</title><content type='html'>&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 22pt;&quot;&gt;Porting C Code to the CCS - C6416&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Initial Modifications&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The first set of modifications to the original base C code is to accommodate &lt;strong&gt;&lt;em&gt;multi-channel environments&lt;/em&gt;&lt;/strong&gt; and prevention of &lt;strong&gt;&lt;em&gt;stack overflow&lt;/em&gt;&lt;/strong&gt;.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Code Modifications for Multi-Channel Environments&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;To accommodate multi-channel systems, eliminate &lt;strong&gt;&lt;em&gt;global variables&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;static data&lt;/em&gt;&lt;/strong&gt; in each C module. For each file that contained static or global data, following steps are necessary:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Define a data structure containing the static data variables in header-file.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Add this generated data structure in header-file to the general encoder and decoder channel information.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Perform the former static data initialization explicitly in the encoder/decoder initialization function.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;For each function in the original file that used static data:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Add a pointer to the data structure to the parameter list.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Replace all static variables referenced in the function body with the variables stored in the data structure whose addresses are received as parameters.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;For each function that called any of the functions modified in step 4, add a pointer to the data structure to its parameter list. Repeat this process recursively up to the main encoder/decoder function. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Prevention of stack overflow:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Since default size of stack is fixed K bytes, the large arrays in the functions may cause stack overflow. That is because the local variables are also placed on the stack when the function is called. These are accessed indirectly, which makes processor slow. So add a &lt;strong&gt;&lt;em&gt;scratch space&lt;/em&gt;&lt;/strong&gt; for reducing the stack size, which is more efficient way of using the RAM space also.  &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;To perform this, for each function that contained the large arrays, the following steps are necessary to follow:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Define a data structure containing the large arrays in the header-file.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Add this generated data structure in header-file to the general encoder and decoder channel information.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;For each function in the original file with the large arrays:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Add a pointer to the structure to the parameter list.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Replace all large arrays referenced in the function body with variables stored in the data structure whose addresses are received as parameters.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;For each function that called any of the functions modified in step 3, add a pointer to the structure in that to its parameter list. Repeat this process recursively up to the main encoder/decoder function.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In addition, the Word16, Word32, and Flag data types used in the base code should redefine in &lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;strong&gt;&lt;em&gt;typedef.h&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt; to comply with processor architecture.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Intrinsic Functions&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The basic math operations defined in &lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;strong&gt;&lt;em&gt;basic_op.c&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt; were replaced by corresponding &lt;strong&gt;&lt;em&gt;intrinsic functions&lt;/em&gt;&lt;/strong&gt; of TMS320C6416. The compiler recognizes intrinsic operators which can be used like functions to produce assembly language statements otherwise it would not be expressible through standard ANSI C. This optimization allows a call to a DSP specific intrinsic function to be replaced by a copy of the body of that function which can be optimized at the assembly level. This optimization will speedup execution by eliminating function call &amp;amp; return overhead and substitute hand  optimized and compiler optimized low level code for high level C intrinsic code.  The set of functions defined in the compiler&#39;s &lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;strong&gt;&lt;em&gt;gsm.h&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt; file is substantially richer than the set provided in &lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;strong&gt;&lt;em&gt;basic_op.c.&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;So all basic math operations were easily replaced, with some minor modifications described below that were required to handle overflow and saturation. The basic math operations in &lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;strong&gt;&lt;em&gt;basic_op.c&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt; simulate two processor flags, Overflow and Carry. The Carry flag is used only inside the basic math operations, so there was no problem in removing it. However, the Overflow flag is set in several functions, and tested in other functions, so it must remain. The &lt;strong&gt;&lt;em&gt;Control Status Register&lt;/em&gt;&lt;/strong&gt; is defined in compiler&#39;s &lt;strong&gt;&lt;em&gt;c6x.h&lt;/em&gt;&lt;/strong&gt; file. The CSR contains control and status bits.  The SAT field in this register is set when there is overflow. Because the overflow flag was no longer available as a global variable, the SAT bit is cleared explicitly when the Overflow flag is assigned zero in the original file.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Project-Level Optimizations (&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;em&gt;Function Inlining&lt;/em&gt;&lt;/span&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In general, these techniques improve the performance of both C and assembly code. So apply function inlining to the entire project.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;&lt;em&gt;Function inlining&lt;/em&gt;&lt;/strong&gt; (also referred to as &#39;inline expansion&#39; or simply &#39;inlining&#39;), is the process of replacing a function call with the body of the function itself. This optimization technique improves execution time by eliminating function call &amp;amp; return overhead at the expense of larger code size.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Profiler information is used to determine whether a function should be inlined or not. Small, frequently called functions are the best candidates for inlining. In general, functions that take fewer than 25 cycles offer the most speed savings by inlining. The overhead to call such a function is typically 20 percent or greater. Functions that take 25–35 cycles and pass several parameters are also worth inlining. Function inlining is done in one of three ways:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Implicitly, allowing the compiler to select the functions to be inlined. This is done by setting the &lt;strong&gt;&lt;em&gt;–o3 compiler option&lt;/em&gt;&lt;/strong&gt;.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Explicitly, using the &lt;strong&gt;&lt;em&gt;#pragma inline&lt;/em&gt;&lt;/strong&gt; C statement. To inline a function in several files, the function should be placed in a header file, and the static keyword should be used in each file to prevent the linker from generating duplicate global symbols.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;&lt;em&gt;Manually&lt;/em&gt;&lt;/strong&gt; replacing a function call with the body of the function. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;For example, manual inlining technique -&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;// Body of the function of L_Extract()is defined as – &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;&amp;nbsp;void L_Extract(Word32 L_32, Word16 *hi, Word16 *lo)&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*hi = extract_h(L_32); &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*lo = extract_l( L_msu( L_shr(L_32, 1) , *hi, 16384)); &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;//Further, intrinsic functions of extract_l() and extract_h() are:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;extract_l ( a ) ((a )&amp;amp; 0xffff); and extract_h ( a ) (unsigned(a) &amp;gt;&amp;gt;16);&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;// Original:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;L_Extract( ) calls were manually replaced with  L_Extract( ) body&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: black; font-size: 9pt;&quot;&gt;&lt;em&gt;L_Extract(sum0, &amp;amp;r_h[i], &amp;amp;r_l[i]);&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;//Modified: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;STEP 1&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: black; font-size: 9pt;&quot;&gt;&lt;em&gt;r_h[i] = extract_h(sum0);&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: black; font-size: 9pt;&quot;&gt;&lt;em&gt;r_l[i] = extract_l(L_msu( L_shr(sum0, 1), r_h[i], 16384));&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;// extract_h( ) and extract_l( ) calls were manually replaced with intrinsic //functions&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;// Finally:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STEP 2&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: black; font-size: 9pt;&quot;&gt;&lt;em&gt;r_h[i] = (unsigned (sum0) &amp;gt;&amp;gt; 16);&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;span style=&quot;color: black; font-size: 9pt;&quot;&gt;&lt;em&gt;r_l[i] = (sum0 &amp;amp; 0xffff);&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;&lt;em&gt;Implicit&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;explicit&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;em&gt;inlining&lt;/em&gt;&lt;/strong&gt; requires no knowledge of the code and is performed without examining code sections because the compiler automatically tries to interleave consecutive calls. These techniques are recommended when there is only one call to the inlined function.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;&lt;em&gt;Manual inlining&lt;/em&gt;&lt;/strong&gt; is recommended when several identical calls are made in sequence, and enables the programmer to fully exploit potential &lt;strong&gt;&lt;em&gt;parallelism&lt;/em&gt;&lt;/strong&gt;. By replacing a function call with the C statements of the function, we can place in parallel, by hand, the actions in the function by allocating different variables and performing several consecutive identical calls on phases. This technique requires a working knowledge of the code to identify where a small function is repeatedly called and which actions are executed in parallel. Manual inlining is also used in assembly code.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Within Code Composer Studio, the Build Options are used to set the &lt;strong&gt;&lt;em&gt;-o3, -pm op3, -mr1, -mt&lt;/em&gt;&lt;/strong&gt; program-level options that affect all project files.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Collect profile data after the project-level optimizations, and use this as a baseline for further analysis.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Function Level Optimization&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The general approach for optimizing each function includes:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Establishing the function interface and separating the function from the rest of the code to facilitate analysis.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Add test code that saves the function input and output values before and after each function call.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Optimize the function and verifying the output to ensure that it remains the same as the corresponding reference output.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Integrate the optimized function with the rest of the code and verify that it passes the test vectors.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Criterion for selecting functions:&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The selection of functions for optimization is primarily based on profiling information after the project-level optimizations, focusing on the most time-critical functions. Information provided by the profiler includes: Number of calls per frame. Based on this information, the decision is made whether a small, frequently-called function should be inlined. This information is most useful during the global-level optimizations. Total number of cycles per frame, is the most useful information for selecting the functions to optimize. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Loop Unrolling&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;Loop unrolling&lt;/em&gt; explicitly repeats the body of a loop with corresponding indices. That is expanding the loops so that, each iteration of the loop appears in the code. This optimization technique increases the number of instructions available to execute in &lt;strong&gt;&lt;em&gt;parallel&lt;/em&gt;&lt;/strong&gt;. Loop unrolling can be used when the operations in a single iteration do not use all of the resources of the C6000 architecture. Loop unrolling proves quite rewarding in some cases where it gives up to 2% improvement in terms of total number of cycles for each of its applications.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Loop Merging&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Combining two or more loops into a single loop loads the ALU more efficiently, as illustrated below. This technique yields up to 1% improvement in terms of total number of cycles for each of its applications. This avoids spending overhead on two separate loops. An example code from &lt;strong&gt;Corr_xy2()&lt;/strong&gt; function is illustrated.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Loop Splitting&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Loop splitting refers to the process of breaking a large loop with several variables or pointers into two or more shorter loops and saving the results of the partial computations in local vectors. This technique enables the compiler to allocate registers more efficiently, resulting in substantial performance improvement, especially when combined with other optimization techniques.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Simplifying the Test Conditions&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The test conditions were simplified to reduce the amount of computation. e.g. the conditions which involved subtraction were replaced with direct comparisons. This saves a subtraction operation. For example -&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;/* original if construct */&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; if( sub(max1, max2) &amp;lt; 0 ){&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; /* modified if construct */&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;  if(max1 &amp;lt; max2){&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Declaring Local Variables&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Variables are declared as close as possible, in the code hierarchy, to their area of use to help the compiler identify their life cycles. This improves register allocation but requires more stack memory. For example -&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;for(i= -pit_max; i&amp;lt; L_frame; i+=2) {&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;     Word32 sum = 0;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;     sum = L_mac(sum, signal[i], signal[i]);&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;   }&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Replacing Functions by Arithmetic Operators&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The right/left shift operator &lt;strong&gt;&amp;gt;&amp;gt;&lt;/strong&gt; is used in a variable shift displacement to save a function call, if overflow or underflow does not occur after a shift operation. Similarly additions, subtractions can be replaced by addition operator &lt;strong&gt;&lt;em&gt;+&lt;/em&gt;&lt;/strong&gt;or subtraction operator - after analyzing the code. However, the C operators *, +, - were not applied to operations on fractional values that only employ intrinsic functions, because it is difficult to ascertain  whether overflow, underflow or saturation would occur or not. For example -&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;// Original:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subtraction&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;T0_min = sub(T_op, 3);&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;// Modified:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subtraction&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; T0_min =T_op- 3;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;margin-left: 36pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 15pt;&quot;&gt;Pointer Addressing &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Accessing array elements using pointers rather than indexing improves the performance greatly. This reduces the overhead of calculating the address. For example, consider the case of a for loop, the overhead involved in calculating the address of y[i] for every element are&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Loading the base address of the array&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Loading &#39;i&#39; into the memory&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Going to an offset (i) * size (type of array). &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;// Original:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;for (i=0; i&amp;lt;L_WINDOW; i++) {&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;sum = L_mac(sum, y[i], y[i]);&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Instead, this overhead can be moved outside the loop, to make the compiler generate faster code as shown in the below example.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;//Modified:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Word16  *ptr ;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; ptr  =  &amp;amp;y[0];&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;for (i=0; i&amp;lt;L_WINDOW; i++) {&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;sum = _sadd(sum, _smpy(*ptr ++, *ptr++));&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Function Implementation In Linear Assembly&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In general, rewriting C functions in assembly increases speed and reduces code size. However, because of improvements in C compiler performance, the trend is to keep most code in C and optimized C and to implement fewer functions in assembly. The functions to be implemented in assembly were selected based on profiling data.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Usually the user can program a DSP in either C language or in assembly language. The C6000 allows to program in Linear Assembly. Linear Assembly uses exactly the same assembly instructions, but the difference is that it is easier than assembly language to program. This language is processed by the Assembly Optimizer instead of the assembler. The output of which is pure assembly language program. The Assembly Optimizer allows us to write assembly code without being concerned with pipelining structure of C6000 or with assigning of registers. It accepts Linear Assembly code which is assembly code that has not been register allocated and is unscheduled. The Assembly Optimizer assigns register and uses loop optimization to turn linear assembly into highly parallel assembly.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Advantages of Linear Assembly are:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Assembly optimizer is delay slot aware for different instructions. So, we need not write NOP&#39;s.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Register scheduling and functional unit specifications is also not required. The assembly optimizer takes care of this. This means that the programmer can use C like variable name in linear assembly instead using of C6000 registers.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Most importantly assembly optimizer takes care of pipelining and parallelism this is huge advantage in VLIW(Very Long Instruction Word) machines with deep pipelines make it a huge challenge for the programmer to write highly pipelined code. We can say that Linear Assembly is a slightly higher level language than pure assembly but retaining about 90% programming efficiency of the hand coded pure assembly.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Functions Selection Criteria:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The entire code is profiled, and the most time-critical functions are identified. The estimates of ideal execution times are compared with the C optimization results. Functions which are near-optimal are retained in the optimized C version and the remainders are candidates to be implemented in assembly.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Conclusion&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Porting of C code to the TMS320C6416 and optimizing the code while maintaining the bit-exactness of the original code is important. The recommended approach follows the following key points:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 53pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;C source optimizations for selected functions.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Linear Assembly implementation of selected time-critical functions.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Do the C optimization of selected functions at both the project and function level. Execution time profile, provided by the profiler, can be used for selecting functions for optimization. The project-level optimizations involve profiling the initially ported code, inlining frequently-called functions, and optimizing the C code so that the compiler produces code that is better adapted to the TMS320C6416 architecture. In the function-level optimization, several techniques including loop unrolling and loop merging are involved. Linear Assembly implementation is the final phase of development because it is very difficult to change the structure of an implementation in linear assembly. Functions targeted for linear assembly implementation are primarily those for which the simulator could not produce efficient code, and those which execute for large number of cycles. Particular emphasis is given to loops, where each cycle saved results in a significant reduction in execution time. The optimized C implementation is used to verify the bit-exactness for the linear assembly and it also provides a pseudo-code for the algorithm. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/7652802133279610541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/optimization-01.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/7652802133279610541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/7652802133279610541'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/optimization-01.html' title='Optimization - 01'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-7582790990236298617</id><published>2010-10-05T17:51:00.002+05:30</published><updated>2010-10-05T17:55:49.435+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blender"/><category scheme="http://www.blogger.com/atom/ns#" term="Durain Project"/><category scheme="http://www.blogger.com/atom/ns#" term="Sintel"/><category scheme="http://www.blogger.com/atom/ns#" term="Video Gallery"/><title type='text'>Sintel - Blender 2.5 Lguana Sculpting</title><content type='html'>&lt;object width=&quot;640&quot; height=&quot;390&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/U-PwEwSwzH8&amp;hl=en_US&amp;feature=player_embedded&amp;version=3&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/U-PwEwSwzH8&amp;hl=en_US&amp;feature=player_embedded&amp;version=3&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowScriptAccess=&quot;always&quot; width=&quot;570&quot; height=&quot;390&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/7582790990236298617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/sintel-blender-25-lguana-sculpting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/7582790990236298617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/7582790990236298617'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/sintel-blender-25-lguana-sculpting.html' title='Sintel - Blender 2.5 Lguana Sculpting'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-7043368901758277322</id><published>2010-10-05T17:47:00.002+05:30</published><updated>2010-10-05T17:55:17.904+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blender"/><category scheme="http://www.blogger.com/atom/ns#" term="Durain Project"/><category scheme="http://www.blogger.com/atom/ns#" term="Sintel"/><category scheme="http://www.blogger.com/atom/ns#" term="Video Gallery"/><title type='text'>Sintel - Sintel&#39;s Face</title><content type='html'>&lt;object width=&quot;640&quot; height=&quot;390&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/o3LFZJjfRI8&amp;hl=en_US&amp;feature=player_embedded&amp;version=3&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/o3LFZJjfRI8&amp;hl=en_US&amp;feature=player_embedded&amp;version=3&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowScriptAccess=&quot;always&quot; width=&quot;570&quot; height=&quot;390&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/7043368901758277322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/sintel-sintels-face.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/7043368901758277322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/7043368901758277322'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/sintel-sintels-face.html' title='Sintel - Sintel&#39;s Face'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-232620742248174587</id><published>2010-10-03T14:29:00.010+05:30</published><updated>2010-10-07T20:36:25.543+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Multimedia Over IP"/><category scheme="http://www.blogger.com/atom/ns#" term="RFC"/><category scheme="http://www.blogger.com/atom/ns#" term="RTP"/><category scheme="http://www.blogger.com/atom/ns#" term="Socket Programming"/><title type='text'>Multimedia over IP - 03</title><content type='html'>&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span xmlns=&quot;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #17365d; font-family: Georgia; font-size: 22pt;&quot;&gt;RTP --- Real-time Transport Protocol&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;For the future Integrated Services Internet will provide means to transmit real-time multimedia data across networks. RSVP, RTP, RTCP and RTSP are the foundation of real-time services. RTP is the transport protocol for real-time data. It provides timestamp, sequence number and other means to handle the timing issues in real-time data transport. It relies on RVSP for resource reservation to provide quality of service.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Real-time transport protocol (RTP) is an IP-based protocol providing support for the transport of real-time data such as video and audio streams. The services provided by RTP include time reconstruction, loss detection, security and content identification. RTP is primarily designed for multicast of real-time data, but it can be also used in unicast. It can be used for one-way transport such as video-on-demand as well as interactive services such as Internet telephony.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RTP is designed to work in conjunction with the auxiliary control protocol RTCP to get feedback on quality of data transmission and information about participants in the on-going session.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Development&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Attempts to send voice over networks began in early 70&#39;s. Several patents on packet transmission of speech, time stamp and sequence numbering were granted in 70&#39;s and 80&#39;s. In 1991, a series of voice experiments were completed on DARTnet. In August 1991, the Network Research Group of Lawrence Berkeley National Laboratory released an audio conference tool &lt;strong&gt;vat &lt;/strong&gt;for DARTnet use. The protocol used was referred later as &lt;em&gt;RTP version 0&lt;/em&gt;.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In December 1992 Henning Schulzrinne, GMD Berlin, published &lt;em&gt;RTP version 1. &lt;/em&gt;It went through several states of Internet Drafts and was finally approved as an Proposed Standard on November 22, 1995 by the IEFT/IESG. This version was called &lt;em&gt;RTP version 2 &lt;/em&gt;and was published as &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://tools.ietf.org/html/rfc1889&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RFC 1889&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;, RTP: A Transport Protocol for Real-Time Applications &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://tools.ietf.org/html/rfc1890&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RFC 1890&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;, RTP Profile for Audio and Video Conferences with Minimal Control&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;On January 31, 1996, Netscape announced &quot;Netscape LiveMedia&quot; based on RTP and other standards. Microsoft claims that their NetMeeting Conferencing Software supports RTP. The latest extensions have been made by an industry alliance around Netscape Inc., who uses RTP as the basis of the Real Time Streaming Protocol RTSP.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;RFC References&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://tools.ietf.org/html/rfc4103&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RFC 4103&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;, RTP Payload Format for Text Conversation &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://tools.ietf.org/html/rfc3984&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RFC 3984&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;, RTP Payload Format for H.264 Video &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://tools.ietf.org/html/rfc3640&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RFC 3640&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;, RTP Payload Format for Transport of MPEG-4 Elementary Streams &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://tools.ietf.org/html/rfc3267&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RFC 3267,&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt; Real-Time Transport Protocol (RTP) Payload Format and File Storage for the Adaptive Multi-Rate (AMR) and Adaptive Multi-Rate Wideband (AMR-WB) Audio Codec&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://tools.ietf.org/html/rfc3016&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RFC 3016&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;, RTP Payload Format for MPEG-4 Audio/Visual Streams &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://tools.ietf.org/html/rfc3551&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RFC 3551&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;, Standard 65, RTP Profile for Audio and Video Conferences with Minimal Control &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://tools.ietf.org/html/rfc3550&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RFC 3550&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;, Standard 64, RTP: A Transport Protocol for Real-Time Applications &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://tools.ietf.org/html/rfc2250&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RFC 2250&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;, Proposed Standard, RTP Payload Format for MPEG1/MPEG2 Video&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;How does RTP Work&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;As discussed in the first section, Internt is a shared datagram network. Packets sent on the Internet have unpredictable delay and jitter. But multimedia applications require appropriate timing in data transmission and playing back. RTP provides time stamping, sequence numbering, and other mechanisms to take care of the timing issues. Through these mechanisms, RTP provides end-to-end transport for real-time data over datagram network.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;em&gt;Timestamping i&lt;/em&gt;s the most important information for real-time applications. The sender sets the timestamp according to the instant the first octet in the packet was sampled. Timestamps increase by the time covered by a packet. After receiving the data packets, the receiver uses the timestamp to reconstruct the original timing in order to play out the data in correct rate. Timestamp is also used to synchronize different streams with timing properties, such as audio and video data in MPEG. However, RTP itself is not responsible for the synchronization. This has to be done in the application level.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;UDP does not deliver packets in timely order, so &lt;em&gt;sequence numbers &lt;/em&gt;are used to place the incoming data packets in the correct order. They are also used for packet loss detection. Notice that in some video format, when a video frame is split into several RTP packets, all of them can have the same timestamp. So just timestamp is not enough to put the packets in order.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The &lt;em&gt;payload type identifier &lt;/em&gt;specifies the payload format as well as the encoding/compression schemes. From this payload type identifier, the receiving application knows how to interpret and play out the payload data. Default payload types are defined in RFC 1890. Example specifications include PCM, MPEG1/MPEG2 audio and video, JPEG video, Sun CellB video, H.261 video streams, et al. More payload types can be added by providing a profile and payload format specification. At any given time of transmission, an RTP sender can only send one type of payload, although the payload type may change during transmission, for example, to adjust to network congestion.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Another function is &lt;em&gt;source identification. &lt;/em&gt;It allows the receiving application to know where the data is coming from. For example, in an audio conference, from the source identifier a user could tell who is talking.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The above mechanisms are implemented through the RTP header. Figure 1 shows a RTP packet encapsulated in a UDP/IP packet.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 11pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXkePDk2KxI7XTK98dJ0M_nC78vhRgAfFdc8VPxo1CfVwzFrbShxBnUq79vik31RFqHYTXmiDJ03vZCRE0znZ5RPlK-b7Mzdry74JErD2ZHrvYo9Yu8A9zart5e_RP6aF17O3UNyhL9VHL/s1600/03fig1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;67&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXkePDk2KxI7XTK98dJ0M_nC78vhRgAfFdc8VPxo1CfVwzFrbShxBnUq79vik31RFqHYTXmiDJ03vZCRE0znZ5RPlK-b7Mzdry74JErD2ZHrvYo9Yu8A9zart5e_RP6aF17O3UNyhL9VHL/s320/03fig1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 11pt;&quot;&gt;Figure 1: RTP data in an IP packet&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RTP is typically run on top of UDP to make use of its multiplexing and checksum functions. TCP and UDP are two most commonly used transport protocols on the Internet. TCP provides a connection-oriented and reliable flow between two hosts, while UDP provides a connectionless but unreliable datagram service over the network. UDP was chosen as the target transport protocol for RTP because of two reasons. First, RTP is primarily designed for multicast, the connection-oriented TCP does not scale well and therefore is not suitable. Second, for real-time data, reliability is not as important as timely delivery. Even more, reliable transmission provided by retransmission as in TCP is not desirable. For example, in network congestion, some packets might get lost and the application would result in lower but acceptable quality. If the protocol insists a reliable transmission, the retransmitted packets could possibly increase the delay, jam the network, and eventually starve the receiving application.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RTP and RTCP packets are usually transmitted using UDP/IP service. However, efforts have been made to make them transport-independent so they can be also run on CLNP(Connectionless Network Protocol), IPX (Internetwork Packet Exchange), AAL5/ATM or other protocols.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;In practice, RTP is usually implemented within the application. Many issues, such as lost packet recovery and congestion control, have to be implemented in the application level. To set up an RTP session, the application defines a particular pair of destination transport addresses (one network address plus a pair of ports for RTP and RTCP). In a multimedia session, each medium is carried in a separate RTP session, with its own RTCP packets reporting the reception quality for that session. For example, audio and video would travel on separate RTP sessions, enabling a receiver to select whether or not to receive a particular medium.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;An audio-conferencing scenario presented in RFC 1889 illustrates the use of RTP. Suppose each participant sends audio data in segments of 20 ms duration. Each segment of audio data is preceded by an RTP header, and then the resulting RTP message is placed in a UDP packet. The RTP header indicates the type of audio encoding that is used, e.g., PCM. Users can opt to change the encoding during a conference in reaction to network congestion or, for example, to accommodate low-bandwidth requirements of a new conference participant. Timing information and a sequence number in the RTP header are used by the receivers to reconstruct the timing produced by the source, so that in this example, audio segments are contiguously played out at the receiver every 20 ms.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;RTP Fixed Header Fields&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The RTP header has the following format:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 14pt;&quot;&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQZ1wsIoL1yaVBlUYrtsRsJFaQmPFAmAyiHAEeT23i51kQGWglYZbHPwpMV5LtonhwHJElngmRh0GQRyk2pv05BTvCNe9IfbgujnMlWOyn7dLP7FWKYEMsCHbPvlCaniD6CkSb4TwU8pJB/s1600/03fig2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;169&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQZ1wsIoL1yaVBlUYrtsRsJFaQmPFAmAyiHAEeT23i51kQGWglYZbHPwpMV5LtonhwHJElngmRh0GQRyk2pv05BTvCNe9IfbgujnMlWOyn7dLP7FWKYEMsCHbPvlCaniD6CkSb4TwU8pJB/s320/03fig2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Figure 2: RTP Packet Header&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The RTP header has a minimum size of 12 bytes. After the header, optional header extensions may be present. This is followed by the RTP payload, the format of which is determined by the particular class of application. The fields in the header are as follows:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;Version:&lt;/strong&gt; (2 bits) Indicates the version of the protocol. Current version is 2.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;P (Padding):&lt;/strong&gt; (1 bit) Used to indicate if there are extra padding bytes at the end of the RTP packet. Padding might be used to fill up a block of certain size, for example as required by an encryption algorithm. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;X (Extension):&lt;/strong&gt; (1 bit) Indicates presence of an &lt;em&gt;Extension header&lt;/em&gt; between standard header and payload data. This is application or profile specific. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;CC (CSRC Count):&lt;/strong&gt; (4 bits) Contains the number of CSRC identifiers (defined below) that follow the fixed header. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;M (Marker):&lt;/strong&gt; (1 bit) Used at the application level and defined by a profile. If it is set, it means that the current data has some special relevance for the application. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;PT (Payload Type):&lt;/strong&gt; (7 bits) Indicates the format of the payload and determines its interpretation by the application. This is specified by an RTP profile. For example, see &lt;em&gt;RTP Profile for audio and video conferences with minimal control&lt;/em&gt; (&lt;a href=&quot;http://tools.ietf.org/html/rfc3551&quot;&gt;RFC 3551&lt;/a&gt;). &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;Sequence Number: &lt;/strong&gt;(16 bits) The sequence number is incremented by one for each RTP data packet sent and is to be used by the receiver to detect packet loss and to restore packet sequence. The RTP does not take any action when it sees a packet loss, but it is left to the application to take the desired action. For example, video applications may play the last known frame in place of the missing frame. According to &lt;a href=&quot;http://tools.ietf.org/html/rfc3550&quot;&gt;RFC 3550&lt;/a&gt;, the initial value of the sequence number should be random to make known-plaintext attacks on encryption more difficult. RTP provides no guarantee of delivery, but the presence of sequence numbers makes it possible to detect missing packets.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;Timestamp:&lt;/strong&gt; (32 bits) Used to enable the receiver to play back the received samples at appropriate intervals. When several media streams are present, the timestamps are independent in each stream, and may not be relied upon for media synchronization. The granularity of the timing is application specific. For example, an audio application that samples data once every 125 &lt;em&gt;µs&lt;/em&gt; (8&amp;nbsp;kHz, a common sample rate in digital telephony) could use that value as its clock resolution. The clock granularity is one of the details that is specified in the RTP profile or payload format for an application. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;SSRC: &lt;/strong&gt;(32 bits) Synchronization source identifier uniquely identifies the source of a stream. The synchronization sources within the same RTP session will be unique. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;CSRC:&lt;/strong&gt; Contributing source IDs enumerate contributing sources to a stream which has been generated from multiple sources. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;Extension header:&lt;/strong&gt; (optional) The first 32-bit word contains a profile-specific identifier (16 bits) and a length specifier (16 bits) that indicates the length of the extension (EHL=extension header length) in 32-bit units, excluding the 32 bits of the extension header. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;Profiles and Payload formats&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;One of the design considerations of the RTP was to support a range of multimedia formats (such as H.264, MPEG-4, MJPEG, MPEG, etc.) and allow new formats to be added without revising the RTP standard. The design of RTP is based on the architectural principle known as Application Level Framing (ALF). The information required by a specific application needs are not present in the generic RTP header and are specified by RTP Profiles and Payload formats. For each class of application (e.g., audio, video), RTP defines a &lt;em&gt;profile&lt;/em&gt; and one or more associated &lt;em&gt;payload formats&lt;/em&gt;.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The &lt;em&gt;Profile&lt;/em&gt; defines the codecs used to encode the payload data and their mapping to payload format codes in the Payload Type (PT) field of the RTP header (see below). Each profile is accompanied by several payload format specifications, each of which describes the transport of a particular encoded data. Some of the audio payload formats include: &lt;a href=&quot;http://en.wikipedia.org/wiki/G.711&quot; title=&quot;G.711&quot;&gt;G.711&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/G.723&quot; title=&quot;G.723&quot;&gt;G.723&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/G.726&quot; title=&quot;G.726&quot;&gt;G.726&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/G.729&quot; title=&quot;G.729&quot;&gt;G.729&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/GSM&quot; title=&quot;GSM&quot;&gt;GSM&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/QCELP&quot; title=&quot;QCELP&quot;&gt;QCELP&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/MP3&quot; title=&quot;MP3&quot;&gt;MP3&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/DTMF&quot; title=&quot;DTMF&quot;&gt;DTMF&lt;/a&gt; etc., and some of the video payload formats include: &lt;a href=&quot;http://en.wikipedia.org/wiki/H.261&quot; title=&quot;H.261&quot;&gt;H.261&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/H.263&quot; title=&quot;H.263&quot;&gt;H.263&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/H.264&quot; title=&quot;H.264&quot;&gt;H.264&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/MPEG&quot; title=&quot;MPEG&quot;&gt;MPEG&lt;/a&gt; etc. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Examples of RTP Profiles include:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The &lt;em&gt;RTP profile for Audio and video conferences with minimal control&lt;/em&gt; (&lt;a href=&quot;http://tools.ietf.org/html/rfc3551&quot;&gt;RFC 3551&lt;/a&gt;) defines a set of static payload type assignments, and a mechanism for mapping between a payload format, and a payload type identifier (in header) using Session Description Protocol (SDP). &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The Secure Real-time Transport Protocol (SRTP) (&lt;a href=&quot;http://tools.ietf.org/html/rfc3711&quot;&gt;RFC 3711&lt;/a&gt;) defines a profile of RTP that provides cryptographic services for the transfer of payload data. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;A complete specification of RTP for a particular application usage will require a profile and/or payload format specification(s).&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;RTP-Based Systems&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;A complete network based system will include other protocols and standards in conjunction with RTP. Protocols like SIP, RTSP, H.225 and H.245 are used for session initiation, control and termination. Other standards like H.264, MPEG, H.263 etc., are used to encode the payload data (specified via RTP Profile). &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;An RTP sender captures the multimedia data, which are then encoded as frames and transmitted as RTP packets, with appropriate timestamps and increasing sequence numbers. Depending on the RTP Profile in use, the Payload Type field is set. The RTP receiver, captures the RTP packets, and may perform reordering of packets, which may have resulted because of the underlying IP network and the frames are decoded depending on the payload format and presented to the end user. &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;RTP Features&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RTP provides end-to-end delivery services for data with real-time characteristics, such as interactive audio and video. But RTP itself does not provide any mechanism to ensure timely delivery. It needs support from lower layers that actually have control over resources in switches and routers. RTP depends on RSVP to reserve resources and to provide the requested quality of service.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RTP doesn&#39;t assume anything about the underlying network, except that it provides framing. RTP is typically run on the top of UDP to make use of its multiplexing and checksum service, but efforts have been made to make RTP compatible with other transport protocols, such as ATM AAL5 and IPv6.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;Unlike usual data transmission, RTP does not offer any form of reliability or flow/congestion control. It provides timestamps, sequence numbers as hooks for adding reliability and flow/congestion control, but how to implement is totally left to the application.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RTP is a protocol framework that is deliberately not complete. It is open to new payload formats and new multimedia software. By adding new profile and payload format specifications, one can tailor RTP to new data formats and new applications.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RTP/RTCP provides functionality and control mechanisms necessary for carrying real-time content. But RTP/RTCP itself is not responsible for the higher-level tasks like assembly and synchronization. These have to be done at application level.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;The flow and congestion control information of RTP is provided by RTCP sender and receiver reports.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 18pt;&quot;&gt;RTP Implementation Resources&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;RTP is an open protocol that does not provide pre-implemented system calls. Implementation is tightly coupled to the application itself. Application developers have to add the complete functionality in the application layer by themselves. However, it is always more more efficient to share and reuse code rather than starting from scratch. The RFC 1889 specification itself contains numerous code segments that can be borrowed directly to the applications. There are some implementations with source code available on the web for evaluation and educational purposes. Many modules in the source code can be usable with minor modifications. The following is a list of useful resources:&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-left: 42pt;&quot;&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;vat &lt;/strong&gt;(http://www-nrg.ee.lbl.gov/vat/)&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;rtptools&lt;/strong&gt;(ftp://ftp.cs.columbia.edu/pub/schulzrinne/rtptools/)&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;NeVoT&lt;/strong&gt;(http://www.cs.columbia.edu/~hgs/rtp/nevot.html)&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;RTP page &lt;/strong&gt;(http://www/cs.columbia.edu/~hgs/rtp) maintained by Henning Schulzrinne is a very complete reference.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Georgia;&quot;&gt;&lt;strong&gt;RTP Library &lt;/strong&gt;(http://www.cs.columbia.edu/~jdrosen/rtp_api.html) provides a high level interface for developing applications that make use of the Real Time Transport Protocol (RTP).&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/232620742248174587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/multimedia-over-ip-rtp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/232620742248174587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/232620742248174587'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/multimedia-over-ip-rtp.html' title='Multimedia over IP - 03'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXkePDk2KxI7XTK98dJ0M_nC78vhRgAfFdc8VPxo1CfVwzFrbShxBnUq79vik31RFqHYTXmiDJ03vZCRE0znZ5RPlK-b7Mzdry74JErD2ZHrvYo9Yu8A9zart5e_RP6aF17O3UNyhL9VHL/s72-c/03fig1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-265867543671922191</id><published>2010-10-02T23:06:00.011+05:30</published><updated>2010-10-06T20:54:36.898+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="FAQs"/><category scheme="http://www.blogger.com/atom/ns#" term="H.264"/><category scheme="http://www.blogger.com/atom/ns#" term="Hardmard"/><category scheme="http://www.blogger.com/atom/ns#" term="Integer Transformation"/><category scheme="http://www.blogger.com/atom/ns#" term="MPEG4"/><category scheme="http://www.blogger.com/atom/ns#" term="Quantization"/><category scheme="http://www.blogger.com/atom/ns#" term="Transformation"/><title type='text'>FAQs: Transformation and Quantization</title><content type='html'>&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;margin-left: 36pt; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 22pt;&quot;&gt;FAQs: Transformation and Quantization&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;strong&gt;1) What type of transformation is used in H.264?&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Ans: H.264 uses an adaptive transform of block size, 4 x 4 and 8 x 8 (High Profiles only), whereas previous video coding standards used the 8 x 8 DCT. The smaller block size leads to a significant reduction in ringing artifacts. And for improved compression efficiency, H.264 also employs a hierarchical transform structure, in which the DC coefficients of neighboring 4 x 4 transforms for the luma signals are grouped into 4 x 4 blocks and transformed again by the Hadamard transform.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;strong&gt;2) Why Hardmard transform is neccesary and when this transform will apply?&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Ans: For blocks with mostly flat pel values, there is significant correlation among transform DC coefficients of neighboring blocks. Therefore, the standard specifies the 4 x 4 Hadamard transform for luma DC coefficients for 16 x 16 Intra-mode only, and 2 x 2 Hadamard transform for chroma DC coefficients, in 4:2:0 format. For 4:2:2 and 4:4:4 formats, the Hadamard block size is increased to reflect the enlarged block.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;strong&gt;3) what is the adentage of having transformation block size 4x4?&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;Ans: The size of H.264 transforms is mainly 4&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;4, in special cases 2&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;2 (8x8 in High Profile). This smaller block size of 4&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;4 instead of 8&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;8 enables the encoder to better adapt the prediction error coding to the boundaries of moving objects, to match the transform block size with the smallest block size of the motion compensation, and to generally better adapt the transform to the local prediction error signal.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;strong&gt;4) How transformation and quantization procedure is modified to avoid complex &lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;strong&gt;DCT multiplications?&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Ans: For simple implementation, the exact transform process is modified to avoid the multiplications. Then the transform and quantization are combined by the modified forward integer transform, post-scaling, and quantization for the encoding; and inverse quantization, pre-scaling, and inverse integer transform for the decoding.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;strong&gt;5) is this H.264 supports Perceptual-based quantization scaling matrices there any changes in the quantization procedure? &lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Ans: Yes, The High Profiles support the perceptual-based quantization scaling matrices as same concept used in MPEG-2. The encoder can specify a matrix for scaling factor according to the specific frequency associated with the transform coefficient for use in inverse quantization scaling by the decoder. This allows the optimization of the subjective quality according to the sensitivity of the human visual system, less sensitive to the coded error in high frequency transform coefficients. It typically does not improve &lt;em&gt;objective &lt;/em&gt;fidelity as measured by mean-squared error (or, equivalently, PSNR), but it does improve &lt;em&gt;subjective &lt;/em&gt;fidelity, which is really the more important criterion.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;strong&gt;6) is there any default scaling matrix is defined in H.264?&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Ans: Yes.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;strong&gt;7)And any ways to develop dynamic matrices?&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Ans: Yes, by defining 2 QPs and using logarithemic/laplacian or any other distributions, we can generate perceptual-based quantization scaling matrices.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;strong&gt;8) How many transform are applied in H.264?&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Ans: Three different types of transforms are used.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;The first type is applied to all samples of all prediction error blocks of the luminance component Y and also for all blocks of both chrominance components Cb and Cr regardless of whether motion compensated prediction or intra prediction was used. The size of this transform is 4&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;4. Its transform matrix H1 is shown in Figure 1. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;If the macroblock is predicted using the type INTRA_16&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;16, the second transform, a Hadamard transform with matrix H2 (see Figure 1), is applied in addition to the first one. It transforms all 16 DC coefficients of the already transformed blocks of the luminance signal. The size of this transform is also 4&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;4.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;The third transform is also a Hadamard transform but of size 2&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;2. It is used for the transform of the 4 DC coefficients of each chrominance component. Its matrix H3 is shown in Figure 1.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMnOvfC9Tn4ErxbKhRmXLEBY6eCR543CJ7mxsF_tz7iCx-bIJWABNEIFcSRVfqISWguX7FXN1nUh1EZhla7k9J-GwLs9gAqUg7YG0WwoMPp6cp-sdPmKQGw35YEO9jwZdE0sTwQs_23Lat/s1600/06figF2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;87&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMnOvfC9Tn4ErxbKhRmXLEBY6eCR543CJ7mxsF_tz7iCx-bIJWABNEIFcSRVfqISWguX7FXN1nUh1EZhla7k9J-GwLs9gAqUg7YG0WwoMPp6cp-sdPmKQGw35YEO9jwZdE0sTwQs_23Lat/s400/06figF2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Figure 1: Matrices of 3 Different transforms applied in H.264/AVC&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;strong&gt;9) What is the transmission order in H.264, in INTRA_16X16?&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;Ans: The transmission order of all coefficients is shown in Figure 2. If the macroblock is predicted using the intra prediction type INTRA_16&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;16 the block with the label &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;−&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; is transmitted first. This block contains the DC coefficients of all blocks of the luminance component. Afterwards all blocks labeled &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;–&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;25&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; are transmitted whereas blocks &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;–&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; comprise all AC coefficients of the blocks of the luminance component. Finally, blocks &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; and &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;17&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; comprise the DC coefficients and blocks &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;18&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;–&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;25&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; the AC coefficients of the chrominance components.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYPi6BbHERW-dEvaxSqD8wuTQJ6EYBD5_OzfaW2-cWGTHeSFZcJSpvoqS1kMH-1n6teJzuCfoeuIDUQk8SnotPStmNSI9UuF_lOhNcc6OpMnkESIoljOYATA-L7G-A89SUUIQsugrWhFYG/s1600/06fig2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;171&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYPi6BbHERW-dEvaxSqD8wuTQJ6EYBD5_OzfaW2-cWGTHeSFZcJSpvoqS1kMH-1n6teJzuCfoeuIDUQk8SnotPStmNSI9UuF_lOhNcc6OpMnkESIoljOYATA-L7G-A89SUUIQsugrWhFYG/s400/06fig2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Figure 2: The Transmission Order of all Coefficients&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;strong&gt;10) Compared to previous coding algorithm how H.264 transformation technique is really good?&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;Ans: Yes, Compared to a DCT, all applied integer transforms have only integer numbers ranging from &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;−&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;2 to 2 in the transform matrix (see eqns 6, 11, 12). This allows computing the transform and the inverse transform in 16-bit arithmetic using only low complex shift, add, and subtract operations.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;In the case of a Hadamard transform, only add and subtract operations are necessary. Furthermore, due to the exclusive use of integer operations mismatches of the inverse transform are completely avoided which was not the case in former standards and caused problems.&lt;/span&gt;&lt;/div&gt;All coefficients are quantized by a scalar quantizer. The quantization step size is chosen by a so called quantization parameter QP which supports 52 different quantization parameters. The step size doubles with each increment of 6 of QP. An increment of QP by 1 results in an increase of the required data rate of approximately 12.5%.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/265867543671922191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/frq-transformation-and-quantization.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/265867543671922191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/265867543671922191'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/frq-transformation-and-quantization.html' title='FAQs: Transformation and Quantization'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMnOvfC9Tn4ErxbKhRmXLEBY6eCR543CJ7mxsF_tz7iCx-bIJWABNEIFcSRVfqISWguX7FXN1nUh1EZhla7k9J-GwLs9gAqUg7YG0WwoMPp6cp-sdPmKQGw35YEO9jwZdE0sTwQs_23Lat/s72-c/06figF2.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-2518933113427462172</id><published>2010-10-02T21:05:00.012+05:30</published><updated>2010-10-11T20:46:22.409+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="AVC"/><category scheme="http://www.blogger.com/atom/ns#" term="H.264"/><category scheme="http://www.blogger.com/atom/ns#" term="MPEG"/><category scheme="http://www.blogger.com/atom/ns#" term="MPEG4"/><category scheme="http://www.blogger.com/atom/ns#" term="Quantization"/><category scheme="http://www.blogger.com/atom/ns#" term="Transformation"/><category scheme="http://www.blogger.com/atom/ns#" term="Video Codec"/><title type='text'>H.264 - Transformation</title><content type='html'>&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;margin-left: 36pt; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 22pt;&quot;&gt;Transformation and Quantization&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;Both source pictures and prediction residuals have high spatial redundancies. H.264 Standard is based on the use of a block-based transform for spatial redundancy removal. After inter prediction from previously-decoded samples in other pictures or spatial-based prediction from previously-decoded samples within the current picture, the resulting prediction residual is split into 4 x 4 or 8 x 8 blocks. These are converted into the transform domain where they are quantized.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;H.264 uses an adaptive transform block size, 4 x 4 and 8 x 8 (High Profiles only), whereas previous video coding standards used the 8 x 8 DCT. The smaller block size leads to a significant reduction in ringing artifacts. Also, the 4 x 4 transform has the additional benefit of removing the need for multiplications.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;For improved compression efficiency, H.264 also employs a hierarchical transform structure, in which the DC coefficients of neighboring 4 x 4 transforms for the luma signals are grouped into 4 x 4 blocks and transformed again by the Hadamard transform.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;For blocks with mostly flat pel values, there is significant correlation among transform DC coefficients of neighboring blocks. Therefore, the standard specifies the 4 x 4 Hadamard transform for luma DC coefficients for 16 x 16 Intra-mode only, and 2 x 2 Hadamard transform for chroma DC coefficients. &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;In some applications, it is desired to reduce the quantization step size to improve PSNR to levels that can be considered visually lossless. To achieve this, the H.264 extends the quantization step sizes QP by two additional octaves, redefining the tables and allowing QP to vary from 0 to 51.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;In general transform and quantization require several multiplications resulting in high complexity for implementation. So, for simple implementation, the exact transform process is modified to avoid the multiplications. Then the transform and quantization are combined by the modified integer forward transform, quantization, scaling.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;Described below are the steps for the forward integer transform, post-scaling, and quantization for the encoding; and inverse quantization, pre-scaling, and inverse integer transform for the decoding.&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 18pt;&quot;&gt;&lt;strong&gt;Encoding Process&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 14pt;&quot;&gt;&lt;strong&gt;Step 1: Forward Integer Transform&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;For DCT transform of a 4 x 4 input luma data &lt;em&gt;F&lt;/em&gt;, the exact formula is as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_fjLEFApcYMFOpu4G78h_5_dIQTc2HCuZ8JnGG8-noF8tJUJeuOQlxniD6HQWv_fxeF1uq37j7CZ3_1pOk2j1Ty4bX_jnvDdFhe46RTL9vvEGKVx3gRRJEOzCh1r9sEkRxmsEobO5bgYY/s1600/06+eq1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;32&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_fjLEFApcYMFOpu4G78h_5_dIQTc2HCuZ8JnGG8-noF8tJUJeuOQlxniD6HQWv_fxeF1uq37j7CZ3_1pOk2j1Ty4bX_jnvDdFhe46RTL9vvEGKVx3gRRJEOzCh1r9sEkRxmsEobO5bgYY/s640/06+eq1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;where, &lt;em&gt;H&lt;/em&gt; is a matrix of&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQHmoapZ59Pw946Ew-g5ZedgdjdO2TrDEzvwQPeCDC27MnlY4gRkP5QeBQ8VBmglhSFbqFQRkMf2qDOAZGxU9ZQoDX9k4n60m04CHTeKKzoPFofUo_IFcKb67JQTsH-F8Rkvwk7AnftTAv/s1600/06+eq2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;84&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQHmoapZ59Pw946Ew-g5ZedgdjdO2TrDEzvwQPeCDC27MnlY4gRkP5QeBQ8VBmglhSFbqFQRkMf2qDOAZGxU9ZQoDX9k4n60m04CHTeKKzoPFofUo_IFcKb67JQTsH-F8Rkvwk7AnftTAv/s640/06+eq2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;The variables &lt;em&gt;a, b, c&lt;/em&gt; are as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnSBm9BF6ByMvO-2dpknBbVymuemH0Ggd2_NTMWIbfRPqMfqnRfMbJiKnakmb5oSycNaVnfqYnaxChpXC8oOOaKJ58ZKaZ3nNE5C3AZCwX1K_bo5mUoksMuwHDIvnVa4VPrKJMAph6GWGn/s1600/06+eq3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;50&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnSBm9BF6ByMvO-2dpknBbVymuemH0Ggd2_NTMWIbfRPqMfqnRfMbJiKnakmb5oSycNaVnfqYnaxChpXC8oOOaKJ58ZKaZ3nNE5C3AZCwX1K_bo5mUoksMuwHDIvnVa4VPrKJMAph6GWGn/s640/06+eq3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;However, in order to simplify the implementation of the transform, &lt;em&gt;c&lt;/em&gt; is approximated by 0.5. For ensuring orthogonality, b also needs to be modified so that:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOJtObJKdb8wQf8LeCGjqKzUVK2iHbAuKxP2IJpa4rR2XHSdp199FKIJPX7BUQvfh14oMSaaVfvsGSGTcQWOFqIobvvqbh83OgMivI5wrQgzmAXMVJ5s2uP9qzcxD7a0AqmQLtvLHfBSUU/s1600/06+eq4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;52&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOJtObJKdb8wQf8LeCGjqKzUVK2iHbAuKxP2IJpa4rR2XHSdp199FKIJPX7BUQvfh14oMSaaVfvsGSGTcQWOFqIobvvqbh83OgMivI5wrQgzmAXMVJ5s2uP9qzcxD7a0AqmQLtvLHfBSUU/s640/06+eq4.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;Multiplication in the transform process is avoided by integrating it with the quantization. So, equation (1) is modified as&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKOvVTLNiwkmsNIib4Zq-0HSBrFZuNqhARCnwGuslv2ojkz9I2VSbUA_UXoB8LyPH28kwRGkk4v8da4_Zk_zQynN8L-uGIWfIjvjYvL5w6JwSgGOsDSjCE5X4pPy09lY5u0Tz2kgWpKF2B/s1600/06+eq5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;36&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKOvVTLNiwkmsNIib4Zq-0HSBrFZuNqhARCnwGuslv2ojkz9I2VSbUA_UXoB8LyPH28kwRGkk4v8da4_Zk_zQynN8L-uGIWfIjvjYvL5w6JwSgGOsDSjCE5X4pPy09lY5u0Tz2kgWpKF2B/s640/06+eq5.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;where&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLZOzsyppjEg8IK-MIbroHexk90V7IYb5JkkXYItTzZwwoYHyKYGDMbiegHWdAZYOOm3sNFXtWpDHVrtR9zW8D-BA7ot44nk8kH09kcBeVw4Lp2Do1sQnEOq7_vx9S3a3GBYRIL3FvFKDX/s1600/06+eq6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;86&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLZOzsyppjEg8IK-MIbroHexk90V7IYb5JkkXYItTzZwwoYHyKYGDMbiegHWdAZYOOm3sNFXtWpDHVrtR9zW8D-BA7ot44nk8kH09kcBeVw4Lp2Do1sQnEOq7_vx9S3a3GBYRIL3FvFKDX/s640/06+eq6.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_0RF7J5C0dNduJzJpPsfPuPbS4rjqmNK0m0lU-m9jmoSxxj6RHDJiqLuJSO2iotTIGlwTyPcSjUiG10zDwrROfGwDIA_eY-L5Cs2Ai0Vb0Tm7Avu1kq1NJsUnggEC17LsEgx37y_Z5kkI/s1600/06+eq7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;100&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_0RF7J5C0dNduJzJpPsfPuPbS4rjqmNK0m0lU-m9jmoSxxj6RHDJiqLuJSO2iotTIGlwTyPcSjUiG10zDwrROfGwDIA_eY-L5Cs2Ai0Vb0Tm7Avu1kq1NJsUnggEC17LsEgx37y_Z5kkI/s640/06+eq7.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;The symbol denotes the element by element multiplication of the corresponding matrices.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;In step 1, only integer transform is implemented without multiplication term &lt;em&gt;SF&lt;/em&gt;. The term &lt;em&gt;SF&lt;/em&gt; is combined with quantization in step 2.&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 14pt;&quot;&gt;&lt;strong&gt;Step 2: Post-Scaling and Quantization &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;A transformed and quantized signal &lt;em&gt;Y&lt;/em&gt; is obtained by &lt;em&gt;SF&lt;/em&gt; (&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;post-scaling&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;) and quantization with step size &lt;em&gt;Qstep&lt;/em&gt;. H.264 defines a total of 52 values for &lt;em&gt;Qstep&lt;/em&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKZMlyE5_lmLmCJWOItCIDTxKiaT-4z1b6hIi_Sn-NrHBTO5bKixPgoAxwPrlnUw-X9OnTPAtp16GXnI4nv2JS96FYqLGPEr5ZVmPFNdgKsyDyvjK0Z2z0vWDYFqllOA-7BPPGI0ZRppON/s1600/06+eq8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;44&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKZMlyE5_lmLmCJWOItCIDTxKiaT-4z1b6hIi_Sn-NrHBTO5bKixPgoAxwPrlnUw-X9OnTPAtp16GXnI4nv2JS96FYqLGPEr5ZVmPFNdgKsyDyvjK0Z2z0vWDYFqllOA-7BPPGI0ZRppON/s640/06+eq8.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt; &lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 18pt;&quot;&gt;&lt;strong&gt;Decoding Process&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 14pt;&quot;&gt;&lt;strong&gt;Step 1: Inverse Quantization and Pre-Scaling &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;A received signal &lt;em&gt;Y&lt;/em&gt; in the decoder is scaled with &lt;em&gt;Qstep&lt;/em&gt; and &lt;em&gt;SF&lt;/em&gt; as the inverse quantization and a part of inverse transform.&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOVwPy_Sz4hKvlTQXOxMw1JPBFDbquvAtuZj8K8vi8buxXx_2oI1rEM3v6Fxs8Vm32JvvPsiGniZNJP1A2qKAhDskgOoyAEuzvawv3trlz2ZADr-gsviJQ-EKMKBOAAfJptQGw7ibHC6U9/s1600/06+eq9.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;36&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOVwPy_Sz4hKvlTQXOxMw1JPBFDbquvAtuZj8K8vi8buxXx_2oI1rEM3v6Fxs8Vm32JvvPsiGniZNJP1A2qKAhDskgOoyAEuzvawv3trlz2ZADr-gsviJQ-EKMKBOAAfJptQGw7ibHC6U9/s640/06+eq9.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 14pt;&quot;&gt;&lt;strong&gt;Step 2: Inverse Integer Transform&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: right;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnhKmNGCrClgCUoEw8azQiYoyH0t8xFXqJYeBOzSPYtPlnUQFUSsBKFzGMUMC0Jt9hzvoitg5dBdlJ8_W74f8s2okYd7OA3kH8DY2E4-pUiJAcrnxzXiVzEEbNmPbCegtrahoTKLR2MmER/s1600/06+eq10.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;38&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnhKmNGCrClgCUoEw8azQiYoyH0t8xFXqJYeBOzSPYtPlnUQFUSsBKFzGMUMC0Jt9hzvoitg5dBdlJ8_W74f8s2okYd7OA3kH8DY2E4-pUiJAcrnxzXiVzEEbNmPbCegtrahoTKLR2MmER/s640/06+eq10.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;where, inverse integer transform matrix is&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_87Y-7gpwvLkbGpS8QC8q_xPT-EMJ5OLv0ksyPjx_epl2rFh1qSQ-2zpBmGgD9HPz_hh_ko2NWXRWRDDwJlyxY1DA7TnsJI6EVsVP1Hg5mS9BtNTJdJfa5T3SXbPCcgG-uXMerOYgnbVC/s1600/06+eq11.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;86&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_87Y-7gpwvLkbGpS8QC8q_xPT-EMJ5OLv0ksyPjx_epl2rFh1qSQ-2zpBmGgD9HPz_hh_ko2NWXRWRDDwJlyxY1DA7TnsJI6EVsVP1Hg5mS9BtNTJdJfa5T3SXbPCcgG-uXMerOYgnbVC/s640/06+eq11.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;Additionally, for luma (4 x 4) DC coefficients in 16 x 16 Intra-mode, 2D Hadamard transform is applied. This is a hierarchical transform.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgF0rQDflHiLYy8LVhK2wvQfRIbPY5JI3NCPt8HvM9Ri3S7_HaCIIUx86sM9lM4qxcullebQyApji9DcCEwRMH_lGPrAk94CdmB5enZsTx8z_iwhfvi88XZZQv-K_NUkOJAslaYE8x2IFzK/s1600/06+eq12.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;80&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgF0rQDflHiLYy8LVhK2wvQfRIbPY5JI3NCPt8HvM9Ri3S7_HaCIIUx86sM9lM4qxcullebQyApji9DcCEwRMH_lGPrAk94CdmB5enZsTx8z_iwhfvi88XZZQv-K_NUkOJAslaYE8x2IFzK/s640/06+eq12.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;Also, for chroma DC coefficients in 4:2:0 format, the transform matrix is as follows. For 4:2:2 and 4:4:4 formats, the Hadamard block size is increased to reflect the enlarged block.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0CDbR-rICrUPEyRwTHdbsnVHpFpC8ocYnRc-QGSlYXrBOi4BrEDu3GQZRKm76G5hqzKDayY4QidRVkPWnn24CsyTk1ycoeYv8CA4oGTvJkId4gJPPuV18N-FIDsujkK6NwQXGNisnOSOK/s1600/06+eq13.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;54&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0CDbR-rICrUPEyRwTHdbsnVHpFpC8ocYnRc-QGSlYXrBOi4BrEDu3GQZRKm76G5hqzKDayY4QidRVkPWnn24CsyTk1ycoeYv8CA4oGTvJkId4gJPPuV18N-FIDsujkK6NwQXGNisnOSOK/s640/06+eq13.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;The following integer DCT matrix is applied to 8 x 8 luma components, defined only in High Profiles.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq41vi-KqUmLW8gZ1_gTWe1VoZLnX_3yQWw-2L1_P2wazbClikwoCnq8TA-RXSzbVH-cgubj4UbEv5_16rJIBWzOs_jnh1Xj_C6dTxOfavG0j9hY3qI6in4ZZQWmMiIun7u9zLlkqdCcqp/s1600/06+eq14.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;166&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq41vi-KqUmLW8gZ1_gTWe1VoZLnX_3yQWw-2L1_P2wazbClikwoCnq8TA-RXSzbVH-cgubj4UbEv5_16rJIBWzOs_jnh1Xj_C6dTxOfavG0j9hY3qI6in4ZZQWmMiIun7u9zLlkqdCcqp/s640/06+eq14.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;Note that only 4x4 IntDCT is always applied to chroma components.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;FRExtensions suggest default &lt;strong&gt;&lt;em&gt;perceptual weighting matrices&lt;/em&gt;&lt;/strong&gt; for (4x4) and (8x8) IntDCT coefficients. Scaling matrix reflecting visual perception is simply a multiplier applied during the inverse quantization. (This, itself is a multiplication) Weighting matrices can be customized separately for 4x4 Intra Y, 4x4 Intra Cb, Cr, 4x4 Inter Y, 4x4 Inter Cb, Cr, 8x8 Intra Y and 8x8 Inter Y. Besides these two new schemes, FRExt has added entropy-coded transform-bypass lossless macroblocks, residual color transform for efficient RGB coding without color format conversion loss or bit expansion and 9 intra 8x8 prediction modes.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;Encoder can design and use customized perceptual scaling matrices. These are to be sent to the decoder at the sequence or picture level. Default scaling matrix for (8x8) IntDCT coefficients is shown below.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkdFLYTvSSsRQz38HsL-n4K624kiLr9HTkSFmTYiel-ozedZkgtQ7X65e6rmK6Giv9Gr4z8YZ2H7L8aCb4jtxU-GVnouSgK4v16ytaoRhnh-el_yrVaGvZI_yxdIWhuvu0AR4gu7Um80e5/s1600/06+eq14a.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;172&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkdFLYTvSSsRQz38HsL-n4K624kiLr9HTkSFmTYiel-ozedZkgtQ7X65e6rmK6Giv9Gr4z8YZ2H7L8aCb4jtxU-GVnouSgK4v16ytaoRhnh-el_yrVaGvZI_yxdIWhuvu0AR4gu7Um80e5/s640/06+eq14a.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;In FRExt, two scans similar to 4x4 transform switched for frame/field coding are shown. Coefficient scanning is based on the decreasing variances and to maximize number of zero-valued coefficients along the scan.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYVirC2Xlo1r6slH9F6AbiRGtrtCyto7QZ0gfVyP61mwVnNriZYY5SfE0PAV8tvo1A8akL6gg_-mZM4xXg6K20_qJOxpAVnnq957o29QeHaKe-f3NAlHUvKyaawF_ruQaMu7nxBdj5pIFr/s1600/06fig1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;155&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYVirC2Xlo1r6slH9F6AbiRGtrtCyto7QZ0gfVyP61mwVnNriZYY5SfE0PAV8tvo1A8akL6gg_-mZM4xXg6K20_qJOxpAVnnq957o29QeHaKe-f3NAlHUvKyaawF_ruQaMu7nxBdj5pIFr/s320/06fig1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;Figure 1: Coefficient scanning order in (a) Frame and (b) Field modes&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;If a macroblock is compressed using the 4x4 transform in the field mode, the scanning order of the coefficients is modified to be more efficient for field scanning as shown in Fig. 4b &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;–&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt; reflecting the decreased correlation of the source data in the vertical dimension. For other block sizes (8x8 for luma, 2x2 for 4:2:0 chroma DC, and 2x4 for 4:2:2 chroma DC), the same basic concepts apply, with scan orders specified for each block size.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 18pt;&quot;&gt;&lt;strong&gt;Quantization Scaling Matrices&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;The High Profiles support the perceptual-based quantization scaling matrices as same concept used in MPEG-2. The encoder can specify a matrix for scaling factor according to the specific frequency associated with the transform coefficient for use in inverse quantization scaling by the decoder. This allows the optimization of the subjective quality according to the sensitivity of the human visual system, less sensitive to the coded error in high frequency transform coefficients. It typically does not improve &lt;em&gt;objective &lt;/em&gt;fidelity as measured by mean-squared error (or, equivalently, PSNR), but it does improve &lt;em&gt;subjective &lt;/em&gt;fidelity, which is really the more important criterion. Default values for the quantization scaling matrices are specified in the standard, and the encoder can choose to instead use customized values by sending a representation of those values at the sequence or picture level.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;For the quantization scaling, (8) and (9) are modified as follows.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxsGVlWlR53_PFu7AjbF1YsXLccMwfev6L44J5nQMHp3ltU6JRAAakJfUqncpFRGT0Sm6M3SIdkaumrVmaqK6VG0MvlOvh5aqgSZ0uqAWNL50emeN8DsJdNEW9AeC0p6OVoc75Um6RYcu5/s1600/06+eq15.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;56&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxsGVlWlR53_PFu7AjbF1YsXLccMwfev6L44J5nQMHp3ltU6JRAAakJfUqncpFRGT0Sm6M3SIdkaumrVmaqK6VG0MvlOvh5aqgSZ0uqAWNL50emeN8DsJdNEW9AeC0p6OVoc75Um6RYcu5/s640/06+eq15.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo8dK1q7-e_f0BHT0tcFvZBG4lr-I_ZgrqD3KE_IsMv8ciH0S6KQNqUJWBJtI9PsMX-EbLo3Mmc3MzGpDb53NaI7k0C_DPe7yzXtbRq_YNJIhI67ypGntDr7TPolRY2lYCvlUvauzlknnm/s1600/06+eq16.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;40&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo8dK1q7-e_f0BHT0tcFvZBG4lr-I_ZgrqD3KE_IsMv8ciH0S6KQNqUJWBJtI9PsMX-EbLo3Mmc3MzGpDb53NaI7k0C_DPe7yzXtbRq_YNJIhI67ypGntDr7TPolRY2lYCvlUvauzlknnm/s640/06+eq16.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;where &lt;em&gt;w&lt;sub&gt;ij&lt;/sub&gt;&lt;/em&gt; is a scaling factor.&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 18pt;&quot;&gt;&lt;strong&gt;Transform Coding&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;The transmission order of all coefficients is shown in Figure 1. If the macroblock is predicted using the intra prediction type INTRA_16&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;16 the block with the label &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;−&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt; is transmitted first. This block contains the DC coefficients of all blocks of the luminance component. Afterwards all blocks labeled &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;–&quot;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;25&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt; are transmitted whereas blocks &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;–&quot;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt; comprise all AC coefficients of the blocks of the luminance component. Finally, blocks &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt; and &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;17&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt; comprise the DC coefficients and blocks &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;18&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;–&quot;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;25&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt; the AC coefficients of the chrominance components.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdDkpkrykcmNPwaNmbjSUbbDGRuaSOYJakDMd6Rqd2xuloOJssHn3AL-BFAHd9TvEpa-MZ5TNcUI6Cd3SkR5yKEN8JEAcs8V7Nir73VRznXaPW2zAdT9IMstpXVHx1VScQpnN4f2tnwGZs/s1600/06fig2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;171&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdDkpkrykcmNPwaNmbjSUbbDGRuaSOYJakDMd6Rqd2xuloOJssHn3AL-BFAHd9TvEpa-MZ5TNcUI6Cd3SkR5yKEN8JEAcs8V7Nir73VRznXaPW2zAdT9IMstpXVHx1VScQpnN4f2tnwGZs/s400/06fig2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;Figure 2: Transmission order of all coefficients of a macroblock&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;Compared to a DCT, all applied integer transforms have only integer numbers ranging from &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;−&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;2 to 2 in the transform matrix (see eqns 6, 11, 12). This allows computing the transform and the inverse transform in 16-bit arithmetic using only low complex shift, add, and subtract operations.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;In the case of a Hadamard transform, only add and subtract operations are necessary. Furthermore, due to the exclusive use of integer operations mismatches of the inverse transform are completely avoided which was not the case in former standards and caused problems.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div align=&quot;center&quot; style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 12pt;&quot;&gt;All coefficients are quantized by a scalar quantizer. The quantization step size is chosen by a so called quantization parameter QP which supports 52 different quantization parameters, shown in figure 3. The step size doubles with each increment of 6 of QP. An increment of QP by 1 results in an increase of the required data rate of approximately 12.5%. The wide range of quantizer step sizes makes it possible for an encoder to accurately and flexibly control the trade-off between bit rate and quality. The values of QP may be different for luma (Y) and chroma (C); both parameters are in the range 0-51 but QP&lt;sub&gt;Chroma&lt;/sub&gt; is derived from QP&lt;sub&gt;Y&lt;/sub&gt; so that it QP&lt;sub&gt;C&lt;/sub&gt; is less that QP&lt;sub&gt;Y&lt;/sub&gt; for values of QP&lt;sub&gt;Y&lt;/sub&gt; above 30. A user-defined offset between QP&lt;sub&gt;Y&lt;/sub&gt; and QP&lt;sub&gt;C&lt;/sub&gt; may be signalled in a Picture Parameter Set.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRBikpKKAFBwCCXl6U-xb9nQaz0JAr8iHEU022MSWx2VejxYefsk5JJ-agGSbLF27dHcPBeG9HlNCvLvqJeVfz3Ka20DkpyJkFbKQETaq6u3iLDuifew3L8W6bGhwMlUaNBFjz9-XSuQh1/s1600/06fig3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;67&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRBikpKKAFBwCCXl6U-xb9nQaz0JAr8iHEU022MSWx2VejxYefsk5JJ-agGSbLF27dHcPBeG9HlNCvLvqJeVfz3Ka20DkpyJkFbKQETaq6u3iLDuifew3L8W6bGhwMlUaNBFjz9-XSuQh1/s400/06fig3.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/2518933113427462172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/h264-transformation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/2518933113427462172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/2518933113427462172'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/h264-transformation.html' title='H.264 - Transformation'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_fjLEFApcYMFOpu4G78h_5_dIQTc2HCuZ8JnGG8-noF8tJUJeuOQlxniD6HQWv_fxeF1uq37j7CZ3_1pOk2j1Ty4bX_jnvDdFhe46RTL9vvEGKVx3gRRJEOzCh1r9sEkRxmsEobO5bgYY/s72-c/06+eq1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-2602366052671452249</id><published>2010-10-02T03:32:00.014+05:30</published><updated>2010-10-06T20:45:09.427+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Exell Sheet"/><category scheme="http://www.blogger.com/atom/ns#" term="How Do I?"/><category scheme="http://www.blogger.com/atom/ns#" term="Lock Worksheet Cell"/><category scheme="http://www.blogger.com/atom/ns#" term="Protect Worksheet"/><category scheme="http://www.blogger.com/atom/ns#" term="Protect Worksheet Cell"/><category scheme="http://www.blogger.com/atom/ns#" term="Unlock Worksheet Cell"/><category scheme="http://www.blogger.com/atom/ns#" term="Unprotect Worksheet"/><category scheme="http://www.blogger.com/atom/ns#" term="Unprotect Worksheet Cell"/><title type='text'>Protect Worksheet, 2007</title><content type='html'>&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;h2&gt;How to lock cell, column or row in worksheet, 2007?&lt;/h2&gt;&lt;br /&gt;
&lt;span style=&quot;color: black; font-family: Verdana; font-size: 10pt;&quot;&gt;&lt;strong&gt;If You Want the Majority of Cells Locked&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: black; font-family: Verdana; font-size: 8pt;&quot;&gt;To lock the majority of the cells on the worksheet, follow these steps: &lt;/span&gt;&lt;br /&gt;
&lt;ol style=&quot;margin-left: 52pt;&quot;&gt;&lt;li&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 8pt;&quot;&gt;Select the cells that you want to remain &lt;em&gt;unprotected&lt;/em&gt;. To select nonadjacent (noncontiguous) cells, hold down CTRL and click the cells that are to remain unprotected. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 8pt;&quot;&gt;On the &lt;strong&gt;Home&lt;/strong&gt; menu, click &lt;strong&gt;Format &lt;/strong&gt;submenu, click &lt;strong&gt;Format Cells…&lt;/strong&gt; option OR Right click on the selected cells click &lt;strong&gt;Format Cells… &lt;/strong&gt;option&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 8pt;&quot;&gt;and then click the &lt;strong&gt;Protection&lt;/strong&gt; tab. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 8pt;&quot;&gt;Click to clear the &lt;strong&gt;Locked&lt;/strong&gt; check box and click &lt;strong&gt;OK&lt;/strong&gt;. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 8pt;&quot;&gt;On the &lt;strong&gt;Home&lt;/strong&gt; menu, click to &lt;strong&gt;Format &lt;/strong&gt;submenu, and then click &lt;strong&gt;Protect Sheet…&lt;/strong&gt;. Option, Type a password if you want one, and then click &lt;strong&gt;OK&lt;/strong&gt;. &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 10pt;&quot;&gt;&lt;strong&gt;If You Want the Majority of Cells Unlocked&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: black; font-family: Verdana; font-size: 8pt;&quot;&gt;To leave the majority of the cells on the worksheet unlocked, follow these steps: &lt;/span&gt;&lt;br /&gt;
&lt;ol style=&quot;margin-left: 52pt;&quot;&gt;&lt;li&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 8pt;&quot;&gt;Select the entire worksheet by clicking the &lt;strong&gt;Select All&lt;/strong&gt; button (the gray rectangle in the upper-left corner of the worksheet where the row 1 and column A headings meet), or by pressing CTRL+A or CTRL+SHIFT+SPACEBAR. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 8pt;&quot;&gt;On the &lt;strong&gt;Home&lt;/strong&gt; menu, click &lt;strong&gt;Format&lt;/strong&gt; submenu, click &lt;strong&gt;Format Cells… &lt;/strong&gt;option, and then click the &lt;strong&gt;Protection&lt;/strong&gt; tab. Click to clear the &lt;strong&gt;Locked&lt;/strong&gt; check box and click &lt;strong&gt;OK&lt;/strong&gt;. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 8pt;&quot;&gt;Select the cells that you want to &lt;strong&gt;&lt;em&gt;protect&lt;/em&gt;&lt;/strong&gt;. To select nonadjacent (noncontiguous) cells, hold down CTRL and click the cells that you want to protect. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 8pt;&quot;&gt;On the &lt;strong&gt;Home&lt;/strong&gt; menu, click &lt;strong&gt;Format&lt;/strong&gt; submenu, click &lt;strong&gt;Format Cells… &lt;/strong&gt;option, and then click the &lt;strong&gt;Protection&lt;/strong&gt; tab. Click to select the &lt;strong&gt;Locked&lt;/strong&gt; check box, and then click &lt;strong&gt;OK&lt;/strong&gt;. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 8pt;&quot;&gt;On the &lt;strong&gt;Home&lt;/strong&gt; menu, click to &lt;strong&gt;Format &lt;/strong&gt;submenu, and then click &lt;strong&gt;Protect Sheet…&lt;/strong&gt;. Option, Type a password if you want one, and then click &lt;strong&gt;OK&lt;/strong&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;background: white;&quot;&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 9pt;&quot;&gt;You will find that you can only type data in the cells that you selected.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;color: black; font-family: Verdana; font-size: 9pt;&quot;&gt;Note: You can reach Protect Sheet... option from Review menu also, see the below figures.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 9pt;&quot;&gt;&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcmSEyRypm2-6be8hBaq_Rg43aGHpHiU433FccswGO65kkC-xXW0vUa9J2KlulbnAEyW1yylvCfADsDI8tvolrFne8m3hB_Pq5XHDqQXRyJ4QgR13G-eaBon-nz2S7z_FW2CXFUF-uwEvo/s1600/03fig1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;251&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcmSEyRypm2-6be8hBaq_Rg43aGHpHiU433FccswGO65kkC-xXW0vUa9J2KlulbnAEyW1yylvCfADsDI8tvolrFne8m3hB_Pq5XHDqQXRyJ4QgR13G-eaBon-nz2S7z_FW2CXFUF-uwEvo/s640/03fig1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 9pt;&quot;&gt;Figure 1: Format Cells… option&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjJKwmy8WcKQCmACaOK3TQvgG6PSryIH6lFFeemNXiq-ixDE8xQI0vGTCBiG2Q9UFPqMphnZVA5RT5TyYfHS2VXG7pNJ5o_iqwp8Ec3D0oXK9_5AV-yV8gkoVr2375ITGeAccTDkoEfzqS/s1600/03fig2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;173&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjJKwmy8WcKQCmACaOK3TQvgG6PSryIH6lFFeemNXiq-ixDE8xQI0vGTCBiG2Q9UFPqMphnZVA5RT5TyYfHS2VXG7pNJ5o_iqwp8Ec3D0oXK9_5AV-yV8gkoVr2375ITGeAccTDkoEfzqS/s200/03fig2.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 9pt;&quot;&gt;Figure 2: Format Cells Window&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 9pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Z0G9gDh1H07lneYSwvQCMRgj-ml2eBJo3l7Q1pp3XpPWlqCjWpVi5F5Q6JyNs-jP_8jNa11rxXv4o2PtobWOjYEfTbwlkDkpMqGlrHh2Z-9F6gBLm_zeDUXO2Wd2Ej4Yr7h-gAy_B9pD/s1600/03fig3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Z0G9gDh1H07lneYSwvQCMRgj-ml2eBJo3l7Q1pp3XpPWlqCjWpVi5F5Q6JyNs-jP_8jNa11rxXv4o2PtobWOjYEfTbwlkDkpMqGlrHh2Z-9F6gBLm_zeDUXO2Wd2Ej4Yr7h-gAy_B9pD/s200/03fig3.png&quot; width=&quot;173&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 9pt;&quot;&gt;Figure 3: Protect Sheet Window&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw73uMFwwhUmCJiv3ID8bl0ZatrqcX6Q_LouOggU_AMbYphQvizcxjD6BgjJDxrBbIO7RVDHNoMFVdwZeWm3yG8ioVMYnkUjC6B8QJ7iVcfiYt4tODbKMZd6tg7sKHvtrm2sD-SN-rrqDZ/s1600/03fig4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;184&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw73uMFwwhUmCJiv3ID8bl0ZatrqcX6Q_LouOggU_AMbYphQvizcxjD6BgjJDxrBbIO7RVDHNoMFVdwZeWm3yG8ioVMYnkUjC6B8QJ7iVcfiYt4tODbKMZd6tg7sKHvtrm2sD-SN-rrqDZ/s640/03fig4.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: black; font-family: Verdana; font-size: 9pt;&quot;&gt;Figure 4: Protect Sheet Submenu&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/2602366052671452249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/protect-worksheet-2007.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/2602366052671452249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/2602366052671452249'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/protect-worksheet-2007.html' title='Protect Worksheet, 2007'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcmSEyRypm2-6be8hBaq_Rg43aGHpHiU433FccswGO65kkC-xXW0vUa9J2KlulbnAEyW1yylvCfADsDI8tvolrFne8m3hB_Pq5XHDqQXRyJ4QgR13G-eaBon-nz2S7z_FW2CXFUF-uwEvo/s72-c/03fig1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-8482204330055542537</id><published>2010-10-01T19:55:00.010+05:30</published><updated>2010-10-06T18:27:21.236+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Multimedia Over IP"/><category scheme="http://www.blogger.com/atom/ns#" term="RFC"/><category scheme="http://www.blogger.com/atom/ns#" term="RTCP"/><category scheme="http://www.blogger.com/atom/ns#" term="RTP"/><category scheme="http://www.blogger.com/atom/ns#" term="RTSP"/><category scheme="http://www.blogger.com/atom/ns#" term="RVSP"/><category scheme="http://www.blogger.com/atom/ns#" term="Socket Programming"/><title type='text'>Multimedia over IP - 01</title><content type='html'>&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 22pt;&quot;&gt;Multimedia over IP - Introduction&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Internet will provide means to transmit real-time multimedia data across networks. RSVP, RTP, RTCP and RTSP are the foundation of real-time services. &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjarFJaZki9snaTGWVFajRCejYgqP5MaSvEzfH8mkbsm8Kv7GbdbsBF669BBaH_s3rc8Z5N_KGm71ghpjiTkmf2FnM5e5W-zpr5QwEuuZ0dHh6vg4Fh-1z-pyabsNWgCzi7nOF33y4zoHUt/s1600/01fig1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;213&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjarFJaZki9snaTGWVFajRCejYgqP5MaSvEzfH8mkbsm8Kv7GbdbsBF669BBaH_s3rc8Z5N_KGm71ghpjiTkmf2FnM5e5W-zpr5QwEuuZ0dHh6vg4Fh-1z-pyabsNWgCzi7nOF33y4zoHUt/s320/01fig1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_ugRiJBEn576X5YDL7XjfSS-3JVh84Qj6V47NXO-2eZSSvYsFBmK_o7ipzQWoaHbWtLr_MOkDQAX5g6DeFiUg56gjRoYzkrSUlKtpgTNFLBaRvmy6HyiA4NxmCKp5eU-Dim1uwkjqR6Jy/s1600/01fig0.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;210&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_ugRiJBEn576X5YDL7XjfSS-3JVh84Qj6V47NXO-2eZSSvYsFBmK_o7ipzQWoaHbWtLr_MOkDQAX5g6DeFiUg56gjRoYzkrSUlKtpgTNFLBaRvmy6HyiA4NxmCKp5eU-Dim1uwkjqR6Jy/s320/01fig0.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Figure 1: Multimedia Communication Demand&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 18pt;&quot;&gt;&lt;strong&gt;Multimedia Networking: Goals and Challenges&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Computer networks were designed to connect computers on different locations so that they can share data and communicate. In the old days, most of the data carried on networks was textual data. Today, with the rise of multimedia and network technologies, multimedia has become an indispensable feature on the Internet. Animation, voice and video clips become more and more popular on the Internet. Multimedia networking products like Internet telephony, Internet TV, video conferencing have appeared on the market. In the future, people would enjoy other multimedia products in distance learning, distributed simulation, distributed work groups and other areas. &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;For networkers, multimedia networking is to build the hardware and software infrastructure and application tools to support multimedia transport on networks so that users can communicate in multimedia. Multimedia networking will greatly boost the use of computer as a communication tool. We believe someday multimedia networks will replace telephone, television and other inventions that had dramatically changed our life.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 14pt;&quot;&gt;&lt;strong&gt;The Real-time Challenge&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;However, multimedia networking is not a trivial task. &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc88hJFBDqKSPoThMHAbpivu-N-qC5N6RtZ-yr1uF-ISuTIozweF7R0f1BlGWYuqbECoW3nkzJU4sBHyjPn7Z8AHqK1WW8e4zTWZGgUQoVyaSm6VybWPlWGS5DBct07TuNx-JFQoM6Rv5h/s1600/01fig2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;162&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc88hJFBDqKSPoThMHAbpivu-N-qC5N6RtZ-yr1uF-ISuTIozweF7R0f1BlGWYuqbECoW3nkzJU4sBHyjPn7Z8AHqK1WW8e4zTWZGgUQoVyaSm6VybWPlWGS5DBct07TuNx-JFQoM6Rv5h/s320/01fig2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Figure 2: Mission Critical Applications&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;We can expect at least three difficulties. &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;1) First, compared with traditional textual applications, multimedia applications usually require much higher bandwidth. A typical piece of 25 second 320x240 QuickTime movie could take 2.3MB, which is equivalent to about 1000 screens of textual data. &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;2) Second, most multimedia applications require the real-time traffic. Audio and video data must be played back continuously at the rate they are sampled. If the data does not arrive in time, the playing back process will stop and human ears and eyes can easily pick up the artifact. In Internet telephony, human beings can tolerate a latency of about 250 milliseconds. If the latency exceeds this limit, the voice will sound like a call routed over a long satellite circuit and users will complain about the quality of the call. In addition to the delay, network congestion also has more serious effects on real-time traffic. If the network is congested, the only effect on non-real-time traffic is that the transfer takes longer to complete, but real-time data becomes obsolete and will be dropped if it doesn&#39;t arrive in time. If proper reaction is not taken, the retransmission of lost packets would aggravate the situation and jam the network.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;3) Third, multimedia data stream is usually bursty. Just increasing the bandwidth will not solve the burstiness problem. For most multimedia applications, the receiver has a limited buffer. If no measure is taken to smooth the data stream, it may overflow or underflow the application buffer. When data arrives too fast, the buffer will overflow and the some data packets will be lost, resulting in poor quality. When data arrives too slowly, the buffer will underflow and the application will starve.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Contrary to the high bandwidth, real-time and bursty traffic of multimedia data, in real life, networks are shared by thousands and millions of users, and have limited bandwidth, unpredictable delay and availability. How to solve these conflicts is a challenge multimedia networking must face.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;The possibility of answering this challenge comes from the existing network software architecture and fast developing hardware. The basis of Internet, TCP/IP and UDP/IP, provides a range of services that multimedia applications can use. Fast networks like Gigabit Ethernet, FDDI, and ATM provide high bandwidth required by digital audio and video.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;So the design of real-time protocols for multimedia networking becomes imperative before the multimedia age comes.&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 14pt;&quot;&gt;&lt;strong&gt;Multimedia Over Internet&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;There are other ways to transmit multimedia data, like dedicated links, cables and ATM. However, the idea of running multimedia over Internet is extremely attractive.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Dedicated links and cables are not practical because they require special installation and new software. Without an existing technology like LAN, WAN, the software development will be extremely expensive. ATM was said to be the ultimate solution for multimedia because it supports very high bandwidth, is connection-oriented and can tailor different level of quality of service to different type of applications. But at this moment, very few users have ATM networks reaching their organization; even fewer have ATM connections to their desktops.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYMGO8oMe2GzQumV_Fqe78xcHN7HkhBVVbfMSemIeDa8EBbBV4kgrxjcC-OoZU_pUSuRiRFL9pOp3-WkgF2MjA8ZluFHYRkxftk0Cl2IzGzgBACIecUN4Ld9uThZI_7eLww7vkmYHpuLrn/s1600/01fig3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYMGO8oMe2GzQumV_Fqe78xcHN7HkhBVVbfMSemIeDa8EBbBV4kgrxjcC-OoZU_pUSuRiRFL9pOp3-WkgF2MjA8ZluFHYRkxftk0Cl2IzGzgBACIecUN4Ld9uThZI_7eLww7vkmYHpuLrn/s320/01fig3.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Figure 3: Media over ATM Access&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;On the other hand, the Internet is growing exponentially. The well established LAN and WAN technologies based on IP protocol suite connect bigger and bigger networks all over the world to the Internet. In fact, Internet has become the platform of most networking activities. This is the primary reason to develop multimedia protocols over Internet. Another benefit of running multimedia over IP is that users can have integrated data and multimedia service over one single network, without investing on network hardware and building the interface between two networks.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;At current time, IP and Ethernet seem to be more favored in the desktops and LANs, with ATM in wide area networks. As a shared datagram network, Internet is not naturally suitable for real-time traffic. To run multimedia over Internet, several issues must be solved. &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;1) First, multimedia means extremely dense data and heavy traffic. The hardware has to provide enough bandwidth.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;2) Second, multimedia applications are usually related to multicast, i.e., the same data stream, not multiple copies, is sent a group of receivers. For example, in video conference, the video data need to be sent to all participants at the same time. Live video can be sent to thousands of recipients. The protocols designed for multimedia applications must take into account multicast in order to reduce the traffic.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;3) Third, the price tag attached shared network resources is unpredictable availability. But real-time applications require guaranteed bandwidth when the transmission takes place. So there must be some mechanisms for real-time applications to reserve resources along the transmission path.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;4) Fourth, Internet is a packet-switching datagram network where packets are routed independently across shared networks. The current technologies cannot guarantee that real-time data will reach the destination without being jumbled and jerky. Some new transport protocols must be used to take care of the timing issues so that audio and video data can be played back continuously with correct timing and synchronization.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;5) Fifth, there should be some standard operations for applications to manage the delivery and present the multimedia data.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 14pt;&quot;&gt;&lt;strong&gt;The Solution&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;The Internet carries all types of traffic; each type has different characteristics and requirements. For example, a file transfer application requires that some quantity of data is transferred in an acceptable amount of time, while Internet telephony requires that most packets get to the receiver in less than 0.3 seconds. If enough bandwidth is available, best-effort service fulfills all of these requirements. When resources are scarce, however, real-time traffic will suffer from the congestion.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;The solution for multimedia over IP is to classify all traffic, allocate priority for different applications and make reservations. The Integrated Services working group in the &lt;a href=&quot;http://www.ietf.org/&quot;&gt;IETF (Internet Engineering Task Force)&lt;/a&gt; developed an enhanced Internet service model called Integrated Services that includes best-effort service and real-time service, see RFC 1633. The real-time service will enable IP networks to provide quality of service to multimedia applications. Resource ReServation Protocol (RSVP), together with Real-time Transport Protocol (RTP), Real-Time Control Protocol (RTCP), Real-Time Streaming Protocol (RTSP), provides a working foundation for real-time services. Integrated Services allows applications to configure and manage a single infrastructure for multimedia applications and traditional applications. It is a comprehensive approach to provide applications with the type of service they need and in the quality they choose.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixFBk8DTLmp6Ko4xxyWAHeMuTEfwO1K23B4fdT3bt6gFHmkwq74ieZyHDq4WNeewAl80BuBKlUDuFzS0HNzcCs0ooMQdfEciitSKw2_44HxcBwPA40ggrd1_3MutDd3tUwkZE-4SIY7vBv/s1600/01fig4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;175&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixFBk8DTLmp6Ko4xxyWAHeMuTEfwO1K23B4fdT3bt6gFHmkwq74ieZyHDq4WNeewAl80BuBKlUDuFzS0HNzcCs0ooMQdfEciitSKw2_44HxcBwPA40ggrd1_3MutDd3tUwkZE-4SIY7vBv/s320/01fig4.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Figure 4: Streaming Architecture&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Figure 4 depicts a typical streaming session, in which a piece of media content is delivered from a server to a client on-demand. The client requests the media using RTSP, and receives a description of how to access and decode the media flows for this session. The media are transported using RTP/UDP, and RTCP may be used to feed reception statistics back to the server.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Let us see in depth details of these internet protocols in future articles.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/8482204330055542537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/multimedia-over-ip-01.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/8482204330055542537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/8482204330055542537'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/10/multimedia-over-ip-01.html' title='Multimedia over IP - 01'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjarFJaZki9snaTGWVFajRCejYgqP5MaSvEzfH8mkbsm8Kv7GbdbsBF669BBaH_s3rc8Z5N_KGm71ghpjiTkmf2FnM5e5W-zpr5QwEuuZ0dHh6vg4Fh-1z-pyabsNWgCzi7nOF33y4zoHUt/s72-c/01fig1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-2819880811717875098</id><published>2010-09-30T13:34:00.022+05:30</published><updated>2010-10-06T20:06:53.849+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="3D Display"/><category scheme="http://www.blogger.com/atom/ns#" term="3D Video"/><category scheme="http://www.blogger.com/atom/ns#" term="3D View"/><category scheme="http://www.blogger.com/atom/ns#" term="Advanced H.264"/><category scheme="http://www.blogger.com/atom/ns#" term="Free Viewpoint Video"/><category scheme="http://www.blogger.com/atom/ns#" term="Multiview Video Coding"/><category scheme="http://www.blogger.com/atom/ns#" term="Stereo Scope Video"/><title type='text'>Multiview Video Coding - 01</title><content type='html'>&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #17365d; font-family: Times New Roman; font-size: 22pt;&quot;&gt;Multiview Video Coding&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman; font-size: 18pt;&quot;&gt;Introduction:&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;The need for multiview video coding is driven by two recent technological developments: new 3D video/display technologies and the growing use of multi-camera arrays. A variety of companies are starting to produce 3D displays that do not require glasses and can be viewed by multiple people simultaneously. The immersive experience provided by these 3D displays are compelling and have the potential to create a growing market for 3D video and hence for multiview video compression. Furthermore, even with 2D displays, multi-camera arrays are increasingly being used to capture a scene from many angles. The resulting multiview data sets allow the viewer to observe a scene from any viewpoint and serve as another application of multiview video compression.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;In July 2008, MPEG officially approved an amendment of the ITU-T Rec. H.264 &amp;amp; ISO/IEC 14996-10 Advanced Video Coding (AVC) standard on Multiview Video Coding. MVC is an extension of the AVC/H.264 standard that provides efficient encoding or compressed representation of sequences captured simultaneously from multiple cameras by exploiting correlation among neighboring camera views. MVC is intended for encoding stereoscopic (two-view) video, as well as free viewpoint television and multi-view 3D television applications. The Stereo High profile has been standardized in June 2009; the profile is based on MVC toolset and is used in stereoscopic Blu-ray 3D releases.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;MVC stream is backward compatible with H.264/AVC, which allows older devices and software to decode stereoscopic video streams, ignoring additional information for the second view. 3D video (3DV) and free viewpoint video (FVV) are new types of visual media that expand the user&#39;s experience beyond what is offered by 2D video. 3DV offers a 3D depth impression of the observed scenery, while FVV allows for an interactive selection of viewpoint and direction within a certain operating range.&amp;nbsp; A common element of 3DV and FVV systems is the use of multiple views of the same scene that are transmitted to the user.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;The overall structure of MVC defining the interfaces is illustrated in the figure below. The&lt;span style=&quot;color: black;&quot;&gt; encoder receives &lt;em&gt;N&lt;/em&gt; temporally synchronized video streams and generates one bitstream. The decoder receives the bitstream, decodes and outputs the &lt;em&gt;N&lt;/em&gt; video signals.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUnW1U1XmbPFuViH1QF1ud9Nv9MHSGajLhBO6HJNrnqFWWOdVQnJeZSMdfFlu2R9p_WjkdgZwuXr0qk11q7ltuvTA3QcFCz7FpH1dvLJKXUBjT9leHDUOWLAUAmYg3IgtEbc7oRFRwyN7E/s1600/00fig1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;187&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUnW1U1XmbPFuViH1QF1ud9Nv9MHSGajLhBO6HJNrnqFWWOdVQnJeZSMdfFlu2R9p_WjkdgZwuXr0qk11q7ltuvTA3QcFCz7FpH1dvLJKXUBjT9leHDUOWLAUAmYg3IgtEbc7oRFRwyN7E/s320/00fig1.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Fig 1: Multiview Video Coding (MVC)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Multiview video contains a large amount of inter-view statistical dependencies, since all cameras capture the same scene from different viewpoints. Therefore, combined temporal and inter-view prediction is the key for efficient MVC. As illustrated in the figure below a picture of a certain camera can not only be predicted from temporally related pictures of the same camera. Also pictures of neighboring cameras can be used for efficient prediction.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuxhue2r8pz48SaX0MAq5jdCNOqPabzm0tDiIsctQlv8IDUIg9Vr6Q_dGVWILU8sSavIhOSTT3VMQbP7Ts2rqkOVadingShVwfFNW8XimXTxEJ2UuiDUMcM1m7B1C_dHIlV_bGrUK3ZsMS/s1600/00fig2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;177&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuxhue2r8pz48SaX0MAq5jdCNOqPabzm0tDiIsctQlv8IDUIg9Vr6Q_dGVWILU8sSavIhOSTT3VMQbP7Ts2rqkOVadingShVwfFNW8XimXTxEJ2UuiDUMcM1m7B1C_dHIlV_bGrUK3ZsMS/s320/00fig2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Fig 2: Temporal/inter-view prediction structure for MVC&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman; font-size: 18pt;&quot;&gt;Application Areas:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Stereo Scope Video&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;3D Video/Display&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Free Viewpoint Video &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 18pt;&quot;&gt;Topics Related to MVC:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Multiview Coding Structures&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Multiview Coding Tools&lt;/li&gt;
&lt;li&gt;Inter-view Prediction&lt;/li&gt;
&lt;li&gt;Illumination Compensation&lt;/li&gt;
&lt;li&gt;Disparity, Depth and 3D Geometry Coding&lt;/li&gt;
&lt;li&gt;View Interpolation Prediction&lt;/li&gt;
&lt;li&gt;Scene Analysis and View Synthesis&lt;/li&gt;
&lt;li&gt;Random Access Aspects in MVC&lt;/li&gt;
&lt;li&gt;Multiview Communication Systems&lt;/li&gt;
&lt;li&gt;Multiview Coding Applications&lt;/li&gt;
&lt;li&gt;Performance and Complexity Issues in MVC&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
.</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/2819880811717875098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/09/multiview-video-coding.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/2819880811717875098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/2819880811717875098'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/09/multiview-video-coding.html' title='Multiview Video Coding - 01'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUnW1U1XmbPFuViH1QF1ud9Nv9MHSGajLhBO6HJNrnqFWWOdVQnJeZSMdfFlu2R9p_WjkdgZwuXr0qk11q7ltuvTA3QcFCz7FpH1dvLJKXUBjT9leHDUOWLAUAmYg3IgtEbc7oRFRwyN7E/s72-c/00fig1.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-2235773891398226197</id><published>2010-09-29T07:49:00.005+05:30</published><updated>2010-10-06T20:47:03.684+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blob"/><category scheme="http://www.blogger.com/atom/ns#" term="Embedding a Video"/><category scheme="http://www.blogger.com/atom/ns#" term="How Do I?"/><category scheme="http://www.blogger.com/atom/ns#" term="One Click Video Sharing"/><category scheme="http://www.blogger.com/atom/ns#" term="One-Click Video Sharing"/><category scheme="http://www.blogger.com/atom/ns#" term="Post a video to Blog"/><category scheme="http://www.blogger.com/atom/ns#" term="youtube"/><title type='text'>Post a Video to Blog from YouTube</title><content type='html'>&lt;h2 class=&quot;answer-title&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;How do I post a video to my blog from YouTube?&lt;/span&gt;&lt;/h2&gt;&lt;div class=&quot;answer-features&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;If you&#39;ve got your own videos on your computer that you want to share on your blog, Blogger now allows you to &lt;/span&gt;&lt;span style=&quot;color: black; font-family: Verdana, sans-serif;&quot;&gt;upload video&lt;/span&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt; directly! &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcKe78wtRt7DN9X4CdaJ6cdXNCXuE21DSwaeqOGaeNCa-CWBFrUbvXQbd2brHelNOk_aMD73XRPmeiAVkzSpMuUANARENCi_dGS4xaUifqGqHRAYhVrJBcj-K7iFYVNd78ztf8WTxIPAlK/s1600/fig1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;282&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcKe78wtRt7DN9X4CdaJ6cdXNCXuE21DSwaeqOGaeNCa-CWBFrUbvXQbd2brHelNOk_aMD73XRPmeiAVkzSpMuUANARENCi_dGS4xaUifqGqHRAYhVrJBcj-K7iFYVNd78ztf8WTxIPAlK/s400/fig1.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;If you&#39;d like to share a video from &lt;/span&gt;&lt;a href=&quot;http://www.youtube.com/&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;YouTube&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;, you can do that, too.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;article_content&quot; id=&quot;article-content-div&quot;&gt;&lt;h2&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Embedding a YouTube Video&lt;/span&gt;&lt;/h2&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;To embed a video from YouTube, just copy the code from the &quot;Embed&quot; box on the video&#39;s YouTube page. You can find the &quot;Embed&quot; box in the &quot;About This Video&quot; box when you&#39;re watching the video. You can also get the code from the &quot;Embed HTML&quot; box on the &quot;Edit Video&quot; page if the video belongs to your YouTube account. Or simply right click on the video and copy the &quot;embedded html code&quot;.&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvNs_Wph3l3RYzrAcgj2NaAnEv9ldRPWEdNPi2i4angnIaAjSK-DHP4A7EzDe0H1XQhUzRPEdqr906hIa50X7wzasJtCEG_kDeZIKp9jTWWP79LIe11erheYLyRzQJRe9VyYek7fCNghuv/s1600/fig2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;251&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvNs_Wph3l3RYzrAcgj2NaAnEv9ldRPWEdNPi2i4angnIaAjSK-DHP4A7EzDe0H1XQhUzRPEdqr906hIa50X7wzasJtCEG_kDeZIKp9jTWWP79LIe11erheYLyRzQJRe9VyYek7fCNghuv/s320/fig2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;To embed a YouTube video within a blog post, first click &quot;Edit HTML&quot; from within the post editor. Next, paste the video&#39;s code into the body of your post. That&#39;s it!&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Set Up One-Click Video Sharing&lt;/span&gt;&lt;/h2&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;If you post YouTube videos to your blog regularly, sharing directly from YouTube is even easier and you&#39;ll only have to set it up once.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Click the &quot;Share&quot; button on the YouTube video&#39;s page&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Scroll down and click &quot;Setup your blog for video posting.&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Click &quot;Add a Blog/Site&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Choose &quot;Blogger&quot; as your Blog Service and fill in your Google Account login information.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;Choose which blogs you&#39;d like to add to your YouTube account. You can choose more than one.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;From now on, when you click &quot;Share&quot;, you&#39;ll be given the option to post YouTube videos directly to your blogs!&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;
if(document.getElementById(&#39;kb_ie7&#39;) != null)
showLayer(&#39;kb_ie7&#39;);
if(document.getElementById(&#39;kb_ie7_win&#39;) != null)
showLayer(&#39;kb_ie7_win&#39;);
if(document.getElementById(&#39;z_ie7&#39;) != null)
toggleZippy(&#39;z_ie7&#39;);
if(document.getElementById(&#39;z_ie7_win&#39;) != null)
toggleZippy(&#39;z_ie7_win&#39;);
if(document.getElementById(&#39;kb_ie&#39;) != null)
showLayer(&#39;kb_ie&#39;);
if(document.getElementById(&#39;kb_ie_win&#39;) != null)
showLayer(&#39;kb_ie_win&#39;);
if(document.getElementById(&#39;z_ie&#39;) != null)
toggleZippy(&#39;z_ie&#39;);
if(document.getElementById(&#39;z_ie_win&#39;) != null)
toggleZippy(&#39;z_ie_win&#39;);
if(document.getElementById(&#39;kb_win&#39;))
showLayer(&#39;kb_win&#39;);
if(document.getElementById(&#39;z_win&#39;))
toggleZippy(&#39;z_win&#39;);
if(document.getElementById(&#39;kb_winvista&#39;))
showLayer(&#39;kb_winvista&#39;);
if(document.getElementById(&#39;z_winvista&#39;))
toggleZippy(&#39;z_winvista&#39;);
if(document.getElementById(&#39;kb_IN&#39;))
showLayer(&#39;kb_IN&#39;);
if(document.getElementById(&#39;z_IN&#39;))
toggleZippy(&#39;z_IN&#39;);
if(document.getElementById(&#39;kb_non_US&#39;))
showLayer(&#39;kb_non_US&#39;);
if(document.getElementById(&#39;z_non_US&#39;))
toggleZippy(&#39;z_non_US&#39;);
&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/2235773891398226197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/09/post-video-to-blog-from-youtube.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/2235773891398226197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/2235773891398226197'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/09/post-video-to-blog-from-youtube.html' title='Post a Video to Blog from YouTube'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcKe78wtRt7DN9X4CdaJ6cdXNCXuE21DSwaeqOGaeNCa-CWBFrUbvXQbd2brHelNOk_aMD73XRPmeiAVkzSpMuUANARENCi_dGS4xaUifqGqHRAYhVrJBcj-K7iFYVNd78ztf8WTxIPAlK/s72-c/fig1.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-3336012295627755799</id><published>2010-09-29T07:35:00.003+05:30</published><updated>2010-10-06T20:43:32.200+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="How Do I?"/><category scheme="http://www.blogger.com/atom/ns#" term="Language Setting on youtube"/><category scheme="http://www.blogger.com/atom/ns#" term="youtube"/><title type='text'>Language Setting on youtube.com</title><content type='html'>&lt;span style=&quot;font-family: Verdana, sans-serif;&quot;&gt;In the main of youtube page (www.youtube.com)&lt;br /&gt;
click the &quot;भाषा&quot; at the bottom of the page, this will show you available languages... &lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI2yGtvpckGv-fOJLduEvkzGKxhEugPpeEFbSK7WoMw_mitUEZTwb3c975JrL8HsgJkrFwOwgVvUYhKlyigWg7lGMVCTOF1VHNxGjxr-BHKvYlTfTL-Jr2ZpTany10qZDZO1C36StxdTDK/s1600/fig3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;117&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI2yGtvpckGv-fOJLduEvkzGKxhEugPpeEFbSK7WoMw_mitUEZTwb3c975JrL8HsgJkrFwOwgVvUYhKlyigWg7lGMVCTOF1VHNxGjxr-BHKvYlTfTL-Jr2ZpTany10qZDZO1C36StxdTDK/s320/fig3.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;﻿&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/3336012295627755799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/09/language-setting-on-youtubecom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/3336012295627755799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/3336012295627755799'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/09/language-setting-on-youtubecom.html' title='Language Setting on youtube.com'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI2yGtvpckGv-fOJLduEvkzGKxhEugPpeEFbSK7WoMw_mitUEZTwb3c975JrL8HsgJkrFwOwgVvUYhKlyigWg7lGMVCTOF1VHNxGjxr-BHKvYlTfTL-Jr2ZpTany10qZDZO1C36StxdTDK/s72-c/fig3.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047935741097554299.post-3083319740927465487</id><published>2010-09-26T06:51:00.009+05:30</published><updated>2010-10-06T19:15:43.989+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="AVC"/><category scheme="http://www.blogger.com/atom/ns#" term="B Slice"/><category scheme="http://www.blogger.com/atom/ns#" term="H.264"/><category scheme="http://www.blogger.com/atom/ns#" term="Inter Prediction"/><category scheme="http://www.blogger.com/atom/ns#" term="Motion Vector Prediction"/><category scheme="http://www.blogger.com/atom/ns#" term="MPEG"/><category scheme="http://www.blogger.com/atom/ns#" term="MPEG4"/><category scheme="http://www.blogger.com/atom/ns#" term="P Slice"/><category scheme="http://www.blogger.com/atom/ns#" term="Skipped Mode"/><category scheme="http://www.blogger.com/atom/ns#" term="Sub-pixel Motion Vector"/><category scheme="http://www.blogger.com/atom/ns#" term="Video Codec"/><category scheme="http://www.blogger.com/atom/ns#" term="Weighted Prediction"/><title type='text'>H.264 – Inter Prediction</title><content type='html'>&lt;span xmlns=&quot;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #17365d; font-family: Times New Roman; font-size: 18pt;&quot;&gt;H.264 Video Codec - Inter Prediction&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;Inter prediction is to reduce the temporal correlation with help of motion estimation and compensation. In H.264, the current picture can be partitioned into the macroblocks or the Submacroblock. In addition to the intra macroblock coding types, various predictive or motion-compensated coding types are allowed in P slices. Each P-type macroblock is partitioned into fixed size blocks used for motion description. Partitionings with luma block sizes of 16 &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; 16, 16 &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; 8, 8 &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; 16, and 8 &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; 8 samples are supported by the syntax. When the macroblock is partitioned into four so-called sub-macroblocks each of size 8 &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; 8 luma samples, one additional syntax element is transmitted for each 8 &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; 8 sub-macroblock. This syntax element specifies whether the corresponding sub-macroblock is coded using motion-compensated prediction with luma block sizes of 8 &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; 8, 8 &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; 4, 4 &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; 8, or 4 &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; 4 samples. Figure 1 illustrates the partitioning. The prediction signal for each predictivecoded &lt;em&gt;M &lt;/em&gt;× &lt;em&gt;N &lt;/em&gt;luma block is obtained by displacing a corresponding area of a previously decoded reference picture, where the displacement is specified by a translational motion vector and a picture reference index. Thus, if the macroblock is coded using four 8 × 8 sub-macroblocks, and each sub-macroblock is coded using four 4 × 4 luma blocks, a maximum of 16 motion vectors may be transmitted for a single &lt;em&gt;P&lt;/em&gt;-slice macroblock.A macroblock of 16X16 luma samples can be partitioned into smaller block sizes up to 4X4. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi-dt2JKCAXlZhTk-3EfMihwUigBGtrXPs9TtAQuEUxRAVPqGCWtxSYhq6egMw5nRVQZC27xJG4rZepUIBX4o9MTYFTZ0RL1-1uCnGtP2TyGi50iVYY1fSUSdDSgmwwOLvlbDHkPQv5gFE/s1600/05fig1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;119&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi-dt2JKCAXlZhTk-3EfMihwUigBGtrXPs9TtAQuEUxRAVPqGCWtxSYhq6egMw5nRVQZC27xJG4rZepUIBX4o9MTYFTZ0RL1-1uCnGtP2TyGi50iVYY1fSUSdDSgmwwOLvlbDHkPQv5gFE/s320/05fig1.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Figure 1: Portioning of Macroblock an Submacroblock for Inter Prediction&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;The smaller block size requires larger number of bits to signal the motion vectors and extra data of the type of partition, however the motion compensated residual data can be reduced. Therefore, the choice of partition size depends on the input video characteristics. In general, a large partition size is appropriate for homogeneous areas of the frame and a small partition size may be beneficial for detailed areas. In former standards as MPEG-4 or H.263, only blocks of the size 16&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;16 and 8&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;8 are supported. The inter prediction process can form segmentations for motion representation as small as 4X4 luma samples in size, using motion vector accuracy of one-quarter of the luma sample. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;A displacement vector is estimated and transmitted for each block, refers to the corresponding position of its image signal in an already transmitted reference image. In former MPEG standards this reference image is the most recent preceding image. In H.264/AVC it is possible to refer to several preceding images. This technique is denoted as motion-compensated prediction with multiple reference frames. For multi-frame motion-compensated prediction, the encoder stores decoded reference pictures in a multi-picture buffer. The decoder replicates the multi-picture buffer of the encoder according to the reference picture buffering type and memory management control operations (MMCO) specified in the bitstream. Unless the size of the multi-picture buffer is set to one picture, the index at which the reference picture is located inside the multi-picture buffer has to be signaled. For this purpose, an additional picture reference index parameter has to be transmitted together with each motion vector of 16 × 16, 16 × 8, or 8 × 16 macroblock partition or 8 × 8 submacroblock. &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;The process for inter prediction of a sample block can also involve the selection of the pictures to be used as the reference pictures from a number of stored previously-decoded pictures. Reference pictures for motion compensation are stored in the picture buffer. With respect to the current picture, the pictures before and after the current picture, in the display order are stored into the picture buffer. These are classified as &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;short-term&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; and &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;long-term&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; reference pictures. Long-term reference pictures are introduced to extend the motion search range by using multiple decoded pictures, instead of using just one decoded short-term picture. Memory management is required to take care of marking some stored pictures as &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;unused&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; and deciding which pictures to delete from the buffer for efficient memory management. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman; font-size: 14pt;&quot;&gt;Sub-pixel Motion Vector:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;The motion vector precision is at the granularity of one quarter of the distance between luma samples. If the motion vector points to an integer-sample position, the prediction signal is formed by the corresponding samples of the reference picture; otherwise, the prediction signal is obtained using interpolation between integer-sample positions. Sub-pel motion compensation can provide significantly better compression performance than integer-pel compensation, at the expense of increased complexity. Quarter-pel accuracy outperforms half-pel accuracy. Especially, sub-pel accuracy would increase the coding efficiency at high bitrates and high video resolutions. In the luma component, the sub-pel samples at half-pel positions are generated first and are interpolated from neighboring integer-pel samples using a one-dimensional 6-tap FIR filter with weights (1, -5, 20, 20, -5, 1)/32, horizontally and/or vertically, which was designed to reduce aliasing components that deteriorate the interpolation and the motion compensated prediction. Once all the half-pel samples are available, each quarter-pel sample is produced using bilinear interpolation (horizontally, vertically, or diagonally) between neighboring half- or integer-pel samples. For 4:2:0 video source sampling, 1/8 pel samples are required in the chroma components (depending on the chroma format, corresponding to 1/4 pel samples in the luma). These samples are interpolated (linear interpolation) between integer-pel chroma samples. Sub-pel motion vectors are encoded differentially with respect to predicted values formed from nearby encoded motion vectors. After interpolation, block-based motion compensation is applied. As noted, however, a variety of block sizes can be considered, and a motion estimation scheme that optimizes the trade-off between the number of bits necessary to represent the video and the fidelity of the result is desirable.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPFeU7bZcVToSIMXGElOdYSIznmI0ICiheV2zmPQi2Jf4S0JS6UPfJxuS-7ykXdhjZdOJBn-1jlNZTKFO-RfEA8dv27xOqvFX-GSlCN2sUsMoJS4mrgr9seqPYxlL4BMI497NcxjGQk4MQ/s1600/05fig2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;110&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPFeU7bZcVToSIMXGElOdYSIznmI0ICiheV2zmPQi2Jf4S0JS6UPfJxuS-7ykXdhjZdOJBn-1jlNZTKFO-RfEA8dv27xOqvFX-GSlCN2sUsMoJS4mrgr9seqPYxlL4BMI497NcxjGQk4MQ/s320/05fig2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;Figure 2: Example of Integer and Sub-Pel Prediction&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman; font-size: 14pt;&quot;&gt;Skipped Mode:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;In addition to the macroblock modes described above, a P-slice macroblock can also be coded in the so-called skip mode. If a macroblock has motion characteristics that allow its motion to be effectively predicted from the motion of neighboring macroblocks, and it contains no non-zero quantized transform coefficients, then it is flagged as skipped. For this mode, neither a quantized prediction error signal nor a motion vector or reference index parameter are transmitted. The reconstructed signal is computed in a manner similar to the prediction of a macroblock with partition size 16 &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;×&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; 16 and fixed reference picture index equal to 0. In contrast to previous video coding standards, the motion vector used for reconstructing a skipped macroblock is inferred from motion properties of neighboring macroblocks rather than being inferred as zero (i.e., no motion).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman; font-size: 14pt;&quot;&gt;Weighted Prediction:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;In addition to the use of motion compensation and reference picture selection for prediction of the current picture content, weighted prediction can be used in P slices. When weighted prediction is used, customized weights can be applied as a scaling and offset to the motion-compensated prediction value prior to its use as a predictor for the current picture samples. Weighted prediction can be especially effective for such phenomena as &quot;fade-in&quot; and &quot;fade-out&quot; scenes.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman; font-size: 14pt;&quot;&gt;Motion Vector Prediction:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;After the temporal prediction, the steps of transform, quantization, scanning, and entropy coding are conceptually the same as those for I-slices for the coding of residual data (the original minus the predicted pixel values). The motion vectors and reference picture indexes representing the estimated motion are also compressed. Because, Encoding a motion vector for each partition can take a significant number of bits, especially if small partition sizes are chosen. Motion vectors for neighbouring partitions are often highly correlated and so each motion vector is predicted from vectors of nearby, previously coded partitions. A predicted vector, MVp, is formed based on previously calculated motion vectors. MVD, the difference between the current vector and the predicted vector, is encoded and transmitted. The method of forming the prediction MVp depends on the motion compensation partition size and on the availability of nearby vectors. The &lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;basic&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt; predictor is the median of the motion vectors of the macroblock partitions or subpartitions immediately above, diagonally above and to the right, and immediately left of the current partition or sub-partition. The predictor is modified if (a) 16x8 or 8x16 partitions are chosen and/or (b) if some of the neighbouring partitions are not available as predictors. If the current macroblock is skipped (not transmitted), a predicted vector is generated as if the MB was coded in 16x16 partition mode.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: 12pt;&quot;&gt;At the decoder, the predicted vector MVp is formed in the same way and added to the decoded vector difference MVD. In the case of a skipped macroblock, there is no decoded vector and so a motioncompensated macroblock is produced according to the magnitude of MVp.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5WzaHUXHJTFxKC85tz31AU5z6ReGYABzj6M6FinJcc0jOWwOH-UR9L42t0NrQ81pMOf-KNG3ZqSljjusHlOQUn3sAtAhZEfp8AqQRTZLY09OycJwGCNWuiOAq7FD78a-NBp6X_jFnvmiY/s1600/05fig2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;154&quot; px=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5WzaHUXHJTFxKC85tz31AU5z6ReGYABzj6M6FinJcc0jOWwOH-UR9L42t0NrQ81pMOf-KNG3ZqSljjusHlOQUn3sAtAhZEfp8AqQRTZLY09OycJwGCNWuiOAq7FD78a-NBp6X_jFnvmiY/s320/05fig2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;Figure 3: Multiframe Motion Compensation, I addition to the motionvector picture reference parameter also transmit.&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;﻿&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mrutyunjayahiremath.blogspot.com/feeds/3083319740927465487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/09/h264-inter-predn.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/3083319740927465487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047935741097554299/posts/default/3083319740927465487'/><link rel='alternate' type='text/html' href='http://mrutyunjayahiremath.blogspot.com/2010/09/h264-inter-predn.html' title='H.264 – Inter Prediction'/><author><name>Mrutyunjaya Hiremath</name><uri>http://www.blogger.com/profile/05006248335681833627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_MPDwkQA8H5c/TLxNjIATe1I/AAAAAAAAASQ/cm3zLTE-5OI/S220/My+Photo.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi-dt2JKCAXlZhTk-3EfMihwUigBGtrXPs9TtAQuEUxRAVPqGCWtxSYhq6egMw5nRVQZC27xJG4rZepUIBX4o9MTYFTZ0RL1-1uCnGtP2TyGi50iVYY1fSUSdDSgmwwOLvlbDHkPQv5gFE/s72-c/05fig1.jpg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>