SceVideoExport: Difference between revisions

From Vita Development Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(9 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Video export is a feature present in PSP, PSPgo and PS Vita. It consists in exporting some videos from PC to PSP/PSPgo/PS Vita. An example of use is when you record a video with the I-O Data MagicTV GT X3. I-O Data supported devices list is available [https://www.iodata.jp/pio/io/av/oneseg_dub.htm here]. Then you connect the PS Vita by USB to the host PC and launch the "EMPR" mode on the PS Vita, "USB mode" on the PSP/PSPgo. Finally, on the host PC you select which videos you want to send to the PS Vita and waits for the transfer to finish. On the PSP/PSPgo/PS Vita, the contents are verified by MagicGate Type-R.
== EMPR ==
Embedded Memory with Playback and Recording (EMPR) is the name of a system that supports copyright protection, developed by Sony Corporation.
Note that for PSP/PSPgo, there is also the Sony MediaGo program on PC that allows to transfer videos to the Memory Stick. And for PS Vita there is the [[Content Manager Assistant]] program on PC that allows to transfer videos to the Memory Card or internal storage.
== Module ==
== Module ==


=== Known NIDs ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! Name !! World !! Privilege
! Version !! World !! Privilege
|-
|-
| 3.60 || SceVideoExport || Non-secure || User
| 1.000.071-3.740.011 || Non-secure || User
|}
|}


Line 17: Line 24:
! Version !! Name !! World !! Visibility !! NID
! Version !! Name !! World !! Visibility !! NID
|-
|-
| 3.60 || [[SceVideoExport#SceVideoExport|SceVideoExport]] || Non-secure || User || 0xF0812A7C
| 1.000.071-3.740.011 || [[SceVideoExport#SceVideoExport|SceVideoExport]] || Non-secure || User || 0xF0812A7C
|-
|-
| 3.60 || [[SceVideoExport#SceVideoExportEmpr|SceVideoExportEmpr]] || Non-secure || User || 0x3BA9B5E8
| 1.500.151-3.740.011 || [[SceVideoExport#SceVideoExportEmpr|SceVideoExportEmpr]] || Non-secure || User || 0x3BA9B5E8
|-
|-
| 3.60 || [[SceVideoExport#SceVideoExportData|SceVideoExportData]] || Non-secure || User || 0xFE94CA1D
| 2.500.071-3.740.011 || [[SceVideoExport#SceVideoExportData|SceVideoExportData]] || Non-secure || User || 0xFE94CA1D
|}
|}


== SceVideoExport ==
== Types ==
 
=== sceVideoExportFromFile ===
{| class="wikitable"
|-
! Version !! NID
|-
| 3.60 || 0x4F60A3C8
|}


<source lang="C">
<source lang="C">
typedef struct SceVideoExportInputParam { // size is 0x408 on FW 3.60
typedef struct SceVideoExportInputParam { // size is 0x408 on FW 3.600.011
   char path[1024];
   char path[1024];
   char reserved[64];
   char reserved[64];
} SceVideoExportInputParam;
} SceVideoExportInputParam;


typedef struct SceVideoExportOutputParam { // size is 0x440 on FW 3.60
typedef struct SceVideoExportOutputParam { // size is 0x440 on FW 3.600.011
   char path[1024];
   char path[1024];
   char reserved[8];
   char reserved[8];
} SceVideoExportOutputParam;
} SceVideoExportOutputParam;


int sceVideoExportFromFile(const SceVideoExportInputParam *pInParam, int unk_one, void *workingMemory, void *cancelCb, void (*progress)(void*, int), void *user, int unk_zero, SceVideoExportOutputParam *pOutParam);
typedef struct SceVideoExportEmprInputParam { // size is 0x458 on FW 3.600.011
</source>
   char path[1024];
 
   char unk_400[64];
== SceVideoExportEmpr ==
 
=== SceVideoExportEmpr_8493BF31 ===
{| class="wikitable"
|-
! Version !! NID
|-
| 3.60 || 0x8493BF31
|}
 
<source lang="C">
typedef struct SceVideoExportEmprInputParam { // size is 0x458 on FW 3.60
   char path[0x400];
   char unk_400[0x40];
   SceUInt32 unk_440;
   SceUInt32 unk_440;
   SceUInt32 unk_444;
   SceUInt32 unk_444;
Line 70: Line 55:
} SceVideoExportEmprInputParam;
} SceVideoExportEmprInputParam;


typedef struct SceVideoExportEmprOutputParam { // size is 0x448 on FW 3.60
typedef struct SceVideoExportEmprOutputParam { // size is 0x448 on FW 3.600.011
   char path[0x400];
   char path[1024];
   SceUInt32 unk_400;
   SceUInt32 unk_400;
   SceUInt32 unk_404;
   SceUInt32 unk_404;
Line 77: Line 62:
} SceVideoExportEmprOutputParam;
} SceVideoExportEmprOutputParam;


int SceVideoExportEmpr_8493BF31(const SceVideoExportEmprInputParam *pInParam, SceVideoExportEmprOutputParam *pOutParam);
typedef struct SceVideoExportDataOpenParam { // size is 0x24 on FW 3.600.011
</source>
 
== SceVideoExportData ==
 
=== SceVideoExportData_3488EA69 ===
{| class="wikitable"
|-
! Version !! NID
|-
| 3.60 || 0x3488EA69
|}
 
Opens, create and mount videoexport.dat.
 
<source lang="C">
typedef struct SceVideoExportData_3488EA69Param { // size is 0x24 on FW 3.60
   SceUInt8 unk_0; // ex: 1
   SceUInt8 unk_0; // ex: 1
   SceUInt8 unk_1; // ex: 2
   SceUInt8 unk_1; // ex: 2
Line 105: Line 74:
   SceUInt32 unk_1C;
   SceUInt32 unk_1C;
   SceSize some_size; // must be >= 0x10000
   SceSize some_size; // must be >= 0x10000
} SceVideoExportData_3488EA69Param;
} SceVideoExportDataOpenParam;


int SceVideoExportData_3488EA69(const SceVideoExportData_3488EA69Param *pParam);
typedef struct SceVideoExportDataParam { // size is 0x40 on FW 3.600.011
  char reserved[64];
} SceVideoExportDataParam;
</source>
</source>


=== SceVideoExportData_34953CC0 ===
== SceVideoExport ==
 
=== sceVideoExportFromFile ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! NID
! Version !! NID
|-
|-
| 3.60 || 0x34953CC0
| 1.000.071-3.740.011 || 0x4F60A3C8
|}
|}
<source lang="C">int sceVideoExportFromFile(const SceVideoExportInputParam *pInParam, int unk_one, void *workingMemory, void *cancelCb, void (*progress)(void*, int), void *user, int unk_zero, SceVideoExportOutputParam *pOutParam);</source>
== SceVideoExportEmpr ==
=== sceVideoExportEmpr ===
{| class="wikitable"
|-
! Version !! NID
|-
| 0.931.010-1.000.071 || not present
|-
| 1.500.151-3.740.011 || 0x8493BF31
|}
Temp name was sceVideoExportEmprFromFile.
<source lang="C">int sceVideoExportEmpr(const SceVideoExportEmprInputParam *pInParam, SceVideoExportEmprOutputParam *pOutParam);</source>
== SceVideoExportData ==
=== sceVideoExportDataOpen ===
{| class="wikitable"
|-
! Version !! NID
|-
| 0.931.010-2.12 || not present
|-
| 2.500.071-3.740.011 || 0x3488EA69
|}
This is a guessed name.
Opens, create and mount videoexport.dat.
<source lang="C">int sceVideoExportDataOpen(const SceVideoExportDataOpenParam *pParam);</source>
=== sceVideoExportData ===
{| class="wikitable"
|-
! Version !! NID
|-
| 0.931.010-2.12 || not present
|-
| 2.500.071-3.740.011 || 0x34953CC0
|}
This is a guessed name.


Calls sceVideoExportFromFile with paths containing videoexport.dat and rec0:.
Calls sceVideoExportFromFile with paths containing videoexport.dat and rec0:.


<source lang="C">
<source lang="C">
typedef struct SceVideoExportData_34953CC0Param { // size is 0x40 on FW 3.60
  char reserved[64];
} SceVideoExportData_34953CC0Param;
// pParam must be a zeroed buffer
// pParam must be a zeroed buffer
int SceVideoExportData_34953CC0(SceVideoExportData_34953CC0Param *pParam);
int sceVideoExportData(const SceVideoExportDataParam *pParam);
</source>
</source>


=== SceVideoExportData_8DDE620F ===
=== sceVideoExportDataWrite ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Version !! NID
! Version !! NID
|-
|-
| 3.60 || 0x8DDE620F
| 0.931.010-2.12 || not present
|-
| 2.500.071-3.740.011 || 0x8DDE620F
|}
|}
This is a guessed name.


Writes to videoexport.dat.
Writes to videoexport.dat.


<source lang="C">int SceVideoExportData_8DDE620F(void *buf, SceSize size);</source>
<source lang="C">int sceVideoExportDataWrite(void *buf, SceSize size);</source>
 
== See also ==
 
* [[SceMagicGate]]
* [[SceMgVideo]]
* [[IdStorage]]
* [[SceSblMgKeyMgr]]
* [[SceVshBridge#vshSblQafMgrIsAllowLoadMagicGate]] is needed for EMPR to work (to detail)
* [https://www.iodata.jp/lib/manual/magictvgt_x3/pra5500.htm Dubbing (copy/move) to PSP® go / Walkman®].
 
[[Category:ARM]]
[[Category:Usermode]]
[[Category:Modules]]
[[Category:Library]]

Latest revision as of 21:40, 1 May 2023

Video export is a feature present in PSP, PSPgo and PS Vita. It consists in exporting some videos from PC to PSP/PSPgo/PS Vita. An example of use is when you record a video with the I-O Data MagicTV GT X3. I-O Data supported devices list is available here. Then you connect the PS Vita by USB to the host PC and launch the "EMPR" mode on the PS Vita, "USB mode" on the PSP/PSPgo. Finally, on the host PC you select which videos you want to send to the PS Vita and waits for the transfer to finish. On the PSP/PSPgo/PS Vita, the contents are verified by MagicGate Type-R.

EMPR

Embedded Memory with Playback and Recording (EMPR) is the name of a system that supports copyright protection, developed by Sony Corporation.

Note that for PSP/PSPgo, there is also the Sony MediaGo program on PC that allows to transfer videos to the Memory Stick. And for PS Vita there is the Content Manager Assistant program on PC that allows to transfer videos to the Memory Card or internal storage.

Module

Version World Privilege
1.000.071-3.740.011 Non-secure User

Libraries

Known NIDs

Version Name World Visibility NID
1.000.071-3.740.011 SceVideoExport Non-secure User 0xF0812A7C
1.500.151-3.740.011 SceVideoExportEmpr Non-secure User 0x3BA9B5E8
2.500.071-3.740.011 SceVideoExportData Non-secure User 0xFE94CA1D

Types

typedef struct SceVideoExportInputParam { // size is 0x408 on FW 3.600.011
   char path[1024];
   char reserved[64];
} SceVideoExportInputParam;

typedef struct SceVideoExportOutputParam { // size is 0x440 on FW 3.600.011
   char path[1024];
   char reserved[8];
} SceVideoExportOutputParam;

typedef struct SceVideoExportEmprInputParam { // size is 0x458 on FW 3.600.011
   char path[1024];
   char unk_400[64];
   SceUInt32 unk_440;
   SceUInt32 unk_444;
   SceUInt32 unk_448;
   SceUInt32 unk_44C;
   SceUInt32 unk_450;
   SceSize some_size; // must be >= 0x10000
} SceVideoExportEmprInputParam;

typedef struct SceVideoExportEmprOutputParam { // size is 0x448 on FW 3.600.011
   char path[1024];
   SceUInt32 unk_400;
   SceUInt32 unk_404;
   char reserved[64];
} SceVideoExportEmprOutputParam;

typedef struct SceVideoExportDataOpenParam { // size is 0x24 on FW 3.600.011
   SceUInt8 unk_0; // ex: 1
   SceUInt8 unk_1; // ex: 2
   SceUInt16 unk_2; // ex: 0
   SceUInt32 unk_4;
   SceUInt32 unk_8;
   SceUInt32 unk_C;
   SceUInt32 unk_10;
   SceUInt32 unk_14;
   SceUInt32 unk_18;
   SceUInt32 unk_1C;
   SceSize some_size; // must be >= 0x10000
} SceVideoExportDataOpenParam;

typedef struct SceVideoExportDataParam { // size is 0x40 on FW 3.600.011
   char reserved[64];
} SceVideoExportDataParam;

SceVideoExport

sceVideoExportFromFile

Version NID
1.000.071-3.740.011 0x4F60A3C8
int sceVideoExportFromFile(const SceVideoExportInputParam *pInParam, int unk_one, void *workingMemory, void *cancelCb, void (*progress)(void*, int), void *user, int unk_zero, SceVideoExportOutputParam *pOutParam);

SceVideoExportEmpr

sceVideoExportEmpr

Version NID
0.931.010-1.000.071 not present
1.500.151-3.740.011 0x8493BF31

Temp name was sceVideoExportEmprFromFile.

int sceVideoExportEmpr(const SceVideoExportEmprInputParam *pInParam, SceVideoExportEmprOutputParam *pOutParam);

SceVideoExportData

sceVideoExportDataOpen

Version NID
0.931.010-2.12 not present
2.500.071-3.740.011 0x3488EA69

This is a guessed name.

Opens, create and mount videoexport.dat.

int sceVideoExportDataOpen(const SceVideoExportDataOpenParam *pParam);

sceVideoExportData

Version NID
0.931.010-2.12 not present
2.500.071-3.740.011 0x34953CC0

This is a guessed name.

Calls sceVideoExportFromFile with paths containing videoexport.dat and rec0:.

// pParam must be a zeroed buffer
int sceVideoExportData(const SceVideoExportDataParam *pParam);

sceVideoExportDataWrite

Version NID
0.931.010-2.12 not present
2.500.071-3.740.011 0x8DDE620F

This is a guessed name.

Writes to videoexport.dat.

int sceVideoExportDataWrite(void *buf, SceSize size);

See also