⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 完整的基于Conxant平台的USB电视棒的WIN驱动程序。
💻 CPP
📖 第 1 页 / 共 3 页
字号:
        reinterpret_cast <PFNKSINTERSECTHANDLEREX>
            (VbiPin::intersectRange)
    }
};
/////////////////////////////////////////////////////////////////////////////////////////
KSPIN_DESCRIPTOR_EX
CaptureFilterFSPinDescriptors[] = 
{

    // Analog Video Input pin
    {
        &VideoInputPinDispatch,                             // Dispatch                     
        NULL,                             // AutomationTable              
        {                                                                 
            0,                            // Interfaces count             
            NULL,                         // Interfaces                   
            1,                            // Mediums count       
            &VideoInputPinMedium,         // Mediums             
            VIDEO_INPUT_PIN_RANGE_COUNT,  // Range Count    
            VideoInputPinDataRanges,      // Ranges         
            KSPIN_DATAFLOW_IN,            // Dataflow                     
            KSPIN_COMMUNICATION_BOTH,     // Communication                
            &PINNAME_VIDEO_ANALOGVIDEOIN, // Category                   
            &PINNAME_VIDEO_ANALOGVIDEOIN, // Name                       
            0                             // Reserved                     
        },                                                              
        KSPIN_FLAG_USE_STANDARD_TRANSPORT,// Flag for channel change info!
        1,                                // Instances Possible           
        1,                                // Instances Necessary          
        NULL,                             // Allocator Framing            
        NULL                              // IntersectHandler    
    },
    // Analog Audio Input pin

    {
    NULL,                                 // Dispatch               
    NULL,                                 // AutomationTable        
    {                                                               
        0,                                // Interfaces count       
        NULL,                             // Interfaces             
        1,                                // Mediums count
        &AudioInputPinMedium,             // Mediums      
        AUDIO_INPUT_PIN_RANGE_COUNT,      // Range Count
        AudioInputPinDataRanges,          // Ranges     
        KSPIN_DATAFLOW_IN,                // Dataflow               
        KSPIN_COMMUNICATION_BOTH,         // Communication          
        &PINNAME_VIDEO_ANALOGAUDIOIN,     // Category               
        &PINNAME_VIDEO_ANALOGAUDIOIN,     // Name                   
        0                                 // Reserved               
    },                                                              
    0,                                    // Flags                  
    1,                                    // Instances Possible     
    0,                                    // Instances Necessary    
    NULL,                                 // Allocator Framing      
    NULL                                  // IntersectHandler       
    },

    // Capture Pin
    {
        &VideoPinDispatch,
        &PIN_AUTOMATION_TABLE,
        {
            NULL,                           // Interfaces (NULL, 0 == default)
            0,
            NULL,                           // Mediums (NULL, 0 == default)
            0,
            SIZEOF_ARRAY( CapturePinDataRanges ), // Range Count
            CapturePinDataRanges,           // Ranges
            KSPIN_DATAFLOW_OUT,             // Dataflow
            KSPIN_COMMUNICATION_BOTH,       // Communication
            &PINNAME_VIDEO_CAPTURE,         // Category
            &PINNAME_VIDEO_CAPTURE,         // Name
            0                               // Reserved
        },

        KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING,       // Pin Flags
        1,                                  // Instances Possible
        0,                                  // Instances Necessary
        &PIN_ALLOCATOR_FRAMING,        // Allocator Framing
        reinterpret_cast <PFNKSINTERSECTHANDLEREX>
            (VideoPin::intersectRange)
    },

    //
    // Audio Output Pin
    //
    {
        &g_audio_pin_dispatch,
        NULL,             
        {
            NULL,                           // Interfaces (NULL, 0 == default)
            0,
            NULL,                           // Mediums (NULL, 0 == default)
            0,
            SIZEOF_ARRAY(g_audio_pin_data_ranges), // Range Count
            g_audio_pin_data_ranges,        // Ranges
            KSPIN_DATAFLOW_OUT,             // Dataflow
            KSPIN_COMMUNICATION_BOTH,       // Communication (both source and sink)
            &PINNAME_CAPTURE,               // Category 
            (GUID*)&PINNAME_AUDIO_OUT,      // Name
            0                               // Reserved
        },

        KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING, //Pin Flags
        1,                                  // Instances Possible
        0,                                  // Instances Necessary
        &PIN_ALLOCATOR_FRAMING,             // Allocator Framing
        (PFNKSINTERSECTHANDLEREX)AudioPin::static_IntersectHandler
    },
};

//
// CaptureFilterDescription:
//
// The descriptor for the capture filter.  We don't specify any topology
// since there's only one pin on the filter.  Realistically, there would
// be some topological relationships here because there would be input
// pins from crossbars and the like.
//
KSFILTER_DESCRIPTOR
CaptureFilterDescriptor = 
{
    &captureFilterDispatch,                 // Dispatch Table
    &captureFilterAutomationTable,          // Automation Table
    KSFILTER_DESCRIPTOR_VERSION,            // Version
    0,                                      // Flags
    &KSNAME_Filter,                         // Reference GUID
    DEFINE_KSFILTER_PIN_DESCRIPTORS( CaptureFilterPinDescriptors ),
    DEFINE_KSFILTER_CATEGORIES( CaptureFilterCategories ),
    DEFINE_KSFILTER_NODE_DESCRIPTORS_NULL,    
    DEFINE_KSFILTER_DEFAULT_CONNECTIONS,
    NULL                                    // Component ID
};
////////////////////////////////////////////////////////////////////////////////
//FS do not need VANC AND HANC
////////////////////////////////////////////////////////////////////////////////
KSFILTER_DESCRIPTOR
CaptureFilterFSDescriptor = 
{
    &captureFilterDispatch,                 // Dispatch Table
    &captureFilterAutomationTable,          // Automation Table
    KSFILTER_DESCRIPTOR_VERSION,            // Version
    0,                                      // Flags
    &KSNAME_Filter,                         // Reference GUID
    DEFINE_KSFILTER_PIN_DESCRIPTORS( CaptureFilterFSPinDescriptors ),
    DEFINE_KSFILTER_CATEGORIES( CaptureFilterCategories ),
    DEFINE_KSFILTER_NODE_DESCRIPTORS_NULL,    
    DEFINE_KSFILTER_DEFAULT_CONNECTIONS,
    NULL                                    // Component ID
};

//////////////////////////////////////////////////////////////////////////////////////////
///jerry add for HANC Audio transfer type 
//////////////////////////////////////////////////////////////////////////////////////////
KSFILTER_DESCRIPTOR
CaptureFilterEnableHANCAudioOutDescriptor = 
{
    &captureFilterDispatch,                 // Dispatch Table
    &captureFilterAutomationTable,          // Automation Table
    KSFILTER_DESCRIPTOR_VERSION,            // Version
    0,                                      // Flags
    &KSNAME_Filter,                         // Reference GUID
    DEFINE_KSFILTER_PIN_DESCRIPTORS( CaptureFilterEnableHANCAudioOutPinDescriptors ),
    DEFINE_KSFILTER_CATEGORIES( CaptureFilterCategories ),
    DEFINE_KSFILTER_NODE_DESCRIPTORS_NULL,    
    DEFINE_KSFILTER_DEFAULT_CONNECTIONS,
    NULL                                    // Component ID
};



/////////////////////////////////////////////////////////////////////////////////////////
//***************************************************************************************
//Audio Filter Descriptor
//***************************************************************************************
/////////////////////////////////////////////////////////////////////////////////////////

static
const
GUID
g_audio_filter_categories[] = 
{
    STATICGUIDOF (KSCATEGORY_AUDIO),
    STATICGUIDOF (KSCATEGORY_CAPTURE),
};


KSPIN_DESCRIPTOR_EX
g_audio_filter_pin_descriptors[] = 
{
    {
    NULL,                                 // Dispatch               
    NULL,                                 // AutomationTable        
    {                                                               
        0,                                // Interfaces count       
        NULL,                             // Interfaces             
        0,                                // Mediums count
        NULL,                             // Mediums      
        0,                                // Range Count
        NULL,                             // Ranges     
        KSPIN_DATAFLOW_IN,                // Dataflow               
        KSPIN_COMMUNICATION_NONE,         // Communication          
        &PINNAME_VIDEO_ANALOGAUDIOIN,     // Category               
        &PINNAME_VIDEO_ANALOGAUDIOIN,     // Name                   
        0                                 // Reserved               
    },                                                              
    KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT,          // Flags                  
    1,                                    // Instances Possible     
    0,                                    // Instances Necessary    
    NULL,                                 // Allocator Framing      
    NULL                                  // IntersectHandler       
    },

    //
    // Audio Output Pin
    //
    {
        &g_audio_pin_dispatch,
        NULL,             
        {
            NULL,                           // Interfaces (NULL, 0 == default)
            0,
            NULL,                           // Mediums (NULL, 0 == default)
            0,
            SIZEOF_ARRAY(g_audio_pin_data_ranges), // Range Count
            g_audio_pin_data_ranges,        // Ranges
            KSPIN_DATAFLOW_OUT,             // Dataflow
            KSPIN_COMMUNICATION_BOTH,       // Communication (both source and sink)
            &PINNAME_CAPTURE,               // Category 
            (GUID*)&PINNAME_AUDIO_OUT,      // Name
            0                               // Reserved
        },
        
        KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING | // Pin Flags
            KSPIN_FLAG_FIXED_FORMAT,
        1,                                  // Instances Possible
        0,                                  // Instances Necessary
        &PIN_ALLOCATOR_FRAMING,             // Allocator Framing
        (PFNKSINTERSECTHANDLEREX)AudioPin::static_IntersectHandler
    }
};

/////////////////////////////////////////////////////////////////////////////////////////
const KSNODE_DESCRIPTOR g_audio_nodes[] =
{
    {
        NULL,                           // PKSAUTOMATION_TABLE AutomationTable;
        &KSNODETYPE_DEV_SPECIFIC,       // Type
        NULL                            // Name
    }
};

/////////////////////////////////////////////////////////////////////////////////////////
//
//NOTE: node 0 is the KSNODETYPE_DEV_SPECIFIC node we created above
//      KSFILTER_NODE is the capture filter.
//
// This structure connects the audio in pin to the audio out pin through the custom node.
const KSTOPOLOGY_CONNECTION g_audio_topology[] =
{
    //FromNode      //FromNode Pin              //ToNode        //ToNodePin
    //------------- ------------------------    --------------  ------------------------
    {KSFILTER_NODE, 0,/*audio in pin*/          0,              1 /* out pin*/          },
    {0,             0,/* in pin*/               KSFILTER_NODE,  1 /*Audio out pin*/     },
};

/////////////////////////////////////////////////////////////////////////////////////////

KSFILTER_DESCRIPTOR
g_audio_filter_descriptor = 
{
    NULL,                                   // Dispatch Table
    NULL,                                   // Automation Table
    KSFILTER_DESCRIPTOR_VERSION,            // Version
    0,                                      // Flags
    &AUDIO_FILTER_REFERENCE_GUID,           // Reference GUID
    DEFINE_KSFILTER_PIN_DESCRIPTORS(g_audio_filter_pin_descriptors),
    DEFINE_KSFILTER_CATEGORIES(g_audio_filter_categories),
    DEFINE_KSFILTER_NODE_DESCRIPTORS(g_audio_nodes),    
    DEFINE_KSFILTER_CONNECTIONS(g_audio_topology),
    NULL                                    // Component ID
};

/////////////////////////////////////////////////////////////////////////////////////////
//***************************************************************************************
// TV Audio Filter
//***************************************************************************************
/////////////////////////////////////////////////////////////////////////////////////////
static
const
KSPIN_DESCRIPTOR_EX
TvAudioFilterPinDescriptors[] = 
{
    // Input pin
    {
        NULL,                                   // Dispatch           
        NULL,                                   // AutomationTable    
        {                                                             
            0,                                  // Interfaces count   
            NULL,                               // Interfaces         
            0,                                  // Mediums count      
            NULL,                               // Mediums            
            0,                                  // Range Count        
            NULL,                               // Ranges             
            KSPIN_DATAFLOW_IN,                  // Dataflow           
            KSPIN_COMMUNICATION_BOTH,           // Communication      
            NULL,                               // Category           
            NULL,                               // Name               
            0                                   // Reserved           
        },                                                            
        KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT        |             
        KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING   |             
        KSPIN_FLAG_FIXED_FORMAT,                // Flags              
        1,                                      // Instances Possible 
        1,                                      // Instances Necessary
        NULL,                                   // Allocator Framing  
        NULL                                    // IntersectHandler   
    },
    // Output pin
    {
        NULL,                                   // Dispatch            
        NULL,                                   // AutomationTable     
        {                                                              
            0,                                  // Interfaces count    
            NULL,                               // Interfaces          
            0,                                  // Mediums count       
            NULL,                               // Mediums             
            0,                                  // Range Count         
            NULL,                               // Ranges              
            KSPIN_DATAFLOW_OUT,                 // Dataflow            
            KSPIN_COMMUNICATION_BOTH,           // Communication       
            NULL,                               // Category            
            NULL,                               // Name                
            0                                   // Reserved            
        },                                                             
        KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT        |              
        KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING   |              
        KSPIN_FLAG_FIXED_FORMAT,                // Flags               
        1,                                      // Instances Possible  
        1,                                      // Instances Necessary 
        NULL,                                   // Allocator Framing   
        NULL                                    // IntersectHandler    
    }
};


extern
const
KSFILTER_DESCRIPTOR
TvAudioFilterDescriptor = 
{
    NULL,                                   // Dispatch Table
    &TvAudioFilterAutomationTable,          // Automation Table
    KSFILTER_DESCRIPTOR_VERSION,            // Version
    0,                                      // Flags

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -