PSMF: Difference between revisions

From MultimediaWiki
Jump to navigation Jump to search
(Add to container formats category.)
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
* Extensions: pmf
* Extensions: pmf
* Company: [[Sony]]
* Company: [[Sony]]
* Samples: http://samples.mplayerhq.hu/playstation/


Short for PlayStation Portable Movie Format, PSMF is a SONY proprietary format used for movies intended to be played on the PSP portable game console. The format is based on [[MPEG]], and contains [[H.264]] video and [[Sony ATRAC]] audio.
Short for PlayStation Portable Movie Format, PSMF is a SONY proprietary format used for movies intended to be played on the PSP portable game console. The format is based on [[MPEG]], and contains [[H.264]] video and [[Sony ATRAC]] audio.
Line 7: Line 8:


== Header format ==
== Header format ==
'''Byte order: ''BIG endian'''''
{| border="1"
! Offset !! Name        !! Bits !! Type  !! Semantics
|-
| 0x0    || magic      || 32  || ASCII  || "PSMF"
|-
| 0x4    || version_num || 32  || ASCII  || version number
|-
| 0x8    || data_offset || 32  || be int || PMF-relative data offset. - this is seemingly always 2048 bytes
|-
| 0xc    || data_size  || 32  || be int || total size of PMF data (subsequent-to 0x800 data-offset)
|}
The aforementioned 16-bytes delimits the total length of the PMF header; which is proceeded-with 64-bytes of null padding-data.
Given this; the following block-address-map is invariably always situated at 0x50.
{| border="1"
{| border="1"
! Name !! Bits !! Type !! Semantics
! Offset !! Name       !! Bits !! Type   !! Semantics
|-
| 0x50  || table_size  || 32  || be int || the overall length (from 0x54 -) of the mapping-table.
|-
| 0x54  || unknown    || 16  || be int || always 0?
|-
|-
| magic || 32 || ASCII || "PSMF"
| 0x56  || tick_freq  || 32   || be int || ?
|-
|-
| unknown || 32 || ASCII ||
| 0x5a  || unknown     || 16  || be int || always 0?
|-
|-
| header_size || 32 || be int || total size of header
| 0x5c  || duration    || 32   || be int || stream duration in ticks
|-
|-
| data_size || 32 || be int || size of data
| 0x60  || mux_rate    || 32   || be int || equal to program_mux_rate in pack_header
|}
|}


[[Category:Container Formats]]
[[Category:Container Formats]]

Latest revision as of 03:06, 7 January 2010

Short for PlayStation Portable Movie Format, PSMF is a SONY proprietary format used for movies intended to be played on the PSP portable game console. The format is based on MPEG, and contains H.264 video and Sony ATRAC audio.

PSMF files start with a variable length header, followed by MPEG Program Stream data. The video data is carried in PES packets using a stream_id of 0xE0, and audio data is carried in private_stream_1 PES packets.

Header format

Byte order: BIG endian

Offset Name Bits Type Semantics
0x0 magic 32 ASCII "PSMF"
0x4 version_num 32 ASCII version number
0x8 data_offset 32 be int PMF-relative data offset. - this is seemingly always 2048 bytes
0xc data_size 32 be int total size of PMF data (subsequent-to 0x800 data-offset)

The aforementioned 16-bytes delimits the total length of the PMF header; which is proceeded-with 64-bytes of null padding-data. Given this; the following block-address-map is invariably always situated at 0x50.

Offset Name Bits Type Semantics
0x50 table_size 32 be int the overall length (from 0x54 -) of the mapping-table.
0x54 unknown 16 be int always 0?
0x56 tick_freq 32 be int ?
0x5a unknown 16 be int always 0?
0x5c duration 32 be int stream duration in ticks
0x60 mux_rate 32 be int equal to program_mux_rate in pack_header