<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multimedia.cx/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Elte</id>
	<title>MultimediaWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multimedia.cx/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Elte"/>
	<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php/Special:Contributions/Elte"/>
	<updated>2026-04-28T08:51:28Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=CinemaDNG&amp;diff=13992</id>
		<title>CinemaDNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=CinemaDNG&amp;diff=13992"/>
		<updated>2012-03-14T10:35:14Z</updated>

		<summary type="html">&lt;p&gt;Elte: initial version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Cinema Digital Negative=&lt;br /&gt;
&lt;br /&gt;
* Company: [[Adobe]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* overview: http://labs.adobe.com/downloads/cinemadng.html#docs&lt;br /&gt;
* spezification: http://download.macromedia.com/pub/labs/cinemadng/cinemadng_spec_090211.pdf&lt;br /&gt;
* file format: http://download.macromedia.com/pub/labs/cinemadng/cinemadng_summary.pdf&lt;br /&gt;
&lt;br /&gt;
[[Category:Video Codecs]]&lt;br /&gt;
[[Category:Container Formats]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13278</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13278"/>
		<updated>2011-01-31T14:03:17Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Time Stamp Parser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The intention was to extract the time stamps of the captured videos from the mpl files. The Panasonic GH1 doesn't write the time stamp into the SEI part of the h264 stream. Other cams are known to do this (e.g. Canon HG-20):&lt;br /&gt;
&lt;br /&gt;
http://forum.videohelp.com/threads/296805-Reading-AVCHD-Playlist-files-BDMV-Playlist-*-mpl&lt;br /&gt;
&lt;br /&gt;
This document might be helpful to understand the connection between a playlist file a cpi file and the actual stream file.&lt;br /&gt;
&lt;br /&gt;
http://www.blu-raydisc.com/Assets/Downloadablefile/BD-RE_Part3_V2.1_WhitePaper_080406-15271.pdf&lt;br /&gt;
&lt;br /&gt;
= Technical Part =&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
In Bluray specification the files hav a differnt endig: *.mpls and *.m2ts.&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
This file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [2]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [3]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description starting with the second.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
It cntains a time stamp that might be the time when the file was closed by the cam.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;br /&gt;
&lt;br /&gt;
= Time Stamp Parser =&lt;br /&gt;
&lt;br /&gt;
This is a small C programm to parse all time stamps of MTS files that are written in playlist files in a directory. This programm is developed based on this file:&lt;br /&gt;
&lt;br /&gt;
http://www.avsforum.com/avs-vb/showthread.php?p=14578210#post14578210&lt;br /&gt;
&lt;br /&gt;
 /* GPL 2.1 © Elte 2011 */&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;dirent.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #define VERSION         &amp;quot;0.1&amp;quot;&lt;br /&gt;
 #define SIGNATUR        &amp;quot;MPLS0100&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 typedef struct {&lt;br /&gt;
     unsigned char decade, month, day, hour, minute, second;&lt;br /&gt;
 } MTS_date;&lt;br /&gt;
 &lt;br /&gt;
 int main (int argc, char *argv[])&lt;br /&gt;
 {&lt;br /&gt;
     struct dirent  *dp = NULL;&lt;br /&gt;
     DIR       *dir_ptr = NULL;&lt;br /&gt;
     FILE *mpl_file_ptr = NULL;&lt;br /&gt;
 &lt;br /&gt;
     int ret = 0;&lt;br /&gt;
 &lt;br /&gt;
     unsigned char signatur[] = SIGNATUR, buffer[sizeof(SIGNATUR)];&lt;br /&gt;
 &lt;br /&gt;
     if (argc != 2) {&lt;br /&gt;
         fprintf(stderr, &amp;quot;Version: %s\n&amp;quot;, VERSION);&lt;br /&gt;
         fprintf(stderr, &amp;quot;Usage: %s &amp;lt;path to folder containing *.MPL files\n&amp;quot;, argv[0]);&lt;br /&gt;
         goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     if (chdir(argv[1]) == -1) {&lt;br /&gt;
 	fprintf(stderr, &amp;quot;Cannot change directory: %s %s\n&amp;quot;, argv[1], strerror(errno));&lt;br /&gt;
 	goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     if ((dir_ptr = opendir (&amp;quot;.&amp;quot;)) == NULL) {&lt;br /&gt;
         fprintf (stderr, &amp;quot;Error reading directory: %s %s\n&amp;quot;, argv[1], strerror(errno));&lt;br /&gt;
         goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
 //    printf (&amp;quot; STREAM       DATE       TIME\n&amp;quot;);&lt;br /&gt;
 //    printf (&amp;quot;---------  ----------  --------\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
     while ((dp = readdir(dir_ptr)) != NULL) {&lt;br /&gt;
 &lt;br /&gt;
         if (!strncmp ((dp-&amp;gt;d_name) + (strlen (dp-&amp;gt;d_name) - 4), &amp;quot;.MPL&amp;quot;, 4)) {&lt;br /&gt;
 &lt;br /&gt;
             unsigned char file_number[2] = {0, 0},&lt;br /&gt;
                                 num_desc = 0;&lt;br /&gt;
             MTS_date                this = {0, 0, 0, 0, 0, 0};&lt;br /&gt;
 &lt;br /&gt;
             if ((mpl_file_ptr = fopen (dp-&amp;gt;d_name, &amp;quot;r&amp;quot;)) == NULL) {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Error opening file: %s %s\n&amp;quot;, dp-&amp;gt;d_name, strerror(errno));&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             if ((fread (buffer, sizeof(SIGNATUR), 1, mpl_file_ptr) != 1) ||&lt;br /&gt;
                 (strncmp (buffer, SIGNATUR, sizeof(SIGNATUR)))) {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Could not read file signatur. Wrong filetype?\n&amp;quot;);&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             // find out how many mts files are described&lt;br /&gt;
             // the 66th byte contains this number&lt;br /&gt;
             fseek (mpl_file_ptr, 66 - sizeof(SIGNATUR) - 1, SEEK_CUR);&lt;br /&gt;
             ret = fgetc(mpl_file_ptr);&lt;br /&gt;
             if (ret != EOF) {&lt;br /&gt;
                 num_desc = (unsigned char) ret;&lt;br /&gt;
             } else {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Could not read contents\n&amp;quot;);&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             // jump to the first occurance of a time stamp and print it&lt;br /&gt;
             // iterate till all num_desc time stamps are shown&lt;br /&gt;
             // trailer = 50 bytes&lt;br /&gt;
             // mts description = 66 bytes&lt;br /&gt;
             // actual info starts at 9th byte of mts description&lt;br /&gt;
             fseek (mpl_file_ptr, -50 - 66*num_desc - 48 +2, SEEK_END);&lt;br /&gt;
 &lt;br /&gt;
             while (num_desc &amp;gt; 0) {&lt;br /&gt;
 &lt;br /&gt;
                 int i;&lt;br /&gt;
                 const unsigned char time_stamp_sig[] = {1, 3, 5, 0x81, 0, 0, 0, 0};&lt;br /&gt;
 &lt;br /&gt;
                 num_desc--;&lt;br /&gt;
                 fseek (mpl_file_ptr, 48, SEEK_CUR);&lt;br /&gt;
 &lt;br /&gt;
                 // scan for time stamp signatur&lt;br /&gt;
                 for (i=0; i&amp;lt;8; i++) {&lt;br /&gt;
                     if ((ret = fgetc(mpl_file_ptr)) != time_stamp_sig[i]) {&lt;br /&gt;
                         fprintf (stderr, &amp;quot;Could not parse contents\n&amp;quot;);&lt;br /&gt;
                         goto NEXT_FILE;&lt;br /&gt;
                     }&lt;br /&gt;
                 }&lt;br /&gt;
 &lt;br /&gt;
                 // scan time stamp&lt;br /&gt;
                 if ((ret = fscanf (mpl_file_ptr, &amp;quot;%c%c\x1E%*1[ ]%c%c%c%c%c%c&amp;quot;,&lt;br /&gt;
                               &amp;amp;file_number[0], &amp;amp;file_number[1],&lt;br /&gt;
                               &amp;amp;this.decade, &amp;amp;this.month, &amp;amp;this.day,&lt;br /&gt;
                               &amp;amp;this.hour, &amp;amp;this.minute, &amp;amp;this.second)) != 8) {&lt;br /&gt;
                     fprintf (stderr, &amp;quot;Could not parse time stamp\n&amp;quot;);&lt;br /&gt;
                     goto NEXT_FILE;&lt;br /&gt;
                 }&lt;br /&gt;
                 printf (&amp;quot;%.5d.MTS  20%.2X/%.2X/%.2X  %.2X:%.2X:%.2X\n&amp;quot;,&lt;br /&gt;
                         (file_number[0]&amp;lt;&amp;lt;8) + file_number[1],&lt;br /&gt;
                         this.decade, this.month, this.day,&lt;br /&gt;
                         this.hour, this.minute, this.second);&lt;br /&gt;
             }&lt;br /&gt;
 NEXT_FILE:&lt;br /&gt;
             fclose (mpl_file_ptr);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 ERROR:&lt;br /&gt;
     closedir (dir_ptr);&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13277</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13277"/>
		<updated>2011-01-31T14:02:10Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Time Stamp Parser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The intention was to extract the time stamps of the captured videos from the mpl files. The Panasonic GH1 doesn't write the time stamp into the SEI part of the h264 stream. Other cams are known to do this (e.g. Canon HG-20):&lt;br /&gt;
&lt;br /&gt;
http://forum.videohelp.com/threads/296805-Reading-AVCHD-Playlist-files-BDMV-Playlist-*-mpl&lt;br /&gt;
&lt;br /&gt;
This document might be helpful to understand the connection between a playlist file a cpi file and the actual stream file.&lt;br /&gt;
&lt;br /&gt;
http://www.blu-raydisc.com/Assets/Downloadablefile/BD-RE_Part3_V2.1_WhitePaper_080406-15271.pdf&lt;br /&gt;
&lt;br /&gt;
= Technical Part =&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
In Bluray specification the files hav a differnt endig: *.mpls and *.m2ts.&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
This file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [2]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [3]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description starting with the second.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
It cntains a time stamp that might be the time when the file was closed by the cam.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;br /&gt;
&lt;br /&gt;
= Time Stamp Parser =&lt;br /&gt;
&lt;br /&gt;
This is a small C programm to parse all time stamps of MTS files that are written in playlist files in a directory. This programm is developed based on this file:&lt;br /&gt;
&lt;br /&gt;
http://www.avsforum.com/avs-vb/showthread.php?p=14578210#post14578210&lt;br /&gt;
&lt;br /&gt;
 /* GPL 2.1 © Elte 2011 */&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;dirent.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #define VERSION         &amp;quot;0.1&amp;quot;&lt;br /&gt;
 #define SIGNATUR        &amp;quot;MPLS0100&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 typedef struct {&lt;br /&gt;
     unsigned char decade, month, day, hour, minute, second;&lt;br /&gt;
 } MTS_date;&lt;br /&gt;
 &lt;br /&gt;
 int main (int argc, char *argv[])&lt;br /&gt;
 {&lt;br /&gt;
     struct dirent  *dp = NULL;&lt;br /&gt;
     DIR       *dir_ptr = NULL;&lt;br /&gt;
     FILE *mpl_file_ptr = NULL;&lt;br /&gt;
 &lt;br /&gt;
     int ret = 0;&lt;br /&gt;
 &lt;br /&gt;
     unsigned char signatur[] = SIGNATUR, buffer[sizeof(SIGNATUR)];&lt;br /&gt;
 &lt;br /&gt;
     if (argc != 2) {&lt;br /&gt;
         fprintf(stderr, &amp;quot;Version: %s\n&amp;quot;, VERSION);&lt;br /&gt;
         fprintf(stderr, &amp;quot;Usage: %s &amp;lt;path to folder containing *.MPL files\n&amp;quot;, argv[0]);&lt;br /&gt;
         goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     if (chdir(argv[1]) == -1) {&lt;br /&gt;
 	fprintf(stderr, &amp;quot;Cannot change directory: %s %s\n&amp;quot;, argv[1], strerror(errno));&lt;br /&gt;
 	goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     if ((dir_ptr = opendir (&amp;quot;.&amp;quot;)) == NULL) {&lt;br /&gt;
         fprintf (stderr, &amp;quot;Error reading directory: %s %s\n&amp;quot;, argv[1], strerror(errno));&lt;br /&gt;
         goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
 //    printf (&amp;quot; STREAM       DATE       TIME\n&amp;quot;);&lt;br /&gt;
 //    printf (&amp;quot;---------  ----------  --------\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
     while ((dp = readdir(dir_ptr)) != NULL) {&lt;br /&gt;
 &lt;br /&gt;
         if (!strncmp ((dp-&amp;gt;d_name) + (strlen (dp-&amp;gt;d_name) - 4), &amp;quot;.MPL&amp;quot;, 4)) {&lt;br /&gt;
 &lt;br /&gt;
             unsigned char file_number[2] = {0, 0},&lt;br /&gt;
                                 num_desc = 0;&lt;br /&gt;
             MTS_date                this = {0, 0, 0, 0, 0, 0};&lt;br /&gt;
 &lt;br /&gt;
             if ((mpl_file_ptr = fopen (dp-&amp;gt;d_name, &amp;quot;r&amp;quot;)) == NULL) {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Error opening file: %s %s\n&amp;quot;, dp-&amp;gt;d_name, strerror(errno));&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             if ((fread (buffer, sizeof(SIGNATUR), 1, mpl_file_ptr) != 1) ||&lt;br /&gt;
                 (strncmp (buffer, SIGNATUR, sizeof(SIGNATUR)))) {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Could not read file signatur. Wrong filetype?\n&amp;quot;);&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             // find out how many mts files are described&lt;br /&gt;
             // the 66th byte contains this number&lt;br /&gt;
             fseek (mpl_file_ptr, 66 - sizeof(SIGNATUR) - 1, SEEK_CUR);&lt;br /&gt;
             ret = fgetc(mpl_file_ptr);&lt;br /&gt;
             if (ret != EOF) {&lt;br /&gt;
                 num_desc = (unsigned char) ret;&lt;br /&gt;
             } else {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Could not read contents\n&amp;quot;);&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             // jump to the first occurance of a time stamp and print it&lt;br /&gt;
             // iterate till all num_desc time stamps are shown&lt;br /&gt;
             // trailer = 50 bytes&lt;br /&gt;
             // mts description = 66 bytes&lt;br /&gt;
             // actual info starts at 9th byte of mts description&lt;br /&gt;
             fseek (mpl_file_ptr, -50 - 66*num_desc - 48 +2, SEEK_END);&lt;br /&gt;
  &lt;br /&gt;
             while (num_desc &amp;gt; 0) {&lt;br /&gt;
 &lt;br /&gt;
                 int i;&lt;br /&gt;
                 const unsigned char time_stamp_sig[] = {1, 3, 5, 0x81, 0, 0, 0, 0};&lt;br /&gt;
 &lt;br /&gt;
                 num_desc--;&lt;br /&gt;
                 fseek (mpl_file_ptr, 48, SEEK_CUR);&lt;br /&gt;
 &lt;br /&gt;
                 // scan for time stamp signatur&lt;br /&gt;
                 for (i=0; i&amp;lt;8; i++) {&lt;br /&gt;
                     if ((ret = fgetc(mpl_file_ptr)) != time_stamp_sig[i]) {&lt;br /&gt;
                         fprintf (stderr, &amp;quot;Could not parse contents\n&amp;quot;);&lt;br /&gt;
                         goto NEXT_FILE;&lt;br /&gt;
                     }&lt;br /&gt;
                 }&lt;br /&gt;
 &lt;br /&gt;
                 // scan time stamp&lt;br /&gt;
                 if ((ret = fscanf (mpl_file_ptr, &amp;quot;%c%c\x1E%*1[ ]%c%c%c%c%c%c&amp;quot;,&lt;br /&gt;
                               &amp;amp;file_number[0], &amp;amp;file_number[1],&lt;br /&gt;
                               &amp;amp;this.decade, &amp;amp;this.month, &amp;amp;this.day,&lt;br /&gt;
                               &amp;amp;this.hour, &amp;amp;this.minute, &amp;amp;this.second)) != 8) {&lt;br /&gt;
                     fprintf (stderr, &amp;quot;Could not parse time stamp\n&amp;quot;);&lt;br /&gt;
                     goto NEXT_FILE;&lt;br /&gt;
                 }&lt;br /&gt;
                 printf (&amp;quot;%.5d.MTS  20%.2X/%.2X/%.2X  %.2X:%.2X:%.2X\n&amp;quot;,&lt;br /&gt;
                         (file_number[0]&amp;lt;&amp;lt;8) + file_number[1],&lt;br /&gt;
                         this.decade, this.month, this.day,&lt;br /&gt;
                         this.hour, this.minute, this.second);&lt;br /&gt;
             }&lt;br /&gt;
 NEXT_FILE:&lt;br /&gt;
             fclose (mpl_file_ptr);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 ERROR:&lt;br /&gt;
     closedir (dir_ptr);&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Talk:MPL&amp;diff=13276</id>
		<title>Talk:MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Talk:MPL&amp;diff=13276"/>
		<updated>2011-01-31T14:00:32Z</updated>

		<summary type="html">&lt;p&gt;Elte: done myself&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Talk:Mpl&amp;diff=13275</id>
		<title>Talk:Mpl</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Talk:Mpl&amp;diff=13275"/>
		<updated>2011-01-31T14:00:13Z</updated>

		<summary type="html">&lt;p&gt;Elte: Talk:Mpl moved to Talk:MPL: upper case&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Talk:MPL]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Talk:MPL&amp;diff=13274</id>
		<title>Talk:MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Talk:MPL&amp;diff=13274"/>
		<updated>2011-01-31T14:00:13Z</updated>

		<summary type="html">&lt;p&gt;Elte: Talk:Mpl moved to Talk:MPL: upper case&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi, there!&lt;br /&gt;
&lt;br /&gt;
Could someone please rename this site from Mpl to MPL?&lt;br /&gt;
&lt;br /&gt;
Thanks&lt;br /&gt;
&lt;br /&gt;
[[User:Elte|Elte]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Mpl&amp;diff=13273</id>
		<title>Mpl</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Mpl&amp;diff=13273"/>
		<updated>2011-01-31T14:00:12Z</updated>

		<summary type="html">&lt;p&gt;Elte: Mpl moved to MPL: upper case&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[MPL]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13272</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13272"/>
		<updated>2011-01-31T14:00:12Z</updated>

		<summary type="html">&lt;p&gt;Elte: Mpl moved to MPL: upper case&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The intention was to extract the time stamps of the captured videos from the mpl files. The Panasonic GH1 doesn't write the time stamp into the SEI part of the h264 stream. Other cams are known to do this (e.g. Canon HG-20):&lt;br /&gt;
&lt;br /&gt;
http://forum.videohelp.com/threads/296805-Reading-AVCHD-Playlist-files-BDMV-Playlist-*-mpl&lt;br /&gt;
&lt;br /&gt;
This document might be helpful to understand the connection between a playlist file a cpi file and the actual stream file.&lt;br /&gt;
&lt;br /&gt;
http://www.blu-raydisc.com/Assets/Downloadablefile/BD-RE_Part3_V2.1_WhitePaper_080406-15271.pdf&lt;br /&gt;
&lt;br /&gt;
= Technical Part =&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
In Bluray specification the files hav a differnt endig: *.mpls and *.m2ts.&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
This file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [2]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [3]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description starting with the second.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
It cntains a time stamp that might be the time when the file was closed by the cam.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;br /&gt;
&lt;br /&gt;
= Time Stamp Parser =&lt;br /&gt;
&lt;br /&gt;
This is a small C programm to parse all time stamps of MTS files that are written in playlist files in a directory. This programm is developed based on this file:&lt;br /&gt;
&lt;br /&gt;
http://www.avsforum.com/avs-vb/showthread.php?p=14578210#post14578210&lt;br /&gt;
&lt;br /&gt;
 /* GPL 2.1 © Elte 2011 */&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;dirent.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #define VERSION         &amp;quot;0.1&amp;quot;&lt;br /&gt;
 #define SIGNATUR        &amp;quot;MPLS0100&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 typedef struct {&lt;br /&gt;
     unsigned char decade, month, day, hour, minute, second;&lt;br /&gt;
 } MTS_date;&lt;br /&gt;
 &lt;br /&gt;
 int main (int argc, char *argv[])&lt;br /&gt;
 {&lt;br /&gt;
     struct dirent  *dp = NULL;&lt;br /&gt;
     DIR       *dir_ptr = NULL;&lt;br /&gt;
     FILE *mpl_file_ptr = NULL;&lt;br /&gt;
 &lt;br /&gt;
     int ret = 0;&lt;br /&gt;
 &lt;br /&gt;
     unsigned char signatur[] = SIGNATUR, buffer[sizeof(SIGNATUR)];&lt;br /&gt;
 &lt;br /&gt;
     if (argc != 2) {&lt;br /&gt;
         fprintf(stderr, &amp;quot;Version: %s\n&amp;quot;, VERSION);&lt;br /&gt;
         fprintf(stderr, &amp;quot;Usage: %s &amp;lt;path to folder containing *.MPL files\n&amp;quot;, argv[0]);&lt;br /&gt;
         goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     if (chdir(argv[1]) == -1) {&lt;br /&gt;
 	fprintf(stderr, &amp;quot;Cannot change directory: %s %s\n&amp;quot;, argv[1], strerror(errno));&lt;br /&gt;
 	goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     if ((dir_ptr = opendir (&amp;quot;.&amp;quot;)) == NULL) {&lt;br /&gt;
         fprintf (stderr, &amp;quot;Error reading directory: %s %s\n&amp;quot;, argv[1], strerror(errno));&lt;br /&gt;
         goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
 //    printf (&amp;quot; STREAM       DATE       TIME\n&amp;quot;);&lt;br /&gt;
 //    printf (&amp;quot;---------  ----------  --------\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
     while ((dp = readdir(dir_ptr)) != NULL) {&lt;br /&gt;
 &lt;br /&gt;
          if (!strncmp ((dp-&amp;gt;d_name) + (strlen (dp-&amp;gt;d_name) - 4), &amp;quot;.MPL&amp;quot;, 4)) {&lt;br /&gt;
 &lt;br /&gt;
             unsigned char file_number[2] = {0, 0},&lt;br /&gt;
                                 num_desc = 0;&lt;br /&gt;
             MTS_date                this = {0, 0, 0, 0, 0, 0};&lt;br /&gt;
 &lt;br /&gt;
             if ((mpl_file_ptr = fopen (dp-&amp;gt;d_name, &amp;quot;r&amp;quot;)) == NULL) {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Error opening file: %s %s\n&amp;quot;, dp-&amp;gt;d_name, strerror(errno));&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             if ((fread (buffer, sizeof(SIGNATUR), 1, mpl_file_ptr) != 1) ||&lt;br /&gt;
                 (strncmp (buffer, SIGNATUR, sizeof(SIGNATUR)))) {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Could not read file signatur. Wrong filetype?\n&amp;quot;);&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             // find out how many mts files are described&lt;br /&gt;
             // the 66th byte contains this number&lt;br /&gt;
             fseek (mpl_file_ptr, 66 - sizeof(SIGNATUR) - 1, SEEK_CUR);&lt;br /&gt;
             ret = fgetc(mpl_file_ptr);&lt;br /&gt;
             if (ret != EOF) {&lt;br /&gt;
                 num_desc = (unsigned char) ret;&lt;br /&gt;
             } else {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Could not read contents\n&amp;quot;);&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             // jump to the first occurance of a time stamp and print it&lt;br /&gt;
             // iterate till all num_desc time stamps are shown&lt;br /&gt;
             // trailer = 50 bytes&lt;br /&gt;
             // mts description = 66 bytes&lt;br /&gt;
             // actual info starts at 9th byte of mts description&lt;br /&gt;
             fseek (mpl_file_ptr, -50 - 66*num_desc - 48 +2, SEEK_END);&lt;br /&gt;
  &lt;br /&gt;
             while (num_desc &amp;gt; 0) {&lt;br /&gt;
 &lt;br /&gt;
                 int i;&lt;br /&gt;
                 const unsigned char time_stamp_sig[] = {1, 3, 5, 0x81, 0, 0, 0, 0};&lt;br /&gt;
 &lt;br /&gt;
                 num_desc--;&lt;br /&gt;
                 fseek (mpl_file_ptr, 48, SEEK_CUR);&lt;br /&gt;
 &lt;br /&gt;
                 // scan for time stamp signatur&lt;br /&gt;
                 for (i=0; i&amp;lt;8; i++) {&lt;br /&gt;
                     if ((ret = fgetc(mpl_file_ptr)) != time_stamp_sig[i]) {&lt;br /&gt;
                         fprintf (stderr, &amp;quot;Could not parse contents\n&amp;quot;);&lt;br /&gt;
                         goto NEXT_FILE;&lt;br /&gt;
                     }&lt;br /&gt;
                 }&lt;br /&gt;
 &lt;br /&gt;
                 // scan time stamp&lt;br /&gt;
                 if ((ret = fscanf (mpl_file_ptr, &amp;quot;%c%c\x1E%*1[ ]%c%c%c%c%c%c&amp;quot;,&lt;br /&gt;
                               &amp;amp;file_number[0], &amp;amp;file_number[1],&lt;br /&gt;
                               &amp;amp;this.decade, &amp;amp;this.month, &amp;amp;this.day,&lt;br /&gt;
                               &amp;amp;this.hour, &amp;amp;this.minute, &amp;amp;this.second)) != 8) {&lt;br /&gt;
                     fprintf (stderr, &amp;quot;Could not parse time stamp\n&amp;quot;);&lt;br /&gt;
                     goto NEXT_FILE;&lt;br /&gt;
                 }&lt;br /&gt;
                 printf (&amp;quot;%.5d.MTS  20%.2X/%.2X/%.2X  %.2X:%.2X:%.2X\n&amp;quot;,&lt;br /&gt;
                         (file_number[0]&amp;lt;&amp;lt;8) + file_number[1],&lt;br /&gt;
                         this.decade, this.month, this.day,&lt;br /&gt;
                         this.hour, this.minute, this.second);&lt;br /&gt;
             }&lt;br /&gt;
 NEXT_FILE:&lt;br /&gt;
             fclose (mpl_file_ptr);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 ERROR:&lt;br /&gt;
     closedir (dir_ptr);&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13271</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13271"/>
		<updated>2011-01-31T13:59:10Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Time Stamp Parser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The intention was to extract the time stamps of the captured videos from the mpl files. The Panasonic GH1 doesn't write the time stamp into the SEI part of the h264 stream. Other cams are known to do this (e.g. Canon HG-20):&lt;br /&gt;
&lt;br /&gt;
http://forum.videohelp.com/threads/296805-Reading-AVCHD-Playlist-files-BDMV-Playlist-*-mpl&lt;br /&gt;
&lt;br /&gt;
This document might be helpful to understand the connection between a playlist file a cpi file and the actual stream file.&lt;br /&gt;
&lt;br /&gt;
http://www.blu-raydisc.com/Assets/Downloadablefile/BD-RE_Part3_V2.1_WhitePaper_080406-15271.pdf&lt;br /&gt;
&lt;br /&gt;
= Technical Part =&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
In Bluray specification the files hav a differnt endig: *.mpls and *.m2ts.&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
This file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [2]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [3]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description starting with the second.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
It cntains a time stamp that might be the time when the file was closed by the cam.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;br /&gt;
&lt;br /&gt;
= Time Stamp Parser =&lt;br /&gt;
&lt;br /&gt;
This is a small C programm to parse all time stamps of MTS files that are written in playlist files in a directory. This programm is developed based on this file:&lt;br /&gt;
&lt;br /&gt;
http://www.avsforum.com/avs-vb/showthread.php?p=14578210#post14578210&lt;br /&gt;
&lt;br /&gt;
 /* GPL 2.1 © Elte 2011 */&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;dirent.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #define VERSION         &amp;quot;0.1&amp;quot;&lt;br /&gt;
 #define SIGNATUR        &amp;quot;MPLS0100&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 typedef struct {&lt;br /&gt;
     unsigned char decade, month, day, hour, minute, second;&lt;br /&gt;
 } MTS_date;&lt;br /&gt;
 &lt;br /&gt;
 int main (int argc, char *argv[])&lt;br /&gt;
 {&lt;br /&gt;
     struct dirent  *dp = NULL;&lt;br /&gt;
     DIR       *dir_ptr = NULL;&lt;br /&gt;
     FILE *mpl_file_ptr = NULL;&lt;br /&gt;
 &lt;br /&gt;
     int ret = 0;&lt;br /&gt;
 &lt;br /&gt;
     unsigned char signatur[] = SIGNATUR, buffer[sizeof(SIGNATUR)];&lt;br /&gt;
 &lt;br /&gt;
     if (argc != 2) {&lt;br /&gt;
         fprintf(stderr, &amp;quot;Version: %s\n&amp;quot;, VERSION);&lt;br /&gt;
         fprintf(stderr, &amp;quot;Usage: %s &amp;lt;path to folder containing *.MPL files\n&amp;quot;, argv[0]);&lt;br /&gt;
         goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     if (chdir(argv[1]) == -1) {&lt;br /&gt;
 	fprintf(stderr, &amp;quot;Cannot change directory: %s %s\n&amp;quot;, argv[1], strerror(errno));&lt;br /&gt;
 	goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     if ((dir_ptr = opendir (&amp;quot;.&amp;quot;)) == NULL) {&lt;br /&gt;
         fprintf (stderr, &amp;quot;Error reading directory: %s %s\n&amp;quot;, argv[1], strerror(errno));&lt;br /&gt;
         goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
 //    printf (&amp;quot; STREAM       DATE       TIME\n&amp;quot;);&lt;br /&gt;
 //    printf (&amp;quot;---------  ----------  --------\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
     while ((dp = readdir(dir_ptr)) != NULL) {&lt;br /&gt;
 &lt;br /&gt;
          if (!strncmp ((dp-&amp;gt;d_name) + (strlen (dp-&amp;gt;d_name) - 4), &amp;quot;.MPL&amp;quot;, 4)) {&lt;br /&gt;
 &lt;br /&gt;
             unsigned char file_number[2] = {0, 0},&lt;br /&gt;
                                 num_desc = 0;&lt;br /&gt;
             MTS_date                this = {0, 0, 0, 0, 0, 0};&lt;br /&gt;
 &lt;br /&gt;
             if ((mpl_file_ptr = fopen (dp-&amp;gt;d_name, &amp;quot;r&amp;quot;)) == NULL) {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Error opening file: %s %s\n&amp;quot;, dp-&amp;gt;d_name, strerror(errno));&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             if ((fread (buffer, sizeof(SIGNATUR), 1, mpl_file_ptr) != 1) ||&lt;br /&gt;
                 (strncmp (buffer, SIGNATUR, sizeof(SIGNATUR)))) {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Could not read file signatur. Wrong filetype?\n&amp;quot;);&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             // find out how many mts files are described&lt;br /&gt;
             // the 66th byte contains this number&lt;br /&gt;
             fseek (mpl_file_ptr, 66 - sizeof(SIGNATUR) - 1, SEEK_CUR);&lt;br /&gt;
             ret = fgetc(mpl_file_ptr);&lt;br /&gt;
             if (ret != EOF) {&lt;br /&gt;
                 num_desc = (unsigned char) ret;&lt;br /&gt;
             } else {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Could not read contents\n&amp;quot;);&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             // jump to the first occurance of a time stamp and print it&lt;br /&gt;
             // iterate till all num_desc time stamps are shown&lt;br /&gt;
             // trailer = 50 bytes&lt;br /&gt;
             // mts description = 66 bytes&lt;br /&gt;
             // actual info starts at 9th byte of mts description&lt;br /&gt;
             fseek (mpl_file_ptr, -50 - 66*num_desc - 48 +2, SEEK_END);&lt;br /&gt;
  &lt;br /&gt;
             while (num_desc &amp;gt; 0) {&lt;br /&gt;
 &lt;br /&gt;
                 int i;&lt;br /&gt;
                 const unsigned char time_stamp_sig[] = {1, 3, 5, 0x81, 0, 0, 0, 0};&lt;br /&gt;
 &lt;br /&gt;
                 num_desc--;&lt;br /&gt;
                 fseek (mpl_file_ptr, 48, SEEK_CUR);&lt;br /&gt;
 &lt;br /&gt;
                 // scan for time stamp signatur&lt;br /&gt;
                 for (i=0; i&amp;lt;8; i++) {&lt;br /&gt;
                     if ((ret = fgetc(mpl_file_ptr)) != time_stamp_sig[i]) {&lt;br /&gt;
                         fprintf (stderr, &amp;quot;Could not parse contents\n&amp;quot;);&lt;br /&gt;
                         goto NEXT_FILE;&lt;br /&gt;
                     }&lt;br /&gt;
                 }&lt;br /&gt;
 &lt;br /&gt;
                 // scan time stamp&lt;br /&gt;
                 if ((ret = fscanf (mpl_file_ptr, &amp;quot;%c%c\x1E%*1[ ]%c%c%c%c%c%c&amp;quot;,&lt;br /&gt;
                               &amp;amp;file_number[0], &amp;amp;file_number[1],&lt;br /&gt;
                               &amp;amp;this.decade, &amp;amp;this.month, &amp;amp;this.day,&lt;br /&gt;
                               &amp;amp;this.hour, &amp;amp;this.minute, &amp;amp;this.second)) != 8) {&lt;br /&gt;
                     fprintf (stderr, &amp;quot;Could not parse time stamp\n&amp;quot;);&lt;br /&gt;
                     goto NEXT_FILE;&lt;br /&gt;
                 }&lt;br /&gt;
                 printf (&amp;quot;%.5d.MTS  20%.2X/%.2X/%.2X  %.2X:%.2X:%.2X\n&amp;quot;,&lt;br /&gt;
                         (file_number[0]&amp;lt;&amp;lt;8) + file_number[1],&lt;br /&gt;
                         this.decade, this.month, this.day,&lt;br /&gt;
                         this.hour, this.minute, this.second);&lt;br /&gt;
             }&lt;br /&gt;
 NEXT_FILE:&lt;br /&gt;
             fclose (mpl_file_ptr);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 ERROR:&lt;br /&gt;
     closedir (dir_ptr);&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=User:Elte&amp;diff=13263</id>
		<title>User:Elte</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=User:Elte&amp;diff=13263"/>
		<updated>2011-01-29T11:25:34Z</updated>

		<summary type="html">&lt;p&gt;Elte: snow is out of sight&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm a hobby video filmer and I'm committed to open source and preferably patent free software.&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Talk:MPL&amp;diff=13262</id>
		<title>Talk:MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Talk:MPL&amp;diff=13262"/>
		<updated>2011-01-29T11:24:05Z</updated>

		<summary type="html">&lt;p&gt;Elte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi, there!&lt;br /&gt;
&lt;br /&gt;
Could someone please rename this site from Mpl to MPL?&lt;br /&gt;
&lt;br /&gt;
Thanks&lt;br /&gt;
&lt;br /&gt;
[[User:Elte|Elte]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13261</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13261"/>
		<updated>2011-01-29T11:19:58Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Time Stamp Parser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The intention was to extract the time stamps of the captured videos from the mpl files. The Panasonic GH1 doesn't write the time stamp into the SEI part of the h264 stream. Other cams are known to do this (e.g. Canon HG-20):&lt;br /&gt;
&lt;br /&gt;
http://forum.videohelp.com/threads/296805-Reading-AVCHD-Playlist-files-BDMV-Playlist-*-mpl&lt;br /&gt;
&lt;br /&gt;
This document might be helpful to understand the connection between a playlist file a cpi file and the actual stream file.&lt;br /&gt;
&lt;br /&gt;
http://www.blu-raydisc.com/Assets/Downloadablefile/BD-RE_Part3_V2.1_WhitePaper_080406-15271.pdf&lt;br /&gt;
&lt;br /&gt;
= Technical Part =&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
In Bluray specification the files hav a differnt endig: *.mpls and *.m2ts.&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
This file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [2]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [3]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description starting with the second.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
It cntains a time stamp that might be the time when the file was closed by the cam.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;br /&gt;
&lt;br /&gt;
= Time Stamp Parser =&lt;br /&gt;
&lt;br /&gt;
This is a small C programm to parse all time stamps of MTS files that are written in playlist files in a directory. This programm is developed based on this file:&lt;br /&gt;
&lt;br /&gt;
http://www.avsforum.com/avs-vb/showthread.php?p=14578210#post14578210&lt;br /&gt;
&lt;br /&gt;
 /* GPL 2.1 © Elte 2011 */&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;dirent.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #define VERSION         &amp;quot;0.1&amp;quot;&lt;br /&gt;
 #define SIGNATUR        &amp;quot;MPLS0100&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 typedef struct {&lt;br /&gt;
     unsigned char decade, month, day, hour, minute, second;&lt;br /&gt;
 } MTS_date;&lt;br /&gt;
 &lt;br /&gt;
 int main (int argc, char *argv[])&lt;br /&gt;
 {&lt;br /&gt;
     struct dirent  *dp = NULL;&lt;br /&gt;
     DIR       *dir_ptr = NULL;&lt;br /&gt;
     FILE *mpl_file_ptr = NULL;&lt;br /&gt;
 &lt;br /&gt;
     int ret = 0;&lt;br /&gt;
 &lt;br /&gt;
     unsigned char signatur[] = SIGNATUR, buffer[sizeof(SIGNATUR)];&lt;br /&gt;
 &lt;br /&gt;
     if (argc != 2) {&lt;br /&gt;
         fprintf(stderr, &amp;quot;Version: %s\n&amp;quot;, VERSION);&lt;br /&gt;
         fprintf(stderr, &amp;quot;Usage: %s &amp;lt;path to folder containing *.MPL files\n&amp;quot;, argv[0]);&lt;br /&gt;
         goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     if (chdir(argv[1]) == -1) {&lt;br /&gt;
 	fprintf(stderr, &amp;quot;Cannot change directory: %s %s\n&amp;quot;, argv[1], strerror(errno));&lt;br /&gt;
 	goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     if ((dir_ptr = opendir (&amp;quot;.&amp;quot;)) == NULL) {&lt;br /&gt;
         fprintf (stderr, &amp;quot;Error reading directory: %s %s\n&amp;quot;, argv[1], strerror(errno));&lt;br /&gt;
         goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
 //    printf (&amp;quot; STREAM       DATE       TIME\n&amp;quot;);&lt;br /&gt;
 //    printf (&amp;quot;---------  ----------  --------\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
     while ((dp = readdir(dir_ptr)) != NULL) {&lt;br /&gt;
 &lt;br /&gt;
         if (!strncmp ((dp-&amp;gt;d_name) + (strlen (dp-&amp;gt;d_name) - 4), &amp;quot;.MPL&amp;quot;, 4)) {&lt;br /&gt;
 &lt;br /&gt;
             unsigned char file_number[2] = {0, 0},&lt;br /&gt;
                                 num_desc = 0;&lt;br /&gt;
             MTS_date                this = {0, 0, 0, 0, 0, 0};&lt;br /&gt;
 &lt;br /&gt;
             if ((mpl_file_ptr = fopen (dp-&amp;gt;d_name, &amp;quot;r&amp;quot;)) == NULL) {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Error opening file: %s %s\n&amp;quot;, dp-&amp;gt;d_name, strerror(errno));&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             if ((fread (buffer, sizeof(SIGNATUR), 1, mpl_file_ptr) != 1) ||&lt;br /&gt;
                 (strncmp (buffer, SIGNATUR, sizeof(SIGNATUR)))) {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Could not read file signatur. Wrong filetype?\n&amp;quot;);&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             // find out how many mts files are described&lt;br /&gt;
             // the 66th byte contains this number&lt;br /&gt;
             fseek (mpl_file_ptr, 66 - sizeof(SIGNATUR) - 1, SEEK_CUR);&lt;br /&gt;
             ret = fgetc(mpl_file_ptr);&lt;br /&gt;
             if (ret != EOF) {&lt;br /&gt;
                 num_desc = (unsigned char) ret;&lt;br /&gt;
             } else {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Could not read contents\n&amp;quot;);&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             // jump to the first occurance of a time stamp and print it&lt;br /&gt;
             // iterate till all num_desc time stamps are shown&lt;br /&gt;
             // trailer = 50 bytes&lt;br /&gt;
             // mts description = 66 bytes&lt;br /&gt;
             // actual info starts at 9th byte of mts description&lt;br /&gt;
             fseek (mpl_file_ptr, -50 - 66*num_desc - 48 +2, SEEK_END);&lt;br /&gt;
 &lt;br /&gt;
             while (num_desc &amp;gt; 0) {&lt;br /&gt;
 &lt;br /&gt;
                 int i;&lt;br /&gt;
                 num_desc--;&lt;br /&gt;
                 fseek (mpl_file_ptr, 48, SEEK_CUR);&lt;br /&gt;
 &lt;br /&gt;
                 // scan for {0x01, 0x03, 0x05, 0x81, 0, 0, 0, 0}&lt;br /&gt;
                 for (i=0; i&amp;lt;3; i++) {&lt;br /&gt;
                     if ((ret = fgetc(mpl_file_ptr)) != &amp;quot;\x01\x03\x05&amp;quot;[i]) {&lt;br /&gt;
                         fprintf (stderr, &amp;quot;Could not parse contents\n&amp;quot;);&lt;br /&gt;
                         goto NEXT_FILE;&lt;br /&gt;
                     }&lt;br /&gt;
                 }&lt;br /&gt;
                 if ((ret = fgetc(mpl_file_ptr)) != 0x81) {&lt;br /&gt;
                     fprintf (stderr, &amp;quot;Could not parse contents\n&amp;quot;);&lt;br /&gt;
                     goto NEXT_FILE;&lt;br /&gt;
                 }&lt;br /&gt;
                 for (i=0; i&amp;lt;4; i++) {&lt;br /&gt;
                     if ((ret = fgetc(mpl_file_ptr)) != 0) {&lt;br /&gt;
                         fprintf (stderr, &amp;quot;Could not parse contents\n&amp;quot;);&lt;br /&gt;
                         goto NEXT_FILE;&lt;br /&gt;
                     }&lt;br /&gt;
                 }&lt;br /&gt;
 &lt;br /&gt;
                 // scan time stamp&lt;br /&gt;
                 if ((ret = fscanf (mpl_file_ptr, &amp;quot;%c%c\x1E%*1[ ]%c%c%c%c%c%c&amp;quot;,&lt;br /&gt;
                               &amp;amp;file_number[0], &amp;amp;file_number[1],&lt;br /&gt;
                               &amp;amp;this.decade, &amp;amp;this.month, &amp;amp;this.day,&lt;br /&gt;
                               &amp;amp;this.hour, &amp;amp;this.minute, &amp;amp;this.second)) != 8) {&lt;br /&gt;
                     fprintf (stderr, &amp;quot;Could not parse time stamp\n&amp;quot;);&lt;br /&gt;
                     goto NEXT_FILE;&lt;br /&gt;
                 }&lt;br /&gt;
                 printf (&amp;quot;%.5d.MTS  20%.2X/%.2X/%.2X  %.2X:%.2X:%.2X\n&amp;quot;,&lt;br /&gt;
                         (file_number[0]&amp;lt;&amp;lt;8) + file_number[1],&lt;br /&gt;
                         this.decade, this.month, this.day,&lt;br /&gt;
                         this.hour, this.minute, this.second);&lt;br /&gt;
             }&lt;br /&gt;
 NEXT_FILE:&lt;br /&gt;
             fclose (mpl_file_ptr);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 ERROR:&lt;br /&gt;
     closedir (dir_ptr);&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13260</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13260"/>
		<updated>2011-01-29T11:19:06Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Time Stamp Parser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The intention was to extract the time stamps of the captured videos from the mpl files. The Panasonic GH1 doesn't write the time stamp into the SEI part of the h264 stream. Other cams are known to do this (e.g. Canon HG-20):&lt;br /&gt;
&lt;br /&gt;
http://forum.videohelp.com/threads/296805-Reading-AVCHD-Playlist-files-BDMV-Playlist-*-mpl&lt;br /&gt;
&lt;br /&gt;
This document might be helpful to understand the connection between a playlist file a cpi file and the actual stream file.&lt;br /&gt;
&lt;br /&gt;
http://www.blu-raydisc.com/Assets/Downloadablefile/BD-RE_Part3_V2.1_WhitePaper_080406-15271.pdf&lt;br /&gt;
&lt;br /&gt;
= Technical Part =&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
In Bluray specification the files hav a differnt endig: *.mpls and *.m2ts.&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
This file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [2]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [3]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description starting with the second.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
It cntains a time stamp that might be the time when the file was closed by the cam.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;br /&gt;
&lt;br /&gt;
= Time Stamp Parser =&lt;br /&gt;
&lt;br /&gt;
This is a small C programm to parse all time astamps for MTS file that are in playlist files in a directory. This programm is developed based on this file:&lt;br /&gt;
&lt;br /&gt;
http://www.avsforum.com/avs-vb/showthread.php?p=14578210#post14578210&lt;br /&gt;
&lt;br /&gt;
 /* GPL 2.1 © Elte 2011 */&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;dirent.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #define VERSION         &amp;quot;0.1&amp;quot;&lt;br /&gt;
 #define SIGNATUR        &amp;quot;MPLS0100&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 typedef struct {&lt;br /&gt;
     unsigned char decade, month, day, hour, minute, second;&lt;br /&gt;
 } MTS_date;&lt;br /&gt;
 &lt;br /&gt;
 int main (int argc, char *argv[])&lt;br /&gt;
 {&lt;br /&gt;
     struct dirent  *dp = NULL;&lt;br /&gt;
     DIR       *dir_ptr = NULL;&lt;br /&gt;
     FILE *mpl_file_ptr = NULL;&lt;br /&gt;
 &lt;br /&gt;
     int ret = 0;&lt;br /&gt;
 &lt;br /&gt;
     unsigned char signatur[] = SIGNATUR, buffer[sizeof(SIGNATUR)];&lt;br /&gt;
 &lt;br /&gt;
     if (argc != 2) {&lt;br /&gt;
         fprintf(stderr, &amp;quot;Version: %s\n&amp;quot;, VERSION);&lt;br /&gt;
         fprintf(stderr, &amp;quot;Usage: %s &amp;lt;path to folder containing *.MPL files\n&amp;quot;, argv[0]);&lt;br /&gt;
         goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     if (chdir(argv[1]) == -1) {&lt;br /&gt;
 	fprintf(stderr, &amp;quot;Cannot change directory: %s %s\n&amp;quot;, argv[1], strerror(errno));&lt;br /&gt;
 	goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     if ((dir_ptr = opendir (&amp;quot;.&amp;quot;)) == NULL) {&lt;br /&gt;
         fprintf (stderr, &amp;quot;Error reading directory: %s %s\n&amp;quot;, argv[1], strerror(errno));&lt;br /&gt;
         goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
 //    printf (&amp;quot; STREAM       DATE       TIME\n&amp;quot;);&lt;br /&gt;
 //    printf (&amp;quot;---------  ----------  --------\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
     while ((dp = readdir(dir_ptr)) != NULL) {&lt;br /&gt;
 &lt;br /&gt;
         if (!strncmp ((dp-&amp;gt;d_name) + (strlen (dp-&amp;gt;d_name) - 4), &amp;quot;.MPL&amp;quot;, 4)) {&lt;br /&gt;
 &lt;br /&gt;
             unsigned char file_number[2] = {0, 0},&lt;br /&gt;
                                 num_desc = 0;&lt;br /&gt;
             MTS_date                this = {0, 0, 0, 0, 0, 0};&lt;br /&gt;
 &lt;br /&gt;
             if ((mpl_file_ptr = fopen (dp-&amp;gt;d_name, &amp;quot;r&amp;quot;)) == NULL) {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Error opening file: %s %s\n&amp;quot;, dp-&amp;gt;d_name, strerror(errno));&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             if ((fread (buffer, sizeof(SIGNATUR), 1, mpl_file_ptr) != 1) ||&lt;br /&gt;
                 (strncmp (buffer, SIGNATUR, sizeof(SIGNATUR)))) {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Could not read file signatur. Wrong filetype?\n&amp;quot;);&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             // find out how many mts files are described&lt;br /&gt;
             // the 66th byte contains this number&lt;br /&gt;
             fseek (mpl_file_ptr, 66 - sizeof(SIGNATUR) - 1, SEEK_CUR);&lt;br /&gt;
             ret = fgetc(mpl_file_ptr);&lt;br /&gt;
             if (ret != EOF) {&lt;br /&gt;
                 num_desc = (unsigned char) ret;&lt;br /&gt;
             } else {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Could not read contents\n&amp;quot;);&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             // jump to the first occurance of a time stamp and print it&lt;br /&gt;
             // iterate till all num_desc time stamps are shown&lt;br /&gt;
             // trailer = 50 bytes&lt;br /&gt;
             // mts description = 66 bytes&lt;br /&gt;
             // actual info starts at 9th byte of mts description&lt;br /&gt;
             fseek (mpl_file_ptr, -50 - 66*num_desc - 48 +2, SEEK_END);&lt;br /&gt;
 &lt;br /&gt;
             while (num_desc &amp;gt; 0) {&lt;br /&gt;
 &lt;br /&gt;
                 int i;&lt;br /&gt;
                 num_desc--;&lt;br /&gt;
                 fseek (mpl_file_ptr, 48, SEEK_CUR);&lt;br /&gt;
 &lt;br /&gt;
                 // scan for {0x01, 0x03, 0x05, 0x81, 0, 0, 0, 0}&lt;br /&gt;
                 for (i=0; i&amp;lt;3; i++) {&lt;br /&gt;
                     if ((ret = fgetc(mpl_file_ptr)) != &amp;quot;\x01\x03\x05&amp;quot;[i]) {&lt;br /&gt;
                         fprintf (stderr, &amp;quot;Could not parse contents\n&amp;quot;);&lt;br /&gt;
                         goto NEXT_FILE;&lt;br /&gt;
                     }&lt;br /&gt;
                 }&lt;br /&gt;
                 if ((ret = fgetc(mpl_file_ptr)) != 0x81) {&lt;br /&gt;
                     fprintf (stderr, &amp;quot;Could not parse contents\n&amp;quot;);&lt;br /&gt;
                     goto NEXT_FILE;&lt;br /&gt;
                 }&lt;br /&gt;
                 for (i=0; i&amp;lt;4; i++) {&lt;br /&gt;
                     if ((ret = fgetc(mpl_file_ptr)) != 0) {&lt;br /&gt;
                         fprintf (stderr, &amp;quot;Could not parse contents\n&amp;quot;);&lt;br /&gt;
                         goto NEXT_FILE;&lt;br /&gt;
                     }&lt;br /&gt;
                 }&lt;br /&gt;
 &lt;br /&gt;
                 // scan time stamp&lt;br /&gt;
                 if ((ret = fscanf (mpl_file_ptr, &amp;quot;%c%c\x1E%*1[ ]%c%c%c%c%c%c&amp;quot;,&lt;br /&gt;
                               &amp;amp;file_number[0], &amp;amp;file_number[1],&lt;br /&gt;
                               &amp;amp;this.decade, &amp;amp;this.month, &amp;amp;this.day,&lt;br /&gt;
                               &amp;amp;this.hour, &amp;amp;this.minute, &amp;amp;this.second)) != 8) {&lt;br /&gt;
                     fprintf (stderr, &amp;quot;Could not parse time stamp\n&amp;quot;);&lt;br /&gt;
                     goto NEXT_FILE;&lt;br /&gt;
                 }&lt;br /&gt;
                 printf (&amp;quot;%.5d.MTS  20%.2X/%.2X/%.2X  %.2X:%.2X:%.2X\n&amp;quot;,&lt;br /&gt;
                         (file_number[0]&amp;lt;&amp;lt;8) + file_number[1],&lt;br /&gt;
                         this.decade, this.month, this.day,&lt;br /&gt;
                         this.hour, this.minute, this.second);&lt;br /&gt;
             }&lt;br /&gt;
 NEXT_FILE:&lt;br /&gt;
             fclose (mpl_file_ptr);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 ERROR:&lt;br /&gt;
     closedir (dir_ptr);&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13259</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13259"/>
		<updated>2011-01-29T11:17:18Z</updated>

		<summary type="html">&lt;p&gt;Elte: time stamp parser&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The intention was to extract the time stamps of the captured videos from the mpl files. The Panasonic GH1 doesn't write the time stamp into the SEI part of the h264 stream. Other cams are known to do this (e.g. Canon HG-20):&lt;br /&gt;
&lt;br /&gt;
http://forum.videohelp.com/threads/296805-Reading-AVCHD-Playlist-files-BDMV-Playlist-*-mpl&lt;br /&gt;
&lt;br /&gt;
This document might be helpful to understand the connection between a playlist file a cpi file and the actual stream file.&lt;br /&gt;
&lt;br /&gt;
http://www.blu-raydisc.com/Assets/Downloadablefile/BD-RE_Part3_V2.1_WhitePaper_080406-15271.pdf&lt;br /&gt;
&lt;br /&gt;
= Technical Part =&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
In Bluray specification the files hav a differnt endig: *.mpls and *.m2ts.&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
This file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [2]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [3]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description starting with the second.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
It cntains a time stamp that might be the time when the file was closed by the cam.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;br /&gt;
&lt;br /&gt;
= Time Stamp Parser =&lt;br /&gt;
&lt;br /&gt;
This is a small C programm to parse all time astamps for MTS file that are in playlist files in a directory. This programm is developed based on this file:&lt;br /&gt;
&lt;br /&gt;
http://www.avsforum.com/avs-vb/showthread.php?p=14578210#post14578210&lt;br /&gt;
&lt;br /&gt;
 /* GPL 2.1 © Elte 2011 */&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;dirent.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #define VERSION         &amp;quot;0.1&amp;quot;&lt;br /&gt;
 #define SIGNATUR        &amp;quot;MPLS0100&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 typedef struct {&lt;br /&gt;
     unsigned char decade, month, day, hour, minute, second;&lt;br /&gt;
 } MTS_date;&lt;br /&gt;
 &lt;br /&gt;
 int main (int argc, char *argv[])&lt;br /&gt;
 {&lt;br /&gt;
     struct dirent  *dp = NULL;&lt;br /&gt;
     DIR       *dir_ptr = NULL;&lt;br /&gt;
     FILE *mpl_file_ptr = NULL;&lt;br /&gt;
 &lt;br /&gt;
     int ret = 0;&lt;br /&gt;
 &lt;br /&gt;
     unsigned char signatur[] = SIGNATUR, buffer[sizeof(SIGNATUR)];&lt;br /&gt;
 &lt;br /&gt;
     if (argc != 2) {&lt;br /&gt;
         fprintf(stderr, &amp;quot;Version: %s\n&amp;quot;, VERSION);&lt;br /&gt;
         fprintf(stderr, &amp;quot;Usage: %s &amp;lt;path to folder containing *.MPL files\n&amp;quot;, argv[0]);&lt;br /&gt;
         goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     if (chdir(argv[1]) == -1) {&lt;br /&gt;
 	fprintf(stderr, &amp;quot;Cannot change directory: %s %s\n&amp;quot;, argv[1], strerror(errno));&lt;br /&gt;
 	goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     if ((dir_ptr = opendir (&amp;quot;.&amp;quot;)) == NULL) {&lt;br /&gt;
         fprintf (stderr, &amp;quot;Error reading directory: %s %s\n&amp;quot;, argv[1], strerror(errno));&lt;br /&gt;
         goto ERROR;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
 //    printf (&amp;quot; STREAM       DATE       TIME\n&amp;quot;);&lt;br /&gt;
 //    printf (&amp;quot;---------  ----------  --------\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
     while ((dp = readdir(dir_ptr)) != NULL) {&lt;br /&gt;
 &lt;br /&gt;
         if (!strncmp ((dp-&amp;gt;d_name) + (strlen (dp-&amp;gt;d_name) - 4), &amp;quot;.MPL&amp;quot;, 4)) {&lt;br /&gt;
 &lt;br /&gt;
             unsigned char file_number[2] = {0, 0},&lt;br /&gt;
                                 num_desc = 0;&lt;br /&gt;
             MTS_date    this = {0, 0, 0, 0, 0, 0};&lt;br /&gt;
 &lt;br /&gt;
             if ((mpl_file_ptr = fopen (dp-&amp;gt;d_name, &amp;quot;r&amp;quot;)) == NULL) {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Error opening file: %s %s\n&amp;quot;, dp-&amp;gt;d_name, strerror(errno));&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             if ((fread (buffer, sizeof(SIGNATUR), 1, mpl_file_ptr) != 1) ||&lt;br /&gt;
                 (strncmp (buffer, SIGNATUR, sizeof(SIGNATUR)))) {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Could not read file signatur. Wrong filetype?\n&amp;quot;);&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             // find out how many mts files are described&lt;br /&gt;
             // the 66th byte contains this number&lt;br /&gt;
             fseek (mpl_file_ptr, 66 - sizeof(SIGNATUR) - 1, SEEK_CUR);&lt;br /&gt;
             ret = fgetc(mpl_file_ptr);&lt;br /&gt;
             if (ret != EOF) {&lt;br /&gt;
                 num_desc = (unsigned char) ret;&lt;br /&gt;
             } else {&lt;br /&gt;
                 fprintf (stderr, &amp;quot;Could not read contents\n&amp;quot;);&lt;br /&gt;
                 goto NEXT_FILE;&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             // jump to the first occurance of a time stamp and print it&lt;br /&gt;
             // iterate till all num_desc time stamps are shown&lt;br /&gt;
             // trailer = 50 bytes&lt;br /&gt;
             // mts description = 66 bytes&lt;br /&gt;
             // actual info starts at 9th byte of mts description&lt;br /&gt;
             fseek (mpl_file_ptr, -50 - 66*num_desc - 48 +2, SEEK_END);&lt;br /&gt;
 &lt;br /&gt;
             while (num_desc &amp;gt; 0) {&lt;br /&gt;
 &lt;br /&gt;
                 int i;&lt;br /&gt;
                 num_desc--;&lt;br /&gt;
                 fseek (mpl_file_ptr, 48, SEEK_CUR);&lt;br /&gt;
 &lt;br /&gt;
                 // scan for {0x01, 0x03, 0x05, 0x81, 0, 0, 0, 0}&lt;br /&gt;
                 for (i=0; i&amp;lt;3; i++) {&lt;br /&gt;
                     if ((ret = fgetc(mpl_file_ptr)) != &amp;quot;\x01\x03\x05&amp;quot;[i]) {&lt;br /&gt;
                         fprintf (stderr, &amp;quot;Could not parse contents\n&amp;quot;);&lt;br /&gt;
                         goto NEXT_FILE;&lt;br /&gt;
                     }&lt;br /&gt;
                 }&lt;br /&gt;
                 if ((ret = fgetc(mpl_file_ptr)) != 0x81) {&lt;br /&gt;
                     fprintf (stderr, &amp;quot;Could not parse contents\n&amp;quot;);&lt;br /&gt;
                     goto NEXT_FILE;&lt;br /&gt;
                 }&lt;br /&gt;
                 for (i=0; i&amp;lt;4; i++) {&lt;br /&gt;
                     if ((ret = fgetc(mpl_file_ptr)) != 0) {&lt;br /&gt;
                         fprintf (stderr, &amp;quot;Could not parse contents\n&amp;quot;);&lt;br /&gt;
                         goto NEXT_FILE;&lt;br /&gt;
                     }&lt;br /&gt;
                 }&lt;br /&gt;
 &lt;br /&gt;
                 // scan time stamp&lt;br /&gt;
                 if ((ret = fscanf (mpl_file_ptr, &amp;quot;%c%c\x1E%*1[ ]%c%c%c%c%c%c&amp;quot;,&lt;br /&gt;
                               &amp;amp;file_number[0], &amp;amp;file_number[1],&lt;br /&gt;
                               &amp;amp;this.decade, &amp;amp;this.month, &amp;amp;this.day,&lt;br /&gt;
                               &amp;amp;this.hour, &amp;amp;this.minute, &amp;amp;this.second)) != 8) {&lt;br /&gt;
                     fprintf (stderr, &amp;quot;Could not parse time stamp\n&amp;quot;);&lt;br /&gt;
                     goto NEXT_FILE;&lt;br /&gt;
                 }&lt;br /&gt;
                 printf (&amp;quot;%.5d.MTS  20%.2X/%.2X/%.2X  %.2X:%.2X:%.2X\n&amp;quot;,&lt;br /&gt;
                         (file_number[0]&amp;lt;&amp;lt;8) + file_number[1],&lt;br /&gt;
                         this.decade, this.month, this.day,&lt;br /&gt;
                         this.hour, this.minute, this.second);&lt;br /&gt;
             }&lt;br /&gt;
 NEXT_FILE:&lt;br /&gt;
             fclose (mpl_file_ptr);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 ERROR:&lt;br /&gt;
     closedir (dir_ptr);&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13258</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13258"/>
		<updated>2011-01-29T09:54:07Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The intention was to extract the time stamps of the captured videos from the mpl files. The Panasonic GH1 doesn't write the time stamp into the SEI part of the h264 stream. Other cams are known to do this (e.g. Canon HG-20):&lt;br /&gt;
&lt;br /&gt;
http://forum.videohelp.com/threads/296805-Reading-AVCHD-Playlist-files-BDMV-Playlist-*-mpl&lt;br /&gt;
&lt;br /&gt;
This document might be helpful to understand the connection between a playlist file a cpi file and the actual stream file.&lt;br /&gt;
&lt;br /&gt;
http://www.blu-raydisc.com/Assets/Downloadablefile/BD-RE_Part3_V2.1_WhitePaper_080406-15271.pdf&lt;br /&gt;
&lt;br /&gt;
= Technical Part =&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
In Bluray specification the files hav a differnt endig: *.mpls and *.m2ts.&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
This file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [2]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [3]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description starting with the second.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
It cntains a time stamp that might be the time when the file was closed by the cam.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13257</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13257"/>
		<updated>2011-01-29T09:51:08Z</updated>

		<summary type="html">&lt;p&gt;Elte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
This document might be helpful to understand the connection between a playlist file a cpi file and the actual stream file.&lt;br /&gt;
&lt;br /&gt;
http://www.blu-raydisc.com/Assets/Downloadablefile/BD-RE_Part3_V2.1_WhitePaper_080406-15271.pdf&lt;br /&gt;
&lt;br /&gt;
= Technical Part =&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
In Bluray specification the files hav a differnt endig: *.mpls and *.m2ts.&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
This file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [2]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [3]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description starting with the second.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
It cntains a time stamp that might be the time when the file was closed by the cam.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13256</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13256"/>
		<updated>2011-01-28T16:30:01Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Video Part */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [2]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [3]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description starting with the second.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
It cntains a time stamp that might be the time when the file was closed by the cam.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13255</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13255"/>
		<updated>2011-01-28T16:29:51Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Next Part 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [2]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [3]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description starting with the second.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
It cntains a time stamp that might be the time when the file was closed by the cam.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[10]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13254</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13254"/>
		<updated>2011-01-28T16:29:31Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Video Part */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [2]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [3]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description starting with the second.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
It cntains a time stamp that might be the time when the file was closed by the cam.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (no time) e.g. '2010. 4.18'&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13253</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13253"/>
		<updated>2011-01-28T16:27:42Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Next Part 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [2]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [3]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description starting with the second.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
It cntains a time stamp that might be the time when the file was closed by the cam.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Hour)&lt;br /&gt;
 char[1] {H}                  H = BCD (Minute)&lt;br /&gt;
 char[1] {I}                  I = BCD (Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13252</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13252"/>
		<updated>2011-01-28T12:54:53Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* File Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [2]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [3]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description starting with the second.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
It cntains a time stamp that might be the time when the file was closed by the cam.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13251</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13251"/>
		<updated>2011-01-28T12:54:09Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Next Part 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [1]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [2]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description starting with the second.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
It cntains a time stamp that might be the time when the file was closed by the cam.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13250</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13250"/>
		<updated>2011-01-28T12:52:12Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Next Part 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [1]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [2]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description. Except when only one file is described.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
It cntains a time stamp that might be the time when the file was closed by the cam.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13249</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13249"/>
		<updated>2011-01-28T12:46:53Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Next Part 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [1]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [2]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description. Except when only on file is described.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
It cntains a time stamp that might be the time when the file was closed by the cam.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13248</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13248"/>
		<updated>2011-01-28T12:44:21Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* File Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [1]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [2]&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ...&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description. Except when only on file is described.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13247</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13247"/>
		<updated>2011-01-28T12:00:43Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Trailer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [1]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [2]                only there when more than one file is described in this document&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ………&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description. Except when only on file is described.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
This part is 50 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {_, _, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13246</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13246"/>
		<updated>2011-01-28T11:57:30Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* File Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  Next Part 2 [1]                only there when more than one file is described in this document&lt;br /&gt;
  Next Part 2 [2]                only there when more than one file is described in this document&lt;br /&gt;
  ...&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part 3&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  ………&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description. Except when only on file is described.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13245</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13245"/>
		<updated>2011-01-28T11:55:38Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Next Part 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  ????&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 2 ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description. Except when only on file is described.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13244</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13244"/>
		<updated>2011-01-28T11:54:48Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Next Part 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  ????&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description. Except when only on file is described.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 3 ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13243</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13243"/>
		<updated>2011-01-28T11:54:27Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Next Part */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  ????&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
This part is 14 bytes in size. One of this parts is inlcuded for each file description. Except when only on file is described.&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 1, 0, A}             A = number of description&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13242</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13242"/>
		<updated>2011-01-28T11:45:13Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* File Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  Next Part 1&lt;br /&gt;
  ????&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13241</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13241"/>
		<updated>2011-01-28T11:44:56Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Next Part */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ????&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part 1 ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13240</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13240"/>
		<updated>2011-01-28T11:44:28Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* PLEX Part */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ????&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13239</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13239"/>
		<updated>2011-01-28T11:40:49Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Video Part */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ????&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
This part is 276 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}  or  {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 ...&lt;br /&gt;
 char[4] {0, 0, 0, 0}         &lt;br /&gt;
 char[1] {0, _, 0, A}         A = number of Video Parts following&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13238</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13238"/>
		<updated>2011-01-28T11:33:40Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Next Part */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ????&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13237</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13237"/>
		<updated>2011-01-28T11:33:24Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* File Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ????&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Next Part&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
  Trailer&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13236</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13236"/>
		<updated>2011-01-28T11:31:02Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Definitions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ????&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  ????&lt;br /&gt;
  char[1] {A}         A number of Video Parts&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
=== Trailer ===&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13235</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13235"/>
		<updated>2011-01-28T11:25:26Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Video Part */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ????&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  ????&lt;br /&gt;
  char[1] {A}         A number of Video Parts&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A} or {0x90, 0x0C}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13234</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13234"/>
		<updated>2011-01-28T11:23:12Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* File Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ????&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  ????&lt;br /&gt;
  char[1] {A}         A number of Video Parts&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13233</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13233"/>
		<updated>2011-01-28T11:22:19Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* File Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
 Header&lt;br /&gt;
  M2TS File Meta Data [1]&lt;br /&gt;
  M2TS File Meta Data [2]&lt;br /&gt;
  ????&lt;br /&gt;
  PLEX Part&lt;br /&gt;
  Video Part [1]&lt;br /&gt;
  Video Part [2]&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Video Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13232</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13232"/>
		<updated>2011-01-28T11:19:09Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* PLEX Part */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, A}                         A corresponds with file size&lt;br /&gt;
 char[4] {0, B, 0, 1}                         B = number of described MTS files&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x40, 0x74, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
=== PLEX Part ===&lt;br /&gt;
unknown contents&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, _, _, _}                        &lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 1}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0x10, 0, 1, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x18}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] 'PLEX'&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 01, 0x44}&lt;br /&gt;
 char[4] {0, 0, _, _}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 1, 0x18}&lt;br /&gt;
 char[4] {1, 3, 5, 0x18}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
=== Video Type ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13231</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13231"/>
		<updated>2011-01-28T10:41:12Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* M2TS File Meta Data ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0x6E, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
TBD&lt;br /&gt;
=== Video Type ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13230</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13230"/>
		<updated>2011-01-28T10:39:32Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Next Part */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0xE6, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
TBD&lt;br /&gt;
=== Video Type ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13229</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13229"/>
		<updated>2011-01-28T10:38:18Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Next Part */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0xE6, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
TBD&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13228</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13228"/>
		<updated>2011-01-28T10:37:29Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Next Part */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0xE6, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
TBD&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
This part is 66 bytes in size.&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 3, 5, 0x81}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2] {A, B}               (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C; &lt;br /&gt;
 char[1] {0x1E}&lt;br /&gt;
 char[1] {C}                  C = BCD (Century)&lt;br /&gt;
 char[1] {D}                  D = BCD (Decade)&lt;br /&gt;
 char[1] {E}                  E = BCD (Month)&lt;br /&gt;
 char[1] {F}                  F = BCD (Day)&lt;br /&gt;
 char[1] {G}                  G = BCD (Minute)&lt;br /&gt;
&lt;br /&gt;
 char[1] {H}                  H = BCD(Second)&lt;br /&gt;
 char[2] {0x90, 0x0A}&lt;br /&gt;
 char[11]                     date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0x11, 0x10, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, I, J, _}         I = 0x65 or 0x66; J=2 for SH or 0 for FHD&lt;br /&gt;
 char[1] {0x03}&lt;br /&gt;
 char[3] 'FHD'; 'SH\0'        video format&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0xFF, 0xFF, 0xFF, 0xFF}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;8 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
; _&lt;br /&gt;
: unknow but different in different files&lt;br /&gt;
; FHD&lt;br /&gt;
: Full HD Quality (1080p25)&lt;br /&gt;
; SH&lt;br /&gt;
: Super High Quality (720p50)&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13227</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13227"/>
		<updated>2011-01-28T09:22:12Z</updated>

		<summary type="html">&lt;p&gt;Elte: invitation to beautify the used language&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
'''Please correct or beautify the language used in this article!'''&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0xE6, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
TBD&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
Somewhere in the file are time stamps coded for the corresponding MTS files.&lt;br /&gt;
This part has the following syntax:&lt;br /&gt;
 char[2]                    either {0xFF, 0xFF} or {A, B}&lt;br /&gt;
 char    {0x1E}&lt;br /&gt;
 char                  BCD century&lt;br /&gt;
 char                  BCD decade&lt;br /&gt;
 char                  BCD month&lt;br /&gt;
 char                  BCD day&lt;br /&gt;
 char                  BCD hour&lt;br /&gt;
 char                  BCD minute&lt;br /&gt;
 char                  BCD second&lt;br /&gt;
 char[2]  {0x90, 0x0A}&lt;br /&gt;
 char[11]              date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;16 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13226</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13226"/>
		<updated>2011-01-28T09:20:57Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Next Part */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0xE6, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
TBD&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
This part contains time stamps of the corresponding MTS file. Right before the first occurance of one of such part is a char that tells how many such parts are following.&lt;br /&gt;
&lt;br /&gt;
Somewhere in the file are time stamps coded for the corresponding MTS files.&lt;br /&gt;
This part has the following syntax:&lt;br /&gt;
 char[2]                    either {0xFF, 0xFF} or {A, B}&lt;br /&gt;
 char    {0x1E}&lt;br /&gt;
 char                  BCD century&lt;br /&gt;
 char                  BCD decade&lt;br /&gt;
 char                  BCD month&lt;br /&gt;
 char                  BCD day&lt;br /&gt;
 char                  BCD hour&lt;br /&gt;
 char                  BCD minute&lt;br /&gt;
 char                  BCD second&lt;br /&gt;
 char[2]  {0x90, 0x0A}&lt;br /&gt;
 char[11]              date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;16 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13225</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13225"/>
		<updated>2011-01-28T09:09:21Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Header */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size differs from the former one&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0xE6, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
Somewhere in the file are time stamps coded for the corresponding MTS files.&lt;br /&gt;
This part has the following syntax:&lt;br /&gt;
 char[2]                    either {0xFF, 0xFF} or {A, B}&lt;br /&gt;
 char    {0x1E}&lt;br /&gt;
 char                  BCD century&lt;br /&gt;
 char                  BCD decade&lt;br /&gt;
 char                  BCD month&lt;br /&gt;
 char                  BCD day&lt;br /&gt;
 char                  BCD hour&lt;br /&gt;
 char                  BCD minute&lt;br /&gt;
 char                  BCD second&lt;br /&gt;
 char[2]  {0x90, 0x0A}&lt;br /&gt;
 char[11]              date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;16 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13224</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13224"/>
		<updated>2011-01-28T09:08:05Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* Next Part */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0xE6, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
Somewhere in the file are time stamps coded for the corresponding MTS files.&lt;br /&gt;
This part has the following syntax:&lt;br /&gt;
 char[2]                    either {0xFF, 0xFF} or {A, B}&lt;br /&gt;
 char    {0x1E}&lt;br /&gt;
 char                  BCD century&lt;br /&gt;
 char                  BCD decade&lt;br /&gt;
 char                  BCD month&lt;br /&gt;
 char                  BCD day&lt;br /&gt;
 char                  BCD hour&lt;br /&gt;
 char                  BCD minute&lt;br /&gt;
 char                  BCD second&lt;br /&gt;
 char[2]  {0x90, 0x0A}&lt;br /&gt;
 char[11]              date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
A and B tell the name of the corresponding MTS file e.g. (A&amp;lt;&amp;lt;16 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
&lt;br /&gt;
; BCD&lt;br /&gt;
: Binary Coded Decimal&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13223</id>
		<title>MPL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPL&amp;diff=13223"/>
		<updated>2011-01-28T09:03:52Z</updated>

		<summary type="html">&lt;p&gt;Elte: /* M2TS File Meta Data ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: mpl, mpls&lt;br /&gt;
* This is a playlist file used in BluRays and AVCHD (Lite) video camcorders and foto cams.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This site tries to collect information about this file. This information partly comes from reverse engineering. There is no free specification available on the net.&lt;br /&gt;
&lt;br /&gt;
The file is located in a directory structure like this:&lt;br /&gt;
 /BDMV/PLAYLIST/00000.MPL&lt;br /&gt;
it corresponds with the files in this directory:&lt;br /&gt;
 /BDMV/STREAM/00000.MTS&lt;br /&gt;
&lt;br /&gt;
The following information are reverse engineered from MPL files from a [[Panasonic]] GH1 foto cam.&lt;br /&gt;
&lt;br /&gt;
The following file sizes are known:&lt;br /&gt;
* 638 bytes&lt;br /&gt;
* 800 bytes&lt;br /&gt;
* 962 bytes&lt;br /&gt;
* 1124 bytes&lt;br /&gt;
* 1286 bytes&lt;br /&gt;
* 1448 bytes&lt;br /&gt;
* 1772 bytes&lt;br /&gt;
* 2096 bytes&lt;br /&gt;
* 2420 bytes&lt;br /&gt;
&lt;br /&gt;
The difference in size is always a multiple of 162 bytes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The values are written only when they are equal in every file.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
 char[4] 'MPLS'            FOURCC?&lt;br /&gt;
 char[4] '0100'            might be version number&lt;br /&gt;
 char[4] {0, 0, 0, 0x3A}&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[2]                   this corresponds with the file size&lt;br /&gt;
 char[12] {0, 0, ...}&lt;br /&gt;
&lt;br /&gt;
 char[8] {0, 0, ...}&lt;br /&gt;
 char[4] {0, 0, 0, 0x0E}&lt;br /&gt;
 char[4] {0, 1, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 1, 0xCF}&lt;br /&gt;
 char[4] {0x40, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[2]                    this corresponds with the file size&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, X}             file size = 476 + 162*X in bytes&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
&lt;br /&gt;
=== M2TS File Meta Data ? ===&lt;br /&gt;
This part ist contained X-times and is 82 bytes in size. &lt;br /&gt;
The corresponding M2TS file name on the Panasonic is 00012.MTS.&lt;br /&gt;
&lt;br /&gt;
 char[2] {0, 'P'}&lt;br /&gt;
 char[10] &amp;quot;00012M2TS&amp;quot;       this is a null terminated string of the corresponding MTS file name (without dot '.')&lt;br /&gt;
&lt;br /&gt;
 char[4] {1, 0, 0, 0}&lt;br /&gt;
 char[2] {0x40, 0x74}&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2]&lt;br /&gt;
 char[2] {0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0x2E}&lt;br /&gt;
 char[4] {0, 0, 1, 1}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x10, 0x11, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x1B, 0x43, 0}&lt;br /&gt;
 char[4] {0, 0, 9, 1}&lt;br /&gt;
 char[4] {0x11, 0, 0, 0}&lt;br /&gt;
 char[4] {0, 0, 0, 0}&lt;br /&gt;
&lt;br /&gt;
 char[4] {5, 0x81, 0x31, 0x75}&lt;br /&gt;
 char[2] {0xE6, 0x64}&lt;br /&gt;
&lt;br /&gt;
=== Next Part ===&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
Somwhere in the file are time stamps coded for the corresponding MTS files.&lt;br /&gt;
This part has the following syntax:&lt;br /&gt;
 char[2]                    either {0xFF, 0xFF} or {A, B}&lt;br /&gt;
 char    {0x1E}&lt;br /&gt;
 char                  BCD century&lt;br /&gt;
 char                  BCD decade&lt;br /&gt;
 char                  BCD month&lt;br /&gt;
 char                  BCD day&lt;br /&gt;
 char                  BCD hour&lt;br /&gt;
 char                  BCD minute&lt;br /&gt;
 char                  BCD second&lt;br /&gt;
 char[2]  {0x90, 0x0A}&lt;br /&gt;
 char[11]              date as string (null terminated; no time) e.g. &amp;quot;2010. 4.18&amp;quot;&lt;br /&gt;
A and B corresponding with the MTS file name. e.g. (A&amp;lt;&amp;lt;16 + B).MTS = 00012.MTS, A=0, B=0x0C&lt;br /&gt;
BCD = Binary Coded Decimal&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta Format]]&lt;/div&gt;</summary>
		<author><name>Elte</name></author>
	</entry>
</feed>