2011-07-05 00:18:12 +08:00
|
|
|
#ifndef __OPENCV_FFMPEG_H__
|
|
|
|
#define __OPENCV_FFMPEG_H__
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C"
|
|
|
|
{
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined WIN32 || defined _WIN32
|
2013-07-26 20:13:37 +08:00
|
|
|
# define OPENCV_FFMPEG_API __declspec(dllexport)
|
|
|
|
#elif defined __GNUC__ && __GNUC__ >= 4
|
|
|
|
# define OPENCV_FFMPEG_API __attribute__ ((visibility ("default")))
|
2011-07-05 00:18:12 +08:00
|
|
|
#else
|
2013-07-26 20:13:37 +08:00
|
|
|
# define OPENCV_FFMPEG_API
|
2011-07-05 00:18:12 +08:00
|
|
|
#endif
|
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
CV_FFMPEG_CAP_PROP_POS_MSEC=0,
|
|
|
|
CV_FFMPEG_CAP_PROP_POS_FRAMES=1,
|
|
|
|
CV_FFMPEG_CAP_PROP_POS_AVI_RATIO=2,
|
|
|
|
CV_FFMPEG_CAP_PROP_FRAME_WIDTH=3,
|
|
|
|
CV_FFMPEG_CAP_PROP_FRAME_HEIGHT=4,
|
|
|
|
CV_FFMPEG_CAP_PROP_FPS=5,
|
|
|
|
CV_FFMPEG_CAP_PROP_FOURCC=6,
|
2015-10-21 16:32:38 +08:00
|
|
|
CV_FFMPEG_CAP_PROP_FRAME_COUNT=7,
|
2015-10-24 17:22:18 +08:00
|
|
|
CV_FFMPEG_CAP_PROP_SAR_NUM=40,
|
|
|
|
CV_FFMPEG_CAP_PROP_SAR_DEN=41
|
2011-07-05 00:18:12 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
OPENCV_FFMPEG_API struct CvCapture_FFMPEG* cvCreateFileCapture_FFMPEG(const char* filename);
|
2012-03-13 01:07:54 +08:00
|
|
|
OPENCV_FFMPEG_API struct CvCapture_FFMPEG_2* cvCreateFileCapture_FFMPEG_2(const char* filename);
|
2011-07-05 00:18:12 +08:00
|
|
|
OPENCV_FFMPEG_API int cvSetCaptureProperty_FFMPEG(struct CvCapture_FFMPEG* cap,
|
|
|
|
int prop, double value);
|
2012-03-13 01:07:54 +08:00
|
|
|
OPENCV_FFMPEG_API int cvSetCaptureProperty_FFMPEG_2(struct CvCapture_FFMPEG_2* cap,
|
|
|
|
int prop, double value);
|
2011-07-05 00:18:12 +08:00
|
|
|
OPENCV_FFMPEG_API double cvGetCaptureProperty_FFMPEG(struct CvCapture_FFMPEG* cap, int prop);
|
2012-03-13 01:07:54 +08:00
|
|
|
OPENCV_FFMPEG_API double cvGetCaptureProperty_FFMPEG_2(struct CvCapture_FFMPEG_2* cap, int prop);
|
2011-07-05 00:18:12 +08:00
|
|
|
OPENCV_FFMPEG_API int cvGrabFrame_FFMPEG(struct CvCapture_FFMPEG* cap);
|
2012-03-13 01:07:54 +08:00
|
|
|
OPENCV_FFMPEG_API int cvGrabFrame_FFMPEG_2(struct CvCapture_FFMPEG_2* cap);
|
|
|
|
OPENCV_FFMPEG_API int cvRetrieveFrame_FFMPEG(struct CvCapture_FFMPEG* capture, unsigned char** data,
|
|
|
|
int* step, int* width, int* height, int* cn);
|
|
|
|
OPENCV_FFMPEG_API int cvRetrieveFrame_FFMPEG_2(struct CvCapture_FFMPEG_2* capture, unsigned char** data,
|
2011-07-05 00:18:12 +08:00
|
|
|
int* step, int* width, int* height, int* cn);
|
|
|
|
OPENCV_FFMPEG_API void cvReleaseCapture_FFMPEG(struct CvCapture_FFMPEG** cap);
|
2012-03-13 01:07:54 +08:00
|
|
|
OPENCV_FFMPEG_API void cvReleaseCapture_FFMPEG_2(struct CvCapture_FFMPEG_2** cap);
|
2011-07-05 00:18:12 +08:00
|
|
|
OPENCV_FFMPEG_API struct CvVideoWriter_FFMPEG* cvCreateVideoWriter_FFMPEG(const char* filename,
|
|
|
|
int fourcc, double fps, int width, int height, int isColor );
|
2012-03-13 01:07:54 +08:00
|
|
|
OPENCV_FFMPEG_API struct CvVideoWriter_FFMPEG_2* cvCreateVideoWriter_FFMPEG_2(const char* filename,
|
|
|
|
int fourcc, double fps, int width, int height, int isColor );
|
2011-07-05 00:18:12 +08:00
|
|
|
|
|
|
|
OPENCV_FFMPEG_API int cvWriteFrame_FFMPEG(struct CvVideoWriter_FFMPEG* writer, const unsigned char* data,
|
|
|
|
int step, int width, int height, int cn, int origin);
|
|
|
|
|
|
|
|
OPENCV_FFMPEG_API void cvReleaseVideoWriter_FFMPEG(struct CvVideoWriter_FFMPEG** writer);
|
|
|
|
|
|
|
|
typedef void* (*CvCreateFileCapture_Plugin)( const char* filename );
|
|
|
|
typedef void* (*CvCreateCameraCapture_Plugin)( int index );
|
|
|
|
typedef int (*CvGrabFrame_Plugin)( void* capture_handle );
|
|
|
|
typedef int (*CvRetrieveFrame_Plugin)( void* capture_handle, unsigned char** data, int* step,
|
|
|
|
int* width, int* height, int* cn );
|
|
|
|
typedef int (*CvSetCaptureProperty_Plugin)( void* capture_handle, int prop_id, double value );
|
|
|
|
typedef double (*CvGetCaptureProperty_Plugin)( void* capture_handle, int prop_id );
|
|
|
|
typedef void (*CvReleaseCapture_Plugin)( void** capture_handle );
|
|
|
|
typedef void* (*CvCreateVideoWriter_Plugin)( const char* filename, int fourcc,
|
|
|
|
double fps, int width, int height, int iscolor );
|
|
|
|
typedef int (*CvWriteFrame_Plugin)( void* writer_handle, const unsigned char* data, int step,
|
|
|
|
int width, int height, int cn, int origin);
|
|
|
|
typedef void (*CvReleaseVideoWriter_Plugin)( void** writer );
|
|
|
|
|
2012-04-17 15:12:16 +08:00
|
|
|
/*
|
|
|
|
* For CUDA encoder
|
|
|
|
*/
|
2012-10-17 15:12:04 +08:00
|
|
|
|
2012-04-17 15:12:16 +08:00
|
|
|
OPENCV_FFMPEG_API struct OutputMediaStream_FFMPEG* create_OutputMediaStream_FFMPEG(const char* fileName, int width, int height, double fps);
|
|
|
|
OPENCV_FFMPEG_API void release_OutputMediaStream_FFMPEG(struct OutputMediaStream_FFMPEG* stream);
|
2012-04-17 19:08:08 +08:00
|
|
|
OPENCV_FFMPEG_API void write_OutputMediaStream_FFMPEG(struct OutputMediaStream_FFMPEG* stream, unsigned char* data, int size, int keyFrame);
|
2012-04-17 15:12:16 +08:00
|
|
|
|
|
|
|
typedef struct OutputMediaStream_FFMPEG* (*Create_OutputMediaStream_FFMPEG_Plugin)(const char* fileName, int width, int height, double fps);
|
|
|
|
typedef void (*Release_OutputMediaStream_FFMPEG_Plugin)(struct OutputMediaStream_FFMPEG* stream);
|
2012-04-17 19:08:08 +08:00
|
|
|
typedef void (*Write_OutputMediaStream_FFMPEG_Plugin)(struct OutputMediaStream_FFMPEG* stream, unsigned char* data, int size, int keyFrame);
|
2012-04-17 15:12:16 +08:00
|
|
|
|
2012-04-18 19:18:25 +08:00
|
|
|
/*
|
|
|
|
* For CUDA decoder
|
|
|
|
*/
|
|
|
|
|
|
|
|
OPENCV_FFMPEG_API struct InputMediaStream_FFMPEG* create_InputMediaStream_FFMPEG(const char* fileName, int* codec, int* chroma_format, int* width, int* height);
|
|
|
|
OPENCV_FFMPEG_API void release_InputMediaStream_FFMPEG(struct InputMediaStream_FFMPEG* stream);
|
|
|
|
OPENCV_FFMPEG_API int read_InputMediaStream_FFMPEG(struct InputMediaStream_FFMPEG* stream, unsigned char** data, int* size, int* endOfFile);
|
|
|
|
|
|
|
|
typedef struct InputMediaStream_FFMPEG* (*Create_InputMediaStream_FFMPEG_Plugin)(const char* fileName, int* codec, int* chroma_format, int* width, int* height);
|
|
|
|
typedef void (*Release_InputMediaStream_FFMPEG_Plugin)(struct InputMediaStream_FFMPEG* stream);
|
|
|
|
typedef int (*Read_InputMediaStream_FFMPEG_Plugin)(struct InputMediaStream_FFMPEG* stream, unsigned char** data, int* size, int* endOfFile);
|
|
|
|
|
2011-07-05 00:18:12 +08:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|