mirror of
https://github.com/drasko/open-ameba.git
synced 2024-11-30 02:00:30 +00:00
100 lines
2.4 KiB
C
100 lines
2.4 KiB
C
|
#ifndef _SRC2RTSP_H_
|
||
|
#define _SRC2RTSP_H_
|
||
|
|
||
|
/* Add by Ian -- This file contains parts used for rtsp to access lower layer stream src information*/
|
||
|
|
||
|
#include "dlist.h"
|
||
|
#include "basic_types.h"
|
||
|
#include "osdep_service.h"
|
||
|
//#include "osdep_api.h"
|
||
|
#include "rtsp/rtp_api.h"
|
||
|
#include "avcodec.h"
|
||
|
|
||
|
#define SRC_FROM_UVC
|
||
|
//#define SRC_FROM_UAC
|
||
|
//#define SRC_FROM_SPI
|
||
|
#define SRC_FROM_I2S
|
||
|
#define SRC_FROM_STA
|
||
|
|
||
|
#define SRC_TYPE_NUL 0
|
||
|
#define SRC_TYPE_UVC 1
|
||
|
#define SRC_TYPE_SPI 2
|
||
|
#define SRC_TYPE_UAC 3
|
||
|
#define SRC_TYPE_I2S 4
|
||
|
#define SRC_TYPE_STA 7
|
||
|
|
||
|
struct FormatInfo
|
||
|
{
|
||
|
struct codec_info codec;
|
||
|
u8 framerate;
|
||
|
u32 bitrate;
|
||
|
u32 height;
|
||
|
u32 width;
|
||
|
};
|
||
|
|
||
|
struct stream_flow
|
||
|
{
|
||
|
int id;
|
||
|
void *prot_hook; //transport protocol hook
|
||
|
void *src;
|
||
|
int src_type;
|
||
|
struct FormatInfo currentFormatInfo;
|
||
|
int (*src_handler) (void *src, struct rtp_object *payload);
|
||
|
struct list_head input_queue;
|
||
|
_mutex input_lock;
|
||
|
struct list_head output_queue;
|
||
|
_mutex output_lock;
|
||
|
u8 is_src2rtsp_init;
|
||
|
u8 is_src2rtsp_start;
|
||
|
_sema start_src2rtsp_sema;
|
||
|
struct stream_flow *next;
|
||
|
};
|
||
|
|
||
|
|
||
|
#ifdef SRC_FROM_UVC
|
||
|
#include "v4l2_intf.h"
|
||
|
struct uvc_streaming;
|
||
|
struct uvcManager
|
||
|
{
|
||
|
struct uvc_streaming *stream;
|
||
|
streaming_state state;
|
||
|
struct FormatInfo currentFormatInfo;
|
||
|
};
|
||
|
#endif
|
||
|
|
||
|
#ifdef SRC_FROM_SPI
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#ifdef SRC_FROM_UAC
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#ifdef SRC_FROM_I2S
|
||
|
struct i2sManager{
|
||
|
struct FormatInfo currentFormatInfo;
|
||
|
};
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#ifdef SRC_FROM_STA
|
||
|
struct rtsp_static_source_manager
|
||
|
{
|
||
|
struct FormatInfo currentFormatInfo;
|
||
|
};
|
||
|
#endif
|
||
|
|
||
|
struct stream_flow* rtsp_stream_flow_create(void);
|
||
|
void rtsp_stream_flow_free(struct stream_flow *stream);
|
||
|
void rtsp_register_src_handler(struct stream_flow *stream, int (*src_handler) (void *stream_src, struct rtp_object *payload));
|
||
|
int rtsp_get_src_currentFormatInfo(struct stream_flow *stream);
|
||
|
int rtsp_set_src_FormatInfo(struct stream_flow *stream, int codec_id, u8 framerate, u32 height, u32 width, u32 bitrate);
|
||
|
extern int rtsp_set_src_extra(struct stream_flow, void *param);
|
||
|
int rtsp_stream_flow_set(struct stream_flow *stream, void *source, int src_type);
|
||
|
int rtsp_stream_flow_update(struct stream_flow *stream);
|
||
|
int rtsp_stream_flow_concat(struct stream_flow *stream, struct stream_flow *stream_next);
|
||
|
void rtp_object_in_src_queue(struct rtp_object *payload, struct stream_flow *stream);
|
||
|
struct rtp_object *rtp_object_out_src_queue(struct stream_flow *stream);
|
||
|
|
||
|
|
||
|
#endif
|