diff options
author | Hendrik Leppkes <h.leppkes@gmail.com> | 2016-02-17 18:05:02 +0300 |
---|---|---|
committer | Hendrik Leppkes <h.leppkes@gmail.com> | 2016-02-17 18:05:02 +0300 |
commit | 05cd67d9f276a5bc898686bd4934d0e541523fcb (patch) | |
tree | 74ca776451743f8b67aa81c412423a6cfd32fbfd /developer_info | |
parent | 1a207f489022fff9559dd73427dfdfe1893f1206 (diff) |
Update developer_info
Diffstat (limited to 'developer_info')
-rw-r--r-- | developer_info/IDSMResourceBag.h | 2 | ||||
-rw-r--r-- | developer_info/IGraphRebuildDelegate.h | 2 | ||||
-rw-r--r-- | developer_info/IKeyFrameInfo.h | 2 | ||||
-rw-r--r-- | developer_info/IMediaSample3D.h | 12 | ||||
-rw-r--r-- | developer_info/IMediaSideData.h | 48 | ||||
-rw-r--r-- | developer_info/IStreamSourceControl.h | 2 | ||||
-rw-r--r-- | developer_info/ITrackInfo.h | 2 | ||||
-rw-r--r-- | developer_info/LAVAudioSettings.h | 2 | ||||
-rw-r--r-- | developer_info/LAVSplitterSettings.h | 2 | ||||
-rw-r--r-- | developer_info/LAVVideoSettings.h | 34 |
10 files changed, 92 insertions, 16 deletions
diff --git a/developer_info/IDSMResourceBag.h b/developer_info/IDSMResourceBag.h index 21492007..8a8f5b09 100644 --- a/developer_info/IDSMResourceBag.h +++ b/developer_info/IDSMResourceBag.h @@ -1,6 +1,6 @@ /* * Copyright (C) 2003-2006 Gabest - * Copyright (C) 2010-2015 Hendrik Leppkes + * Copyright (C) 2010-2016 Hendrik Leppkes * http://www.1f0.de * * This program is free software; you can redistribute it and/or modify diff --git a/developer_info/IGraphRebuildDelegate.h b/developer_info/IGraphRebuildDelegate.h index ece1b218..9c5458b5 100644 --- a/developer_info/IGraphRebuildDelegate.h +++ b/developer_info/IGraphRebuildDelegate.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2015 Hendrik Leppkes + * Copyright (C) 2010-2016 Hendrik Leppkes * http://www.1f0.de * * This program is free software; you can redistribute it and/or modify diff --git a/developer_info/IKeyFrameInfo.h b/developer_info/IKeyFrameInfo.h index 5e7766ff..618db9f4 100644 --- a/developer_info/IKeyFrameInfo.h +++ b/developer_info/IKeyFrameInfo.h @@ -1,6 +1,6 @@ /* * Copyright (C) 2003-2006 Gabest - * Copyright (C) 2010-2015 Hendrik Leppkes + * Copyright (C) 2010-2016 Hendrik Leppkes * http://www.1f0.de * * This program is free software; you can redistribute it and/or modify diff --git a/developer_info/IMediaSample3D.h b/developer_info/IMediaSample3D.h new file mode 100644 index 00000000..51db24f5 --- /dev/null +++ b/developer_info/IMediaSample3D.h @@ -0,0 +1,12 @@ +// ----------------------------------------------------------------- +// IMediaSample3D interface and data structure definitions +// ----------------------------------------------------------------- + +#pragma once + +[uuid("E92D790E-BF54-43C4-B394-8CA0A41BF9EC")] +interface IMediaSample3D : public IMediaSample2 +{ + STDMETHOD(Enable3D)() = 0; + STDMETHOD(GetPointer3D)(BYTE **ppBuffer) = 0; +}; diff --git a/developer_info/IMediaSideData.h b/developer_info/IMediaSideData.h new file mode 100644 index 00000000..4e78eb9a --- /dev/null +++ b/developer_info/IMediaSideData.h @@ -0,0 +1,48 @@ +// ----------------------------------------------------------------- +// IMediaSideData interface and data structure definitions +// ----------------------------------------------------------------- + +#pragma once + +// ----------------------------------------------------------------- +// Interface to exchange binary side data +// ----------------------------------------------------------------- +// This interface should be implemented in IMediaSample objects and accessed through IUnknown +// It allows binary side data to be attached to the media samples and delivered with them +// Restrictions: Only one side data per type can be attached +[uuid("F940AE7F-48EB-4377-806C-8FC48CAB2292")] +interface IMediaSideData : public IUnknown +{ + // Set the side data identified by guidType to the data provided + // The provided data will be copied and stored internally + STDMETHOD(SetSideData)(GUID guidType, const BYTE *pData, size_t size) PURE; + + // Get the side data identified by guidType + // The caller receives pointers to the internal data, and the pointers shall stay + // valid for the lifetime of the object + STDMETHOD(GetSideData)(GUID guidType, const BYTE **pData, size_t *pSize) PURE; +}; + + +// ----------------------------------------------------------------- +// High-Dynamic-Range (HDR) Side Data +// ----------------------------------------------------------------- + +// {53820DBC-A7B8-49C4-B17B-E511591A790C} +DEFINE_GUID(IID_MediaSideDataHDR, +0x53820dbc, 0xa7b8, 0x49c4, 0xb1, 0x7b, 0xe5, 0x11, 0x59, 0x1a, 0x79, 0xc); + +#pragma pack(push, 1) +struct MediaSideDataHDR +{ + // coordinates of the primaries, in B-G-R order + double display_primaries_x[3]; + double display_primaries_y[3]; + // white point + double white_point_x; + double white_point_y; + // luminance + double max_display_mastering_luminance; + double min_display_mastering_luminance; +}; +#pragma pack(pop) diff --git a/developer_info/IStreamSourceControl.h b/developer_info/IStreamSourceControl.h index 5807c90d..d5385103 100644 --- a/developer_info/IStreamSourceControl.h +++ b/developer_info/IStreamSourceControl.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2015 Hendrik Leppkes + * Copyright (C) 2010-2016 Hendrik Leppkes * http://www.1f0.de * * This program is free software; you can redistribute it and/or modify diff --git a/developer_info/ITrackInfo.h b/developer_info/ITrackInfo.h index a7cb3eb9..6f133d58 100644 --- a/developer_info/ITrackInfo.h +++ b/developer_info/ITrackInfo.h @@ -1,6 +1,6 @@ /* * Copyright (C) 2003-2006 Gabest - * Copyright (C) 2010-2015 Hendrik Leppkes + * Copyright (C) 2010-2016 Hendrik Leppkes * http://www.1f0.de * * This program is free software; you can redistribute it and/or modify diff --git a/developer_info/LAVAudioSettings.h b/developer_info/LAVAudioSettings.h index 476040c1..15de658c 100644 --- a/developer_info/LAVAudioSettings.h +++ b/developer_info/LAVAudioSettings.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2015 Hendrik Leppkes + * Copyright (C) 2010-2016 Hendrik Leppkes * http://www.1f0.de * * This program is free software; you can redistribute it and/or modify diff --git a/developer_info/LAVSplitterSettings.h b/developer_info/LAVSplitterSettings.h index d8a6a192..40ecd19d 100644 --- a/developer_info/LAVSplitterSettings.h +++ b/developer_info/LAVSplitterSettings.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2015 Hendrik Leppkes + * Copyright (C) 2010-2016 Hendrik Leppkes * http://www.1f0.de * * This program is free software; you can redistribute it and/or modify diff --git a/developer_info/LAVVideoSettings.h b/developer_info/LAVVideoSettings.h index a92637f6..6a8a7518 100644 --- a/developer_info/LAVVideoSettings.h +++ b/developer_info/LAVVideoSettings.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2015 Hendrik Leppkes + * Copyright (C) 2010-2016 Hendrik Leppkes * http://www.1f0.de * * This program is free software; you can redistribute it and/or modify @@ -99,8 +99,9 @@ typedef enum LAVVideoHWCodec { HWCodec_MPEG4 = Codec_MPEG4, HWCodec_MPEG2DVD, HWCodec_HEVC, + HWCodec_VP9, - HWCodec_NB = HWCodec_HEVC + 1 + HWCodec_NB, } LAVVideoHWCodec; // Flags for HW Resolution support @@ -115,7 +116,8 @@ typedef enum LAVHWAccel { HWAccel_QuickSync, HWAccel_DXVA2, HWAccel_DXVA2CopyBack = HWAccel_DXVA2, - HWAccel_DXVA2Native + HWAccel_DXVA2Native, + HWAccel_NB, // Number of HWAccels } LAVHWAccel; // Deinterlace algorithms offered by the hardware decoders @@ -128,7 +130,9 @@ typedef enum LAVHWDeintModes { // Software deinterlacing algorithms typedef enum LAVSWDeintModes { SWDeintMode_None, - SWDeintMode_YADIF + SWDeintMode_YADIF, + SWDeintMode_W3FDIF_Simple, + SWDeintMode_W3FDIF_Complex, } LAVSWDeintModes; // Deinterlacing processing mode @@ -293,12 +297,8 @@ interface ILAVVideoSettings : public IUnknown // Get the deinterlacing output for the hardware decoder STDMETHOD_(LAVDeintOutput, GetHWAccelDeintOutput)() = 0; - // Set whether the hardware decoder should force high-quality deinterlacing - // Note: this option is not supported on all decoder implementations and/or all operating systems + // deprecated. HQ deint is always used when available depending on platform and codec STDMETHOD(SetHWAccelDeintHQ)(BOOL bHQ) = 0; - - // Get whether the hardware decoder should force high-quality deinterlacing - // Note: this option is not supported on all decoder implementations and/or all operating systems STDMETHOD_(BOOL, GetHWAccelDeintHQ)() = 0; // Set the software deinterlacing mode used @@ -362,6 +362,19 @@ interface ILAVVideoSettings : public IUnknown // Must be called before an input is connected to LAV Video, and the setting is non-persistent // NOTE: For CUVID, the index defines the index of the CUDA capable device, while for DXVA2, the list includes all D3D9 devices STDMETHOD(SetGPUDeviceIndex)(DWORD dwDevice) = 0; + + // Get the number of available devices for the specified HWAccel + STDMETHOD_(DWORD, GetHWAccelNumDevices)(LAVHWAccel hwAccel) = 0; + + // Get a list of available HWAccel devices for the specified HWAccel + STDMETHOD(GetHWAccelDeviceInfo)(LAVHWAccel hwAccel, DWORD dwIndex, BSTR *pstrDeviceName, DWORD *pdwDeviceIdentifier) = 0; + + // Get/Set the device for a specified HWAccel + // In contrast to SetGPUDeviceIndex, this setting is hwaccel-specific and persistent + // dwDeviceIdentifier is an optional parameter that identifies the selected device (ie. its device id), set to 0 if not used +#define LAVHWACCEL_DEVICE_DEFAULT ((DWORD)-1) + STDMETHOD_(DWORD, GetHWAccelDeviceIndex)(LAVHWAccel hwAccel, DWORD *pdwDeviceIdentifier) = 0; + STDMETHOD(SetHWAccelDeviceIndex)(LAVHWAccel hwAccel, DWORD dwIndex, DWORD dwDeviceIdentifier) = 0; }; // LAV Video status interface @@ -370,4 +383,7 @@ interface ILAVVideoStatus : public IUnknown { // Get the name of the active decoder (can return NULL if none is active) STDMETHOD_(LPCWSTR, GetActiveDecoderName)() = 0; + + // Get the name of the currently active hwaccel device + STDMETHOD(GetHWAccelActiveDevice)(BSTR *pstrDeviceName) = 0; }; |