View Full Version : Non standard PVA format

20th August 2007, 09:14
Hello everybody, this is my first post!
I've got a SAT-PVR receiver with inside a DSP chipset: "TMX320AV7110GFN AD 18ZBNH3".

I wish to write a little utility to extract the A/V stream from the PVR's disk.

I took a look at the .hex image of the PVR's disk I've dumped, and I found:

ES Video Header: 0x00 0x00 0x01 0xB3
PES Audio header: 0x00 0x00 0x01 (0xC0 - 0xDF) - usually 0xC0

there's no PES Video Header: 0x00 0x00 0x01 (0xE0 - 0xEF)

So I think the recording format is similar to the PVA standard.
In fact I also found the SyncWord (0x41 0x56) of the AV packet's header.

However, according to PVA specifications released by TechnoTrend AG, the stream seems to be a non standard revision of PVA.
As described in this document (http://neuron2.net/library/PVA_format_v1.pdf):
"...The PVA format is near to the TMS320AV7110's on-chip MPEG-2 Video and Audio decoder input fuffer format..."

So I compared the streams recorded (approximately at the same time) from my SAT-PVR receiver and from a SAT-PCI card:

- the 1st from my SAT-PVR receiver:
obviously at the beginning we can find some informations used by the PVR itself.
here is the dump: http://rapidshare.com/files/50092431/RaiSportSat.mmr.html

- the 2nd from a SAT-PCI card:
this is a standard PVA format: http://rapidshare.com/files/50092820/RaiSportSat.pva.html

For example I found the same video stream in the two files at these addresses:
RaiSportSat.mmr: 0x00113C6C
RaiSportSat.pva: 0x00056610

Two different bytes at addresses:
RaiSportSat.mmr: 0x00113CD3 and 0x00113CD4
RaiSportSat.pva: 0x00056677 and 0x00056678

However the AV packets seem to be different in the two files.
I didn't find any StreamID in the .mmr file (not as defined in the PVA specifications).
Obviously the data organization is different, but the .mmr file should contain the same kind of data, such as A/V streams, PTS, DTS etc...

So I think that the PVR writes direcly the input buffer of its "TMX320AV7110GFN AD 18ZBNH3" chipset to the Hard Disk.
Here is the datasheet of the TMS320AV7110: http://www.linuxdvb.tv/documentation/AV711x_3_1.pdf
I think that examinating it we can understand more about synchronization.

For now I'm able to extract the full ES Video and ES Audio or PES Audio streams, but I need PTS informations to synchronize the A/V streams.

So there would be two solutions in my opinion:
1st) convert the non standard PVA stream into a standard one, by understanding data organization inside the .mmr file
2nd) retrieve some informations of the PES Video header and insert them in the ES Video.

The 2nd solution should be the easiest.
It's the same process described in PVA Technical Specification, to convert PVA in MPEG2 (see the last page of the document).

What do you think about?