|  | @@ -0,0 +1,73 @@
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +extern "C"
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +#include "libavcodec/avcodec.h"
 | 
	
		
			
				|  |  | +#include "libavformat/avformat.h"
 | 
	
		
			
				|  |  | +#include "libswscale/swscale.h"
 | 
	
		
			
				|  |  | +#include "libavdevice/avdevice.h"
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//'1' Use Dshow
 | 
	
		
			
				|  |  | +//'0' Use VFW
 | 
	
		
			
				|  |  | +#define USE_DSHOW 0
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//Show Dshow Device
 | 
	
		
			
				|  |  | +void show_dshow_device()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    AVFormatContext *pFormatCtx = avformat_alloc_context();
 | 
	
		
			
				|  |  | +    AVDictionary* options = nullptr;
 | 
	
		
			
				|  |  | +    av_dict_set(&options,"list_devices","true",0);
 | 
	
		
			
				|  |  | +    AVInputFormat *iformat = av_find_input_format("dshow");
 | 
	
		
			
				|  |  | +    printf("========Device Info=============\n");
 | 
	
		
			
				|  |  | +    avformat_open_input(&pFormatCtx,"video=dummy",iformat,&options);
 | 
	
		
			
				|  |  | +    printf("================================\n");
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//Show Dshow Device Option
 | 
	
		
			
				|  |  | +void show_dshow_device_option()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    AVFormatContext *pFormatCtx = avformat_alloc_context();
 | 
	
		
			
				|  |  | +    AVDictionary* options = nullptr;
 | 
	
		
			
				|  |  | +    av_dict_set(&options,"list_options","true",0);
 | 
	
		
			
				|  |  | +    AVInputFormat *iformat = av_find_input_format("dshow");
 | 
	
		
			
				|  |  | +    printf("========Device Option Info======\n");
 | 
	
		
			
				|  |  | +    avformat_open_input(&pFormatCtx,"video=Integrated Camera",iformat,&options);
 | 
	
		
			
				|  |  | +    printf("================================\n");
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//Show VFW Device
 | 
	
		
			
				|  |  | +void show_vfw_device()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    AVFormatContext *pFormatCtx = avformat_alloc_context();
 | 
	
		
			
				|  |  | +    AVInputFormat *iformat = av_find_input_format("vfwcap");
 | 
	
		
			
				|  |  | +    printf("========VFW Device Info======\n");
 | 
	
		
			
				|  |  | +    avformat_open_input(&pFormatCtx,"list",iformat,nullptr);
 | 
	
		
			
				|  |  | +    printf("=============================\n");
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//Show AVFoundation Device
 | 
	
		
			
				|  |  | +void show_avfoundation_device()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    AVFormatContext *pFormatCtx = avformat_alloc_context();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    AVDictionary* options = nullptr;
 | 
	
		
			
				|  |  | +    av_dict_set(&options,"list_devices","true",0);
 | 
	
		
			
				|  |  | +    AVInputFormat *iformat = av_find_input_format("avfoundation");
 | 
	
		
			
				|  |  | +    printf("==AVFoundation Device Info===\n");
 | 
	
		
			
				|  |  | +    avformat_open_input(&pFormatCtx, "",iformat, &options);
 | 
	
		
			
				|  |  | +    printf("=============================\n");
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void getDeviceList()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    av_register_all();
 | 
	
		
			
				|  |  | +    avformat_network_init();
 | 
	
		
			
				|  |  | +    avdevice_register_all();
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	    //Show Dshow Device
 | 
	
		
			
				|  |  | +    show_dshow_device();
 | 
	
		
			
				|  |  | +    //Show Device Options
 | 
	
		
			
				|  |  | +    show_dshow_device_option();
 | 
	
		
			
				|  |  | +    //Show VFW Options
 | 
	
		
			
				|  |  | +    show_vfw_device();
 | 
	
		
			
				|  |  | +}
 |