mvd.h File Reference

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...

## Detailed Description

MVD service.

## Enumeration Type Documentation

## MVDSTD_InputFormat

enum MVDSTD_InputFormat

Input format.

Enumerator
MVD_INPUT_YUYV422 | YUYV422.
MVD_INPUT_H264 | H264.

## MVDSTD_Mode

enum MVDSTD_Mode

Processing mode.

Enumerator
MVDMODE_COLORFORMATCONV | Converting color formats.
MVDMODE_VIDEOPROCESSING | Processing video.

## MVDSTD_OutputFormat

enum MVDSTD_OutputFormat

Output format.

Enumerator
MVD_OUTPUT_YUYV422 | YUYV422.
MVD_OUTPUT_BGR565 | BGR565.
MVD_OUTPUT_RGB565 | RGB565.

## Function Documentation

## MVDSTD_SetConfig()

Result MVDSTD_SetConfig | ( | MVDSTD_Config * | config | ) |

Sets the current configuration of MVDSTD.

Parameters

  config | Pointer to the configuration to set.

## mvdstdConvertImage()

Result mvdstdConvertImage | ( | MVDSTD_Config * | config | ) |

Run color-format-conversion.

Parameters

  config | Pointer to the configuration to use.

Examples
  mvd/source/main.c.

## mvdstdGenerateDefaultConfig()

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.

Parameters

  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.

Examples
  mvd/source/main.c.

## mvdstdInit()

Result mvdstdInit | ( | MVDSTD_Mode | mode,
|  | MVDSTD_InputFormat | input_type,
|  | MVDSTD_OutputFormat | output_type,
|  | u32 | size,
|  | MVDSTD_InitStruct * | initstruct
| ) |  |

Initializes MVDSTD.

Parameters

  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.

Examples
  mvd/source/main.c.

## mvdstdOverrideOutputBuffers()

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

Parameters

  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.

## mvdstdProcessVideoFrame()

Result mvdstdProcessVideoFrame | ( | void * | inbuf_vaddr,
|  | size_t | size,
|  | u32 | flag,
|  | MVDSTD_ProcessNALUnitOut * | out
| ) |  |

Processes a video frame(specifically a NAL-unit).

Parameters

  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.

Examples
  mvd/source/main.c.

## mvdstdRenderVideoFrame()

Result mvdstdRenderVideoFrame | ( | MVDSTD_Config * | config,
|  | bool | wait
| ) |  |

Renders the video frame.

Parameters

  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.

Examples
  mvd/source/main.c.

## mvdstdSetupOutputBuffers()

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

Parameters

  entrylist | Input entrylist.
  bufsize | Size of each buffer from the entrylist.