MVDSTD:GetConfig: Difference between revisions

Replaced content with "=Request= {| class="wikitable" border="1" |- ! Index Word ! Description |- | 0 | Header code [0x001D0042] |- | 1 | Size, normally 0x11C. |- | 2 | (Size<<4) <nowiki>|</n..."
 
(13 intermediate revisions by the same user not shown)
Line 15: Line 15:
|-
|-
| 3
| 3
| Output data ptr
| Output [[MVD_Services|config]] data ptr
|}
|}


Line 29: Line 29:
| 1
| 1
| Resultcode
| Resultcode
|}
=Structure=
{| class="wikitable" border="1"
|-
!  Offset
!  Size
!  Description
|-
| 0x0
| 0x4
| Type, see below.
|-
| 0x4
| 0x4
| The default for this is 0x0. Must be <=5. When non-zero, the type value at offset 0x0 must be one of the following: 0x00020001, 0x00010001, 0x00010005, 0x00010006, or 0x00010007.
|-
| 0x8
| 0x4
| The default for this is 0x0. This must be <=1.
|-
| 0x0C
| 0x4
| Video width. Must be >=width_min and <width_max. This must be aligned: the low <dimensions_alignment>-bits must be clear.
|-
|-
| 0x10
| 0x4
| Video height. Must be >=height_min and <height_max. This must be aligned: the low <dimensions_alignment>-bits must be clear.
|-
| 0x14
| 0x4
| Input data physical address, only set for color-conversion. This isn't used when the value at offset 0x4 is 0x1 or 0x5.
|-
| 0x18
| 0x4
| Physical data address, only used for color-conversion when the type value has bitmask 0x20000 set. This isn't used when the value at offset 0x4 is 0x1 or 0x5.
|-
| 0x1C
| 0x4
| Physical data address, only used for color-conversion when the type value is 0x20000. This isn't used when the value at offset 0x4 is 0x1 or 0x5.
|-
| 0x20
| 0x4
| Physical data address, for color-conversion. This isn't used when the value at offset 0x4 is 0x0 or 0x4.
|-
| 0x24
| 0x4
| Physical data address, only used for color-conversion when the type value has bitmask 0x20000 set. This isn't used when the value at offset 0x4 is 0x0 or 0x4.
|-
| 0x40
| 0x4
| When non-zero this enables usage of the 4 words starting at offset 0x44. Normally this is set to 0x0 for color-conversion, and 0x1 for video processing.
|-
| 0x44
| 0x4
| See offset 0x40. The default for this is 0x0. Must be <=widthval. Where widthval = <width value from the field at offset 0xC>. The low 4-bits of this value must be clear.
|-
| 0x48
| 0x4
| See offset 0x40. The default for this is 0x0. Must be <=heightval. Where heightval = <height value from the field at offset 0x10>. The low 4-bits of this value must be clear.
|-
| 0x4C
| 0x4
| See offset 0x40. Video height. Must be >=16 and <=heightval. Where heightval = <height value from the field at offset 0x10>. The low 3-bits of this value must be clear.
|-
| 0x50
| 0x4
| See offset 0x40. Video width. Must be >=width_min and <=widthval. Where widthval = <width value from the field at offset 0xC>. The low 3-bits of this value must be clear.
|-
| 0x54
| 0x4
| The default for this is 0x0. Must be <=5. For video processing, and when this value is non-zero, the type value at offset 0x0 must not be any of the following: 0x00010004, 0x00010001, 0x0x00100001, or 0x00200001. For video processing, the type value at offset 0x0 must not be 0x80000 when this value at offset 0x54 is non-zero.
|-
| 0x58
| 0x4
| The default for this is 0x40002. The physaddr at offset 0x68 is only checked when this is value 0x00020001.
|-
| 0x5C
| 0x4
| Video width. Must be >=16, and must be <somewidth_statefield.
|-
| 0x60
| 0x4
| Video height. Must be >=16, and must be <someheight_statefield.
|-
| 0x64
| 0x4
| Output data physical address.
|-
| 0x68
| 0x4
| Output data physical address, only set for color-conversion.
|}
The size of this structure is fixed to 0x11C-bytes. The user process does the LINEAR-mem vaddr->physaddr conversion for the above physaddrs, when modifying the config struct before using [[MVDSTD:SetConfig]]. For the above physaddrs that are checked/used, the physaddr must not be 0x0, and the physaddr must be 8-byte aligned(low 3-bits clear).
See [[MVD_Services|here]] regarding "MJPEG". For "MJPEG", the output frame is split into two images via the two output physaddrs.
For *_min/*_max/dimensions_alignment mentioned above: *_min = 16 for color-conversion, 48 for video processing. *_max = 2048 for color-conversion, 4672 for video processing. dimensions_alignment = 4 for color-conversion, 3 for video processing.
Types:
{| class="wikitable" border="1"
|-
!  Type value
!  Mode
!  Description
|-
| 0x00010001
| Color conversion
| "MJPEG" (yuyv422 -> <out color format>)
|-
| 0x00010002
| Video processing
| ?
|-
| 0x00010004
| Video processing
| ?
|-
| 0x00010005
| Color conversion
| ?
|-
| 0x00010006
| Color conversion
| ?
|-
| 0x00010007
| Color conversion
| ?
|-
| 0x00020000
| Color conversion
| ?
|-
| 0x00020001
| Video processing
| H.264
|-
| 0x00020002
| ?
| ?
|-
| 0x00080000
| Video processing
| ?
|-
| 0x00080001
| Video processing
| ?
|-
| 0x00180001
| Video processing
| ?
|}
|}


=Description=
=Description=
For this command, MVD module DMAs 0x11C-bytes from a MVD state structure to the above output buffer.
For this command, MVD module DMAs 0x11C-bytes from a MVD state structure to the above output buffer.