Tuesday, February 27th, 2007
Today I opened a new feature request (http://rt.cpan.org/Ticket/Display.html?id=25178) on MP4::Info perl module to include my patch to read the title in a Sony PSP files. Read this post to know more about the way title is encoded in PSP Mp4 files. With the following patch mp4infopatch.txt (applied to Info.pm) you can read the title of an PSP MP4 file using the following code snippet:
use MP4::Info;
my $file = 'MAQ12033.MP4';
my $tag = get_mp4tag($file) or die "No TAG info";
printf "$file title is %s\n", $tag->{NAM};
my $info = get_mp4info($file);
printf "$file title is %s\n", $info->{NAM};
my $mp4 = new MP4::Info $file;
printf "$file title is %s\n", $mp4->title;
UPDATE: Jonathan Harris has released a new version of MP4::Info with support for Sony’s PSP files. more info
Tags: mp4, mtdt, psp, sony, tag, title, usmt, uuid
Posted in Uncategorized | 2 Comments »
Sunday, February 25th, 2007
Here I included an example of a custom uuid USMT->MTDT block in a Sony PSP MP4 file
06A55450 75 75 69 64 55 53 4D 54 21 D2 4F CE BB 88 69 5C uuidUSMT!.O...i\
06A55460 FA C9 C7 40 00 00 00 90 4D 54 44 54 00 04 00 0C ...@....MTDT....
06A55470 00 00 00 0B 55 C4 00 00 02 1C 00 22 00 00 00 04 ....U......"....
06A55480 15 C7 00 01 00 50 00 53 00 50 00 20 00 56 00 69 .....P.S.P. .V.i
06A55490 00 64 00 65 00 6F 00 20 00 39 00 00 00 26 00 00 .d.e.o. .9...&..
06A554A0 00 01 2A 0E 00 01 00 54 00 68 00 65 00 20 00 67 ..*....T.h.e. .g
06A554B0 00 6F 00 64 00 66 00 61 00 74 00 68 00 65 00 72 .o.d.f.a.t.h.e.r
06A554C0 00 00 00 32 00 00 00 03 55 C4 00 01 00 32 00 30 ...2....U....2.0
06A554D0 00 30 00 37 00 2F 00 30 00 32 00 2F 00 32 00 33 .0.7./.0.2./.2.3
06A554E0 00 20 00 32 00 30 00 3A 00 33 00 31 00 3A 00 33 . .2.0.:.3.1.:.3
06A554F0 00 34 00 00 .4..
The title “The godfather” is encoded in UTF-16 at position 06A554A7. To know a little bit more about the Sony PSP way of storing titles read this.
Tags: example, mp4, mtdt, psp, sony, title, usmt
Posted in psp | No Comments »
Sunday, February 25th, 2007
If you had tried to read the title of a Sony PSP MP4 file with Ruby’s mp4info or Perl’s MP4::Info you probably noticed that the title is not stored in the NAM tag where it should be. Those two libraries cannot access the title info in Sony PSP files because title info is stored in a propierary way in a custom uuid atom called USMT. Inside this atom there is the MTDT meta info block and inside this block you can find the title. I found all this information in the movenc.c file from ffmpeg
+/*********
+
+ PSP USMT->MTDT meta info block format (some guessing)
+
+ - Note that clips play fine without this block.
+
+ int32 : size of MTDT block
+ char[4] : "MTDT"
+ int16 : Number of sub-data blocks (payloads)
+ 0x0001 EOT markers have 1 block
+ 0x0004 is the most I've seen in an information block (title, date, etc)
+
+ Some number of data blocks, which take the form of:
+
+ int16 : size of sub-data block
+ int32 : block type ID (possibly 2 int16s: unk & type )
+ 0x01 = Title
+ 0x03 = Timestamp (date format = "+%Y-%m-%d %k:%M:%S")
+ 0x04 = Creator Name
+ 0x0A = End of Track Marker
+ 0x0B = UNKNOWN (appears in info MTDT blocks)
+ int16 : ?flags? - generally 0x55c4 or 0x15c7, seen 0x2a0e, possibly font or language?)
+ - Timestamp seems to always have 0x55c4
+ int16 : type of payload that follows? (int, string, etc..?)
+ - Unicode strings have 0x0001
+ - short[] data has 0x0000
+ data[] : Payload (strings are UTF16-BE short[] with 0x0000 terminator)
+
+
+ BLOCK IDs
+
+ 0x000A - Appear at end of tracks
+
+ - flags always = 0x55c4
+ - Payload looks like: 0x0000 0x0100 0x0000 0x0000
+
+ 0x000B - Appears in meta data
+ - Payload looks like: 0x0000 0x?????
+ - (0x???? probably flags- seen 0x1c02, 0x5cfe. Maybe something with aspect ratio or frame rate?)
+
+********/
Currently neither mp4info nor MP4::Info are capable of decoding this USMT->MTDT block. I’m looking into MP4::Info in order to add support for it. I will post something here if I got it working.UPDATE: I got it working read post
Tags: metadata, mp4, mpeg-4, mtdt, NAM, psp, sony, tag, title, usmt
Posted in psp | 1 Comment »