libctru
v2.4.1
|
MVD service. More...
Go to the source code of this file.
Data Structures | |
struct | MVDSTD_Config |
Processing configuration. More... | |
struct | MVDSTD_ProcessNALUnitOut |
struct | MVDSTD_OutputBuffersEntry |
struct | MVDSTD_OutputBuffersEntryList |
struct | MVDSTD_InitStruct |
This can be used to override the default input values for MVDSTD commands during initialization with video-processing. The default for these fields are all-zero, except for cmd1b_inval which is 1. See also here: https://www.3dbrew.org/wiki/MVD_Services. More... | |
Macros | |
#define | MVD_STATUS_OK 0x17000 |
These values are the data returned as "result-codes" by MVDSTD. | |
#define | MVD_STATUS_PARAMSET 0x17001 |
#define | MVD_STATUS_BUSY 0x17002 |
#define | MVD_STATUS_FRAMEREADY 0x17003 |
#define | MVD_STATUS_INCOMPLETEPROCESSING 0x17004 |
#define | MVD_STATUS_NALUPROCFLAG 0x17007 |
#define | MVD_CHECKNALUPROC_SUCCESS(x) (x==MVD_STATUS_OK || x==MVD_STATUS_PARAMSET || x==MVD_STATUS_FRAMEREADY || x==MVD_STATUS_INCOMPLETEPROCESSING || x==MVD_STATUS_NALUPROCFLAG) |
This can be used to check whether mvdstdProcessVideoFrame() was successful. | |
#define | MVD_DEFAULT_WORKBUF_SIZE 0x9006C8 |
Default input size for mvdstdInit(). This is what the New3DS Internet Browser uses, from the MVDSTD:CalculateWorkBufSize output. | |
Enumerations | |
enum | MVDSTD_Mode { MVDMODE_COLORFORMATCONV , MVDMODE_VIDEOPROCESSING } |
Processing mode. More... | |
enum | MVDSTD_InputFormat { MVD_INPUT_YUYV422 = 0x00010001 , MVD_INPUT_H264 = 0x00020001 } |
Input format. More... | |
enum | MVDSTD_OutputFormat { MVD_OUTPUT_YUYV422 = 0x00010001 , MVD_OUTPUT_BGR565 = 0x00040002 , MVD_OUTPUT_RGB565 = 0x00040004 } |
Output format. More... | |
Functions | |
Result | mvdstdInit (MVDSTD_Mode mode, MVDSTD_InputFormat input_type, MVDSTD_OutputFormat output_type, u32 size, MVDSTD_InitStruct *initstruct) |
Initializes MVDSTD. More... | |
void | mvdstdExit (void) |
Shuts down MVDSTD. | |
void | mvdstdGenerateDefaultConfig (MVDSTD_Config *config, u32 input_width, u32 input_height, u32 output_width, u32 output_height, u32 *vaddr_colorconv_indata, u32 *vaddr_outdata0, u32 *vaddr_outdata1) |
Generates a default MVDSTD configuration. More... | |
Result | mvdstdConvertImage (MVDSTD_Config *config) |
Run color-format-conversion. More... | |
Result | mvdstdProcessVideoFrame (void *inbuf_vaddr, size_t size, u32 flag, MVDSTD_ProcessNALUnitOut *out) |
Processes a video frame(specifically a NAL-unit). More... | |
Result | mvdstdRenderVideoFrame (MVDSTD_Config *config, bool wait) |
Renders the video frame. More... | |
Result | MVDSTD_SetConfig (MVDSTD_Config *config) |
Sets the current configuration of MVDSTD. More... | |
Result | mvdstdSetupOutputBuffers (MVDSTD_OutputBuffersEntryList *entrylist, u32 bufsize) |
New3DS Internet Browser doesn't use this. More... | |
Result | mvdstdOverrideOutputBuffers (void *cur_outdata0, void *cur_outdata1, void *new_outdata0, void *new_outdata1) |
New3DS Internet Browser doesn't use this. More... | |
MVD service.
enum MVDSTD_InputFormat |
enum MVDSTD_Mode |
enum MVDSTD_OutputFormat |
Result MVDSTD_SetConfig | ( | MVDSTD_Config * | config | ) |
Sets the current configuration of MVDSTD.
config | Pointer to the configuration to set. |
Result mvdstdConvertImage | ( | MVDSTD_Config * | config | ) |
Run color-format-conversion.
config | Pointer to the configuration to use. |
void mvdstdGenerateDefaultConfig | ( | MVDSTD_Config * | config, |
u32 | input_width, | ||
u32 | input_height, | ||
u32 | output_width, | ||
u32 | output_height, | ||
u32 * | vaddr_colorconv_indata, | ||
u32 * | vaddr_outdata0, | ||
u32 * | vaddr_outdata1 | ||
) |
Generates a default MVDSTD configuration.
config | Pointer to output the generated config to. |
input_width | Input width. |
input_height | Input height. |
output_width | Output width. |
output_height | Output height. |
vaddr_colorconv_indata | Virtual address of the color conversion input data. |
vaddr_outdata0 | Virtual address of the output data. |
vaddr_outdata1 | Additional virtual address for output data, only used when the output format type is value 0x00020001. |
Result mvdstdInit | ( | MVDSTD_Mode | mode, |
MVDSTD_InputFormat | input_type, | ||
MVDSTD_OutputFormat | output_type, | ||
u32 | size, | ||
MVDSTD_InitStruct * | initstruct | ||
) |
Initializes MVDSTD.
mode | Mode to initialize MVDSTD to. |
input_type | Type of input to process. |
output_type | Type of output to produce. |
size | Size of the work buffer, MVD_DEFAULT_WORKBUF_SIZE can be used for this. Only used when type == MVDMODE_VIDEOPROCESSING. |
initstruct | Optional MVDSTD_InitStruct, this should be NULL normally. |
Result mvdstdOverrideOutputBuffers | ( | void * | cur_outdata0, |
void * | cur_outdata1, | ||
void * | new_outdata0, | ||
void * | new_outdata1 | ||
) |
New3DS Internet Browser doesn't use this.
This overrides the entry0 output buffers originally setup by mvdstdSetupOutputBuffers(). See also here: https://www.3dbrew.org/wiki/MVDSTD:OverrideOutputBuffers
cur_outdata0 | Linearmem vaddr. The current outdata0 for this entry must match this value. |
cur_outdata1 | Linearmem vaddr. The current outdata1 for this entry must match this value. |
new_outdata0 | Linearmem vaddr. This is the new address to use for outaddr0. |
new_outdata1 | Linearmem vaddr. This is the new address to use for outaddr1. |
Result mvdstdProcessVideoFrame | ( | void * | inbuf_vaddr, |
size_t | size, | ||
u32 | flag, | ||
MVDSTD_ProcessNALUnitOut * | out | ||
) |
Processes a video frame(specifically a NAL-unit).
inbuf_vaddr | Input NAL-unit starting with the 3-byte "00 00 01" prefix. Must be located in linearmem. |
size | Size of the input buffer. |
flag | See here regarding this input flag: https://www.3dbrew.org/wiki/MVDSTD:ProcessNALUnit |
out | Optional output MVDSTD_ProcessNALUnitOut structure. |
Result mvdstdRenderVideoFrame | ( | MVDSTD_Config * | config, |
bool | wait | ||
) |
Renders the video frame.
config | Optional pointer to the configuration to use. When NULL, MVDSTD_SetConfig() should have been used previously for this video. |
wait | When true, wait for rendering to finish. When false, you can manually call this function repeatedly until it stops returning MVD_STATUS_BUSY. |
Result mvdstdSetupOutputBuffers | ( | MVDSTD_OutputBuffersEntryList * | entrylist, |
u32 | bufsize | ||
) |
New3DS Internet Browser doesn't use this.
Once done, rendered frames will be written to the output buffers specified by the entrylist instead of the output specified by configuration. See here: https://www.3dbrew.org/wiki/MVDSTD:SetupOutputBuffers
entrylist | Input entrylist. |
bufsize | Size of each buffer from the entrylist. |