Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/modules/videoio/src/cap_ffmpeg_api.hpp
16339 views
1
#ifndef __OPENCV_FFMPEG_H__
2
#define __OPENCV_FFMPEG_H__
3
4
#ifdef __cplusplus
5
extern "C"
6
{
7
#endif
8
9
#if defined _WIN32
10
# define OPENCV_FFMPEG_API __declspec(dllexport)
11
#elif defined __GNUC__ && __GNUC__ >= 4
12
# define OPENCV_FFMPEG_API __attribute__ ((visibility ("default")))
13
#else
14
# define OPENCV_FFMPEG_API
15
#endif
16
17
enum
18
{
19
CV_FFMPEG_CAP_PROP_POS_MSEC=0,
20
CV_FFMPEG_CAP_PROP_POS_FRAMES=1,
21
CV_FFMPEG_CAP_PROP_POS_AVI_RATIO=2,
22
CV_FFMPEG_CAP_PROP_FRAME_WIDTH=3,
23
CV_FFMPEG_CAP_PROP_FRAME_HEIGHT=4,
24
CV_FFMPEG_CAP_PROP_FPS=5,
25
CV_FFMPEG_CAP_PROP_FOURCC=6,
26
CV_FFMPEG_CAP_PROP_FRAME_COUNT=7,
27
CV_FFMPEG_CAP_PROP_SAR_NUM=40,
28
CV_FFMPEG_CAP_PROP_SAR_DEN=41
29
};
30
31
typedef struct CvCapture_FFMPEG CvCapture_FFMPEG;
32
typedef struct CvVideoWriter_FFMPEG CvVideoWriter_FFMPEG;
33
34
OPENCV_FFMPEG_API struct CvCapture_FFMPEG* cvCreateFileCapture_FFMPEG(const char* filename);
35
OPENCV_FFMPEG_API int cvSetCaptureProperty_FFMPEG(struct CvCapture_FFMPEG* cap,
36
int prop, double value);
37
OPENCV_FFMPEG_API double cvGetCaptureProperty_FFMPEG(struct CvCapture_FFMPEG* cap, int prop);
38
OPENCV_FFMPEG_API int cvGrabFrame_FFMPEG(struct CvCapture_FFMPEG* cap);
39
OPENCV_FFMPEG_API int cvRetrieveFrame_FFMPEG(struct CvCapture_FFMPEG* capture, unsigned char** data,
40
int* step, int* width, int* height, int* cn);
41
OPENCV_FFMPEG_API void cvReleaseCapture_FFMPEG(struct CvCapture_FFMPEG** cap);
42
43
OPENCV_FFMPEG_API struct CvVideoWriter_FFMPEG* cvCreateVideoWriter_FFMPEG(const char* filename,
44
int fourcc, double fps, int width, int height, int isColor );
45
OPENCV_FFMPEG_API int cvWriteFrame_FFMPEG(struct CvVideoWriter_FFMPEG* writer, const unsigned char* data,
46
int step, int width, int height, int cn, int origin);
47
OPENCV_FFMPEG_API void cvReleaseVideoWriter_FFMPEG(struct CvVideoWriter_FFMPEG** writer);
48
49
typedef CvCapture_FFMPEG* (*CvCreateFileCapture_Plugin)( const char* filename );
50
typedef CvCapture_FFMPEG* (*CvCreateCameraCapture_Plugin)( int index );
51
typedef int (*CvGrabFrame_Plugin)( CvCapture_FFMPEG* capture_handle );
52
typedef int (*CvRetrieveFrame_Plugin)( CvCapture_FFMPEG* capture_handle, unsigned char** data, int* step,
53
int* width, int* height, int* cn );
54
typedef int (*CvSetCaptureProperty_Plugin)( CvCapture_FFMPEG* capture_handle, int prop_id, double value );
55
typedef double (*CvGetCaptureProperty_Plugin)( CvCapture_FFMPEG* capture_handle, int prop_id );
56
typedef void (*CvReleaseCapture_Plugin)( CvCapture_FFMPEG** capture_handle );
57
typedef CvVideoWriter_FFMPEG* (*CvCreateVideoWriter_Plugin)( const char* filename, int fourcc,
58
double fps, int width, int height, int iscolor );
59
typedef int (*CvWriteFrame_Plugin)( CvVideoWriter_FFMPEG* writer_handle, const unsigned char* data, int step,
60
int width, int height, int cn, int origin);
61
typedef void (*CvReleaseVideoWriter_Plugin)( CvVideoWriter_FFMPEG** writer );
62
63
/*
64
* For CUDA encoder
65
*/
66
67
OPENCV_FFMPEG_API struct OutputMediaStream_FFMPEG* create_OutputMediaStream_FFMPEG(const char* fileName, int width, int height, double fps);
68
OPENCV_FFMPEG_API void release_OutputMediaStream_FFMPEG(struct OutputMediaStream_FFMPEG* stream);
69
OPENCV_FFMPEG_API void write_OutputMediaStream_FFMPEG(struct OutputMediaStream_FFMPEG* stream, unsigned char* data, int size, int keyFrame);
70
71
typedef struct OutputMediaStream_FFMPEG* (*Create_OutputMediaStream_FFMPEG_Plugin)(const char* fileName, int width, int height, double fps);
72
typedef void (*Release_OutputMediaStream_FFMPEG_Plugin)(struct OutputMediaStream_FFMPEG* stream);
73
typedef void (*Write_OutputMediaStream_FFMPEG_Plugin)(struct OutputMediaStream_FFMPEG* stream, unsigned char* data, int size, int keyFrame);
74
75
/*
76
* For CUDA decoder
77
*/
78
79
OPENCV_FFMPEG_API struct InputMediaStream_FFMPEG* create_InputMediaStream_FFMPEG(const char* fileName, int* codec, int* chroma_format, int* width, int* height);
80
OPENCV_FFMPEG_API void release_InputMediaStream_FFMPEG(struct InputMediaStream_FFMPEG* stream);
81
OPENCV_FFMPEG_API int read_InputMediaStream_FFMPEG(struct InputMediaStream_FFMPEG* stream, unsigned char** data, int* size, int* endOfFile);
82
83
typedef struct InputMediaStream_FFMPEG* (*Create_InputMediaStream_FFMPEG_Plugin)(const char* fileName, int* codec, int* chroma_format, int* width, int* height);
84
typedef void (*Release_InputMediaStream_FFMPEG_Plugin)(struct InputMediaStream_FFMPEG* stream);
85
typedef int (*Read_InputMediaStream_FFMPEG_Plugin)(struct InputMediaStream_FFMPEG* stream, unsigned char** data, int* size, int* endOfFile);
86
87
#ifdef __cplusplus
88
}
89
#endif
90
91
#endif
92
93