Changeset 4661

Show
Ignore:
Timestamp:
03/02/10 12:44:50 (4 years ago)
Author:
douglask
Message:

Removed dependency on ATL and atlbase.h in grabber-decklink.cpp.

Added code to ignore old captured frames in grabber-decklink.cpp.

Location:
vic/branches/mpeg4
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • vic/branches/mpeg4/vic.2008.vcproj

    r4576 r4661  
    7575                        <Tool 
    7676                                Name="VCLinkerTool" 
    77                                 AdditionalDependencies="tcl85.lib tk85.lib uclmm.lib ws2_32.lib iphlpapi.lib vfw32.lib ddraw.lib dxguid.lib strmiids.lib quartz.lib" 
     77                                AdditionalDependencies="tcl85.lib tk85.lib uclmm.lib ws2_32.lib comsuppwd.lib iphlpapi.lib vfw32.lib ddraw.lib dxguid.lib strmiids.lib quartz.lib" 
    7878                                LinkIncremental="2" 
    7979                                AdditionalLibraryDirectories="C:\Tcl\lib;&quot;$(DXSDK_DIR)\Lib\x86&quot;;&quot;$(SolutionDir)Debug&quot;" 
     
    158158                        <Tool 
    159159                                Name="VCLinkerTool" 
    160                                 AdditionalDependencies="tcl85.lib tk85.lib uclmm.lib ws2_32.lib iphlpapi.lib vfw32.lib ddraw.lib dxguid.lib strmiids.lib quartz.lib" 
     160                                AdditionalDependencies="tcl85.lib tk85.lib uclmm.lib ws2_32.lib comsuppwd.lib iphlpapi.lib vfw32.lib ddraw.lib dxguid.lib strmiids.lib quartz.lib" 
    161161                                LinkIncremental="1" 
    162162                                AdditionalLibraryDirectories="C:\Tcl\lib;&quot;$(DXSDK_DIR)\Lib\x86&quot;;&quot;$(SolutionDir)Release&quot;" 
     
    242242                        <Tool 
    243243                                Name="VCLinkerTool" 
    244                                 AdditionalDependencies="tcl85.lib tk85.lib uclmm.lib ws2_32.lib iphlpapi.lib vfw32.lib ddraw.lib dxguid.lib strmiids.lib quartz.lib libgcc.a libmingwex.a libavcodec.a libavutil.a libpostproc.a libswscale.a libpthread.a libx264.a libz.a" 
     244                                AdditionalDependencies="tcl85.lib tk85.lib uclmm.lib ws2_32.lib comsuppwd.lib iphlpapi.lib vfw32.lib ddraw.lib dxguid.lib strmiids.lib quartz.lib libgcc.a libmingwex.a libavcodec.a libavutil.a libpostproc.a libswscale.a libpthread.a libx264.a libz.a" 
    245245                                LinkIncremental="2" 
    246246                                AdditionalLibraryDirectories="C:\Tcl\lib;&quot;$(DXSDK_DIR)\Lib\x86&quot;;C:\msys\1.0\lib;&quot;C:\mingw\lib\gcc\mingw32\4.2.1-sjlj&quot;;c:\mingw\local\lib;c:\mingw\local\bin;c:\mingw\lib;C:\msys\lib;&quot;$(SolutionDir)Debug&quot;;C:\msys\1.0\local\lib;C:\msys\local\lib;C:\msys\1.0\lib\gcc\mingw32\4.4.0;C:\msys\1.0\lib\gcc\mingw32\4.2.0;C:\msys\lib\gcc\mingw32\4.4.0;C:\msys\lib\gcc\mingw32\4.2.0" 
     
    328328                        <Tool 
    329329                                Name="VCLinkerTool" 
    330                                 AdditionalDependencies="tcl85.lib tk85.lib uclmm.lib ws2_32.lib iphlpapi.lib vfw32.lib ddraw.lib dxguid.lib strmiids.lib quartz.lib libgcc.a libmingwex.a libavcodec.a libavutil.a libpostproc.a libswscale.a libpthread.a libx264.a libz.a" 
     330                                AdditionalDependencies="tcl85.lib tk85.lib uclmm.lib ws2_32.lib comsuppwd.lib iphlpapi.lib vfw32.lib ddraw.lib dxguid.lib strmiids.lib quartz.lib libgcc.a libmingwex.a libavcodec.a libavutil.a libpostproc.a libswscale.a libpthread.a libx264.a libz.a" 
    331331                                LinkIncremental="1" 
    332332                                AdditionalLibraryDirectories="C:\Tcl\lib;&quot;$(DXSDK_DIR)\Lib\x86&quot;;C:\msys\1.0\lib;&quot;C:\mingw\lib\gcc\mingw32\4.2.1-sjlj&quot;;c:\mingw\local\lib;c:\mingw\local\bin;c:\mingw\lib;C:\msys\lib;&quot;$(SolutionDir)Release&quot;;C:\msys\1.0\local\lib;C:\msys\local\lib;C:\msys\1.0\lib\gcc\mingw32\4.4.0;C:\msys\1.0\lib\gcc\mingw32\4.2.0;C:\msys\lib\gcc\mingw32\4.4.0;C:\msys\lib\gcc\mingw32\4.2.0" 
  • vic/branches/mpeg4/video/grabber-decklink.cpp

    r4656 r4661  
    4747 
    4848#if defined(_WIN32) || defined(_WIN64) 
    49 #include <atlbase.h> 
     49#include <objbase.h> 
     50#include <comutil.h> 
    5051#include "DeckLinkAPI_h.h" 
    5152#include "inttypes.h" 
     
    9091        mReadIndex = 0; 
    9192        mWriteIndex = 0; 
     93        mLastReadFrameNum = 0; 
     94        mLastWriteFrameNum = 0; 
    9295#ifdef HAVE_SWSCALE 
    9396        sws_context = NULL; 
     
    113116            return NULL; 
    114117        } 
     118 
     119                // ignore older frames 
     120                if (mLastReadFrameNum >= mBufferFrameNum[mReadIndex] && mLastReadFrameNum <= 0xFFFFFFFF - mBufferSize) { 
     121            return NULL; 
     122        } 
     123        mLastReadFrameNum = mBufferFrameNum[mReadIndex]; 
    115124 
    116125        uint8_t *retval = (uint8_t *)(mBuffer[mReadIndex]); 
     
    236245 
    237246// fprintf(stderr, "*push* mBuffer[%i] = 0x%lx\n", mWriteIndex, mBuffer[mWriteIndex]); 
     247                        mBufferFrameNum[mWriteIndex] = ++mLastWriteFrameNum; 
    238248            mWriteIndex = nextElementIndex; 
    239  
    240249        } 
    241250 
     
    253262    static const int32_t mBufferSize = 4; 
    254263    volatile uint8_t *mBuffer[mBufferSize]; 
     264    volatile int32_t mLastReadFrameNum; 
     265    volatile int32_t mLastWriteFrameNum; 
     266    volatile uint32_t mBufferFrameNum[mBufferSize]; 
    255267#ifdef HAVE_SWSCALE 
    256268    SwsContext *sws_context; 
     
    324336    } 
    325337 
    326     CComPtr<IDeckLinkIterator> deckLinkIterator = NULL; 
    327     if (CoCreateInstance(CLSID_CDeckLinkIterator, NULL, CLSCTX_INPROC_SERVER, IID_IDeckLinkIterator, (void**)&deckLinkIterator) != S_OK || deckLinkIterator == NULL) { 
     338    IDeckLinkIterator* deckLinkIterator; 
     339    result = CoCreateInstance(CLSID_CDeckLinkIterator, NULL, CLSCTX_INPROC_SERVER, IID_IDeckLinkIterator, (void**)&deckLinkIterator); 
     340    if (FAILED(result)) { 
    328341        debug_msg("DeckLinkScanner: DeckLink iterator instance could not be created\n"); 
    329342        CoUninitialize(); 
     
    345358#if defined(_WIN32) || defined(_WIN64)  
    346359        char deviceNameString[64] = {}; 
    347         CComBSTR cardNameBSTR; 
     360        BSTR cardNameBSTR; 
    348361 
    349362        result = deckLink->GetModelName(&cardNameBSTR); 
    350363        if (result == S_OK) { 
    351             CW2A tmpstr1(cardNameBSTR); 
     364            _bstr_t tmpstr1(cardNameBSTR); 
    352365            strncpy_s(deviceNameString, sizeof(deviceNameString), tmpstr1, _TRUNCATE); 
    353366        } 
     
    463476#if defined(_WIN32) || defined(_WIN64)  
    464477        char displayModeString[64] = {}; 
    465         CComBSTR displayModeNameBSTR; 
     478        BSTR displayModeNameBSTR; 
    466479 
    467480        result = displayMode->GetName(&displayModeNameBSTR); 
    468481        if (result == S_OK) { 
    469             CW2A tmpstr1(displayModeNameBSTR); 
     482            _bstr_t tmpstr1(displayModeNameBSTR); 
    470483            strncpy_s(displayModeString, sizeof(displayModeString), tmpstr1, _TRUNCATE); 
    471484        } 
     
    643656#if defined(_WIN32) || defined(_WIN64)  
    644657                char displayModeString[64] = {}; 
    645                 CComBSTR displayModeNameBSTR; 
     658                BSTR displayModeNameBSTR; 
    646659 
    647660                result = displayMode->GetName(&displayModeNameBSTR); 
    648661                if (result == S_OK) { 
    649                     CW2A tmpstr1(displayModeNameBSTR); 
     662                    _bstr_t tmpstr1(displayModeNameBSTR); 
    650663                    strncpy_s(displayModeString, sizeof(displayModeString), tmpstr1, _TRUNCATE); 
    651664                }