⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frame.h

📁 spook是一个linux下开源的流媒体服务器
💻 H
字号:
/* * Copyright (C) 2004 Nathan Lutchansky <lutchann@litech.org> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#define FORMAT_EMPTY		0#define FORMAT_RAW_RGB24	1#define FORMAT_RAW_UYVY		2#define FORMAT_RAW_BGR24	3#define FORMAT_PCM		64#define FORMAT_MPEG4		100#define FORMAT_JPEG		101#define FORMAT_MPV		102#define FORMAT_H263		103#define FORMAT_MPA		200#define FORMAT_ALAW		201struct frame;typedef int (*frame_destructor)( struct frame *f, void *d );struct frame{	int ref_count;	int size;	pthread_mutex_t mutex; /* only used to lock the ref_count */	frame_destructor destructor;	void *destructor_data;	int format;	int width;	int height;	int length;	int key;	int step;	unsigned char *d;};void init_frame_heap( int size, int count );int get_max_frame_size(void);struct frame *new_frame(void);struct frame *clone_frame( struct frame *orig );void ref_frame( struct frame *f );void unref_frame( struct frame *f );struct frame_slot {	struct frame_slot *next;	struct frame_slot *prev;	int pending;	struct frame *f;};typedef void (*frame_deliver_func)( struct frame *f, void *d );struct frame_exchanger {	int master_fd;	int slave_fd;	pthread_mutex_t mutex;	pthread_cond_t slave_wait;	struct event *master_event;	frame_deliver_func f;	void *d;	struct frame_slot *slave_cur;	struct frame_slot *master_read;	struct frame_slot *master_write;};struct meter {	int started;	int downstream;	time_ref last_check;	int rate;	int ticks;	double slip;	double avg_slip;	int precomp;	int correction_rate;	int corrected;};struct frame_exchanger *new_exchanger( int slots,					frame_deliver_func func, void *d );/* master functions */int exchange_frame( struct frame_exchanger *ex, struct frame *frame );/* slave functions */struct frame *get_next_frame( struct frame_exchanger *ex, int wait );void deliver_frame( struct frame_exchanger *ex, struct frame *f );/* sample rate metering functions */void meter_init( struct meter *m, int fbase, int downstream );int meter_count( struct meter *m, int ticks, int *rate );int meter_get_adjustment( struct meter *m );void meter_report_correction( struct meter *m, int ticks );/* audio.c */struct audio_ring;struct audio_ring *new_audio_ring( int sample_size, int sample_rate,		int framelen, struct soft_queue *queue );void audio_ring_input( struct audio_ring *ring, unsigned char *d, int len );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -