Skip to content

File SpinnakerDirectShow.h

File List > include > SpinnakerDirectShow.h

Go to the documentation of this file

//=============================================================================
// Copyright (c) 2026 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved.
//
// This software is the confidential and proprietary information of FLIR
// Integrated Imaging Solutions, Inc. ("Confidential Information"). You
// shall not disclose such Confidential Information and shall use it only in
// accordance with the terms of the license agreement you entered into
// with FLIR Integrated Imaging Solutions, Inc. (FLIR).
//
// FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
// SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES
// SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
// THIS SOFTWARE OR ITS DERIVATIVES.
//=============================================================================

#ifndef FLIR_SPINNAKER_DIRECTSHOW_H
#define FLIR_SPINNAKER_DIRECTSHOW_H

#include "Spinnaker.h"

const unsigned int MAX_LENGTH = 256;

static const GUID IID_ISpinnakerInterface = {0x5143ad36,
                                             0x51d1,
                                             0x422d,
                                             {0x9b, 0x17, 0x81, 0xdd, 0x3d, 0xb0, 0x60, 0xe}};
DECLARE_INTERFACE(ISpinDevice)
{
  public:

    STDMETHOD(GetNumCameras)(unsigned int* numCameras) = 0;

    STDMETHOD(GetSelectedCameraIndex)(unsigned int* selectedIndex) = 0;

    STDMETHOD(SetSelectedCameraIndex)(unsigned int index, bool needsRelease = true) = 0;

    STDMETHOD(GetCameraInfo)(unsigned int index, char* model, char* type, char* serial, size_t bufferSize) = 0;

    STDMETHOD(IsStreaming)(bool* isStreaming) = 0;

    STDMETHOD(BeginAcquisition)() = 0;

    STDMETHOD(EndAcquisition)() = 0;


    STDMETHOD(NodeMapGetNumNodes)(size_t * numNodes) = 0;

    STDMETHOD(NodeMapGetNodeAtIndex)(size_t index, char* nodeName, size_t bufferSize) = 0;

    STDMETHOD(NodeIsImplemented)(const char* nodeName, bool* isImplemented) = 0;

    STDMETHOD(NodeIsAvailable)(const char* nodeName, bool* isAvailable) = 0;

    STDMETHOD(NodeIsReadable)(const char* nodeName, bool* isReadable) = 0;

    STDMETHOD(NodeIsWritable)(const char* nodeName, bool* isWritable) = 0;

    STDMETHOD(NodeGetType)(const char* nodeName, char* typeName, size_t bufferSize) = 0;

    STDMETHOD(NodeToString)(const char* nodeName, char* valueAsString, size_t bufferSize) = 0;

    STDMETHOD(NodeGetDisplayName)(const char* nodeName, char* displayName, size_t bufferSize) = 0;


    STDMETHOD(IntegerGetValue)(const char* nodeName, int64_t* value) = 0;

    STDMETHOD(IntegerSetValue)(const char* nodeName, int64_t value) = 0;

    STDMETHOD(IntegerGetMax)(const char* nodeName, int64_t* maxValue) = 0;

    STDMETHOD(IntegerGetMin)(const char* nodeName, int64_t* minValue) = 0;

    STDMETHOD(IntegerGetIncMode)(const char* nodeName, Spinnaker::GenApi::EIncMode* incMode) = 0;

    STDMETHOD(IntegerGetInc)(const char* nodeName, int64_t* increment) = 0;


    STDMETHOD(FloatGetValue)(const char* nodeName, double* value) = 0;

    STDMETHOD(FloatSetValue)(const char* nodeName, double value) = 0;

    STDMETHOD(FloatGetMax)(const char* nodeName, double* floatMax) = 0;

    STDMETHOD(FloatGetMin)(const char* nodeName, double* floatMin) = 0;

    STDMETHOD(FloatGetIncMode)(const char* nodeName, Spinnaker::GenApi::EIncMode* incMode) = 0;

    STDMETHOD(FloatGetInc)(const char* nodeName, double* increment) = 0;


    STDMETHOD(BooleanGetValue)(const char* nodeName, bool* value) = 0;

    STDMETHOD(BooleanSetValue)(const char* nodeName, bool value) = 0;


    STDMETHOD(StringGetValue)(const char* nodeName, char* value, size_t bufferSize) = 0;

    STDMETHOD(StringSetValue)(const char* nodeName, const char* value) = 0;


    STDMETHOD(EnumerationGetEntry)(const char* nodeName, char* value, size_t bufferSize) = 0;

    STDMETHOD(EnumerationSetEntry)(const char* nodeName, const char* value) = 0;

    STDMETHOD(EnumerationEntryExists)
    (const char* enumerationName, const char* enumerationEntryName, bool* entryExist) = 0;

    STDMETHOD(EnumerationGetNumEntries)(const char* enumerationName, size_t* numEntries) = 0;

    STDMETHOD(EnumerationGetEntryAtIndex)
    (const char* enumerationName, unsigned int entryIndex, char* enumerationEntryName, size_t bufferSize) = 0;


    STDMETHOD(CommandExecute)(const char* nodeName) = 0;

  protected:
    friend class SpinSourceStream;

    STDMETHOD(FillBuffer)(IMediaSample * pms, Spinnaker::PixelFormatEnums pixelFormat) = 0;

    /* @endcond */
};

DECLARE_INTERFACE_(ISpinnakerInterface, IUnknown)
{
    virtual ISpinDevice* GetDevice() = 0;
};

#endif // FLIR_SPINNAKER_DIRECTSHOW_H