Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/VLC/modules/video_chroma/   (VLC Media Plyer ©)  Datei vom 23.9.2026 mit Größe 4 kB image not shown  

Quelle  d3d9_fmt.h   Sprache: C

 

/*****************************************************************************
 * d3d9_fmt.h : D3D9 helper calls
 *****************************************************************************
 * Copyright © 2017 VLC authors, VideoLAN and VideoLabs
 *
 * Authors: Steve Lhomme <robux4@gmail.com>
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2.1 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
 *****************************************************************************/


#ifndef VLC_VIDEOCHROMA_D3D9_FMT_H_
#define VLC_VIDEOCHROMA_D3D9_FMT_H_

#include <vlc_picture.h>
#include <vlc_codec.h>

#define COBJMACROS
#include <d3d9.h>

#include "dxgi_fmt.h"

#define DXVAHD_TEXT N_("Use DXVA-HD for color conversion")

/* owned by the vout for VLC_CODEC_D3D9_OPAQUE */
typedef struct
{
    IDirect3DSurface9    *surface;
} picture_sys_d3d9_t;

struct d3d9_pic_context
{
    picture_context_t         s;
    picture_sys_d3d9_t        picsys;
};

typedef struct
{
    union {
        IDirect3D9          *obj;
        IDirect3D9Ex        *objex;
    };
    bool                    use_ex;
} d3d9_handle_t;

typedef struct
{
    union
    {
        IDirect3DDevice9    *dev;
        IDirect3DDevice9Ex  *devex;
    };

    /* creation parameters */
    UINT                    adapterId;

    D3DCAPS9                caps;
    D3DADAPTER_IDENTIFIER9  identifier;
} d3d9_device_t;

typedef struct
{
    d3d9_handle_t  hd3d;
    d3d9_device_t  d3ddev;
} d3d9_decoder_device_t;

typedef struct
{
    D3DFORMAT        format;
} d3d9_video_context_t;

static inline bool is_d3d9_opaque(vlc_fourcc_t chroma)
{
    switch (chroma)
    {
    case VLC_CODEC_D3D9_OPAQUE:
    case VLC_CODEC_D3D9_OPAQUE_10B:
        return true;
    default:
        return false;
    }
}

extern const struct vlc_video_context_operations d3d9_vctx_ops;

picture_sys_d3d9_t *ActiveD3D9PictureSys(picture_t *);

static inline d3d9_decoder_device_t *GetD3D9OpaqueDevice(vlc_decoder_device *device)
{
    if (device == NULL || device->type != VLC_DECODER_DEVICE_DXVA2)
        return NULL;
    return device->opaque;
}

static inline d3d9_decoder_device_t *GetD3D9OpaqueContext(vlc_video_context *vctx)
{
    vlc_decoder_device *device = vctx ? vlc_video_context_HoldDevice(vctx) : NULL;
    if (unlikely(device == NULL))
        return NULL;
    d3d9_decoder_device_t *res = NULL;
    if (device->type == VLC_DECODER_DEVICE_DXVA2)
    {
        assert(device->opaque != NULL);
        res = GetD3D9OpaqueDevice(device);
    }
    vlc_decoder_device_Release(device);
    return res;
}

static inline d3d9_video_context_t *GetD3D9ContextPrivate(vlc_video_context *vctx)
{
    return (d3d9_video_context_t *) vlc_video_context_GetPrivate( vctx, VLC_VIDEO_CONTEXT_DXVA2 );
}

static inline void AcquireD3D9PictureSys(picture_sys_d3d9_t *p_sys)
{
    IDirect3DSurface9_AddRef(p_sys->surface);
}

static inline void ReleaseD3D9PictureSys(picture_sys_d3d9_t *p_sys)
{
    IDirect3DSurface9_Release(p_sys->surface);
}

d3d9_decoder_device_t *D3D9_CreateDevice(vlc_object_t *);
#define D3D9_CreateDevice(a) D3D9_CreateDevice( VLC_OBJECT(a) )

void D3D9_ReleaseDevice(d3d9_decoder_device_t *);

int D3D9_ResetDevice(vlc_object_t *, d3d9_decoder_device_t *);

void d3d9_pic_context_destroy(picture_context_t *);
picture_context_t *d3d9_pic_context_copy(picture_context_t *);

typedef struct {
    const char   *name;
    D3DFORMAT    format;
    vlc_fourcc_t vlc_chroma;
} d3d9_format_t;

const d3d9_format_t *D3D9FormatFourcc(D3DFORMAT);

#endif /* VLC_VIDEOCHROMA_D3D9_FMT_H_ */

Messung
CHZG
829710093

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover


Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.