Définition des états DXVA-HD
Pendant le traitement vidéo, l’appareil DXVA-HD (Microsoft DirectX Video Acceleration Haute Définition) conserve un état persistant d’une image à l’autre. Chaque état a une valeur par défaut documentée. Après avoir configuré l’appareil, définissez les états que vous souhaitez modifier par rapport à leurs valeurs par défaut. Avant de traiter chaque image, mettez à jour tous les états qui doivent changer.
Notes
Cette conception diffère de DXVA-VP. Dans DXVA-VP, l’application doit spécifier tous les paramètres VP avec chaque image.
Les états de l’appareil se répartissent en deux catégories :
- Les états de flux appliquent chaque flux d’entrée séparément. Vous pouvez appliquer différents paramètres à chaque flux.
- Les états blit s’appliquent globalement à l’ensemble du blit de traitement vidéo.
Les états de flux suivants sont définis.
État du flux | Description |
---|---|
DXVAHD_STREAM_STATE_D3DFORMAT | Format vidéo d’entrée. |
DXVAHD_STREAM_STATE_FRAME_FORMAT | Entrelacement. |
DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE | Espace de couleur d’entrée. Cet état spécifie la plage de couleurs RVB et la matrice de transfert YCbCr pour le flux d’entrée. |
DXVAHD_STREAM_STATE_OUTPUT_RATE | Fréquence d’images de sortie. Cet état contrôle la conversion de la fréquence d’images. |
DXVAHD_STREAM_STATE_SOURCE_RECT | Rectangle source. |
DXVAHD_STREAM_STATE_DESTINATION_RECT | Rectangle de destination. |
DXVAHD_STREAM_STATE_ALPHA | Alpha planaire. |
DXVAHD_STREAM_STATE_PALETTE | Palette de couleurs. Cet état s’applique uniquement aux formats d’entrée palettisés. |
DXVAHD_STREAM_STATE_LUMA_KEY | Touche Luma. |
DXVAHD_STREAM_STATE_ASPECT_RATIO | Proportion de pixels. |
DXVAHD_STREAM_STATE_FILTER_Xxxx | Paramètres du filtre d’image. Le pilote peut prendre en charge la luminosité, le contraste et d’autres filtres d’image. |
Les états blit suivants sont définis :
État Blit | Description |
---|---|
DXVAHD_BLT_STATE_TARGET_RECT | Rectangle cible. |
DXVAHD_BLT_STATE_BACKGROUND_COLOR | Couleur d’arrière-plan. |
DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE | Espace de couleur de sortie. |
DXVAHD_BLT_STATE_ALPHA_FILL | Mode de remplissage alpha. |
DXVAHD_BLT_STATE_CONSTRICTION | Constriction. Cet état contrôle si l’appareil sous-échantillonne la sortie. |
Pour définir un état de flux, appelez la méthode IDXVAHD_VideoProcessor::SetVideoProcessStreamState . Pour définir un état blit, appelez la méthode IDXVAHD_VideoProcessor::SetVideoProcessBltState . Dans ces deux méthodes, une valeur d’énumération spécifie l’état à définir. Les données d’état sont données à l’aide d’une structure de données spécifique à l’état, que l’application caste en type void* .
L’exemple de code suivant définit le format d’entrée et le rectangle de destination pour le flux 0, et définit la couleur d’arrière-plan sur le noir.
HRESULT SetDXVAHDStates(HWND hwnd, D3DFORMAT inputFormat)
{
// Set the initial stream states.
// Set the format of the input stream
DXVAHD_STREAM_STATE_D3DFORMAT_DATA d3dformat = { inputFormat };
HRESULT hr = g_pDXVAVP->SetVideoProcessStreamState(
0, // Stream index
DXVAHD_STREAM_STATE_D3DFORMAT,
sizeof(d3dformat),
&d3dformat
);
if (SUCCEEDED(hr))
{
// For this example, the input stream contains progressive frames.
DXVAHD_STREAM_STATE_FRAME_FORMAT_DATA frame_format = { DXVAHD_FRAME_FORMAT_PROGRESSIVE };
hr = g_pDXVAVP->SetVideoProcessStreamState(
0, // Stream index
DXVAHD_STREAM_STATE_FRAME_FORMAT,
sizeof(frame_format),
&frame_format
);
}
if (SUCCEEDED(hr))
{
// Compute the letterbox area.
RECT rcDest;
GetClientRect(hwnd, &rcDest);
RECT rcSrc;
SetRect(&rcSrc, 0, 0, VIDEO_WIDTH, VIDEO_HEIGHT);
rcDest = LetterBoxRect(rcSrc, rcDest);
// Set the destination rectangle, so the frame is displayed within the
// letterbox area. Otherwise, the frame is stretched to cover the
// entire surface.
DXVAHD_STREAM_STATE_DESTINATION_RECT_DATA DstRect = { TRUE, rcDest };
hr = g_pDXVAVP->SetVideoProcessStreamState(
0, // Stream index
DXVAHD_STREAM_STATE_DESTINATION_RECT,
sizeof(DstRect),
&DstRect
);
}
if (SUCCEEDED(hr))
{
DXVAHD_COLOR_RGBA rgbBackground = { 0.0f, 0.0f, 0.0f, 1.0f }; // RGBA
DXVAHD_BLT_STATE_BACKGROUND_COLOR_DATA background = { FALSE, rgbBackground };
hr = g_pDXVAVP->SetVideoProcessBltState(
DXVAHD_BLT_STATE_BACKGROUND_COLOR,
sizeof (background),
&background
);
}
return hr;
}
Rubriques connexes
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour