User:Ryan Cooley/MPEG1: Difference between revisions

From Citizendium
Jump to navigation Jump to search
imported>Rcooley
(23)
No edit summary
 
(18 intermediate revisions by 3 users not shown)
Line 1: Line 1:
'''Do not make any changes to this page.'''  Work in-progress. Put any suggestions on the talk page. -RC
{{AccountNotLive}}
'''MPEG-1''' was an early [[standard]] for [[lossy]] compression of [[video]] and [[Sound recording and reproduction|audio]]. It was designed to compress [[VHS]]-quality raw digital video and CD audio down to 1.5 Mbit/s (26:1 and 6:1 compression ratios respectively)<ref name=mpeg_faqs1/> without obvious quality loss, making [[Video CD]]s, digital [[Cable television|cable]]/[[Satellite television|satellite]] TV and [[digital audio broadcasting]] (DAB) possible.<ref name=Didier_MPEG/> <ref name=kurihama89>{{Citation | first = Leonardo | last = Chiariglione | title = Kurihama 89 press release | | date=[[October 21]], [[1989]] | year = 1989 | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/meetings/kurihama89/kurihama_press.htm | accessdate = 2008-04-09 }}</ref>


'''MPEG-1''' was an early [[standard]] for [[lossy]] compression of [[video]] and [[audio]]It was designed to compress [[VHS]]-quality raw digital video and CD audio from about 43 Mbit/s down to 1.5 Mbit/s (almost 30:1)<ref name=mpeg_faqs /> without obvious (discernible) quality loss, making [[Video CD]]s and [[Digital Audio Broadcasting]] (DVB too?) possible.<ref name=Didier_MPEG /> <ref name=kurihama89>{{Citation | first = Leonardo | last = Chiariglione | title = Kurihama 89 press release | | date=[[October 21]], [[1989]] | year = 1989 | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/meetings/kurihama89/kurihama_press.htm | accessdate = 2008-04-01 }}</ref>
Today, MPEG-1 has become the most widely compatible lossy audio/video format in the world, and is used in a large number of products and technologiesPerhaps the best-known part of the MPEG-1 standard is the MP3 audio format it introduced.


Today, MPEG-1 has become  by far the most widely compatible lossy audio/video format in the world, and is used in a large number of products and technologies.  Perhaps the best-known part of the MPEG-1 standard is the MP3 audio format it introduced. 
Despite its age, MPEG-1 is not necessarily obsolete or substantially inferior to newer technologies.  According to [[Leonardo Chiariglione]] (co-founder of [[MPEG]]): "the idea that compression technology keeps on improving is a myth."<ref name=opensource>{{Citation | first = Leonardo | last = Chiariglione | title = Open source in MPEG | date=March, 2001 | year = 2001 | publisher = [[Linux Journal]] | url = http://www.chiariglione.org/leonardo/publications/linux/linux00.htm | accessdate = 2008-04-09 }}</ref>
 
Despite it's age, MPEG-1 is not necessarily obsolete or substantially inferior to newer technologies.  According to [[Leonardo Chiariglione]] (co-founder of [[MPEG]]): "the idea that compression technology keeps on improving is a myth."<ref name=opensource>{{Citation | first = Leonardo | last = Chiariglione | title = Open source in MPEG | date=[[March]], [[2001]] | year = 2001 | publisher = [[Linux Journal]] | url = http://www.chiariglione.org/leonardo/publications/linux/linux00.htm | accessdate = 2008-04-01 }}</ref>


The MPEG-1 standard is published as '''[[ISO]]/[[IEC]]-11172'''.
The MPEG-1 standard is published as '''[[ISO]]/[[IEC]]-11172'''.
Line 13: Line 12:
| icon =  
| icon =  
| logo =
| logo =
| extension = <tt>.mpg, .mpeg, .mp1, .mp2, .mp3, .m1v, .m1a, .m2a</tt>
| extension = <tt>.mpg, .mpeg, .mpe, .mp1, .mp2, .mp3, .m1v, .m1a, .m2a, .m3a, .mpa, .mpv</tt>
| mime = audio/mpeg, video/mpeg
| mime = audio/mpeg, video/mpeg
| owner = [[ISO]], [[IEC]]
| owner = [[ISO]], [[IEC]]
Line 29: Line 28:


== History ==
== History ==
Modeled on the successful collaborative approach and the compression technologies developed by the [[Joint Photographic Experts Group]] and [[CCITT]]'s [[Experts Group on Telephony]] (creators of the [[JPEG]] image compression standard and the [[H.261]] standard for [[video conferencing]] respectively) the [[MPEG]] working group was established in January 1988.<!--http://www.chiariglione.org/mpeg/about_mpeg.htm-->  MPEG was formed to address the need for [[standard]] video and audio encoding formats, and build on H.261 to get better quality through the use of more complex (non-[[real time]]) encoding methods.<ref name=Didier_MPEG>{{Citation | first = Didier | last = Le Gall | title = MPEG: a video compression standard for multimedia applications | pages = | date=[[April]], [[1991]] | year = 1991 | publisher = [[Communications of the ACM]] | url = http://www.cis.temple.edu/~vasilis/Courses/CIS750/Papers/mpeg_6.pdf | accessdate = 2008-04-01 }}</ref> <ref name=bmrc_mpeg2_faq>{{Citation | first = Chad | last = Fogg | title = MPEG-2 FAQ | date=[[April 2]], [[1996]] | year = 1996 | publisher = [[University of California, Berkeley]] | url = http://bmrc.berkeley.edu/research/mpeg/faq/mpeg2-v38/faq_v38.html | accessdate = 2008-04-01 }}</ref>  
Modeled on the successful collaborative approach and the compression technologies developed by the [[Joint Photographic Experts Group]] and [[CCITT]]'s [[Experts Group on Telephony]] (creators of the [[JPEG]] image compression standard and the [[H.261]] standard for [[video conferencing]], respectively) the [[Moving Picture Experts Group]] (MPEG) working group was established in January 1988.<!--http://www.chiariglione.org/mpeg/about_mpeg.htm-->  MPEG was formed to address the need for [[standard]] video and audio formats, and build on H.261 to get better quality through the use of more complex (non-[[real time]]) encoding methods.<ref name=Didier_MPEG>{{Citation | first = Didier | last = Le Gall | title = MPEG: a video compression standard for multimedia applications | pages = | date=April, 1991 | year = 1991 | publisher = [[Communications of the ACM]] | url = http://www.cis.temple.edu/~vasilis/Courses/CIS750/Papers/mpeg_6.pdf | accessdate = 2008-04-09 }}</ref> <ref name=bmrc_mpeg2_faq>{{Citation | first = Chad | last = Fogg | title = MPEG-2 FAQ | date=[[April 2]], [[1996]] | year = 1996 | publisher = [[University of California, Berkeley]] | url = http://bmrc.berkeley.edu/research/mpeg/faq/mpeg2-v38/faq_v38.html | accessdate = 2008-04-09 }}</ref>  


Development of the MPEG-1 standard began in [[May 1988]].  14 video and 14 audio codec proposals were submitted by individual companies and institutions for evaluation.  The codecs were extensively tested for [[computational complexity]] and [[Subjectivity|subjective]] (human perceived) quality, at data rates of 1.5 Mbit/s.  This specific bitrate was chosen for transmission over [[Digital Signal 1|T-1]]/[[E-carrier|E-1]] lines and the approximate data rate of [[CDDA|audio CDs]].<ref name=opensource />  The codecs that excelled in this testing were utilized as the basis for the standard and refined further, with additional features and other improvements being incorporated in the process.<ref name=santa_clara90>{{Citation | first = Leonardo | last = Chiariglione | first2 = Didier | last2 = Le Gall | first3 = Hans-Georg | last3 = Musmann | first4 = Allen | last4 = Simon | title = Press Release - Status report of ISO MPEG | date=[[September]], [[1990]] | year = 1990 | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/meetings/santa_clara90/santa_clara_press.htm  | accessdate = 2008-04-01 }}</ref>  
Development of the MPEG-1 standard began in May 1988.  14 video and 14 audio codec proposals were submitted by individual companies and institutions for evaluation.  The codecs were extensively tested for [[computational complexity]] and [[Subjectivity|subjective]] (human perceived) quality, at data rates of 1.5 Mbit/s.  This specific bitrate was chosen for transmission over [[Digital Signal 1|T-1]]/[[E-carrier|E-1]] lines and as the approximate data rate of [[Red Book (audio CD standard)|audio CDs]].<ref name=opensource/>  The codecs that excelled in this testing were utilized as the basis for the standard and refined further, with additional features and other improvements being incorporated in the process.<ref name=santa_clara90>{{Citation | first = Leonardo | last = Chiariglione | first2 = Didier | last2 = Le Gall | first3 = Hans-Georg | last3 = Musmann | first4 = Allen | last4 = Simon | title = Press Release - Status report of ISO MPEG | date=September, 1990 | year = 1990 | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/meetings/santa_clara90/santa_clara_press.htm  | accessdate = 2008-04-09 }}</ref>  


After 20 meetings of the full group in various cities around the world, and 4 <sup>1</sup>/<sub>2</sub> years of development and testing, the final standard was approved in early [[November 1992]] and published a few months later.<ref name=mpeg_meetings>{{Citation | title = Meetings | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/meetings.htm | accessdate = 2008-04-01 }}</ref>  The completion date for the MPEG-1 standard, as commonly reported, varies greatly because a largely complete draft standard was produced in [[September 1990]], and from that point on, only minor changes were introduced.<ref name=Didier_MPEG />  In [[July 1990]], before the first draft of the MPEG-1 standard had even been written, work began on a second standard, [[MPEG-2]],<ref name=mpeg_achievements>{{Citation | first = | last = | title = Achievements | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/achievements.htm | accessdate = 2008-04-03 }}</ref> intended to extend MPEG-1 technology to provide full broadcast-quality video at high bitrates (3 - 15 Mbit/s), and support for [[interlaced]] video.<ref name=london92>{{Citation | first = Leonardo | last = Chiariglione | title = MPEG Press Release, London, 6 November 1992 | date=[[November 06]], [[1992]] | year = 1992 | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/meetings/london/london_press.htm | accessdate = 2008-04-01 }}</ref>  Due in part to the similarity between the two codecs, the MPEG-2 standard included full backwards compatibility with MPEG-1 video, so any MPEG-2 decoder can play MPEG-1 videos.<ref name=sydney93>{{Citation | first = Greg | last = Wallace | title = Press Release | date=[[April 02]], [[1993]] | year = 1993 | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/meetings/sydney93/sydney_press.htm | accessdate = 2008-04-03 }}</ref>
After 20 meetings of the full group in various cities around the world, and years of development and testing, the final standard (for parts 1-3) was approved in early November 1992 and published a few months later.<ref name=mpeg_meetings>{{Citation | title = Meetings | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/meetings.htm | accessdate = 2008-04-09 }}</ref>  The reported completion date of the MPEG-1 standard, varies greatly...  A largely complete draft standard was produced in September 1990, and from that point on, only minor changes were introduced.<ref name=Didier_MPEG/>  In July 1990, before the first draft of the MPEG-1 standard had even been written, work began on a second standard, [[MPEG-2]],<ref name=mpeg_achievements>{{Citation | first = | last = | title = Achievements | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/achievements.htm | accessdate = 2008-04-03 }}</ref> intended to extend MPEG-1 technology to provide full broadcast-quality video (as per [[CCIR_601|CCIR-601]]) at high bitrates (3 - 15 Mbit/s), and support for [[interlaced]] video.<ref name=london92>{{Citation | first = Leonardo | last = Chiariglione | title = MPEG Press Release, London, 6 November 1992 | date=[[November 06]], [[1992]] | year = 1992 | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/meetings/london/london_press.htm | accessdate = 2008-04-09 }}</ref>  Due in part to the similarity between the two codecs, the MPEG-2 standard includes full backwards compatibility with MPEG-1 video, so any MPEG-2 decoder can play MPEG-1 videos.<ref name=sydney93>{{Citation | first = Greg | last = Wallace | title = Press Release | date=[[April 02]], [[1993]] | year = 1993 | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/meetings/sydney93/sydney_press.htm | accessdate = 2008-04-09 }}</ref>


Notably, the MPEG-1 standard very strictly defines the [[bitstream]], and decoder function, but does not define how MPEG-1 encoding is to be performed (although they did provide a reference implementation: '''[[ISO]]/[[IEC]]-11172-5''').  This means that MPEG-1 [[coding efficiency]] can drastically vary depending on the encoder used, and generally means that newer encoders perform significantly better than their predecessors.
Notably, the MPEG-1 standard very strictly defines the [[bitstream]], and decoder function, but does not define how MPEG-1 encoding is to be performed (although a reference implementation is provided in '''ISO/IEC-11172-5''').<ref name=mpeg_faqs1/> This means that MPEG-1 [[coding efficiency]] can drastically vary depending on the encoder used, and generally means that newer encoders perform significantly better than their predecessors.<ref name=mpeg_faqs2/>


== Applications ==   
== Applications ==   
*MPEG-1 Video and Layer I/II audio can be implemented without payment of license fees.<ref name=dvd_royalty>{{Citation | title = ODS Receives DVD Royalty Clarification by German Court | date=[[December 08]], [[2006]] | year = 2006 | publisher = [[emedialive.com]] | url = http://www.emedialive.com/Articles/ReadArticle.aspx?ArticleID=12165 | accessdate = 2008-04-01 }}</ref> <ref name=video_resolution>{{Citation | first = Jan | last = Ozer | title = Choosing the Optimal Video Resolution: The MPEG-2 Player Market | pages = | date=[[October 12]], [[2001]] | year = 2001 | publisher = [[extremetech.com]] | url = http://www.extremetech.com/article2/0,1697,1153916,00.asp | accessdate = 2008-04-01 }}</ref> <ref name=snazzizone>{{Citation | title = Comparison between MPEG 1 & 2 | publisher = [[snazzizone.com]] | url = http://www.snazzizone.com/TP09.html | accessdate = 2008-04-01 }}</ref> <ref name=>{{Citation | title = MPEG 1 And 2 Compared | date = 2003 | year = 2003 | publisher = [[Pure Motion Ltd.]] | url = http://213.130.34.82/resources/technical/mpegcompared/index.htm | accessdate = 2008-04-01 }}</ref>  Due to its age, many of the patents on the technology have expired.
*Most popular [[computer software]] for video playback includes MPEG-1 decoding, in addition to any other supported formats.
*Most computer software for video playback includes MPEG-1 decoding, in addition to any other supported formats.
*MPEG-1 video and Layer I/II audio can be implemented without payment of license fees.<ref name=video_resolution>{{Citation | first = Jan | last = Ozer | title = Choosing the Optimal Video Resolution: The MPEG-2 Player Market | pages = | date=[[October 12]], [[2001]] | year = 2001 | publisher = [[extremetech.com]] | url = http://www.extremetech.com/article2/0,1697,1153916,00.asp | accessdate = 2008-04-09 }}</ref> <ref name=snazzizone>{{Citation | title = Comparison between MPEG 1 & 2 | publisher = [[snazzizone.com]] | url = http://www.snazzizone.com/TP09.html | accessdate = 2008-04-09 }}</ref> <ref name=>{{Citation | title = MPEG 1 And 2 Compared | date = 2003 | year = 2003 | publisher = [[Pure Motion Ltd.]] | url = http://213.130.34.82/resources/technical/mpegcompared/index.htm | accessdate = 2008-04-09 }}</ref>  Due to its age, many of the patents on the technology have expired.
*The popularity of [[MP3]] audio has established a massive [[installed base]] of hardware that can playback MPEG-1 audio (all 3 layers).   
*The popularity of [[MP3]] audio has established a massive [[installed base]] of hardware that can playback MPEG-1 Audio.   
*Millions of portable [[digital audio]] [[digital audio players|players]] can playback MPEG-1 audio.
*"Virtually all [[digital audio players|digital audio devices]]" can playback MPEG-1 Audio.<ref name=mpeg1_audio/>  Many millions have been sold to-date.
*The widespread popularity of MPEG-2 with broadcasters means MPEG-1 is playable by most digital cable/satellite set-top boxes, and digital disc and tape players, due to backwards compatibility.
*Before MPEG-2 became widespread, many digital satellite/cable TV services used MPEG-1 exclusively.<ref name=mpeg_faqs2>{{Citation | first = Harald | last = Popp | first2 = Morten | last2 = Hjerde | title = MPEG-FAQ: multimedia compression [2/9] | date=[[November 09]], [[1996]] | year = 1996 | publisher = [[faqs.org]] | url = http://www.faqs.org/faqs/mpeg-faq/part2/ | accessdate = 2008-04-10 }}</ref> <ref name=bmrc_mpeg2_faq/> 
*MPEG-1 is the exclusive video and audio format used on [[Video CD]]s (VCD), the first [[consumer]] digital video format, and still a very popular format around the world.
*The widespread popularity of MPEG-2 with broadcasters means MPEG-1 is playable by most digital cable and satellite [[set-top box]]es, and digital disc and tape players, due to backwards compatibility.
*The [[Super Video CD]] standard, based on VCD, uses MPEG-1 audio exclusively, as well as MPEG-2 video.
*MPEG-1 is the exclusive video and audio format used on [[Video CD]] (VCD), the first [[consumer]] digital video format, and still a very popular [[home video]] format around the world.
*[[DVD Video]] uses MPEG-2 video primarily, but MPEG-1 support is explicitly defined/specified in the standard.   
*The [[Super Video CD]] standard, based on VCD, uses MPEG-1 Audio exclusively, as well as MPEG-2 video.
*The [[DVD Video]] standard originally required MPEG-1 Layer II audio for PAL countries, but was changed to allow AC-3/[[Dolby Digital]]-only discs.  MPEG-1 Layer II audio is still allowed on DVDs, although newer extensions to the format like [[MPEG Multichannel]] and [[variable bitrate]] (VBR), are rarely supported.   
*The [[DVD-Video]] format uses MPEG-2 video primarily, but MPEG-1 support is explicitly defined in the standard.   
*The [[DVD-Video]] standard originally required MPEG-1 Layer II audio for PAL countries, but was changed to allow AC-3/[[Dolby Digital]]-only discs.  MPEG-1 Layer II audio is still allowed on DVDs, although newer extensions to the format, like [[MPEG Multichannel]], are rarely supported.   
*Most DVD players also support [[Video CD]] and [[MP3 CD]] playback, which use MPEG-1.
*Most DVD players also support [[Video CD]] and [[MP3 CD]] playback, which use MPEG-1.
*The international [[Digital Video Broadcasting]] (DVB) standard primarily uses MPEG-1 Layer II audio, as well as MPEG-2 video.
*The international [[Digital Video Broadcasting]] (DVB) standard primarily uses MPEG-1 Layer II audio, and MPEG-2 video.
*The international [[Digital Audio Broadcasting]] (DAB) standard uses MPEG-1 Layer II audio exclusively, due to error resilience and low complexity of decoding.
*The international [[Digital Audio Broadcasting]] (DAB) standard uses MPEG-1 Layer II audio exclusively, due to MP2's especially high quality, modest decoder performance requirements, and tolerance of errors.
*MPEG-1 Layer II audio, with [[MPEG Multichannel]] extensions, was proposed for use in the [[ATSC]] [[digital TV]] broadcasting standard, but [[Dolby Digital]] (aka. AC-3, A/52) was chosen instead.  This is a matter of significant controversy, as it has been revealed that the organizations (The [[Massachusetts Institute of Technology]] and [[Zenith Electronics]]) behind 2 of the 4 voting board members received tens of millions of dollars of compensation from secret deals with [[Dolby Laboratories]] in exchange for their votes.<ref name=mit_atsc>{{Citation | first = Keith J. | last = Winstein | title = MIT Getting Millions For Digital TV Deal | date=[[November 8]], [[2002]] | year = 2002 | publisher = [http://www-tech.mit.edu The Tech] | url = http://www-tech.mit.edu/V122/N54/54hdtv.54n.html | accessdate = 2008-04-01 }}</ref>  
 
 
== Systems ==
Part 1 of the MPEG-1 standard covers ''systems'', and is defined in '''ISO/IEC-11172-1'''. 
 
MPEG-1 Systems specifies the logical layout and methods used to store the encoded audio, video, and other data into a standard bitstream, and to maintain synchronization between the different contents.  This [[file format]] is specifically designed for storage on media, and transmission over [[Channel (communications)|data channels]], that are considered relatively reliable.  Only limited error protection is defined by the standard, and small errors in the bitstream may cause noticeable defects. 
 
This structure was later named a [[program stream]]:  "The MPEG-1 Systems design is essentially identical to the MPEG-2 Program Stream structure."<ref name=mpeg1_systems>{{Citation | first = Leonardo | last = Chiariglione | title = MPEG-1 Systems | date= | year = | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/faq/mp1-sys/mp1-sys.htm | accessdate = 2008-04-09 }}</ref> This terminology is more popular, precise (differentiates it from a [[transport stream]]) and will be used here.
 
=== Elementary Streams ===
'''Elementary streams''' ('''ES''') are the raw bitstreams of MPEG-1 audio and video, output by an encoder.  These files can be distributed on their own, such as is the case with MP3 files.
 
Additionally, elementary streams can be made more robust by [[packet]]izing them, i.e. dividing them into independent chunks, and adding a [[cyclic redundancy check]] (CRC) [[checksum]] to each segment for error detection.  This is the '''Packetized Elementary Stream''' (PES) structure.
 
'''System Clock Reference''' (SCR) is a timing value stored in a 33-bit header of each ES, at a frequency/precision of 90 kHz, with an extra 9-bit extension that stores additional timing data with a precision of 27 MHz.<ref name=pack_header>{{Citation | first = | last = | title = Pack Header | date= | year = | publisher = | url = http://dvd.sourceforge.net/dvdinfo/packhdr.html | accessdate = 2008-04-07 }}</ref> <ref name=tutorial_stc>{{Citation | first = Mark | last = Fimoff | first2 = Wayne E. | last2 = Bretl | title = MPEG2 Tutorial | pages = | date= [[December 1]], [[1999]] | year = 1999 | publisher = | url = http://www.bretl.com/mpeghtml/STC.HTM | accessdate = 2008-04-09 }}</ref>  These are inserted by the encoder, derived from the system time clock (STC).  Simultaneously encoded audio and video streams will not have identical SCR values, however, due to buffering, encoding, jitter, and other delay.
 
=== Program Streams ===
'''Program Streams''' (PS) are concerned with combining multiple '''packetized elementary streams''' (usually just one audio and video PES) into a single stream, ensuring simultaneous delivery, and maintaining synchronization.  The PS structure is known as a [[multiplex]], or a [[container format]].
 
'''Program time stamps''' (PTS) exist in PS to correct this disparity between audio and video SCR values (time-base correction).  90 kHz PTS values in the PS header tell the decoder which video SCR values match which audio SCR values.<ref name=pack_header/>  PTS determines when to display a portion of a MPEG program, and is also used by the decoder to determine when data can be discarded from the [[data buffer|buffer]].<ref name=tutorial_pts>{{Citation | first = Mark | last = Fimoff | first2 = Wayne E. | last2 = Bretl | title = MPEG2 Tutorial | date= [[December 1]], [[1999]] | year = 1999 | publisher = | url = http://www.bretl.com/mpeghtml/PTS.HTM | accessdate = 2008-04-09 }}</ref>  Either video or audio will be delayed by the decoder until the corresponding segment of the other arrives and can be decoded. 
 
PTS handling can be problematic.  Decoders must accept multiple ''program streams'' that have been concatenated (joined  sequentially).  This causes PTS values in the middle of the video to reset to zero, which then begin incrementing again.  Such PTS wraparound disparities can cause timing issues that must be specially handled by the decoder.
 
'''Display Time Stamps''' (DTS), additionally, are required because of B-frames.  With B-frames in the video stream, adjacent frames have to be encoded and decoded out-of-order (re-ordered frames).  DTS is quite similar to PTS, but instead of just handling sequential frames, it contains the proper time-stamps to tell the decoder when to decode and display the next B-frame, ahead of its anchor (P- or I-) frame.  Without B-frames in the video, PTS and DTS values are identical.<ref name=tutorial_dts>{{Citation | first = Mark | last = Fimoff | first2 = Wayne E. | last2 = Bretl | title = MPEG2 Tutorial | date= [[December 1]], [[1999]] | year = 1999 | publisher = | url = http://www.bretl.com/mpeghtml/DTS.HTM | accessdate = 2008-04-09 }}</ref>
 
=== Multiplexing ===
To generate the PS, the multiplexer will [[interleave]] the (two or more) packetized elementary streams. This is done so the packets of the simultaneous streams can be transferred over the same [[Channel (communications)|channel]] and are guaranteed to both arrive at the decoder at precisely the same time. This is a case of [[time-division multiplexing]].
 
Determining how much data from each stream should be in each interleaved segment (the size of the interleave) is complicated, yet an important requirement.  Improper interleaving will result in buffer underflows or overflows, as the receiver gets more of one stream than it can store (eg. audio), before it gets enough data to decode the other simultaneous stream (eg. video).  The MPEG '''Video Buffer Verifier''' (VBV) assists in determining if a multiplexed PS can be decoded by a device with a specified data throughput rate and buffer size.<ref name=tutorial_vbv>{{Citation | first = Mark | last = Fimoff | first2 = Wayne E. | last2 = Bretl | title = MPEG2 Tutorial | pages = | date= [[December 1]], [[1999]] | year = 1999 | publisher = | url = http://www.bretl.com/mpeghtml/VBV.HTM | accessdate = 2008-04-09 }}</ref> This offers feedback to the muxer and the encoder, so that they can change the mux size or adjust bitrates as needed for compliance. 
 
The PS, additionally, stores [[aspect ratio]] information which tells the decoder how much to stretch the height or width of a video when displaying it.  Different display devices (such as [[computer monitor]]s and [[television]]s) have different pixel heights/widths, which will result in video encoded for one appearing "squished" when played on the other, unless the aspect ratio information in the PS is used to compensate.
 


== Video ==
== Video ==
Part 2 of the MPEG-1 standard covers video and is defined in '''[[ISO]]/[[IEC]]-11172-2'''.   
Part 2 of the MPEG-1 standard covers video and is defined in '''ISO/IEC-11172-2'''.   
 
MPEG-1 Video exploits perceptual compression methods to significantly reduce the data rate required by a video stream.  It reduces or completely discards information in certain frequencies and areas of the picture that the human eye has limited ability to fully perceive.  It also utilizes effective methods to exploit temporal (over time) and spatial (across a picture) redundancy common in video, to achieve better data compression than would be possible otherwise.  (See: [[Video compression]])


=== Color Space ===
=== Color Space ===
[[Image:Yuvformats420sampling.svg|thumb|right|Example of 4:2:0 subsampling.  The center circles represent chroma/color pixels, while the 4 outside circles represent the luma/brightness.]]
[[Image:Yuvformats420sampling.svg|thumb|right|Example of 4:2:0 subsampling.  The 2 overlapping center circles represent chroma blue and chroma red (color) pixels, while the 4 outside circles represent the luma (brightness).]]


Before encoding video to MPEG-1 the color-space is transformed to [[Y'CbCr]] (Y'=Luma, Cb=Chroma Blue, Cr=Chroma Red).  [[Luma (video)|Luma]] (brightness, resolution) is stored separately from [[Chrominance|chroma]] (color, hue, phase) and even further separated into red and blue components.  The chroma is also subsampled to [[4:2:0]], meaning it is [[Decimation (signal processing)|decimated]] by half vertically and half horizontally, to just one quarter the resolution of the video.
Before encoding video to MPEG-1 the color-space is transformed to [[Y'CbCr]] (Y'=Luma, Cb=Chroma Blue, Cr=Chroma Red).  [[Luma (video)|Luma]] (brightness, resolution) is stored separately from [[Chrominance|chroma]] (color, hue, phase) and even further separated into red and blue components.  The chroma is also subsampled to [[4:2:0]], meaning it is [[Decimation (signal processing)|decimated]] by one half vertically and one half horizontally, to just one quarter the resolution of the video.<ref name=mpeg_faqs1/>


Y'CbCr is often inaccurately called [[YUV]] which is actually only used in the domain of analog video signalsSimilarly, the terms [[luminance]] and [[chrominance]] are often used instead of the more accurate/appropriate terms luma and chroma.  
Because the human eye is much less sensitive to small changes in color than in brightness, [[chroma subsampling]] is a very effective way to reduce the amount of video data that needs to be compressedOn videos with fine detail (high [[Spatial_frequency#Visual_perception|spatial complexity]]) this can manifest as chroma [[aliasing]] artifacts.  Compared to other digital [[compression artifact]]s, this issue seems to be very rarely a source of annoyance.


Because the human eye is much less sensitive to small changes in color than in brightness, [[chroma subsampling]] is a very effective way to reduce the amount of video data that needs to be compressed.  On videos with fine details (high [[Spatial_frequency#Visual_perception|spatial complexity]]) this can manifest as chroma [[aliasing]] artifacts.  Compared to other digital [[compression artifact]]s, this issue seems to be very rarely a source of annoyance.
Because of subsampling, Y'CbCr video must always be stored using even dimensions ([[divisible]] by 2), otherwise chroma mismatch ("ghosts") will occur, and it will appear as if the color is ahead of, or behind the rest of the video, much like a shadow.


Because of subsampling, Y'CbCr video must always be stored using even dimensions ([[divisible]] by 2), otherwise chroma mismatch ("ghosts") will occur, and it will appear as if the color is ahead of, or behind the rest of the video, much like a shadow.
Y'CbCr is often inaccurately called [[YUV]] which is only used in the domain of [[Analog transmission|analog]] video signals.  Similarly, the terms [[luminance]] and [[chrominance]] are often used instead of the (more accurate) terms luma and chroma.


=== Resolution ===
=== Resolution/Bitrate ===
MPEG-1 supports resolutions up to 4095&times;4095, and bitrates up to 100 Mbit/sec.<ref name=bmrc_mpeg2_faq />  
MPEG-1 supports resolutions up to 4095&times;4095 (12-bits), and bitrates up to 100 Mbit/s.<ref name=bmrc_mpeg2_faq/>  


MPEG-1 videos are most commonly found using [[Source Input Format]] (SIF) resolutions: 352x240, 352x288, or 320x240. These low resolutions, combined with a bitrate less than 1.5 Mbit/s, makes up what is known as a [[constrained parameters bitstream]].  This is the minimum video specifications any [[decoder]] should be able to play, to be considered MPEG-1 [http://en.wiktionary.org/wiki/compliant compliant].  This was selected to provide a good balance between quality and performance, allowing the use of reasonably inexpensive hardware of the time.<ref name=Didier_MPEG /> <ref name=bmrc_mpeg2_faq />
MPEG-1 videos are most commonly seen using [[Source Input Format]] (SIF) resolution: 352x240, 352x288, or 320x240. These low resolutions, combined with a bitrate less than 1.5 Mbit/s, make up what is known as a [[constrained parameters bitstream]] (CPB), later renamed the "Low Level" (LL) profile in MPEG-2.  This is the minimum video specifications any [[decoder]] should be able to handle, to be considered MPEG-1 [[wikt:compliant|compliant]].  This was selected to provide a good balance between quality and performance, allowing the use of reasonably inexpensive hardware of the time.<ref name=Didier_MPEG/> <ref name=bmrc_mpeg2_faq/>


=== Frame/Picture/Block Types ===
=== Frame/Picture/Block Types ===
MPEG-1 has several frame/picture types that serve different purposes.  The most important, yet simplest are '''I-frames'''. 
==== I-Frames ====
==== I-Frames ====
MPEG-1 has several frame and picture types.  The first, most important, yet simplest are '''I-frames'''
'''I-frame''' is an abbreviation for '''[[wikt:intra-|Intra-]]frame''', so-called because they can be decoded independently of any other frames.  They may also be known as '''I-pictures''', or '''keyframes''' due to their somewhat similar function to the [[key frame]]s used in animation.  I-frames can be considered effectively identical to baseline [[JPEG]] images.<ref name=bmrc_mpeg2_faq/>
 
I-frame is an abbreviation for '''[http://en.wiktionary.org/wiki/intra- Intra-frame]''', so-called because they can be decoded independently of any other frames.  They may also be known as '''I-pictures''', or '''keyframes''' due to their somewhat similar function to the [[key frame]]s used in animation.  I-frames can be considered effectively identical to baseline [[JPEG]] images.<ref name=bmrc_mpeg2_faq />


High-speed seeking through an MPEG-1 video is only possible to the nearest I-frame.  When cutting a video it is not possible to start playback of a segment of video before the first I-frame in the segment (at least not without computationally-intensive re-encoding).  For this reason, I-frame only MPEG videos are used in editing applications.
High-speed seeking through an MPEG-1 video is only possible to the nearest I-frame.  When cutting a video it is not possible to start playback of a segment of video before the first I-frame in the segment (at least not without computationally-intensive re-encoding).  For this reason, I-frame-only MPEG videos are used in editing applications.


I-frame only compression is very fast, but produces very large file sizes, on the order of a factor of 3&times; (or more) larger than normally encoded MPEG-1 video.<ref name=Didier_MPEG />  I-frame only MPEG-1 video is very similar to [[MJPEG]] video, so much so that very high-speed and nearly lossless (except rounding errors) conversion can be made from one format to the other, provided a couple restrictions (color space and quantizer table) are followed in the creation of the original bitstream.<ref name=smith_transcoding>{{Citation | first = Soam | last = Acharya | first2 = Brian | last2 = Smith | title = Compressed Domain Transcoding of MPEG | pages = 3 | year = 1998 | publisher = [[Cornell University]], [[IEEE Computer Society]], [[IEEE International Conference on Multimedia Computing and Systems|ICMCS]] | url = http://citeseer.ist.psu.edu/acharya98compressed.html | accessdate = 2008-04-01 }} - (Requires clever reading: says quantization tables differ, but those are just defaults, and selectable)</ref>  
I-frame only compression is very fast, but produces very large file sizes: a factor of 3&times; (or more) larger than normally encoded MPEG-1 video, depending on how temporally complex a specific video is.<ref name=Didier_MPEG/>  I-frame only MPEG-1 video is very similar to [[MJPEG]] video.  So much so that very high-speed and theoretically lossless (in reality, there are rounding errors) conversion can be made from one format to the other, provided a couple restrictions (color space and quantization matrix) are followed in the creation of the bitstream.<ref name=smith_transcoding>{{Citation | first = Soam | last = Acharya | first2 = Brian | last2 = Smith | title = Compressed Domain Transcoding of MPEG | pages = 3 | year = 1998 | publisher = [[Cornell University]], [[IEEE Computer Society]], [[IEEE International Conference on Multimedia Computing and Systems|ICMCS]] | url = http://citeseer.ist.psu.edu/acharya98compressed.html | accessdate = 2008-04-09 }} - (Requires clever reading: says quantization matrices differ, but those are just defaults, and selectable)</ref>  


The length between I-frames is known as the [[group of pictures]] (GOP) size.  MPEG-1 most commonly uses a GOP size of 12-15ie. 1 I-frame for every 11-14 non-I-frames (some combination of P-frames and B-frames).  With more intelligent encoders, GOP size is dynamically chosen, up to some pre-selected maximum limit.<ref name=bmrc_mpeg2_faq />
The length between I-frames is known as the [[group of pictures]] (GOP) size.  MPEG-1 most commonly uses a GOP size of 15-18i.e. 1 I-frame for every 14-17 non-I-frames (some combination of P- and B- frames).  With more intelligent encoders, GOP size is dynamically chosen, up to some pre-selected maximum limit.<ref name=bmrc_mpeg2_faq/> This is known as '''scene change detection'''. 


Limits are placed on the maximum number of frames between I-frames due to decoding complexing, decoder buffer size, seeking ability, and and accumulation of IDCT errors in low-precision implementations common in hardware decoders.
Limits are placed on the maximum number of frames between I-frames due to decoding complexing, decoder buffer size, recovery time after data errors, seeking ability, and accumulation of IDCT errors in low-precision implementations most common in hardware decoders (See: [[IEEE]] 1180-1990).


==== P-frames ====
==== P-frames ====
'''P-frame''' is an abbreviation for '''Predicted-frame'''.  They may also be known as '''forward-predicted frames''', or '''[http://en.wiktionary.org/wiki/intra- intra-frames]''' (B-frames are also intra-frames).
'''P-frame''' is an abbreviation for '''Predicted-frame'''.  They may also be called '''forward-predicted frames''', or '''[[wikt:inter-|inter-]]frames''' (B-frames are also inter-frames).


P-frames exist to improve compression by exploiting the [http://en.wiktionary.org/wiki/temporal temporal] (over time) [http://en.wiktionary.org/wiki/redundancy redundancy] in a video.  P-frames store only the ''difference'' in image from the frame (either an I-frame or P-frame) immediately preceding it (this reference frame is also called the ''[[Anchoring|anchor]] frame'').  This is called [[conditional replenishment]].   
P-frames exist to improve compression by exploiting the [[wikt:temporal|temporal]] (over time) [[wikt:redundancy|redundancy]] in a video.  P-frames store only the ''difference'' in image from the frame (either an I-frame or P-frame) immediately preceding it (this reference frame is called the ''[[wikt:anchor|anchor]] frame'').   


The difference between a P-frame and it's anchor frame is calculated using ''motion vectors'' on each ''macroblock'' of the frame (see below).  Motion vector data will be embedded in the P-frame for use by the decoder.   
The difference between a P-frame and its anchor frame is calculated using ''motion vectors'' on each ''macroblock'' of the frame (see below).  Such motion vector data will be embedded in the P-frame for use by the decoder.   


If a reasonable match is found, the block from the previous frame is used, and any ''prediction error'' (difference between the predicted block and the actual video) is encoded and stored in the P-frame.  If a reasonably close match from the previous frame for a block cannot be found, the block will be intra-coded (storing the block as an image, in full).  A P-frame can contain any number of intra-coded blocks, in addition to any forward-predicted blocks.<ref name=hp_transcoding />
A P-frame can contain any number of intra-coded blocks, in addition to any forward-predicted blocks.<ref name=hp_transcoding/>


If a video drastically changes from one frame to the next (such as a [[scene change]]), it can be more efficient to encode it as an I-frame.   
If a video drastically changes from one frame to the next (such as a [[scene change]]), it is more efficient to encode it as an I-frame.   


==== B-frames ====
==== B-frames ====
'''B-frame''' stands for '''bidirectional-frame'''.  They may also be known as backwards-predicted frames or B-pictures.  B-frames are quite similar to P-frames, except they can make predictions using either, or both of, the previous and future frames (ie. two anchor frames).   
'''B-frame''' stands for '''bidirectional-frame'''.  They may also be known as '''backwards-predicted frames''' or '''B-pictures'''.  B-frames are quite similar to P-frames, except they can make predictions using both the previous and future frames (i.e. two anchor frames).   


It is therefore necessary for the player to first decode the next I- or P- anchor frame sequentially after the B-frame, before the B-frame can be decoded and displayed.  This makes B-frames very computationally complex, requires larger [[data buffer]]s, and causes an increased delay on both decoding and during encoding.  This also necessitates the display time stamps (DTS) feature in the container/system stream (see below).  As such, B-frames have long been subject of much controversy, and are often avoided in videos, and have limited/restricted supported in hardware.
It is therefore necessary for the player to first decode the next I- or P- anchor frame sequentially after the B-frame, before the B-frame can be decoded and displayed.  This makes B-frames very computationally complex, requires larger [[data buffer]]s, and causes an increased delay on both decoding and during encoding.  This also necessitates the display time stamps (DTS) feature in the container/system stream (see above).  As such, B-frames have long been subject of much controversy, they are often avoided in videos, and are sometimes not fully supported by hardware decoders.


No other frames are predicted from a B-frame.  Because of this, a very low bitrate B-frame can be inserted, where needed, to help control the bitrate.  If this was done with a P-frame, future P-frames would be predicted from it and will lower the quality.  However, similarly, the future P-frame must still encode all the changes between it and the previous I-frame or P-frame anchor frame, a second time, in addition to much of the changes being coded in the B-frame.  B-frames can also be beneficial in videos where the background behind an object is being revealed over several frames, and in fading transitions, such as from one scene to the next.<ref name=Didier_MPEG />
No other frames are predicted from a B-frame.  Because of this, a very low bitrate B-frame can be inserted, where needed, to help control the bitrate.  If this was done with a P-frame, future P-frames would be predicted from it and would lower the quality of the entire sequence.  However, similarly, the future P-frame must still encode all the changes between it and the previous I- or P- anchor frame (a second time) in addition to much of the changes being coded in the B-frame.  B-frames can also be beneficial in videos where the background behind an object is being revealed over several frames, or in fading transitions, such as scene changes.<ref name=Didier_MPEG/> <ref name=bmrc_mpeg2_faq/>


A B-frame can contain any number of intra-coded blocks and forward-predicted blocks, in addition to backwards-predicted, or bidirectionally predicted blocks.<ref name=bmrc_mpeg2_faq /> <ref name=hp_transcoding />
A B-frame can contain any number of intra-coded blocks and forward-predicted blocks, in addition to backwards-predicted, or bidirectionally predicted blocks.<ref name=bmrc_mpeg2_faq/> <ref name=hp_transcoding/>


==== D-frames ====
==== D-frames ====
MPEG-1 has a unique frame type not found in later video standards.  '''D-frames''' or '''DC-pictures''' are independent images (intra-frames) that have been encoded DC-only (AC coefficients are removed&mdash;see DCT below) and hence are very low quality.  D-frames are never referenced by I-, P- or B- frames.  D-frames are only used for fast previews of video, for instance when seeking through a video at high speed.<ref name=Didier_MPEG />
MPEG-1 has a unique frame type not found in later video standards.  '''D-frames''' or '''DC-pictures''' are independent images (intra-frames) that have been encoded DC-only (AC coefficients are removed&mdash;see DCT below) and hence are very low quality.  D-frames are never referenced by I-, P- or B- frames.  D-frames are only used for fast previews of video, for instance when seeking through a video at high speed.<ref name=Didier_MPEG/>


Given moderately higher-performance decoding equipment, this feature can be approximated by decoding I-frames instead.  This provides higher quality previews, and without the need for D-frames taking up space in the stream, yet not contributing to overall quality.   
Given moderately higher-performance decoding equipment, this feature can be approximated by decoding I-frames instead.  This provides higher quality previews, and without the need for D-frames taking up space in the stream, yet not improving video quality.   


=== Macroblocks ===
=== Macroblocks ===
MPEG-1 operate on video in a series of 8x8 blocks for quantization, motion estimation, etc.  However, because chroma is subsampled by 4, 1 chroma block corresponds to 4 luma blocks.  This gives us the 16x16 macroblock as the smallest independent unit in MPEG-1 video.
MPEG-1 operates on video in a series of 8x8 blocks for quantization.  However, because chroma (color) is subsampled by a factor of 4, each pair of (red and blue) chroma blocks corresponds to 4 different luma blocks.  This set of 6 blocks, with a resolution of 16x16, is called a '''macroblock'''.


It is very important to maintain video resolutions that are [[multiple]]s of 16See Motion Vectors for more reasons.
A macroblock is the smallest independent unit of MPEG video.  Motion vectors (see below) operate solely at the macroblock level.


  Black Bars
If the height and/or width of the video is not exact [[wikt:multiple|multiples]] of 16, a full row of macroblocks must still be encoded (though not displayed) to store the remainder of the picture (macroblock padding).  This wastes a significant amount of data in the bitstream, and is to be strictly avoided. 
  Cropped macroblocks  
  Noise around edges


Some decoders will also improperly handle videos with partial macroblocks, resulting in visible artifacts. 
=== Motion Vectors ===
To decrease the amount of spatial redundancy in a video, only blocks that change are updated, (up to the maximum GOP size).  This is known as '''conditional replenishment'''.  However, this is not very effective by itself.  Movement of the objects, and/or the camera may result in large portions of the frame needing to be updated, even though only the position of the previously encoded objects has changed.  Through '''motion estimation''' the encoder can compensate for this movement and remove a large amount of redundant information.
The encoder compares the current frame with adjacent parts of the video from the anchor frame (previous I- or P- frame) in a diamond pattern, up to a (encoder-specific) predefined [[radius]] limit from the area of the current macroblock.  If a match is found, only the direction and distance (i.e. the [[wikt:vector|''vector'']] of the ''motion'') from the previous video area to the current macroblock need to be encoded into the inter-frame  (P- or B- frame).  The reverse of this process, performed by the decoder to reconstruct the picture, is called '''motion compensation'''. 
A predicted macroblock rarely matches the current picture perfectly, however.  The differences between the estimated matching area, and the real frame/macroblock is called the '''prediction error'''.  The larger the error, the more data must be additionally encoded in the frame.  For efficient video compression, it is very important that the encoder is capable of effectively and precisely performing motion estimation.
Motion vectors record the ''distance'' between two areas on screen based on the number of pixels (called '''pels''').  MPEG-1 video uses a motion vector (MV) precision of one half of one pixel, or '''half-pel'''.  The finer the precision of the MVs, the more accurate the match is likely to be, and the more efficient the compression.  There are trade-offs to higher precision, however.  Finer MVs result in larger data size, as larger numbers must be stored in the frame for every single MV, increased coding complexity as increasing levels of interpolation on the macroblock are required for both the encoder and decoder, and [[wikt:law of diminishing returns|diminishing returns]] (minimal gains) with higher precision MVs.  Half-pel was chosen as the ideal trade-off.  (See: [[qpel]])
Because neighboring macroblocks are likely to have very similar motion vectors, this redundant information can be compressed quite effectively by being stored [[PCM#Digitization_as_part_of_the_PCM_process|DPCM]]-encoded.  Only the (smaller) amount of difference between the MVs for each macroblock needs to be stored in the final bitstream.
P-frames have 1 motion vector per macroblock, relative to the previous anchor frame.  B-frames, however, can use 2 motion vectors; one from the previous anchor frame, and one from the future anchor frame.<ref name=hp_transcoding>{{Citation | first = Susie J. | last = Wee | first2 = Bhaskaran | last2 = Vasudev | first3 = Sam | last3 = Liu | title = Transcoding MPEG Video Streams in the Compressed Domain | date=[[March 13]], [[1997]] | year = 1997 | publisher = [[HP]] | orig_url = http://www.hpl.hp.com/personal/Susie_Wee/PAPERS/hpidc97/hpidc97.html | url = http://web.archive.org/web/20070817191927/http://www.hpl.hp.com/personal/Susie_Wee/PAPERS/hpidc97/hpidc97.html  | accessdate = 2008-04-01 | removed = 2008-04-07 }}</ref>
Partial macroblocks, and black borders/bars encoded into the video that do not fall exactly on a macroblock boundary, cause havoc with motion prediction.  The block padding/border information prevents the macroblock from closely matching with any other area of the video, and so, significantly larger prediction error information must be encoded for every one of the several dozen partial macroblocks along the screen border.  DCT encoding and quantization (see below) also isn't nearly as effective when there is large/sharp picture contrast in a block. 
An even more serious problem exists with macroblocks that contain significant, random, ''edge noise'', where the picture transitions to (typically) black.  All the above problems also apply to edge noise.  In addition, the added randomness is simply impossible to compress significantly.  All of these effects will lower the quality (or increase the bitrate) of the video substantially. 


=== DCT ===
=== DCT ===
Each 8x8 block is encoded using the ''Forward'' [[Discrete Cosine Transform]] (FDCT).  This process by itself is practically lossless (there are some rounding errors), and is reversed by the ''Inverse'' DCT ([[IDCT]]) upon playback to produce the original values.   
Each 8x8 block is encoded using the ''Forward'' [[Discrete Cosine Transform]] (FDCT).<ref>being centered around 0, by subtracting the values by half the number of possible values (i.e. 128)</ref> This process by itself is theoretically lossless, and is reversed by the ''Inverse'' DCT ([[IDCT]]) upon playback to produce the original values.  In reality, there are some (sometimes large) rounding errors.  The minimum allowed accuracy of a DCT implementation is defined by IEEE 1180-1990 (now ISO/IEC 23002-1).


The FDCT process converts the 64 uncompressed pixel values (brightness) into 64 different ''frequency'' values.  One (large) value that is the average of the entire 8x8 block (the '''DC coefficient''') and 63 smaller, positive or negative values (the '''AC coefficients'''), that are relative to the value of the DC coefficient.   
The FDCT process converts the 64 uncompressed pixel values (brightness) into 64 different ''frequency'' values.  One (large) '''DC coefficient''', which is the average of the entire 8x8 block, and 63 smaller '''AC coefficients''', which are positive or negative values, each relative to the value of the ''DC coefficient''.   


An example FDCT encoded 8x8 block:  
An example FDCT encoded 8x8 block:  
:<math>
:<math>
\begin{bmatrix}
\begin{bmatrix}
  52 & 55 & 61 & 66 & 70 & 61 & 64 & 73 \\
  -415 & -30 & -61 & 27 & 56 & -20 & -2 & 0 \\
  63 & 59 & 55 & 90 & 109 & 85 & 69 & 72 \\
  4 & -22 & -61 & 10 & 13 & -7 & -9 & 5 \\
  62 & 59 & 68 & 113 & 144 & 104 & 66 & 73 \\
  -47 & 7 & 77 & -25 & -29 & 10 & 5 & -6 \\
  63 & 58 & 71 & 122 & 154 & 106 & 70 & 69 \\
  -49 & 12 & 34 & -15 & -10 & 6 & 2 & 2 \\
  67 & 61 & 68 & 104 & 126 & 88 & 68 & 70 \\
  12 & -7 & -13 & -4 & -2 & 2 & -3 & 3 \\
  79 & 65 & 60 & 70 & 77 & 68 & 58 & 75 \\
  -8 & 3 & 2 & -6 & -2 & 1 & 4 & 2 \\
  85 & 71 & 64 & 59 & 55 & 61 & 65 & 83 \\
  -1 & 0 & 0 & -2 & -1 & -3 & 4 & -1 \\
  87 & 79 & 69 & 68 & 65 & 76 & 78 & 94
  0 & 0 & -1 & -4 & -1 & 0 & 1 & 2
\end{bmatrix}
\end{bmatrix}
</math>
</math>


The DC coefficient remains mostly consistent from one block to the next, and can be compressed quite effectively with [[DPCM]] so only the amount of difference between each DC value needs to be stored. Also, a significant number of the AC coefficients will be near 0, (known as [http://en.wiktionary.org/wiki/sparse sparse] data) which can then be more efficiently compressed in a later step.  Additionally, this DCT frequency conversion is necessary for quantization (see below).  
Since the DC coefficient remains mostly consistent from one block to the next, it can be compressed quite effectively with [[PCM#Digitization_as_part_of_the_PCM_process|DPCM]]-encoding.  Only the (smaller) amount of difference between each DC value needs to be stored  in the final bitstream.  Additionally, this DCT frequency conversion is necessary for quantization (see below).  


=== Quantization ===
=== Quantization ===
[[Quantization (image processing)|Quantization]] (of digital data) is, essentially, the process of reducing the accuracy of a signal, by dividing it into some larger step size (eg. finding the nearest multiple, and discarding the remainder/modulus).
[[Quantization (image processing)|Quantization]] (of digital data) is, essentially, the process of reducing the accuracy of a signal, by dividing it into some larger step size (i.e. finding the nearest multiple, and discarding the remainder/modulus).


The frame-level quantizer is a number from 1 to 31 (although encoders will often omit/disable some of the extreme values) which determines how much information will be removed from a given frame.  The frame-level quantizer is either dynamically selected by the encoder to maintain a certain user specified bitrate, or (much less commonly) directly specified by the user.   
The frame-level quantizer is a number from 0 to 31 (although encoders will usually omit/disable some of the extreme values) which determines how much information will be removed from a given frame.  The frame-level quantizer is either dynamically selected by the encoder to maintain a certain user-specified bitrate, or (much less commonly) directly specified by the user.   


Contrary to popular belief, a fixed frame-level quantizer (set by the user) does not deliver a constant level of quality.  Instead, it is an arbitrary metric, that will provide a somewhat varying level of quality depending on the contents of each frame.  Given two files of identical sizes, the one encoded with a fixed bitrate should look better than the one encoded with a fixed quantizer.   Constant quantizer encoding can be used, however, to determine the minimum and maximum bitrates possible for encoding a given video.
Contrary to popular belief, a fixed frame-level quantizer (set by the user) does not deliver a constant level of quality.  Instead, it is an arbitrary metric that will provide a somewhat varying level of quality, depending on the contents of each frame.  Given two files of identical sizes, the one encoded at an average bitrate should look better than the one encoded with a fixed quantizer (variable bitrate). Constant quantizer encoding can be used, however, to accurately determine the minimum and maximum bitrates possible for encoding a given video.


A '''quantization table''' is a string of 64-numbers (0-255) that tells the encoder how relatively important or unimportant each piece of visual information is.  Each number in the table corresponds to a certain frequency component of the video image.   
A '''quantization matrix''' is a string of 64-numbers (0-255) which tells the encoder how relatively important or unimportant each piece of visual information is.  Each number in the matrix corresponds to a certain frequency component of the video image.   


An example quantization matrix:
An example quantization matrix:
Line 164: Line 213:
</math>
</math>


Quantization is performed by taking each of the 64 ''frequency'' values of the DCT block, dividing them by the frame-level quantizer, then dividing them by their corresponding values in the quantization table.  Finally, the result is rounded down.  This reduces or completely eliminates the information in some frequency components of the video, deemed less visually important.  Typically, high frequency information is less visually important, and so high frequencies are much more ''strongly quantized'' (ie. drastically reduced or entirely removed).  MPEG-1 actually uses two separate quantization tables, one for intra-blocks (I-blocks) and one for inter-block (P-/B-blocks) so quantization of different block types can be done independently, and more effectively.<ref name=Didier_MPEG />
Quantization is performed by taking each of the 64 ''frequency'' values of the DCT block, dividing them by the frame-level quantizer, then dividing them by their corresponding values in the quantization matrix.  Finally, the result is rounded down.  This significantly reduces, or completely eliminates, the information in some frequency components of the picture.  Typically, high frequency information is less visually important, and so high frequencies are much more ''strongly quantized'' (drastically reduced).  MPEG-1 actually uses two separate quantization matrices, one for intra-blocks (I-blocks) and one for inter-block (P- and B- blocks) so quantization of different block types can be done independently, and so, more effectively.<ref name=Didier_MPEG/>


This quantization process usually reduces a significant number of the ''AC coefficients'' to zero, which improves the effectiveness of entropy coding (lossless compression) in the next step.  
This quantization process usually reduces a significant number of the ''AC coefficients'' to zero, (known as [[wikt:sparse|sparse]] data) which can then be more efficiently compressed by entropy coding (lossless compression) in the next step.  


An example quantized DCT block:
An example quantized DCT block:
Line 182: Line 231:
</math>  
</math>  


Quantization eliminates a large amount of data, and is the main lossy processing step in MPEG-1 video encoding.  This is also the primary source of most MPEG-1 video [[compression artifacts]], like [[blockiness]], [[color banding]], [[noise]], [[ringing]], [[discoloration]], et al.  This happens when video is encoded with an insufficient bitrate, and therefore forced to use high frame-level quantizers (''strong quantization'') through much of the video.   
Quantization eliminates a large amount of data, and is the main lossy processing step in MPEG-1 video encoding.  This is also the primary source of most MPEG-1 video [[compression artifacts]], like [[blockiness]], [[color banding]], [[noise]], [[ringing]], [[discoloration]], et al.  This happens when video is encoded with an insufficient bitrate, and the encoder is therefore forced to use high frame-level quantizers (''strong quantization'') through much of the video.   


=== Entropy Coding ===
=== Entropy Coding ===
Several steps in the encoding of MPEG-1 video are lossless, meaning they will be reversed upon decoding, to produce exactly the same (original) values.  Since these lossless data compression steps don't add noise into or otherwise change the contents (unlike quantization), it is often referred to as [[Source coding theorem|noiseless coding]] in the context of lossy codecs.<ref name=mpeg1_audio />  Since lossless compression aims to remove as much redundancy as possible, it is known as [[entropy coding]] in [[information theory]].   
Several steps in the encoding of MPEG-1 video are lossless, meaning they will be reversed upon decoding, to produce exactly the same (original) values.  Since these lossless data compression steps don't add noise into, or otherwise change the contents (unlike quantization), it is sometimes referred to as [[Source coding theorem|noiseless coding]].<ref name=mpeg1_audio/>  Since lossless compression aims to remove as much redundancy as possible, it is known as [[entropy coding]] in the field of [[information theory]].   


==== RLE ====
The DC coefficients and motion vectors are [[PCM#Digitization_as_part_of_the_PCM_process|DPCM]]-encoded.  
[[Run-length encoding]] (RLE) is a very simple method of compressing repetition.  A sequential string of characters, no matter how long, can be replaced with a few bytes, noting the value that repeats, and how many times. For example, if someone is to say "five nines", you would know they mean the number: 99999


RLE is particularly effective after quantization, as a significant number of the AC coefficients are now zero (called [http://en.wiktionary.org/wiki/sparse sparse] data), and can be represented with just a couple bytes, in a special 2-[[dimensional]] Huffman table that codes the run-length and the run-ending character.
[[Run-length encoding]] (RLE) is a very simple method of compressing repetition. A sequential string of characters, no matter how long, can be replaced with a few bytes, noting the value that repeats, and how many times. For example, if someone were to say "five nines", you would know they mean the number: 99999.


==== Huffman Coding ====
RLE is particularly effective after quantization, as a significant number of the AC coefficients are now zero (called [[wikt:sparse|sparse]] data), and can be represented with just a couple bytesThis is stored in a special 2-[[dimensional]] Huffman table that codes the run-length and the run-ending character.
The data is then analyzed to find strings that repeat oftenThose strings are then put into a special [[Huffman]] table, with the most frequently repeating data assigned the shortest code.  This keeps the data as small as theoretically possible with this form of compression.<ref name=mpeg1_audio />


Once the table is constructed, those strings in the data are replaced with their (much smaller) codes, which references the appropriate entry in the table.  This is the final step in the video encoding process, so the output of Huffman coding result is known as the MPEG-1 video "bitstream."
'''Huffman Coding''' is a very popular method of entropy coding, used in MPEG-1 video to reduce the data size.  The data is analyzed to find strings that repeat often.  Those strings are then put into a special ([[Huffman]]) table, with the most frequently repeating data assigned the shortest code.  This keeps the data as small as possible with this form of compression.<ref name=mpeg1_audio/>  Once the table is constructed, those strings in the data are replaced with their (much smaller) codes, which reference the appropriate entry in the table.  The decoder simply reverses this process to produce the original data.  
 
=== Motion Vectors ===
 
Conditional Replenishment
 
P and B frames
 
P-frames can use up to 1 motion vector per macroblock, while B-frames can use 2, one from the previous frame, one from the next frame.<ref name=hp_transcoding>{{Citation | first = Susie J. | last = Wee | first2 = Bhaskaran | last2 = Vasudev | first3 = Sam | last3 = Liu | title = Transcoding MPEG Video Streams in the Compressed Domain | date=[[March 13]], [[1997]] | year = 1997 | publisher = [[HP]] | url = http://www.hpl.hp.com/personal/Susie_Wee/PAPERS/hpidc97/hpidc97.html | url2 = http://web.archive.org/web/20070817191927/http://www.hpl.hp.com/personal/Susie_Wee/PAPERS/hpidc97/hpidc97.html | url3 = http://cc.msnscache.com/cache.aspx?q=72990527477543&mkt=en-US&lang=en-US&w=3cf90ddb&FORM=CVRE | accessdate = 2008-04-01 | removed = 2008-04-07 }}</ref>
 
prediction error encoded
 
Macroblock multiples of 16
 
Cropped macroblocks
 
The same problem can be seen where black bars do not fall on a macroblock boundary.
 
 
 
  Quantization*
    Ringing* (large coefficients in high frequency sub-bands)
    zigzag
  Motion Vectors/Estimation
    Black borders/Noise
    pel precision (half pixel IIRC)
    Two MV per macroblock (forward/backward pred)
    Prediction error
    DPCM encoded, just like DC coeffs
    Blockiness
  CBR/VBR
  Spacial Complexity*
  Temporal Complexity*


This is the final step in the video encoding process, so the result of [[Huffman coding]] is known as the MPEG-1 video "bitstream."


== Audio ==
== Audio ==
Part 3 of the MPEG-1 standard covers audio and is defined in '''[[ISO]]/[[IEC]] 11172-3'''.
Part 3 of the MPEG-1 standard covers audio and is defined in '''ISO/IEC-11172-3'''.


MPEG-1 audio utilizes [[psychoacoustic]]s to significantly reduce the data rate required by an audio stream.  It reduces or completely discards certain parts of the audio that the human ear can't ''hear'', either because they are in frequencies where the ear has limited [[sensitivity]], or are ''[[Auditory masking|masked]]'' by other, typically louder, sounds.
MPEG-1 Audio utilizes [[psychoacoustic]]s to significantly reduce the data rate required by an audio stream.  It reduces or completely discards certain parts of the audio that the human ear can't ''hear'', either because they are in frequencies where the ear has limited [[sensitivity]], or are ''[[Auditory masking|masked]]'' by other (typically louder) sounds.<ref name=mpeg_audio_faq/>


Channel Encoding:
Channel Encoding:
Line 239: Line 255:
*Joint Stereo (intensity encoded)
*Joint Stereo (intensity encoded)
*Stereo
*Stereo
*Dual (two [[uncorrelated]] mono channels)
*Dual (two [[wikt:correlated|uncorrelated]] mono channels)


*[[Sampling rate]]s: 32000, 44100, and 48000 Hz
*[[Sampling rate]]s: 32000, 44100, and 48000 Hz
*[[Bitrate]]s: 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 and 384 kbit/s
*[[Bitrate]]s: 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 and 384 kbit/s


MPEG-1 Audio is divide into 3 layers.  Each higher layer is more computationally complex, and more efficient than the previous.  The layers are also backwards compatible, so a Layer II decoder can also play Layer I audio, but NOT Layer III/MP3 audio.
MPEG-1 Audio is divided into 3 layers.  Each progressive layer is more computationally complex, and generally more efficient (at lower bitrates) than the previous.<ref name=bmrc_mpeg2_faq/> The layers are also backwards compatible, so a Layer II decoder can also play Layer I audio, but NOT Layer III audio.<ref name=mpeg_audio_faq/>


=== Layer I ===  
=== Layer I ===  
MPEG-1 Layer I is nothing more than a simplified version of Layer II.<ref name=santa_clara90 /> Layer I uses a 384-sample frame size, for very low-delay, and finer resolution, for applications like teleconferencing, studio editing, etc.  It has lower complexity than Layer II to facilitate [[real-time]] encoding on the hardware available circa [[1990]]<ref name=mpeg1_audio />. With the substantial performance improvements in digital processing since, Layer I quickly became unnecessary and obsolete.
'''MPEG-1 Layer I''' is nothing more than a simplified version of Layer II.<ref name=santa_clara90/> Layer I uses a smaller 384-sample frame size for very low-delay, and finer resolution.<ref name=mpeg_faqs2/>  This is advantageous for applications like teleconferencing, studio editing, etc.  It has lower complexity than Layer II to facilitate [[real-time]] encoding on the hardware available [[circa]] 1990.<ref name=mpeg1_audio/>   


Layer I saw limited adoption in it's time, and most notably was used on the defunct [[Philips]] [[Digital Compact Cassette]] at 384 kbps.   
Layer I saw limited adoption in its time, and most notably was used on [[Philips]]' [[wikt:defunct|defunct]] [[Digital Compact Cassette]] at a bitrate of 384 kbit/s.<ref name=mpeg_faqs1/> With the substantial performance improvements in digital processing since its introduction, Layer I quickly became unnecessary and obsolete.


Layer I audio files typically use the extension '''.mp1''' or sometimes '''.m1a'''
Layer I audio files typically use the extension '''.mp1''' or sometimes '''.m1a'''


=== Layer II ===
=== Layer II ===
'''MPEG-1 Layer II''' (aka. '''MP2''', often incorrectly called '''Musicam''') is a time-domain encoder.  It uses a low-delay 32 sub-band [[Polyphase quadrature filter|polyphased]] [[filter bank]] for time-frequency mapping; having overlapping ranges (ie. polyphased) to prevent aliasingThe psychoacoustic model is based on [[auditory masking]] / [[simultaneous masking]] effects and the [[absolute threshold of hearing]] (ATH) / [[global masking threshold]].  The size of an MP2 frame is fixed at 1152-samples (coefficients).
'''MPEG-1 Layer II''' ('''MP2'''&mdash;often incorrectly called '''MUSICAM''')<ref name=mpeg_audio_faq/> is a [[lossy]] audio format designed to provide high quality at about 192 kbit/s for stereo soundDecoding MP2 audio is [[Computational complexity theory|computationally simple]], relative to MP3, [[Advanced Audio Coding|AAC]], etc.


[[Time domain]] refers to how quantization is performed: on short, discrete samples/chunks of the audio waveform. This offers low-delay as a small number of samples are analyzed before encoding, as opposed to [[frequency domain]] encoding (like MP3) which must analyze a large number of samples before it can decide how to transform and output encoded audio.  This also offers higher performance on complex, random and [[Transient (acoustics)|transient]] impulses (such as percussive instruments, and applause), allowing avoidance of artifacts like pre-echo.
==== History/MUSICAM ====
MPEG-1 Layer II was derived from the '''MUSICAM''' (''Masking pattern adapted Universal Subband Integrated Coding And Multiplexing'') audio codec, developed by [[Centre commun d'études de télévision et télécommunications]] (CCETT), [[Philips]], and [[Institut für Rundfunktechnik]] (IRT/CNET)<ref name=telos_audio>{{Citation | first = Steve | last = Church | title = Perceptual Coding and MPEG Compression  | date= | year = | publisher = [[NAB Engineering Handbook]], [[Telos Systems]] | url = http://www.telos-systems.com/techtalk/mpeg/default.htm | accessdate = 2008-04-09 }}</ref> <ref name=santa_clara90/> <ref name=bmrc_mpeg2_faq/> as part of the [[EUREKA 147]] pan-European inter-governmental research and development initiative for the development of digital audio broadcasting. 
 
Most key features of MPEG-1 Audio were directly inherited from MUSICAM, including the filter bank, time-domain processing, audio frame sizes, etc.  However, improvements were made, and the actual MUSICAM algorithm was not used in the final MPEG-1 Layer II audio standardThe widespread usage of the term MUSICAM to refer to Layer II is entirely incorrect and discouraged for both technical and legal reasons.<ref name=mpeg_audio_faq>{{Citation | first = D.| last = Thom | first2 = H. | last2 = Purnhagen | title = MPEG Audio FAQ Version 9 | date=October, 1998 | year = 1998 | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/MPEG/faq/mp1-aud/mp1-aud.htm | accessdate = 2008-04-09 }}</ref>


==== Technical Details ====
==== Technical Details ====
[[Image:Bande critiche - mpeg.gif|thumb|right|Visualization of the 32 sub-band filter bank used by MPEG-1 Audio]]
Layer II/MP2 is a time-domain encoder.  It uses a low-delay 32 sub-band [[Polyphase quadrature filter|polyphased]] [[filter bank]] for time-frequency mapping; having overlapping ranges (i.e. polyphased) to prevent aliasing.<ref name=audio_tutorial/>  The psychoacoustic model is based on the principles of [[auditory masking]], [[simultaneous masking]] effects, and the [[absolute threshold of hearing]] (ATH).  The size of a Layer II frame is fixed at 1152-samples (coefficients).
The 32 sub-band filter bank returns 32 [[amplitude]] [http://en.wiktionary.org/wiki/coefficient coefficients], one for each equal-sized frequency band/segment of the audio, which is about 700Hz wide.  The encoder then utilizes the psychoacoustic model to determine which sub-band contains audible information that is less important, and so, where quantization will be in-audible, or at least much less noticeable (higher [[masking threshold]]).   
 
[[Time domain]] refers to how analysis and quantization is performed: on short, discrete samples/chunks of the audio waveform.  This offers low-delay as only a small number of samples are analyzed before encoding, as opposed to [[frequency domain]] encoding (like MP3) which must analyze many times more samples before it can decide how to transform and output encoded audio.  This also offers higher performance on complex, random and [[Transient (acoustics)|transient]] impulses (such as percussive instruments, and applause), offering avoidance of artifacts like pre-echo.
 
[[Image:Bande critiche - mpeg.gif|thumb|right|Visualization of the 32 sub-band filter bank used by MPEG-1 Audio, showing the disparity between the equal band-size of MP2 and the varying width of critical bands ("barks").]]
The 32 sub-band filter bank returns 32 [[amplitude]] [[wikt:coefficient|coefficients]], one for each equal-sized frequency band/segment of the audio, which is about 700 Hz wide (depending on the audio's sampling frequency).  The encoder then utilizes the psychoacoustic model to determine which sub-bands contain audio information that is less important, and so, where quantization will be in-audible, or at least much less noticeable.<ref name=mpeg1_audio/>  


[[Image:Fft-2.png|thumb|right|Example FFT analysis on an audio wave sample.]]
[[Image:Fft-2.png|thumb|right|Example FFT analysis on an audio wave sample.]]
The psychoacoustic model is applied using a 1024-point [[Fast Fourier Transform]] (FFT).  128 of the 1152 samples are ignored (discarded as presumably insignificant) for this analysis.  The psychoacoustic model determines which sub-bands contribute more to the [[masking threshold]], and the available bits are assigned to each sub-band accordingly.
The psychoacoustic model is applied using a 1024-point [[Fast Fourier Transform]] (FFT).  Of the 1152 samples per frame, 64 samples at the top and bottom of the frequency range are ignored for this analysis.  They are presumably not significant enough to change the result.  The psychoacoustic model uses an [[wikt:empirically|empirically]] determined masking model to decide which sub-bands contribute more to the [[masking threshold]], and how much quantization noise each can contain without being perceived.  Any sounds below the [[absolute threshold of hearing]] (ATH) are completely discarded.  The available bits are then assigned to each sub-band accordingly.<ref name=mpeg_audio_faq/> <ref name=audio_tutorial/>


Typically, sub-bands are less important if they contain quieter sounds (smaller coefficient) than a neighboring (ie. similar frequency) sub-band with louder sounds (larger coefficient).  "Noise" components are typically more important than "tonal" components.  The less significant sub-band is then reduced in accuracy by, basically, compressing the frequency range/amplitude, (aka. raising the noise floor), and computing an amplification factor to re-expand it to the proper frequency range for playback/decoding.<ref name=smith_transcoding_survey>{{Citation | first = Brian | last = Smith | title = A Survey of Compressed Domain Processing Techniques | pages = 7 | year = 1996 | publisher = [[Cornell University]] | url = http://citeseer.ist.psu.edu/257196.html | accessdate = 2008-04-01 }}</ref> <ref name=twolame_psycho>{{Citation | first = Nicholas | last = Humfrey | title = Psychoacoustic Models in TwoLAME | date=[[Apr 15]], [[2005]] | year = 2005 | publisher = [[twolame.org]] | url = http://www.twolame.org/doc/psycho.html | url2 = http://twolame.svn.sourceforge.net/viewvc/twolame/trunk/doc/psycho.txt?view=log | accessdate = 2008-04-01 }}</ref>
Typically, sub-bands are less important if they contain quieter sounds (smaller coefficient) than a neighboring (i.e. similar frequency) sub-band with louder sounds (larger coefficient).  Also, "noise" components typically have a more significant masking effect than "tonal" components.<ref name=telos_audio/>   


Additionally, Layer II can use intensity stereo coding.  This means that both channels are down-mixed into one single (mono) channel, but the information on the relative intensity (volume, amplitude) of each channel is preserved and encoded into the bitstream separately. On playback, the single channel is played through left and right speakers, with the intensity information applied to each channel to give the illusion of stereo sound.  This perceptual trick is known as ''stereo irrelevancy''.  This can allow further reduction of the audio bitrate without much perceivable loss of fidelity, but is generally not used with higher bitrates as it does not provide high quality (transparent) audio.<ref name=mpeg1_audio>{{Citation | first = B. | last = Grill | first2 = S. | last2 = Quackenbush | title = MPEG-1 Audio | date=[[October]], [[2005]] | year = 2005 | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/technologies/mp01-aud/index.htm | accessdate = 2008-04-03 }}</ref>
Less significant sub-bands are reduced in accuracy by quantization.  This basically involves compressing the frequency range (amplitude of the coefficient), i.e. raising the noise floor. Then computing an amplification factor, for the decoder to use to re-expand each sub-band to the proper frequency range.<ref name=smith_transcoding_survey>{{Citation | first = Brian | last = Smith | title = A Survey of Compressed Domain Processing Techniques | pages = 7 | year = 1996 | publisher = [[Cornell University]] | url = http://citeseer.ist.psu.edu/257196.html | accessdate = 2008-04-09 }}</ref> <ref name=twolame_psycho>{{Citation | first = Mike | last = Cheng | title = Psychoacoustic Models in TooLAME/TwoLAME | date= | year = | publisher = [[twolame.org]] | url = http://www.twolame.org/doc/psycho.html | url2 = http://twolame.svn.sourceforge.net/viewvc/twolame/trunk/doc/psycho.txt?view=log | accessdate = 2008-04-09 }}</ref>  
 
==== History ====
MPEG-1 Layer II was derived from the MUSICAM audio codec (developed by Philips-needs ref).  Most key features were directly inherited, including the filter bank, time-domain processing, frame sizes, etc.  However, improvements were made, and the actual MUSICAM algorithm was not used in the final Layer II standard.  The widespread usage of the term MUSICAM to refer to Layer II is entirely incorrect and discouraged for both technical and legal reasons.<ref name=mpeg_audio_faq>{{Citation | first = D.| last = Thom | first2 = H. | last2 = Purnhagen | title = MPEG Audio FAQ Version 9 | date=[[October]], [[1998]] | year = 1998 | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/MPEG/faq/mp1-aud/mp1-aud.htm#16 | accessdate = 2008-04-01 }}</ref>  


Layer II can also optionally use '''intensity stereo''' coding, a form of '''joint stereo'''.  This means that the frequencies above 6 kHz of both channels are combined/down-mixed into one single (mono) channel, but the "side channel" information on the relative intensity (volume, amplitude) of each channel is preserved and encoded into the bitstream separately.  On playback, the single channel is played through left and right speakers, with the intensity information applied to each channel to give the illusion of stereo sound.<ref name=telos_audio/> <ref name=mpeg1_audio/> This perceptual trick is known as '''stereo irrelevancy'''.  This can allow further reduction of the audio bitrate without much perceivable loss of fidelity, but is generally not used with higher bitrates as it does not provide very high quality (transparent) audio.<ref name=mpeg1_audio>{{Citation | first = B. | last = Grill | first2 = S. | last2 = Quackenbush | title = MPEG-1 Audio | date=October, 2005 | year = 2005 | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/technologies/mp01-aud/index.htm | accessdate = 2008-04-03 }}</ref> <ref name=audio_tutorial/> <ref name=joint_stereo_spatial/>


==== Quality ====
==== Quality ====
Subjective audio testing by experts, in the most critical conditions ever implemented, has shown MP2 to offer transparent audio compression at 256kbps for 16-bit 44.1khz [[CD]] audio.<ref name=mpeg_faqs>{{Citation | first = Frank | last = Gadegast | title = MPEG-FAQ: multimedia compression | date=[[November 09]], [[1996]] | year = 1996 | publisher = [[faqs.org]] | url = http://www.faqs.org/faqs/mpeg-faq/part1/ | accessdate = 2008-04-01 }}</ref> <!--the original papers would be much better refs but I can't find them. This just proves they exist-->  That (approximately) 1:6 compression ratio for CD audio is particularly impressive since it is quite close to the estimated theoretical upper limit of [[perceptual entropy]], at just over 1:8.<ref>J. Johnston, ''Estimation of Perceptual Entropy Using Noise Masking Criteria,'' in Proc. ICASSP-88, pp. 2524-2527, May 1988.</ref> <ref>J. Johnston, ''Transform Coding of Audio Signals Using Perceptual Noise Criteria,'' IEEE J. Sel. Areas in Comm., pp. 314-323, Feb. 1988.</ref> Achieving much higher compression is simply not possible without discarding some perceptible information.  
Subjective audio testing by experts, in the most critical conditions ever implemented, has shown MP2 to offer transparent audio compression at 256 kbit/s for 16-bit 44.1 kHz [[Red Book (audio CD standard)|CD audio]] using the earliest reference implementation (more recent encoders should presumably perform even better).<ref>Grewin, Christer; Rydén, Thomas, ''[http://www.aes.org/e-lib/browse.cfm?elib=5396 Subjective Assessments on Low Bit-Rate Audio Codecs]'', Proceedings of the 10th International AES Conference: Images of Audio, pp 91 - 102, London September 1991</ref> <ref name=mpeg_faqs1>{{Citation | first = Mark | last = Adler | first2 = Harald | last2 = Popp | first3 = Morten | last3 = Hjerde | title = MPEG-FAQ: multimedia compression [1/9] | date=[[November 09]], [[1996]] | year = 1996 | publisher = [[faqs.org]] | url = http://www.faqs.org/faqs/mpeg-faq/part1/ | accessdate = 2008-04-09 }}</ref> <ref name=audio_tutorial/> <ref name=telos_audio/>  That (approximately) 6:1 compression ratio for CD audio is particularly impressive because it is quite close to the estimated upper limit of [[perceptual entropy]], at just over 8:1.<ref>J.D. Johnston, ''[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?isnumber=5035&arnumber=197157&count=718&index=613 Estimation of Perceptual Entropy Using Noise Masking Criteria],'' in International Conference on Acoustics, Speech, and Signal Processing, ICASSP-88, vol.5, pp. 2524-2527, April 1988</ref> <ref>J.D. Johnston, ''[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?tp=&arnumber=608&isnumber=39 Transform Coding of Audio Signals Using Perceptual Noise Criteria],'' IEEE Journal Select Areas in Communications, vol. 6, no. 2, pp. 314-323, Feb. 1988</ref> Achieving much higher compression is simply not possible without discarding some perceptible information.  


Despite some 20 years of progress in the field of digital audio coding, MP2 remains the preeminent lossy audio coding standard due to its especially high audio coding performances on highly critical audio material such as castanet, symphonic orchestra, male and female voices and particularly complex and high energy transients (impulses) like percussive sounds: triangle, glockenspiel and audience applause.  More recent testing has shown that [[MPEG Multichannel]] (based on Layer II), despite being compromised by a significantly inferior matrixed mode, rates just slightly lower than much more recent audio codecs, such as [[Dolby Digital]] AC-3 and [[Advanced Audio Coding]] (AAC) (mostly within the margin of error, actually &mdash; and still superior in some cases, namely audience applause).<ref>Wustenhagen et al, ''Subjective Listening Test of Multi-channel Audio Codecs'', AES 105th Convention Paper 4813, San Francisco 1998</ref> <ref name=ebu_surround_test_2007>{{Citation | last = B/MAE Project Group | title = EBU evaluations of multichannel audio codecs | pages = | date=[[September]], [[2007]] | year = 2007 | publisher = [[European Broadcasting Union]] | url = http://www.ebu.ch/CMSimages/en/tec_doc_t3324-2007_tcm6-53801.pdf | accessdate = 2008-04-01 }}</ref>   
Despite some 20 years of progress in the field of digital audio coding, MP2 remains the preeminent lossy audio coding standard due to its especially high audio coding performances on highly critical audio material such as castanet, symphonic orchestra, male and female voices and particularly complex and high energy transients (impulses) like percussive sounds: triangle, glockenspiel and audience applause... quite the opposite of MP3.<ref name=mpeg_faqs2/> More recent testing has shown that [[MPEG Multichannel]] (based on MP2), despite being compromised by an inferior matrixed mode (for the sake of backwards compatibility)<ref name=mpeg_faqs1/> <ref name=audio_tutorial/> rates just slightly lower than much more recent audio codecs, such as [[Dolby Digital]] (AC-3) and [[Advanced Audio Coding]] (AAC) (mostly within the margin of error&mdash;and substantially superior in some cases, such as audience applause).<ref>Wüstenhagen, Ulf; Feiten, Bernhard; Hoeg, Wolfgang, ''[http://www.aes.org/e-lib/browse.cfm?elib=8367 Subjective Listening Test of Multi-channel Audio Codecs]'', AES 105th Convention Paper 4813, San Francisco September 1998</ref> <ref name=ebu_surround_test_2007>{{Citation | last = B/MAE Project Group | title = EBU evaluations of multichannel audio codecs | pages = | date=September, 2007 | year = 2007 | publisher = [[European Broadcasting Union]] | url = http://www.ebu.ch/CMSimages/en/tec_doc_t3324-2007_tcm6-53801.pdf | accessdate = 2008-04-09 }}</ref>  This is one reason that MP2 audio continues to be used extensively.  The MPEG-2 AAC Stereo verification tests reached a vastly different conclusion, however, showing AAC to provide superior performance to MP2 at half the bitrate.<ref name=stereo_aac_tests>{{Citation | first = David | last = Meares | first2 = Kaoru | last2 = Watanabe | first3 = Eric | last3 = Scheirer | title = Report on the MPEG-2 AAC Stereo Verification Tests | pages = 18 | date=February, 1998 | year = 1998 | publisher = [[ISO]]/[[IEC]] | url = http://sound.media.mit.edu/mpeg4/audio/public/w2006.pdf | accessdate = 2008-04-16 }}</ref>  The reason for this disparity with both earlier and later tests is not clear, but strangely, a sample of applause is notably absent from this test.  
 
This is one reason that Layer II audio continues to be used extensively.  Layer II's especially high quality, low decoder performance requirements, and tolerance of errors makes it a popular choice for applications like [[digital audio broadcasting]] (DAB).


Layer II audio files typically use the extension '''.mp2''' or sometimes '''.m2a'''
Layer II audio files typically use the extension '''.mp2''' or sometimes '''.m2a'''


=== Layer III/MP3 ===
=== Layer III/MP3 ===
'''MPEG-1 Layer III''' ('''MP3''') is a [[lossy]] audio format designed to provide acceptable quality at about 64 kbit/s for monaural audio over single-channel ([[basic rate interface|BRI]]) [[ISDN]] links, and 128 kbit/s for stereo sound. 


MP3 is a [[frequency domain]] transform encoder that utilizes a dynamic psychoacoustic model.
==== History/ASPEC ====
Layer III/MP3 was derived from the ''Adaptive Spectral Perceptual Entropy Coding'' ('''ASPEC''') codec developed by Fraunhofer as part of the [[EUREKA 147]] pan-European inter-governmental research and development initiative for the development of digital audio broadcasting.  ASPEC was adapted to fit in with the Layer II/MUSICAM model (frame size, filter bank, FFT, etc.), to become Layer III.<ref name=santa_clara90/>


''Optimum Coding in the Frequency Domain'' (OCF) the Ph.D thesis by [[Karlheinz Brandenburg]], which was the primary basis for Adaptive Spectral Perceptual Entropy Coding (ASPEC) developed by Fraunhofer. ASPEC was adapted to fit in with the Layer II model, to become Layer III/MP3.
ASPEC was itself based on ''Multiple adaptive Spectral audio Coding'' (MSC) by [[E. F. Schroeder]],<!--at ???--> ''Optimum Coding in the Frequency domain'' (OCF) the [[doctoral thesis]] by [[Karlheinz Brandenburg]] at the [[University of Erlangen-Nuremberg]], ''Perceptual Transform Coding'' (PXFM) by [[J.D. Johnston]] at [[AT&T]] [[Bell Labs]], and ''Transform coding of audio signals'' by [[Y. Mahieux]] and [[J. Petit]] at [[Institut für Rundfunktechnik]] (IRT/CNET).<ref name=perceptual_coding>{{Citation | first = Ted | last = Painter | first2 = Andreas | last2 = Spanias | title = Perceptual Coding of Digital Audio (PROCEEDINGS OF THE IEEE, VOL. 88, NO. 4) | pages = | date=April, 2000 | year = 2000 | publisher = [[Proceedings of the IEEE]] | url = http://www.ee.columbia.edu/~marios/courses/e6820y02/project/papers/Perceptual%20coding%20of%20digital%20audio%20.pdf | accessdate = 2008-04-01 }}</ref>


Even though it utilizes some of the lower layer functions, MP3 is quite different from Layer II.   
==== Technical Details ====
MP3 is a frequency-domain audio [[Transform coding|transform encoder]].  Even though it utilizes some of the lower layer functions, MP3 is quite different from Layer II/MP2.   


In addition to intensity encoded joint stereo, MP3 can alternatively use mid/side joint stereo, which means, in addition to intensity information, a small range of certain key frequencies is stored separately for each channel as well.  This provides higher fidelity joint stereo encoding.
MP3 works on 1152 samples like Layer II, but needs to take multiple frames for analysis before frequency-domain (MDCT) processing and quantization can be effective. It outputs a variable number of samples, using a bit buffer to enable this variable bitrate (VBR) encoding while maintaining 1152 sample  size output frames.  This causes a significantly longer delay before output, which has caused MP3 to be considered unsuitable for studio applications where editing or other processing needs to take place.<ref name=audio_tutorial/>


MP3 does not benefit from the 32 sub-band filter bank, instead just using an 18-point MDCT transformation on the data into 576 frequency components, and processing it in the frequency domain.  This is particularly important because the [[critical bands]] ("barks") are not uniform in size, and some are quite narrow.  This extra granularity allows MP3 to much more accurately apply psychoacoustic models than Layer II (with just 32 sub-bands) and providing much better low-bitrate performance.
MP3 does not benefit from the 32 sub-band polyphased filter bank, instead just using an 18-point MDCT transformation on each output to split the data into 576 frequency components, and processing it in the frequency domain.<ref name=telos_audio/> This extra [[wikt:granularity|granularity]] allows MP3 to have a much finer psychoacoustic model, and more carefully apply appropriate quantization to each band, providing much better low-bitrate performance.


Being forced to use this type of hybrid filter bank/MDCT model wastes processing time and compromises MP3 quality by introducing additional aliasing artifacts.  MP3 has an aliasing compensation stage specifically to mask this problem, instead producing frequency domain energy which is pushed to the top of the frequency range, and results in noise/distortion.
Frequency-domain processing imposes some limitations as well, causing a factor of 12 or 36 &times; worse temporal resolution than Layer II.  This causes quantization artifacts, due to transient sounds like percussive events and other high-frequency events that spread over a larger window.  This results in audible smearing and [[pre-echo]].<ref name=audio_tutorial>{{Citation | first = Davis | last = Pan | title = A Tutorial on MPEG/Audio Compression | pages = 8 | date=Summer, 1995 | year = 1995 | publisher = [[IEEE Multimedia Journal]] | url = http://www.cs.columbia.edu/~coms6181/slides/6R/mpegaud.pdf | accessdate = 2008-04-09 }}</ref> MP3 uses pre-echo detection routines, and VBR encoding, which allows it to temporarily increase the bitrate during difficult passages, in an attempt to reduce this effect.  It is also able to switch between the normal 36 sample quantization window, and instead using 3&times; short 12 sample windows instead, to reduce the temporal (time) length of quantization artifacts.<ref name=audio_tutorial/>  And yet in choosing a fairly small window size to make MP3's temporal response adequate enough to avoid the most serious artifacts, MP3 becomes much less efficient in frequency domain compression of stationary, tonal components.


The Layer II 1024 point (FFT) analysis window for spectral estimation is too small to cover all 1152 samples, so MP3 utilize two sequential passes.  
Being forced to use a ''hybrid'' time domain (filter bank)/frequency domain (MDCT) model to fit in with Layer II simply wastes processing time and compromises quality by introducing aliasing artifacts.  MP3 has an aliasing cancellation stage specifically to mask this problem, but which instead produces frequency domain energy which must be encoded in the audio.  This is pushed to the top of the frequency range, where most people have limited hearing, in hopes the distortion it causes will be less audible.


MP3 works on 1152 samples like Layer II, but uses multiple samples for MDCT processing, and spreads the larger MP3 frames over a varying number of several Layer I/II-sized output frames, making editing much more difficult, and proving more vulnerable to cascading errors.   
Layer II's 1024 point FFT doesn't entirely cover all samples, and would omit several entire MP3 sub-bands, where quantization factors must be determined.  MP3 instead uses two passes of FFT analysis for spectral estimation, to calculate the global and individual masking thresholds.  This allows it to cover all 1152 samplesOf the two, it utilizes the global masking threshold level from the more critical pass, with the most difficult audio.


Unlike Layers I/II, MP3 uses [[Huffman coding]] (after perceptual) to (losslessly) further reduce the bitrate, without any further quality loss, making MP3 further affected by small transmission errors.  
In addition to Layer II's intensity encoded joint stereo, MP3 can use middle/side (mid/side, m/s, MS, matrixed) joint stereo.  With mid/side stereo, certain frequency ranges of both channels are merged into a single (middle, mid, L+R) mono channel, while the sound difference between the left and right channels is stored as a separate (side, L-R) channel.  Unlike intensity stereo, this process does not discard any audio information.  When combined with quantization, however, it can exaggerate artifacts.


The frequency domain (MDCT) design of MP3 imposes some limitations as wellIt causes a factor of 12 - 36 times worse temporal resolution than MP2, which causes artifacts due to transient sounds like percussive events with artifacts spread over a larger windowThis results in audible smearing and [[pre-echo]].<ref name=audio_tutorial>{{Citation | first = Davis | last = Pan | title = A Tutorial on MPEG/Audio Compression | pages = 8 | date=[[Summer]], [[1995]] | year = 1995 | publisher = [[IEEE Multimedia Journal]] | url = http://www.cs.columbia.edu/~coms6181/slides/6R/mpegaud.pdf | accessdate = 2008-04-01 }}</ref> And yet in choosing a fairly small window size trying to make MP3's temporal response adequate to mask artifacts, it uses too small of a window size to to be efficient in the frequency domain, and perform well at low bitrates.
If the difference between the left and right channels is small, the side channel will be small, which will offer as much as a 50% bitrate savings, and associated quality improvement.  If the difference between left and right is large, standard (discrete, left/right) stereo encoding may be preferred, as mid/side joint stereo will not provide any benefitsAn MP3 encoder can switch between m/s stereo and full stereo on a frame-by-frame basis.<ref name=telos_audio/>  
<ref name=lame_ms>{{Citation | first = Roberto | last = Amorim | title = GPSYCHO - Mid/Side Stereo | date=[[September 19]], [[2006]] | year = 2006 | publisher = [[LAME]] | url = http://lame.sourceforge.net/ms_stereo.php | accessdate = 2008-04-17 }}</ref> <ref name=joint_stereo_spatial>{{Citation | first = Jurgen | last = Herre | title = From Joint Stereo to Spatial Audio Coding | pages = 2 | date=[[October 05]], [[2004]] | year = 2004 | publisher = [[Conference on Digital Audio Effects]] | url = http://dafx04.na.infn.it/WebProc/Proc/P_157.pdf | accessdate = 2008-04-17 }}</ref>


Because of these issues, MP2 sound quality is actually superior to MP3 at high bitrates, and provides transparency on CD audio from 192 to 256 kbit/s.<ref name=london92 /> <!--can be clearly inferred from a combination of citations.-->  MP3 is also considered unsuitable for studio applications where editing or other processing needs to take place.
Unlike Layers I/II, MP3 uses variable-length [[Huffman coding]] (after perceptual) to further reduce the bitrate, without any further quality loss.<ref name=mpeg_audio_faq/> <ref name=audio_tutorial/> 
 
==== Quality ====
These technical limitations inherently prevent MP3 from providing critically transparent quality at any bitrate.  This makes Layer II sound quality actually superior to MP3 audio, when it is used at a high enough bitrate to avoid noticeable artifacts.  The term "transparent" often gets misused, however.  The quality of MP3 (and other codecs) is sometimes called "transparent," even at impossibly low bitrates, when what is really meant is "good quality on average/non-critical material," or perhaps "exhibiting only non-annoying artifacts."
 
MP3's more fine-grained and selective quantization does prove notably superior to Layer II/MP2 at lower-bitrates, however.  It is able to provide nearly equivalent audio quality to Layer II, at a 15% lower bitrate (approximately).<ref name=ebu_surround_test_2007/> <ref name=stereo_aac_tests/><!--First ref proves the point, second scares off MP3 fans that feel like arguing--> 128 kbit/s is considered the "[[sweet spot]]" for MP3; meaning it provides generally-acceptable quality stereo sound on most music, and there are [[diminishing returns|diminishing]] quality improvements from increasing the bitrate further. MP3 is also regarded as exhibiting artifacts that are less-annoying than Layer II, when both are used at bitrates that are too low to possibly provide faithful reproduction.  


Layer III audio files use the extension '''.mp3'''
Layer III audio files use the extension '''.mp3'''


  "Frequency resolution is limited by the small long block window size, decreasing coding efficiency*
<!--aliasing compensation: still need more details-->
  No scale factor band for frequencies above 15.5/15.8 kHz"
 
  ASPEC (Fraunhoffer)*
  entropy coding (Huffman)*
  Hybrid filtering*
    aliasing issues*
    "aliasing compensation"?* need more details!
  mid/side (or intensity) joint stereo*
  "If there is a transient, 192 samples are taken instead of 576 to limit the temporal spread of quantization noise"
  psychoacoustic model and frame format from MP1/2*
  ringing
  CBR/VBR


=== MPEG-2 Audio Extensions ===
=== MPEG-2 Audio Extensions ===


The [[MPEG-2]] standard included several extensions to MPEG-1 Audio.  MPEG-2 Audio is defined in '''ISO/IEC-13818-3'''
The [[MPEG-2]] standard includes several extensions to MPEG-1 Audio.<ref name=audio_tutorial/> MPEG-2 Audio is defined in '''ISO/IEC-13818-3'''


VBR audio encoding
*[[MPEG Multichannel]] ISO/IEC 14496-3. Backward compatible 5.1-channel [[surround sound]].<ref name=sydney93/>


[[MPEG Multichannel]] ISO/IEC 14496-3. Backward compatible 5.1-channel [[surround sound]].<ref name=sydney93 />
*[[Sampling rate]]s:  16000, 22050, and 24000 Hz
*[[Bitrate]]s: '''8''',  '''16''',  '''24''',  32,  '''40''',  '''48''',  56,  64,  80,  96, 112, 128, '''144''', and 160 kbit/s


[[Bitrate]]s: 8,  16,  24, 40,  48, and 144 kbit/
These sampling rates are exactly half that of those originally defined for MPEG-1 Audio.  They were introduced to maintain higher quality sound when encoding audio at lower-bitrates.<ref name=sydney93/>  These additional (lower) bitrates were introduced because tests showed that MPEG-1 Audio could provide higher quality than any existing ([[circa]] 1994) very low bitrate (i.e. [[Speech coding|speech]]) audio codecs.<ref name=singapore94>{{Citation | first = Leonardo | last = Chiariglione | title = Press Release | date=[[November 11]], [[1994]] | year = 1994 | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/meetings/singapore94/singapore_press.htm | accessdate = 2008-04-09 }}</ref>


[[Sampling rate]]s:  16000, 22050, and 24000 Hz


These sampling rates are exactly half that of those originally defined for MPEG-1 Audio.  They were introduced to maintain higher quality sound when encoding audio at lower-bitrates.<ref name=sydney93 />
== Conformance Testing ==
Part 4 of the MPEG-1 standard covers conformance testing, and is defined in '''ISO/IEC-11172-4'''.


These lower bitrates and ([http://en.wiktionary.org/wiki/halve halved]) sampling rates were introduced because tests showed that MPEG-1 Audio would provide higher quality than any existing (circa 1994) low-bitrate (ie. speech) audio codecs.<ref name=singapore94>{{Citation | first = Leonardo | last = Chiariglione | title = Press Release | date=[[November 11]], [[1994]] | year = 1994 | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/meetings/singapore94/singapore_press.htm | accessdate = 2008-04-01 }}</ref>
Conformance: Procedures for testing conformance.


== Systems ==
Provides two sets of guidelines and reference bitstreams for testing the conformance of MPEG-1 audio and video decoders, as well as the bitstreams produced by an encoder.<ref name=bmrc_mpeg2_faq/> <ref name=mpeg_achievements/>


Part 1 of the MPEG-1 standard covers ''systems'', which is the logical layout of the encoded audio, video, and other bitstream data, and is defined in '''[[ISO]]/[[IEC]] 11172-3'''.
== Reference Software ==
Part 5 of the MPEG-1 standard includes reference software, and is defined in '''ISO/IEC-11172-5'''.


In MPEG-2, this layer was renamed to [[program stream]]: "The MPEG-1 Systems design is essentially identical to the MPEG-2 Program Stream structure."<ref name=mpeg1_systems>{{Citation | first = Leonardo | last = Chiariglione | title = MPEG-1 Systems | date= | year = | publisher = [[ISO]]/[[IEC]] | url = http://www.chiariglione.org/mpeg/faq/mp1-sys/mp1-sys.htm | accessdate = 2008-04-01 }}</ref>  This is the more popular and precise terminology, and will be used here.
Simulation: Reference software.


=== Elementary Streams ===
[[C language]] reference code for encoding and decoding of audio and video, as well as multiplexing and demultiplexing.<ref name=bmrc_mpeg2_faq/> <ref name=mpeg_achievements/>
'''Elementary streams''' ('''ES''') are the raw bitstream of MPEG-1 audio and video output by an encoder.  These files can be distributed on their own, such as with MP3 files, but playing two elementary streams together is unlikely to achieve synchronization. 
 
Additionally, ES can be made more robust by [[packet]]izing them, ie. dividing them into independent chunks, and the addition of extra header information to each segment.  This is the '''Packetized Elementary Stream''' (PES) structure. 
 
=== Program Streams ===
'''Program Streams''' (PS) are concerned with combining multiple '''packetized elementary streams''' (usually just one audio and video PES) into a single stream, and maintaining synchronization between them.  PS may be known as a ''container format'' or a ''multiplex'' (mux).
 
'''System Clock Reference''' (SCR) is a timing value stored in the a 33-bit header of each ES, with a frequency/precision of 27MHz.<ref name=pack_header>{{Citation | first = | last = | title = Pack Header | date= | year = | publisher = | url = http://dvd.sourceforge.net/dvdinfo/packhdr.html | accessdate = 2008-04-07 }}</ref> These are inserted by the encoder, determined by the required system time clock (STC).  Simultaneously encoded audio and video streams will not have identical SCR values, however, due to buffering, encoding, and multiplexing delay.
 
=== Program Time Stamps ===
'''[[Program time stamp]]s''' (PTS) exist in PS to to correct this disparity in audio and video (time-base correction).  90KHz PTS values in the header tell the decoder which video SCR values match which audio SCR values.<ref name=pack_header /> PTS is also used by the decoder to decide when buffered audio and video have been decoded, and so can be discarded/overwritten.  Either video or audio will be delayed by the decoder until the segment of the other with the matching PTS value arrives and can be decoded. 
 
PTS handling can be problematic because multiple ''program streams'' can be joined (concatenated) sequentially, which will cause PTS values in the middle of the video to reset to zero, and begin incrementing again.  Such wraparound/disparities must be handled seamlessly by the decoder.
 
'''Display Time Stamps''' (DTS), additionally, are required because of B-frames.  With B-frames in the video stream, adjacent frames have to be encoded and decoded out-of-order (reordered).  DTS is quite similar to PTS, but instead of just handling a sequential stream of frames, it contains the proper time-stamps to tell the decoder when to skip ahead and decode the next I- or P- frame, delay the display of the current frame, and when to skip ahead and display the next B-frame, ahead of its preceding frame (in encoding order).
 
=== Multiplexing ===
To generate the PS, the multiplexer will [[interleave]] the two or more packetized elementary streams.  This is done so the packets of the multiple simultaneous streams will be arrive at the decoder at about the same time.  This is a case of [[time-division multiplexing]].


Determining how much data from each stream should be in each interleaved segment (the size of the interleave) is complicated, and important.  Improper interleaving will result in buffer underflows or overflows, as the receiver gets more of one stream than it can store (eg. audio) before it gets enough data to decode/output the other stream (eg. video) which is supposed to be output simultaneously.  The MPEG '''Video Buffer Verifier''' (VBV) assists in determining if a multiplexed PS can be decoded by a device with a specified data throughput rate and buffer size.  This offers feedback to the muxer and the encoder, so that they can change the mux size or adjust bitrates as needed for compliance.
This includes the ''ISO Dist10'' audio encoder code, which [[LAME]] and [[TooLAME]] were based upon.


  Pixel/Display Aspect Ratio
  http://www.bretl.com/mpeghtml/timemdl.HTM


== See Also ==
== See Also ==
 
*[[MPEG]] The Moving Picture Experts Group, developers of the MPEG-1 standard
*[[MPEG]] The Moving Picture Experts Group, developers of the MPEG-1 format
*[[MP3]] More (less technical) detail about MPEG-1 Layer III audio
*[[MP3]] More details on MPEG-1 Layer III audio
*[[MPEG Multichannel]] Backwards compatible 5.1 channel [[surround sound]] extension to Layer II audio
*[[MPEG Multichannel]] Backwards compatible 5.1 channel [[surround sound]] extension to Layer II
*[[MPEG-2]] The direct successor to the MPEG-1 standard.
*[[MPEG-2]] The direct successor to the MPEG-1 standard.


;Implementations  
;Implementations  
*[[Libavcodec]] includes MPEG-1 video/audio encoders and decoders
*[[Libavcodec]] includes MPEG-1/2 video/audio encoders and decoders
*[http://mjpeg.sourceforge.net/ Mjpegtools] MPEG-1/2 video/audio encoders
*[http://mjpeg.sourceforge.net/ Mjpegtools] MPEG-1/2 video/audio encoders
*[http://www.twolame.org/ Twolame] high quality MPEG-1 Layer II audio encoder based on [[Lame]] psychoacoustic models
*[[TooLAME]] A high quality MPEG-1 Layer II audio encoder.
 
*[[LAME]] A high quality MP3 (Layer III) audio encoder.<br/>
*[[Musepack]] high quality audio format originally based on MPEG-1 Layer II, with significant incompatible changes and improvements
*[[Musepack]] A format originally based on MPEG-1 Layer II audio, but now incompatible.


== References ==
== References ==
Line 390: Line 386:
*[http://www.chiariglione.org/mpeg/ Official Web Page of the Moving Picture Experts Group (MPEG) a working group of ISO/IEC]
*[http://www.chiariglione.org/mpeg/ Official Web Page of the Moving Picture Experts Group (MPEG) a working group of ISO/IEC]
*[http://www.mpegif.org/ MPEG Industry Forum Organization]
*[http://www.mpegif.org/ MPEG Industry Forum Organization]
{{MPEG}}
{{Compression Formats}}
{{Compression Methods}}
[[Category:Audio codecs]]
[[Category:Video codecs]]
[[Category:MPEG]]
[[bn:এমপেগ-১]]
[[bs:MPEG-1]]
[[ca:MPEG-1]]
[[da:MPEG-1]]
[[de:MPEG-1]]
[[et:MPEG-1]]
[[es:MPEG-1]]
[[fr:MPEG-1]]
[[ko:MPEG-1]]
[[it:MPEG-1]]
[[ms:MPEG-1]]
[[ja:MPEG-1]]
[[pam:MPEG-1]]
[[pl:MPEG-1]]
[[ru:MPEG-1]]
[[sk:MPEG-1]]
[[sr:МПЕГ-1]]
[[fi:MPEG-1]]
[[sv:MPEG-1]]
[[tr:MPEG-1]]
[[uk:MPEG-1]]
[[zh:MPEG-1]]

Latest revision as of 03:39, 22 November 2023


The account of this former contributor was not re-activated after the server upgrade of March 2022.


MPEG-1 was an early standard for lossy compression of video and audio. It was designed to compress VHS-quality raw digital video and CD audio down to 1.5 Mbit/s (26:1 and 6:1 compression ratios respectively)[1] without obvious quality loss, making Video CDs, digital cable/satellite TV and digital audio broadcasting (DAB) possible.[2] [3]

Today, MPEG-1 has become the most widely compatible lossy audio/video format in the world, and is used in a large number of products and technologies. Perhaps the best-known part of the MPEG-1 standard is the MP3 audio format it introduced.

Despite its age, MPEG-1 is not necessarily obsolete or substantially inferior to newer technologies. According to Leonardo Chiariglione (co-founder of MPEG): "the idea that compression technology keeps on improving is a myth."[4]

The MPEG-1 standard is published as ISO/IEC-11172.

Template:Infobox file format

History

Modeled on the successful collaborative approach and the compression technologies developed by the Joint Photographic Experts Group and CCITT's Experts Group on Telephony (creators of the JPEG image compression standard and the H.261 standard for video conferencing, respectively) the Moving Picture Experts Group (MPEG) working group was established in January 1988. MPEG was formed to address the need for standard video and audio formats, and build on H.261 to get better quality through the use of more complex (non-real time) encoding methods.[2] [5]

Development of the MPEG-1 standard began in May 1988. 14 video and 14 audio codec proposals were submitted by individual companies and institutions for evaluation. The codecs were extensively tested for computational complexity and subjective (human perceived) quality, at data rates of 1.5 Mbit/s. This specific bitrate was chosen for transmission over T-1/E-1 lines and as the approximate data rate of audio CDs.[4] The codecs that excelled in this testing were utilized as the basis for the standard and refined further, with additional features and other improvements being incorporated in the process.[6]

After 20 meetings of the full group in various cities around the world, and 4½ years of development and testing, the final standard (for parts 1-3) was approved in early November 1992 and published a few months later.[7] The reported completion date of the MPEG-1 standard, varies greatly... A largely complete draft standard was produced in September 1990, and from that point on, only minor changes were introduced.[2] In July 1990, before the first draft of the MPEG-1 standard had even been written, work began on a second standard, MPEG-2,[8] intended to extend MPEG-1 technology to provide full broadcast-quality video (as per CCIR-601) at high bitrates (3 - 15 Mbit/s), and support for interlaced video.[9] Due in part to the similarity between the two codecs, the MPEG-2 standard includes full backwards compatibility with MPEG-1 video, so any MPEG-2 decoder can play MPEG-1 videos.[10]

Notably, the MPEG-1 standard very strictly defines the bitstream, and decoder function, but does not define how MPEG-1 encoding is to be performed (although a reference implementation is provided in ISO/IEC-11172-5).[1] This means that MPEG-1 coding efficiency can drastically vary depending on the encoder used, and generally means that newer encoders perform significantly better than their predecessors.[11]

Applications

  • Most popular computer software for video playback includes MPEG-1 decoding, in addition to any other supported formats.
  • MPEG-1 video and Layer I/II audio can be implemented without payment of license fees.[12] [13] [14] Due to its age, many of the patents on the technology have expired.
  • The popularity of MP3 audio has established a massive installed base of hardware that can playback MPEG-1 Audio.
  • "Virtually all digital audio devices" can playback MPEG-1 Audio.[15] Many millions have been sold to-date.
  • Before MPEG-2 became widespread, many digital satellite/cable TV services used MPEG-1 exclusively.[11] [5]
  • The widespread popularity of MPEG-2 with broadcasters means MPEG-1 is playable by most digital cable and satellite set-top boxes, and digital disc and tape players, due to backwards compatibility.
  • MPEG-1 is the exclusive video and audio format used on Video CD (VCD), the first consumer digital video format, and still a very popular home video format around the world.
  • The Super Video CD standard, based on VCD, uses MPEG-1 Audio exclusively, as well as MPEG-2 video.
  • The DVD-Video format uses MPEG-2 video primarily, but MPEG-1 support is explicitly defined in the standard.
  • The DVD-Video standard originally required MPEG-1 Layer II audio for PAL countries, but was changed to allow AC-3/Dolby Digital-only discs. MPEG-1 Layer II audio is still allowed on DVDs, although newer extensions to the format, like MPEG Multichannel, are rarely supported.
  • Most DVD players also support Video CD and MP3 CD playback, which use MPEG-1.
  • The international Digital Video Broadcasting (DVB) standard primarily uses MPEG-1 Layer II audio, and MPEG-2 video.
  • The international Digital Audio Broadcasting (DAB) standard uses MPEG-1 Layer II audio exclusively, due to MP2's especially high quality, modest decoder performance requirements, and tolerance of errors.


Systems

Part 1 of the MPEG-1 standard covers systems, and is defined in ISO/IEC-11172-1.

MPEG-1 Systems specifies the logical layout and methods used to store the encoded audio, video, and other data into a standard bitstream, and to maintain synchronization between the different contents. This file format is specifically designed for storage on media, and transmission over data channels, that are considered relatively reliable. Only limited error protection is defined by the standard, and small errors in the bitstream may cause noticeable defects.

This structure was later named a program stream: "The MPEG-1 Systems design is essentially identical to the MPEG-2 Program Stream structure."[16] This terminology is more popular, precise (differentiates it from a transport stream) and will be used here.

Elementary Streams

Elementary streams (ES) are the raw bitstreams of MPEG-1 audio and video, output by an encoder. These files can be distributed on their own, such as is the case with MP3 files.

Additionally, elementary streams can be made more robust by packetizing them, i.e. dividing them into independent chunks, and adding a cyclic redundancy check (CRC) checksum to each segment for error detection. This is the Packetized Elementary Stream (PES) structure.

System Clock Reference (SCR) is a timing value stored in a 33-bit header of each ES, at a frequency/precision of 90 kHz, with an extra 9-bit extension that stores additional timing data with a precision of 27 MHz.[17] [18] These are inserted by the encoder, derived from the system time clock (STC). Simultaneously encoded audio and video streams will not have identical SCR values, however, due to buffering, encoding, jitter, and other delay.

Program Streams

Program Streams (PS) are concerned with combining multiple packetized elementary streams (usually just one audio and video PES) into a single stream, ensuring simultaneous delivery, and maintaining synchronization. The PS structure is known as a multiplex, or a container format.

Program time stamps (PTS) exist in PS to correct this disparity between audio and video SCR values (time-base correction). 90 kHz PTS values in the PS header tell the decoder which video SCR values match which audio SCR values.[17] PTS determines when to display a portion of a MPEG program, and is also used by the decoder to determine when data can be discarded from the buffer.[19] Either video or audio will be delayed by the decoder until the corresponding segment of the other arrives and can be decoded.

PTS handling can be problematic. Decoders must accept multiple program streams that have been concatenated (joined sequentially). This causes PTS values in the middle of the video to reset to zero, which then begin incrementing again. Such PTS wraparound disparities can cause timing issues that must be specially handled by the decoder.

Display Time Stamps (DTS), additionally, are required because of B-frames. With B-frames in the video stream, adjacent frames have to be encoded and decoded out-of-order (re-ordered frames). DTS is quite similar to PTS, but instead of just handling sequential frames, it contains the proper time-stamps to tell the decoder when to decode and display the next B-frame, ahead of its anchor (P- or I-) frame. Without B-frames in the video, PTS and DTS values are identical.[20]

Multiplexing

To generate the PS, the multiplexer will interleave the (two or more) packetized elementary streams. This is done so the packets of the simultaneous streams can be transferred over the same channel and are guaranteed to both arrive at the decoder at precisely the same time. This is a case of time-division multiplexing.

Determining how much data from each stream should be in each interleaved segment (the size of the interleave) is complicated, yet an important requirement. Improper interleaving will result in buffer underflows or overflows, as the receiver gets more of one stream than it can store (eg. audio), before it gets enough data to decode the other simultaneous stream (eg. video). The MPEG Video Buffer Verifier (VBV) assists in determining if a multiplexed PS can be decoded by a device with a specified data throughput rate and buffer size.[21] This offers feedback to the muxer and the encoder, so that they can change the mux size or adjust bitrates as needed for compliance.

The PS, additionally, stores aspect ratio information which tells the decoder how much to stretch the height or width of a video when displaying it. Different display devices (such as computer monitors and televisions) have different pixel heights/widths, which will result in video encoded for one appearing "squished" when played on the other, unless the aspect ratio information in the PS is used to compensate.


Video

Part 2 of the MPEG-1 standard covers video and is defined in ISO/IEC-11172-2.

MPEG-1 Video exploits perceptual compression methods to significantly reduce the data rate required by a video stream. It reduces or completely discards information in certain frequencies and areas of the picture that the human eye has limited ability to fully perceive. It also utilizes effective methods to exploit temporal (over time) and spatial (across a picture) redundancy common in video, to achieve better data compression than would be possible otherwise. (See: Video compression)

Color Space

Example of 4:2:0 subsampling. The 2 overlapping center circles represent chroma blue and chroma red (color) pixels, while the 4 outside circles represent the luma (brightness).

Before encoding video to MPEG-1 the color-space is transformed to Y'CbCr (Y'=Luma, Cb=Chroma Blue, Cr=Chroma Red). Luma (brightness, resolution) is stored separately from chroma (color, hue, phase) and even further separated into red and blue components. The chroma is also subsampled to 4:2:0, meaning it is decimated by one half vertically and one half horizontally, to just one quarter the resolution of the video.[1]

Because the human eye is much less sensitive to small changes in color than in brightness, chroma subsampling is a very effective way to reduce the amount of video data that needs to be compressed. On videos with fine detail (high spatial complexity) this can manifest as chroma aliasing artifacts. Compared to other digital compression artifacts, this issue seems to be very rarely a source of annoyance.

Because of subsampling, Y'CbCr video must always be stored using even dimensions (divisible by 2), otherwise chroma mismatch ("ghosts") will occur, and it will appear as if the color is ahead of, or behind the rest of the video, much like a shadow.

Y'CbCr is often inaccurately called YUV which is only used in the domain of analog video signals. Similarly, the terms luminance and chrominance are often used instead of the (more accurate) terms luma and chroma.

Resolution/Bitrate

MPEG-1 supports resolutions up to 4095×4095 (12-bits), and bitrates up to 100 Mbit/s.[5]

MPEG-1 videos are most commonly seen using Source Input Format (SIF) resolution: 352x240, 352x288, or 320x240. These low resolutions, combined with a bitrate less than 1.5 Mbit/s, make up what is known as a constrained parameters bitstream (CPB), later renamed the "Low Level" (LL) profile in MPEG-2. This is the minimum video specifications any decoder should be able to handle, to be considered MPEG-1 compliant. This was selected to provide a good balance between quality and performance, allowing the use of reasonably inexpensive hardware of the time.[2] [5]

Frame/Picture/Block Types

MPEG-1 has several frame/picture types that serve different purposes. The most important, yet simplest are I-frames.

I-Frames

I-frame is an abbreviation for Intra-frame, so-called because they can be decoded independently of any other frames. They may also be known as I-pictures, or keyframes due to their somewhat similar function to the key frames used in animation. I-frames can be considered effectively identical to baseline JPEG images.[5]

High-speed seeking through an MPEG-1 video is only possible to the nearest I-frame. When cutting a video it is not possible to start playback of a segment of video before the first I-frame in the segment (at least not without computationally-intensive re-encoding). For this reason, I-frame-only MPEG videos are used in editing applications.

I-frame only compression is very fast, but produces very large file sizes: a factor of 3× (or more) larger than normally encoded MPEG-1 video, depending on how temporally complex a specific video is.[2] I-frame only MPEG-1 video is very similar to MJPEG video. So much so that very high-speed and theoretically lossless (in reality, there are rounding errors) conversion can be made from one format to the other, provided a couple restrictions (color space and quantization matrix) are followed in the creation of the bitstream.[22]

The length between I-frames is known as the group of pictures (GOP) size. MPEG-1 most commonly uses a GOP size of 15-18. i.e. 1 I-frame for every 14-17 non-I-frames (some combination of P- and B- frames). With more intelligent encoders, GOP size is dynamically chosen, up to some pre-selected maximum limit.[5] This is known as scene change detection.

Limits are placed on the maximum number of frames between I-frames due to decoding complexing, decoder buffer size, recovery time after data errors, seeking ability, and accumulation of IDCT errors in low-precision implementations most common in hardware decoders (See: IEEE 1180-1990).

P-frames

P-frame is an abbreviation for Predicted-frame. They may also be called forward-predicted frames, or inter-frames (B-frames are also inter-frames).

P-frames exist to improve compression by exploiting the temporal (over time) redundancy in a video. P-frames store only the difference in image from the frame (either an I-frame or P-frame) immediately preceding it (this reference frame is called the anchor frame).

The difference between a P-frame and its anchor frame is calculated using motion vectors on each macroblock of the frame (see below). Such motion vector data will be embedded in the P-frame for use by the decoder.

A P-frame can contain any number of intra-coded blocks, in addition to any forward-predicted blocks.[23]

If a video drastically changes from one frame to the next (such as a scene change), it is more efficient to encode it as an I-frame.

B-frames

B-frame stands for bidirectional-frame. They may also be known as backwards-predicted frames or B-pictures. B-frames are quite similar to P-frames, except they can make predictions using both the previous and future frames (i.e. two anchor frames).

It is therefore necessary for the player to first decode the next I- or P- anchor frame sequentially after the B-frame, before the B-frame can be decoded and displayed. This makes B-frames very computationally complex, requires larger data buffers, and causes an increased delay on both decoding and during encoding. This also necessitates the display time stamps (DTS) feature in the container/system stream (see above). As such, B-frames have long been subject of much controversy, they are often avoided in videos, and are sometimes not fully supported by hardware decoders.

No other frames are predicted from a B-frame. Because of this, a very low bitrate B-frame can be inserted, where needed, to help control the bitrate. If this was done with a P-frame, future P-frames would be predicted from it and would lower the quality of the entire sequence. However, similarly, the future P-frame must still encode all the changes between it and the previous I- or P- anchor frame (a second time) in addition to much of the changes being coded in the B-frame. B-frames can also be beneficial in videos where the background behind an object is being revealed over several frames, or in fading transitions, such as scene changes.[2] [5]

A B-frame can contain any number of intra-coded blocks and forward-predicted blocks, in addition to backwards-predicted, or bidirectionally predicted blocks.[5] [23]

D-frames

MPEG-1 has a unique frame type not found in later video standards. D-frames or DC-pictures are independent images (intra-frames) that have been encoded DC-only (AC coefficients are removed—see DCT below) and hence are very low quality. D-frames are never referenced by I-, P- or B- frames. D-frames are only used for fast previews of video, for instance when seeking through a video at high speed.[2]

Given moderately higher-performance decoding equipment, this feature can be approximated by decoding I-frames instead. This provides higher quality previews, and without the need for D-frames taking up space in the stream, yet not improving video quality.

Macroblocks

MPEG-1 operates on video in a series of 8x8 blocks for quantization. However, because chroma (color) is subsampled by a factor of 4, each pair of (red and blue) chroma blocks corresponds to 4 different luma blocks. This set of 6 blocks, with a resolution of 16x16, is called a macroblock.

A macroblock is the smallest independent unit of MPEG video. Motion vectors (see below) operate solely at the macroblock level.

If the height and/or width of the video is not exact multiples of 16, a full row of macroblocks must still be encoded (though not displayed) to store the remainder of the picture (macroblock padding). This wastes a significant amount of data in the bitstream, and is to be strictly avoided.

Some decoders will also improperly handle videos with partial macroblocks, resulting in visible artifacts.

Motion Vectors

To decrease the amount of spatial redundancy in a video, only blocks that change are updated, (up to the maximum GOP size). This is known as conditional replenishment. However, this is not very effective by itself. Movement of the objects, and/or the camera may result in large portions of the frame needing to be updated, even though only the position of the previously encoded objects has changed. Through motion estimation the encoder can compensate for this movement and remove a large amount of redundant information.

The encoder compares the current frame with adjacent parts of the video from the anchor frame (previous I- or P- frame) in a diamond pattern, up to a (encoder-specific) predefined radius limit from the area of the current macroblock. If a match is found, only the direction and distance (i.e. the vector of the motion) from the previous video area to the current macroblock need to be encoded into the inter-frame (P- or B- frame). The reverse of this process, performed by the decoder to reconstruct the picture, is called motion compensation.

A predicted macroblock rarely matches the current picture perfectly, however. The differences between the estimated matching area, and the real frame/macroblock is called the prediction error. The larger the error, the more data must be additionally encoded in the frame. For efficient video compression, it is very important that the encoder is capable of effectively and precisely performing motion estimation.

Motion vectors record the distance between two areas on screen based on the number of pixels (called pels). MPEG-1 video uses a motion vector (MV) precision of one half of one pixel, or half-pel. The finer the precision of the MVs, the more accurate the match is likely to be, and the more efficient the compression. There are trade-offs to higher precision, however. Finer MVs result in larger data size, as larger numbers must be stored in the frame for every single MV, increased coding complexity as increasing levels of interpolation on the macroblock are required for both the encoder and decoder, and diminishing returns (minimal gains) with higher precision MVs. Half-pel was chosen as the ideal trade-off. (See: qpel)

Because neighboring macroblocks are likely to have very similar motion vectors, this redundant information can be compressed quite effectively by being stored DPCM-encoded. Only the (smaller) amount of difference between the MVs for each macroblock needs to be stored in the final bitstream.

P-frames have 1 motion vector per macroblock, relative to the previous anchor frame. B-frames, however, can use 2 motion vectors; one from the previous anchor frame, and one from the future anchor frame.[23]

Partial macroblocks, and black borders/bars encoded into the video that do not fall exactly on a macroblock boundary, cause havoc with motion prediction. The block padding/border information prevents the macroblock from closely matching with any other area of the video, and so, significantly larger prediction error information must be encoded for every one of the several dozen partial macroblocks along the screen border. DCT encoding and quantization (see below) also isn't nearly as effective when there is large/sharp picture contrast in a block.

An even more serious problem exists with macroblocks that contain significant, random, edge noise, where the picture transitions to (typically) black. All the above problems also apply to edge noise. In addition, the added randomness is simply impossible to compress significantly. All of these effects will lower the quality (or increase the bitrate) of the video substantially.

DCT

Each 8x8 block is encoded using the Forward Discrete Cosine Transform (FDCT).[24] This process by itself is theoretically lossless, and is reversed by the Inverse DCT (IDCT) upon playback to produce the original values. In reality, there are some (sometimes large) rounding errors. The minimum allowed accuracy of a DCT implementation is defined by IEEE 1180-1990 (now ISO/IEC 23002-1).

The FDCT process converts the 64 uncompressed pixel values (brightness) into 64 different frequency values. One (large) DC coefficient, which is the average of the entire 8x8 block, and 63 smaller AC coefficients, which are positive or negative values, each relative to the value of the DC coefficient.

An example FDCT encoded 8x8 block:

Since the DC coefficient remains mostly consistent from one block to the next, it can be compressed quite effectively with DPCM-encoding. Only the (smaller) amount of difference between each DC value needs to be stored in the final bitstream. Additionally, this DCT frequency conversion is necessary for quantization (see below).

Quantization

Quantization (of digital data) is, essentially, the process of reducing the accuracy of a signal, by dividing it into some larger step size (i.e. finding the nearest multiple, and discarding the remainder/modulus).

The frame-level quantizer is a number from 0 to 31 (although encoders will usually omit/disable some of the extreme values) which determines how much information will be removed from a given frame. The frame-level quantizer is either dynamically selected by the encoder to maintain a certain user-specified bitrate, or (much less commonly) directly specified by the user.

Contrary to popular belief, a fixed frame-level quantizer (set by the user) does not deliver a constant level of quality. Instead, it is an arbitrary metric that will provide a somewhat varying level of quality, depending on the contents of each frame. Given two files of identical sizes, the one encoded at an average bitrate should look better than the one encoded with a fixed quantizer (variable bitrate). Constant quantizer encoding can be used, however, to accurately determine the minimum and maximum bitrates possible for encoding a given video.

A quantization matrix is a string of 64-numbers (0-255) which tells the encoder how relatively important or unimportant each piece of visual information is. Each number in the matrix corresponds to a certain frequency component of the video image.

An example quantization matrix:

Quantization is performed by taking each of the 64 frequency values of the DCT block, dividing them by the frame-level quantizer, then dividing them by their corresponding values in the quantization matrix. Finally, the result is rounded down. This significantly reduces, or completely eliminates, the information in some frequency components of the picture. Typically, high frequency information is less visually important, and so high frequencies are much more strongly quantized (drastically reduced). MPEG-1 actually uses two separate quantization matrices, one for intra-blocks (I-blocks) and one for inter-block (P- and B- blocks) so quantization of different block types can be done independently, and so, more effectively.[2]

This quantization process usually reduces a significant number of the AC coefficients to zero, (known as sparse data) which can then be more efficiently compressed by entropy coding (lossless compression) in the next step.

An example quantized DCT block:

Quantization eliminates a large amount of data, and is the main lossy processing step in MPEG-1 video encoding. This is also the primary source of most MPEG-1 video compression artifacts, like blockiness, color banding, noise, ringing, discoloration, et al. This happens when video is encoded with an insufficient bitrate, and the encoder is therefore forced to use high frame-level quantizers (strong quantization) through much of the video.

Entropy Coding

Several steps in the encoding of MPEG-1 video are lossless, meaning they will be reversed upon decoding, to produce exactly the same (original) values. Since these lossless data compression steps don't add noise into, or otherwise change the contents (unlike quantization), it is sometimes referred to as noiseless coding.[15] Since lossless compression aims to remove as much redundancy as possible, it is known as entropy coding in the field of information theory.

The DC coefficients and motion vectors are DPCM-encoded.

Run-length encoding (RLE) is a very simple method of compressing repetition. A sequential string of characters, no matter how long, can be replaced with a few bytes, noting the value that repeats, and how many times. For example, if someone were to say "five nines", you would know they mean the number: 99999.

RLE is particularly effective after quantization, as a significant number of the AC coefficients are now zero (called sparse data), and can be represented with just a couple bytes. This is stored in a special 2-dimensional Huffman table that codes the run-length and the run-ending character.

Huffman Coding is a very popular method of entropy coding, used in MPEG-1 video to reduce the data size. The data is analyzed to find strings that repeat often. Those strings are then put into a special (Huffman) table, with the most frequently repeating data assigned the shortest code. This keeps the data as small as possible with this form of compression.[15] Once the table is constructed, those strings in the data are replaced with their (much smaller) codes, which reference the appropriate entry in the table. The decoder simply reverses this process to produce the original data.

This is the final step in the video encoding process, so the result of Huffman coding is known as the MPEG-1 video "bitstream."

Audio

Part 3 of the MPEG-1 standard covers audio and is defined in ISO/IEC-11172-3.

MPEG-1 Audio utilizes psychoacoustics to significantly reduce the data rate required by an audio stream. It reduces or completely discards certain parts of the audio that the human ear can't hear, either because they are in frequencies where the ear has limited sensitivity, or are masked by other (typically louder) sounds.[25]

Channel Encoding:

  • Mono
  • Joint Stereo (intensity encoded)
  • Stereo
  • Dual (two uncorrelated mono channels)
  • Sampling rates: 32000, 44100, and 48000 Hz
  • Bitrates: 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 and 384 kbit/s

MPEG-1 Audio is divided into 3 layers. Each progressive layer is more computationally complex, and generally more efficient (at lower bitrates) than the previous.[5] The layers are also backwards compatible, so a Layer II decoder can also play Layer I audio, but NOT Layer III audio.[25]

Layer I

MPEG-1 Layer I is nothing more than a simplified version of Layer II.[6] Layer I uses a smaller 384-sample frame size for very low-delay, and finer resolution.[11] This is advantageous for applications like teleconferencing, studio editing, etc. It has lower complexity than Layer II to facilitate real-time encoding on the hardware available circa 1990.[15]

Layer I saw limited adoption in its time, and most notably was used on Philips' defunct Digital Compact Cassette at a bitrate of 384 kbit/s.[1] With the substantial performance improvements in digital processing since its introduction, Layer I quickly became unnecessary and obsolete.

Layer I audio files typically use the extension .mp1 or sometimes .m1a

Layer II

MPEG-1 Layer II (MP2—often incorrectly called MUSICAM)[25] is a lossy audio format designed to provide high quality at about 192 kbit/s for stereo sound. Decoding MP2 audio is computationally simple, relative to MP3, AAC, etc.

History/MUSICAM

MPEG-1 Layer II was derived from the MUSICAM (Masking pattern adapted Universal Subband Integrated Coding And Multiplexing) audio codec, developed by Centre commun d'études de télévision et télécommunications (CCETT), Philips, and Institut für Rundfunktechnik (IRT/CNET)[26] [6] [5] as part of the EUREKA 147 pan-European inter-governmental research and development initiative for the development of digital audio broadcasting.

Most key features of MPEG-1 Audio were directly inherited from MUSICAM, including the filter bank, time-domain processing, audio frame sizes, etc. However, improvements were made, and the actual MUSICAM algorithm was not used in the final MPEG-1 Layer II audio standard. The widespread usage of the term MUSICAM to refer to Layer II is entirely incorrect and discouraged for both technical and legal reasons.[25]

Technical Details

Layer II/MP2 is a time-domain encoder. It uses a low-delay 32 sub-band polyphased filter bank for time-frequency mapping; having overlapping ranges (i.e. polyphased) to prevent aliasing.[27] The psychoacoustic model is based on the principles of auditory masking, simultaneous masking effects, and the absolute threshold of hearing (ATH). The size of a Layer II frame is fixed at 1152-samples (coefficients).

Time domain refers to how analysis and quantization is performed: on short, discrete samples/chunks of the audio waveform. This offers low-delay as only a small number of samples are analyzed before encoding, as opposed to frequency domain encoding (like MP3) which must analyze many times more samples before it can decide how to transform and output encoded audio. This also offers higher performance on complex, random and transient impulses (such as percussive instruments, and applause), offering avoidance of artifacts like pre-echo.

File:Bande critiche - mpeg.gif
Visualization of the 32 sub-band filter bank used by MPEG-1 Audio, showing the disparity between the equal band-size of MP2 and the varying width of critical bands ("barks").

The 32 sub-band filter bank returns 32 amplitude coefficients, one for each equal-sized frequency band/segment of the audio, which is about 700 Hz wide (depending on the audio's sampling frequency). The encoder then utilizes the psychoacoustic model to determine which sub-bands contain audio information that is less important, and so, where quantization will be in-audible, or at least much less noticeable.[15]

Example FFT analysis on an audio wave sample.

The psychoacoustic model is applied using a 1024-point Fast Fourier Transform (FFT). Of the 1152 samples per frame, 64 samples at the top and bottom of the frequency range are ignored for this analysis. They are presumably not significant enough to change the result. The psychoacoustic model uses an empirically determined masking model to decide which sub-bands contribute more to the masking threshold, and how much quantization noise each can contain without being perceived. Any sounds below the absolute threshold of hearing (ATH) are completely discarded. The available bits are then assigned to each sub-band accordingly.[25] [27]

Typically, sub-bands are less important if they contain quieter sounds (smaller coefficient) than a neighboring (i.e. similar frequency) sub-band with louder sounds (larger coefficient). Also, "noise" components typically have a more significant masking effect than "tonal" components.[26]

Less significant sub-bands are reduced in accuracy by quantization. This basically involves compressing the frequency range (amplitude of the coefficient), i.e. raising the noise floor. Then computing an amplification factor, for the decoder to use to re-expand each sub-band to the proper frequency range.[28] [29]

Layer II can also optionally use intensity stereo coding, a form of joint stereo. This means that the frequencies above 6 kHz of both channels are combined/down-mixed into one single (mono) channel, but the "side channel" information on the relative intensity (volume, amplitude) of each channel is preserved and encoded into the bitstream separately. On playback, the single channel is played through left and right speakers, with the intensity information applied to each channel to give the illusion of stereo sound.[26] [15] This perceptual trick is known as stereo irrelevancy. This can allow further reduction of the audio bitrate without much perceivable loss of fidelity, but is generally not used with higher bitrates as it does not provide very high quality (transparent) audio.[15] [27] [30]

Quality

Subjective audio testing by experts, in the most critical conditions ever implemented, has shown MP2 to offer transparent audio compression at 256 kbit/s for 16-bit 44.1 kHz CD audio using the earliest reference implementation (more recent encoders should presumably perform even better).[31] [1] [27] [26] That (approximately) 6:1 compression ratio for CD audio is particularly impressive because it is quite close to the estimated upper limit of perceptual entropy, at just over 8:1.[32] [33] Achieving much higher compression is simply not possible without discarding some perceptible information.

Despite some 20 years of progress in the field of digital audio coding, MP2 remains the preeminent lossy audio coding standard due to its especially high audio coding performances on highly critical audio material such as castanet, symphonic orchestra, male and female voices and particularly complex and high energy transients (impulses) like percussive sounds: triangle, glockenspiel and audience applause... quite the opposite of MP3.[11] More recent testing has shown that MPEG Multichannel (based on MP2), despite being compromised by an inferior matrixed mode (for the sake of backwards compatibility)[1] [27] rates just slightly lower than much more recent audio codecs, such as Dolby Digital (AC-3) and Advanced Audio Coding (AAC) (mostly within the margin of error—and substantially superior in some cases, such as audience applause).[34] [35] This is one reason that MP2 audio continues to be used extensively. The MPEG-2 AAC Stereo verification tests reached a vastly different conclusion, however, showing AAC to provide superior performance to MP2 at half the bitrate.[36] The reason for this disparity with both earlier and later tests is not clear, but strangely, a sample of applause is notably absent from this test.

Layer II audio files typically use the extension .mp2 or sometimes .m2a

Layer III/MP3

MPEG-1 Layer III (MP3) is a lossy audio format designed to provide acceptable quality at about 64 kbit/s for monaural audio over single-channel (BRI) ISDN links, and 128 kbit/s for stereo sound.

History/ASPEC

Layer III/MP3 was derived from the Adaptive Spectral Perceptual Entropy Coding (ASPEC) codec developed by Fraunhofer as part of the EUREKA 147 pan-European inter-governmental research and development initiative for the development of digital audio broadcasting. ASPEC was adapted to fit in with the Layer II/MUSICAM model (frame size, filter bank, FFT, etc.), to become Layer III.[6]

ASPEC was itself based on Multiple adaptive Spectral audio Coding (MSC) by E. F. Schroeder, Optimum Coding in the Frequency domain (OCF) the doctoral thesis by Karlheinz Brandenburg at the University of Erlangen-Nuremberg, Perceptual Transform Coding (PXFM) by J.D. Johnston at AT&T Bell Labs, and Transform coding of audio signals by Y. Mahieux and J. Petit at Institut für Rundfunktechnik (IRT/CNET).[37]

Technical Details

MP3 is a frequency-domain audio transform encoder. Even though it utilizes some of the lower layer functions, MP3 is quite different from Layer II/MP2.

MP3 works on 1152 samples like Layer II, but needs to take multiple frames for analysis before frequency-domain (MDCT) processing and quantization can be effective. It outputs a variable number of samples, using a bit buffer to enable this variable bitrate (VBR) encoding while maintaining 1152 sample size output frames. This causes a significantly longer delay before output, which has caused MP3 to be considered unsuitable for studio applications where editing or other processing needs to take place.[27]

MP3 does not benefit from the 32 sub-band polyphased filter bank, instead just using an 18-point MDCT transformation on each output to split the data into 576 frequency components, and processing it in the frequency domain.[26] This extra granularity allows MP3 to have a much finer psychoacoustic model, and more carefully apply appropriate quantization to each band, providing much better low-bitrate performance.

Frequency-domain processing imposes some limitations as well, causing a factor of 12 or 36 × worse temporal resolution than Layer II. This causes quantization artifacts, due to transient sounds like percussive events and other high-frequency events that spread over a larger window. This results in audible smearing and pre-echo.[27] MP3 uses pre-echo detection routines, and VBR encoding, which allows it to temporarily increase the bitrate during difficult passages, in an attempt to reduce this effect. It is also able to switch between the normal 36 sample quantization window, and instead using 3× short 12 sample windows instead, to reduce the temporal (time) length of quantization artifacts.[27] And yet in choosing a fairly small window size to make MP3's temporal response adequate enough to avoid the most serious artifacts, MP3 becomes much less efficient in frequency domain compression of stationary, tonal components.

Being forced to use a hybrid time domain (filter bank)/frequency domain (MDCT) model to fit in with Layer II simply wastes processing time and compromises quality by introducing aliasing artifacts. MP3 has an aliasing cancellation stage specifically to mask this problem, but which instead produces frequency domain energy which must be encoded in the audio. This is pushed to the top of the frequency range, where most people have limited hearing, in hopes the distortion it causes will be less audible.

Layer II's 1024 point FFT doesn't entirely cover all samples, and would omit several entire MP3 sub-bands, where quantization factors must be determined. MP3 instead uses two passes of FFT analysis for spectral estimation, to calculate the global and individual masking thresholds. This allows it to cover all 1152 samples. Of the two, it utilizes the global masking threshold level from the more critical pass, with the most difficult audio.

In addition to Layer II's intensity encoded joint stereo, MP3 can use middle/side (mid/side, m/s, MS, matrixed) joint stereo. With mid/side stereo, certain frequency ranges of both channels are merged into a single (middle, mid, L+R) mono channel, while the sound difference between the left and right channels is stored as a separate (side, L-R) channel. Unlike intensity stereo, this process does not discard any audio information. When combined with quantization, however, it can exaggerate artifacts.

If the difference between the left and right channels is small, the side channel will be small, which will offer as much as a 50% bitrate savings, and associated quality improvement. If the difference between left and right is large, standard (discrete, left/right) stereo encoding may be preferred, as mid/side joint stereo will not provide any benefits. An MP3 encoder can switch between m/s stereo and full stereo on a frame-by-frame basis.[26] [38] [30]

Unlike Layers I/II, MP3 uses variable-length Huffman coding (after perceptual) to further reduce the bitrate, without any further quality loss.[25] [27]

Quality

These technical limitations inherently prevent MP3 from providing critically transparent quality at any bitrate. This makes Layer II sound quality actually superior to MP3 audio, when it is used at a high enough bitrate to avoid noticeable artifacts. The term "transparent" often gets misused, however. The quality of MP3 (and other codecs) is sometimes called "transparent," even at impossibly low bitrates, when what is really meant is "good quality on average/non-critical material," or perhaps "exhibiting only non-annoying artifacts."

MP3's more fine-grained and selective quantization does prove notably superior to Layer II/MP2 at lower-bitrates, however. It is able to provide nearly equivalent audio quality to Layer II, at a 15% lower bitrate (approximately).[35] [36] 128 kbit/s is considered the "sweet spot" for MP3; meaning it provides generally-acceptable quality stereo sound on most music, and there are diminishing quality improvements from increasing the bitrate further. MP3 is also regarded as exhibiting artifacts that are less-annoying than Layer II, when both are used at bitrates that are too low to possibly provide faithful reproduction.

Layer III audio files use the extension .mp3


MPEG-2 Audio Extensions

The MPEG-2 standard includes several extensions to MPEG-1 Audio.[27] MPEG-2 Audio is defined in ISO/IEC-13818-3

  • Sampling rates: 16000, 22050, and 24000 Hz
  • Bitrates: 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, and 160 kbit/s

These sampling rates are exactly half that of those originally defined for MPEG-1 Audio. They were introduced to maintain higher quality sound when encoding audio at lower-bitrates.[10] These additional (lower) bitrates were introduced because tests showed that MPEG-1 Audio could provide higher quality than any existing (circa 1994) very low bitrate (i.e. speech) audio codecs.[39]


Conformance Testing

Part 4 of the MPEG-1 standard covers conformance testing, and is defined in ISO/IEC-11172-4.

Conformance: Procedures for testing conformance.

Provides two sets of guidelines and reference bitstreams for testing the conformance of MPEG-1 audio and video decoders, as well as the bitstreams produced by an encoder.[5] [8]

Reference Software

Part 5 of the MPEG-1 standard includes reference software, and is defined in ISO/IEC-11172-5.

Simulation: Reference software.

C language reference code for encoding and decoding of audio and video, as well as multiplexing and demultiplexing.[5] [8]

This includes the ISO Dist10 audio encoder code, which LAME and TooLAME were based upon.


See Also

  • MPEG The Moving Picture Experts Group, developers of the MPEG-1 standard
  • MP3 More (less technical) detail about MPEG-1 Layer III audio
  • MPEG Multichannel Backwards compatible 5.1 channel surround sound extension to Layer II audio
  • MPEG-2 The direct successor to the MPEG-1 standard.
Implementations
  • Libavcodec includes MPEG-1/2 video/audio encoders and decoders
  • Mjpegtools MPEG-1/2 video/audio encoders
  • TooLAME A high quality MPEG-1 Layer II audio encoder.
  • LAME A high quality MP3 (Layer III) audio encoder.
  • Musepack A format originally based on MPEG-1 Layer II audio, but now incompatible.

References

  1. 1.0 1.1 1.2 1.3 1.4 1.5 Adler, Mark; Harald Popp & Morten Hjerde (November 09, 1996), MPEG-FAQ: multimedia compression [1/9], faqs.org. Retrieved on 2008-04-09
  2. 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 Le Gall, Didier (April, 1991), MPEG: a video compression standard for multimedia applications, Communications of the ACM. Retrieved on 2008-04-09
  3. Chiariglione, Leonardo (October 21, 1989), Kurihama 89 press release, ISO/IEC. Retrieved on 2008-04-09
  4. 4.0 4.1 Chiariglione, Leonardo (March, 2001), Open source in MPEG, Linux Journal. Retrieved on 2008-04-09
  5. 5.00 5.01 5.02 5.03 5.04 5.05 5.06 5.07 5.08 5.09 5.10 5.11 Fogg, Chad (April 2, 1996), MPEG-2 FAQ, University of California, Berkeley. Retrieved on 2008-04-09
  6. 6.0 6.1 6.2 6.3 Chiariglione, Leonardo; Didier Le Gall & Hans-Georg Musmann et al. (September, 1990), Press Release - Status report of ISO MPEG, ISO/IEC. Retrieved on 2008-04-09
  7. Meetings, ISO/IEC. Retrieved on 2008-04-09
  8. 8.0 8.1 8.2 Achievements, ISO/IEC. Retrieved on 2008-04-03
  9. Chiariglione, Leonardo (November 06, 1992), MPEG Press Release, London, 6 November 1992, ISO/IEC. Retrieved on 2008-04-09
  10. 10.0 10.1 10.2 Wallace, Greg (April 02, 1993), Press Release, ISO/IEC. Retrieved on 2008-04-09
  11. 11.0 11.1 11.2 11.3 Popp, Harald & Morten Hjerde (November 09, 1996), MPEG-FAQ: multimedia compression [2/9], faqs.org. Retrieved on 2008-04-10
  12. Ozer, Jan (October 12, 2001), Choosing the Optimal Video Resolution: The MPEG-2 Player Market, extremetech.com. Retrieved on 2008-04-09
  13. Comparison between MPEG 1 & 2, snazzizone.com. Retrieved on 2008-04-09
  14. MPEG 1 And 2 Compared, Pure Motion Ltd., 2003. Retrieved on 2008-04-09
  15. 15.0 15.1 15.2 15.3 15.4 15.5 15.6 Grill, B. & S. Quackenbush (October, 2005), MPEG-1 Audio, ISO/IEC. Retrieved on 2008-04-03
  16. Chiariglione, Leonardo, MPEG-1 Systems, ISO/IEC. Retrieved on 2008-04-09
  17. 17.0 17.1 Pack Header. Retrieved on 2008-04-07
  18. Fimoff, Mark & Wayne E. Bretl (December 1, 1999), MPEG2 Tutorial. Retrieved on 2008-04-09
  19. Fimoff, Mark & Wayne E. Bretl (December 1, 1999), MPEG2 Tutorial. Retrieved on 2008-04-09
  20. Fimoff, Mark & Wayne E. Bretl (December 1, 1999), MPEG2 Tutorial. Retrieved on 2008-04-09
  21. Fimoff, Mark & Wayne E. Bretl (December 1, 1999), MPEG2 Tutorial. Retrieved on 2008-04-09
  22. Acharya, Soam & Brian Smith (1998), Compressed Domain Transcoding of MPEG, Cornell University, IEEE Computer Society, ICMCS, at 3. Retrieved on 2008-04-09 - (Requires clever reading: says quantization matrices differ, but those are just defaults, and selectable)
  23. 23.0 23.1 23.2 Wee, Susie J.; Bhaskaran Vasudev & Sam Liu (March 13, 1997), Transcoding MPEG Video Streams in the Compressed Domain, HP. Retrieved on 2008-04-01
  24. being centered around 0, by subtracting the values by half the number of possible values (i.e. 128)
  25. 25.0 25.1 25.2 25.3 25.4 25.5 Thom, D. & H. Purnhagen (October, 1998), MPEG Audio FAQ Version 9, ISO/IEC. Retrieved on 2008-04-09
  26. 26.0 26.1 26.2 26.3 26.4 26.5 Church, Steve, Perceptual Coding and MPEG Compression, NAB Engineering Handbook, Telos Systems. Retrieved on 2008-04-09
  27. 27.0 27.1 27.2 27.3 27.4 27.5 27.6 27.7 27.8 27.9 Pan, Davis (Summer, 1995), A Tutorial on MPEG/Audio Compression, IEEE Multimedia Journal, at 8. Retrieved on 2008-04-09
  28. Smith, Brian (1996), A Survey of Compressed Domain Processing Techniques, Cornell University, at 7. Retrieved on 2008-04-09
  29. Cheng, Mike, Psychoacoustic Models in TooLAME/TwoLAME, twolame.org. Retrieved on 2008-04-09
  30. 30.0 30.1 Herre, Jurgen (October 05, 2004), From Joint Stereo to Spatial Audio Coding, Conference on Digital Audio Effects, at 2. Retrieved on 2008-04-17
  31. Grewin, Christer; Rydén, Thomas, Subjective Assessments on Low Bit-Rate Audio Codecs, Proceedings of the 10th International AES Conference: Images of Audio, pp 91 - 102, London September 1991
  32. J.D. Johnston, Estimation of Perceptual Entropy Using Noise Masking Criteria, in International Conference on Acoustics, Speech, and Signal Processing, ICASSP-88, vol.5, pp. 2524-2527, April 1988
  33. J.D. Johnston, Transform Coding of Audio Signals Using Perceptual Noise Criteria, IEEE Journal Select Areas in Communications, vol. 6, no. 2, pp. 314-323, Feb. 1988
  34. Wüstenhagen, Ulf; Feiten, Bernhard; Hoeg, Wolfgang, Subjective Listening Test of Multi-channel Audio Codecs, AES 105th Convention Paper 4813, San Francisco September 1998
  35. 35.0 35.1 B/MAE Project Group (September, 2007), EBU evaluations of multichannel audio codecs, European Broadcasting Union. Retrieved on 2008-04-09
  36. 36.0 36.1 Meares, David; Kaoru Watanabe & Eric Scheirer (February, 1998), Report on the MPEG-2 AAC Stereo Verification Tests, ISO/IEC, at 18. Retrieved on 2008-04-16
  37. Painter, Ted & Andreas Spanias (April, 2000), Perceptual Coding of Digital Audio (PROCEEDINGS OF THE IEEE, VOL. 88, NO. 4), Proceedings of the IEEE. Retrieved on 2008-04-01
  38. Amorim, Roberto (September 19, 2006), GPSYCHO - Mid/Side Stereo, LAME. Retrieved on 2008-04-17
  39. Chiariglione, Leonardo (November 11, 1994), Press Release, ISO/IEC. Retrieved on 2008-04-09

External Links

Template:MPEG

Template:Compression Formats

Template:Compression Methods

bn:এমপেগ-১ bs:MPEG-1 ca:MPEG-1 da:MPEG-1 de:MPEG-1 et:MPEG-1 es:MPEG-1 fr:MPEG-1 ko:MPEG-1 it:MPEG-1 ms:MPEG-1 ja:MPEG-1 pam:MPEG-1 pl:MPEG-1 ru:MPEG-1 sk:MPEG-1 sr:МПЕГ-1 fi:MPEG-1 sv:MPEG-1 tr:MPEG-1 uk:MPEG-1 zh:MPEG-1