ホーム › Media.DirectShow › DVD_VideoAttributes
DVD_VideoAttributes
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| fPanscanPermitted | BOOL | 4 | +0 | +0 | パンスキャン表示が許可されるかを示す真偽値。 |
| fLetterboxPermitted | BOOL | 4 | +4 | +4 | レターボックス表示が許可されるかを示す真偽値。 |
| ulAspectX | DWORD | 4 | +8 | +8 | アスペクト比の水平成分を示す。 |
| ulAspectY | DWORD | 4 | +12 | +12 | アスペクト比の垂直成分を示す。 |
| ulFrameRate | DWORD | 4 | +16 | +16 | フレームレート(50または60)を示す。 |
| ulFrameHeight | DWORD | 4 | +20 | +20 | フレームの高さをピクセル単位で示す。 |
| Compression | DVD_VIDEO_COMPRESSION | 4 | +24 | +24 | ビデオの圧縮方式を示すDVD_VIDEO_COMPRESSION値。 |
| fLine21Field1InGOP | BOOL | 4 | +28 | +28 | GOP内の第1フィールドにLine21字幕データがあるかを示す真偽値。 |
| fLine21Field2InGOP | BOOL | 4 | +32 | +32 | GOP内の第2フィールドにLine21字幕データがあるかを示す真偽値。 |
| ulSourceResolutionX | DWORD | 4 | +36 | +36 | ソース映像の水平解像度を示す。 |
| ulSourceResolutionY | DWORD | 4 | +40 | +40 | ソース映像の垂直解像度を示す。 |
| fIsSourceLetterboxed | BOOL | 4 | +44 | +44 | ソースがレターボックス収録かを示す真偽値。 |
| fIsFilmMode | BOOL | 4 | +48 | +48 | フィルムモード(プログレッシブ)で収録されているかを示す真偽値。 |
各言語での定義
#include <windows.h>
// DVD_VideoAttributes (x64 52 / x86 52 バイト)
typedef struct DVD_VideoAttributes {
BOOL fPanscanPermitted;
BOOL fLetterboxPermitted;
DWORD ulAspectX;
DWORD ulAspectY;
DWORD ulFrameRate;
DWORD ulFrameHeight;
DVD_VIDEO_COMPRESSION Compression;
BOOL fLine21Field1InGOP;
BOOL fLine21Field2InGOP;
DWORD ulSourceResolutionX;
DWORD ulSourceResolutionY;
BOOL fIsSourceLetterboxed;
BOOL fIsFilmMode;
} DVD_VideoAttributes;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DVD_VideoAttributes
{
[MarshalAs(UnmanagedType.Bool)] public bool fPanscanPermitted;
[MarshalAs(UnmanagedType.Bool)] public bool fLetterboxPermitted;
public uint ulAspectX;
public uint ulAspectY;
public uint ulFrameRate;
public uint ulFrameHeight;
public int Compression;
[MarshalAs(UnmanagedType.Bool)] public bool fLine21Field1InGOP;
[MarshalAs(UnmanagedType.Bool)] public bool fLine21Field2InGOP;
public uint ulSourceResolutionX;
public uint ulSourceResolutionY;
[MarshalAs(UnmanagedType.Bool)] public bool fIsSourceLetterboxed;
[MarshalAs(UnmanagedType.Bool)] public bool fIsFilmMode;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DVD_VideoAttributes
<MarshalAs(UnmanagedType.Bool)> Public fPanscanPermitted As Boolean
<MarshalAs(UnmanagedType.Bool)> Public fLetterboxPermitted As Boolean
Public ulAspectX As UInteger
Public ulAspectY As UInteger
Public ulFrameRate As UInteger
Public ulFrameHeight As UInteger
Public Compression As Integer
<MarshalAs(UnmanagedType.Bool)> Public fLine21Field1InGOP As Boolean
<MarshalAs(UnmanagedType.Bool)> Public fLine21Field2InGOP As Boolean
Public ulSourceResolutionX As UInteger
Public ulSourceResolutionY As UInteger
<MarshalAs(UnmanagedType.Bool)> Public fIsSourceLetterboxed As Boolean
<MarshalAs(UnmanagedType.Bool)> Public fIsFilmMode As Boolean
End Structureimport ctypes
from ctypes import wintypes
class DVD_VideoAttributes(ctypes.Structure):
_fields_ = [
("fPanscanPermitted", wintypes.BOOL),
("fLetterboxPermitted", wintypes.BOOL),
("ulAspectX", wintypes.DWORD),
("ulAspectY", wintypes.DWORD),
("ulFrameRate", wintypes.DWORD),
("ulFrameHeight", wintypes.DWORD),
("Compression", ctypes.c_int),
("fLine21Field1InGOP", wintypes.BOOL),
("fLine21Field2InGOP", wintypes.BOOL),
("ulSourceResolutionX", wintypes.DWORD),
("ulSourceResolutionY", wintypes.DWORD),
("fIsSourceLetterboxed", wintypes.BOOL),
("fIsFilmMode", wintypes.BOOL),
]#[repr(C)]
pub struct DVD_VideoAttributes {
pub fPanscanPermitted: i32,
pub fLetterboxPermitted: i32,
pub ulAspectX: u32,
pub ulAspectY: u32,
pub ulFrameRate: u32,
pub ulFrameHeight: u32,
pub Compression: i32,
pub fLine21Field1InGOP: i32,
pub fLine21Field2InGOP: i32,
pub ulSourceResolutionX: u32,
pub ulSourceResolutionY: u32,
pub fIsSourceLetterboxed: i32,
pub fIsFilmMode: i32,
}import "golang.org/x/sys/windows"
type DVD_VideoAttributes struct {
fPanscanPermitted int32
fLetterboxPermitted int32
ulAspectX uint32
ulAspectY uint32
ulFrameRate uint32
ulFrameHeight uint32
Compression int32
fLine21Field1InGOP int32
fLine21Field2InGOP int32
ulSourceResolutionX uint32
ulSourceResolutionY uint32
fIsSourceLetterboxed int32
fIsFilmMode int32
}type
DVD_VideoAttributes = record
fPanscanPermitted: BOOL;
fLetterboxPermitted: BOOL;
ulAspectX: DWORD;
ulAspectY: DWORD;
ulFrameRate: DWORD;
ulFrameHeight: DWORD;
Compression: Integer;
fLine21Field1InGOP: BOOL;
fLine21Field2InGOP: BOOL;
ulSourceResolutionX: DWORD;
ulSourceResolutionY: DWORD;
fIsSourceLetterboxed: BOOL;
fIsFilmMode: BOOL;
end;const DVD_VideoAttributes = extern struct {
fPanscanPermitted: i32,
fLetterboxPermitted: i32,
ulAspectX: u32,
ulAspectY: u32,
ulFrameRate: u32,
ulFrameHeight: u32,
Compression: i32,
fLine21Field1InGOP: i32,
fLine21Field2InGOP: i32,
ulSourceResolutionX: u32,
ulSourceResolutionY: u32,
fIsSourceLetterboxed: i32,
fIsFilmMode: i32,
};type
DVD_VideoAttributes {.bycopy.} = object
fPanscanPermitted: int32
fLetterboxPermitted: int32
ulAspectX: uint32
ulAspectY: uint32
ulFrameRate: uint32
ulFrameHeight: uint32
Compression: int32
fLine21Field1InGOP: int32
fLine21Field2InGOP: int32
ulSourceResolutionX: uint32
ulSourceResolutionY: uint32
fIsSourceLetterboxed: int32
fIsFilmMode: int32struct DVD_VideoAttributes
{
int fPanscanPermitted;
int fLetterboxPermitted;
uint ulAspectX;
uint ulAspectY;
uint ulFrameRate;
uint ulFrameHeight;
int Compression;
int fLine21Field1InGOP;
int fLine21Field2InGOP;
uint ulSourceResolutionX;
uint ulSourceResolutionY;
int fIsSourceLetterboxed;
int fIsFilmMode;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DVD_VideoAttributes サイズ: 52 バイト(x64)
dim st, 13 ; 4byte整数×13(構造体サイズ 52 / 4 切り上げ)
; fPanscanPermitted : BOOL (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; fLetterboxPermitted : BOOL (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; ulAspectX : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; ulAspectY : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; ulFrameRate : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; ulFrameHeight : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; Compression : DVD_VIDEO_COMPRESSION (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; fLine21Field1InGOP : BOOL (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; fLine21Field2InGOP : BOOL (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; ulSourceResolutionX : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; ulSourceResolutionY : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; fIsSourceLetterboxed : BOOL (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; fIsFilmMode : BOOL (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DVD_VideoAttributes
#field bool fPanscanPermitted
#field bool fLetterboxPermitted
#field int ulAspectX
#field int ulAspectY
#field int ulFrameRate
#field int ulFrameHeight
#field int Compression
#field bool fLine21Field1InGOP
#field bool fLine21Field2InGOP
#field int ulSourceResolutionX
#field int ulSourceResolutionY
#field bool fIsSourceLetterboxed
#field bool fIsFilmMode
#endstruct
stdim st, DVD_VideoAttributes ; NSTRUCT 変数を確保
st->fPanscanPermitted = 100
mes "fPanscanPermitted=" + st->fPanscanPermitted