| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #pragma once
- #include "SpBase.h"
- #include <portaudio.h>
- #include "EventCode.h"
- #include "videoframework.h"
- #include "libaudioqueue.h"
- #include "libvideoqueue.h"
- #include <vector>
- #ifndef INT64_C
- #define INT64_C(c) (c##LL)
- #define UINT64_C(c) (c##UL)
- #endif
- #include <stdint.h>
- extern "C"
- {
- #include <libavutil\avutil.h>
- #include <libavcodec\avcodec.h>
- #include <libswscale\swscale.h>
- }
- #include "video_common/ffmpeg_api_cpp_adapter.h"
- // define struct and method for echo camera
- namespace CameraConfigManage {
- typedef struct capture_t capture_t;
- typedef struct {
- int video_dev; // -1 means invalid
- int video_rotate; // counter-clockwise degree, ignore currently
- CSimpleStringA strAudioIn; // input audio
- CSimpleStringA strVideo;
- volatile LONG *ref_capture_count;
- }capture_config_t;
- typedef struct
- {
- CSimpleStringA strFriendlyName;
- CSimpleStringA strDevPath;
- CSimpleStringA strMd5Val;
- }camera_names_t;
- #define CAPTURE_FRAME_TIME 20 // 20ms per frame
- #define CAPTURE_CLOCK 8000
- extern DeviceTypeEnum g_eDeviceType;
- typedef struct audio_capture_t {
- PaStream *stream;
- Clibaudioqueue *shm_queue;
- capture_t *parent;
- }audio_capture_t;
- typedef struct video_capture_t {
- videocap_t cap;
- Clibvideoqueue *preview_shm_queue;
- capture_t *parent;
- int camera_type; // CAMERA_TYPE_xxx
- int frame_id;
- struct SwsContext *preview_sws_ctx;
- }video_capture_t;
- struct capture_t
- {
- capture_config_t config;
- audio_capture_t *audio;
- video_capture_t *video;
- };
- int capture_create(const capture_config_t *config, capture_t **p_cap);
- ErrorCodeEnum capture_create(const capture_config_t *config,capture_t *cap);
- void capture_destroy(capture_t *cap);
- ErrorCodeEnum capture_start(capture_t *cap);
- void capture_stop(capture_t *cap);
- int capture_detect_camera_bug(capture_t *cap, int *n);
- int capture_get_last_frametime(capture_t *cap, DWORD *n);
- int capture_lib_init();
- void capture_lib_term();
- int capture_get_audio_device_id(bool in_direction, const char *dev_name);
- //int capture_get_video_device_id(const char *dev_name);
- int capture_get_video_device_id(const char *dev_name, camera_names_t &camera);
- // 检查摄像头插入事件通知的摄像头deviceinstpath是否与广角摄像头的匹配,若匹配返回true,否则返回false
- bool capture_check_video_device_match(const char *dev_name, const char*dev_inst_path);
- bool capture_adj_brightness(capture_t *cap,int nvalue,ErrorCodeEnum nCode);
- bool capture_set_autobrightness(capture_t *cap,ErrorCodeEnum nCode);
- int capture_get_brightness(capture_t *cap,ErrorCodeEnum nCode);
- int stop_camera(capture_t *cap);
- void capture_enum_cameras(std::vector<camera_names_t> &cams, CAutoArray<CSimpleStringA> &hspcams);
- void capture_md5(char *dev_path);
- bool capture_get_only_video_device_by_friendlyname(const CSimpleStringA friendlyname,
- CAutoArray<CSimpleStringA> &excludecams, const CAutoArray<CSimpleStringA> &hspcams, camera_names_t &camera);
- bool capture_get_only_video_device(CAutoArray<CSimpleStringA> &excludecams, const CAutoArray<CSimpleStringA> &hspcams, camera_names_t &camera);
- }
|