#include <stdlib.h>
#include <stdbool.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <fcntl.h>
#include <unistd.h>
#include <termios.h>
#include <pthread.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <sys/queue.h>
#include <sys/time.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <stdio.h>
#include <sys/resource.h>
#include <arpa/inet.h>
#include <sys/stat.h>
#include <assert.h>
#include <net/if_arp.h>
#include <net/if.h>
#include <sys/signal.h>
#include <sys/wait.h>
#include <errno.h>
#include <linux/videodev.h>
#include <signal.h>
#include <linux/fb.h>
#include <ratecontrol.h>
#include "fmpeg4_avcodec.h"
//#include "speex.h"
#include <sys/msg.h>
#include <pthread.h>
#include <netinet/in.h>
#include <linux/watchdog.h>
#include <sys/ipc.h>
#include <rtp.h>
//#include "include.h"
/* 能够接收的最长数据 */
#define MAXBUFLEN 100000
/* 要连接到的端口号 */
#define MYPORT 20112
#define SOFT_VERSION "110610"
#define VIDEO_ON_F 0x01
#define VIDEO_OFF_F 0x00
#define AUDIO_ON_F 0x02
#define AUDIO_OFF_F 0x00
#define FB_ON_F 0x04
#define FB_OFF_F 0x00
#define TEST_RTP
#define RTP_SEND_MAX_BYTES_PER_FRAME 1024
#define APP_HEAD 0x5A5A
#define APP_TYPE 20001
#define NET_UPDATA_TYPE 30011
#define NET_UPDATA_RETURN_TYPE 30012
#define MULTI_IP_ADDR "192.168.0.255"
#define MSG_TMP_FILE "/tmp/msg-file.tmp"
//#define PTHREAD_PROSS
//int sys_call(int argc, char ** argv);
pthread_mutex_t thread_flag_net;
unsigned char bm_addr[3];
unsigned char end_addr[3];
unsigned char wq_addr[3];
unsigned char room_addr[4];
/* 本机的地址信息 */
struct sockaddr_in s_my_addr;
/* 连接这的地址信息 */
struct sockaddr_in s_their_addr;
int s_numbytes;
int c_numbytes;
int s_sockfd;
int len_file;
socklen_t s_addr_len;
unsigned int systimes;
unsigned int reset_times;
unsigned int serial_send_times;
unsigned int idletimes;
unsigned char curr_flag;
//unsigned char s_buf[MAXBUFLEN];
struct ip_buf{
char flag[4];
char ip[4];
char mac[6];
char netmask[4];
char netgate[4];
char version[10];
};
struct ip_buf ip_net;
int from_pc;
enum{
IS_PC,
IS_NOT_PC,
};
#define MSGBUFLEN 2
struct message {
long msg_type;
char msg_buf[MSGBUFLEN];
};
struct message rcvmsg;
int rcvmsgid;
struct message sndmsg;
int sndmsgid;
int curr_state;
enum{
IDLE_STATE,
TALK_STATE,
};
int c_sockfd,m;
/* 连接者的地址信息 */
struct sockaddr_in my_addr;
struct sockaddr_in c_their_addr;
struct sockaddr_in av_c_their_addr;
struct sockaddr_in re_c_their_addr;
struct sockaddr_in al_c_their_addr;
//struct hostent *c_he;
//struct ifreq ifr;
socklen_t c_addr_len;
int filefd;
//unsigned char c_buf[MAXBUFLEN];
int c_numbytes;
#if 0
#define CMDSET_TARG_LUN(cmd,targ,lun) do { \ \
cmd[0] = (cmd[0] & ~0xe0) | (targ)<<5; \
cmd[1] = (cmd[1] & ~0xe0) | (lun)<<5; \
} while(0)
#endif
#if 1
#define ENC_FUN 1
#define DEC_FUN 1
#define REC_DISPLAY 1
#else
#endif
pthread_t t3,t4;
pthread_cond_t thread_flag_cv;
pthread_mutex_t thread_flag_mutex;
int audio_rec_fd=-1;
int gpio_fd;
#define TEST_OUT_PIN 15
#define RESET_PIN 14
#define LED1_PIN 2
#define LED2_PIN 5
#define GPIO_TEST 1
#define GPIO_SET_DATA_OUTPUT 3
#define GPIO_READ_DATA_INPUT 4
#define GPIO_SET_DATA_DIRECT 5
#define GPIO_SET_INT 6
#define GPIO_SET_INT_FUNC 7
#define GPIO_CLEAR_INT 8
typedef struct {
//u_int group;
u_int ctrl_pin;
u_int data_out;
u_int data_in;
u_int int_clear;
u_int data_direct;
u_int int_enable;
u_int int_trigger;
u_int int_both;
u_int int_riseneg;
}gpio_params;
gpio_params gpio;
void set_pin_out()
{
gpio.ctrl_pin = 1<<LED1_PIN|1<<LED2_PIN|1<<TEST_OUT_PIN|0<<RESET_PIN; //0-input;1-output
gpio.data_direct= 1<<LED1_PIN|1<<LED2_PIN|1<<TEST_OUT_PIN|0<<RESET_PIN;
if((ioctl(gpio_fd, GPIO_SET_DATA_DIRECT, &gpio) < 0) ) {
printf("GPIO ioctl GPIO_SET_DATA_DIRECT fail!\n");
return;
}
printf("gpio set output\n");
}
void gpio_close()
{
if (gpio_fd<0)return;
close(gpio_fd);
}
int gpio_init()
{
gpio_fd = open("/dev/gpio",O_RDWR);
if(gpio_fd<0){
printf("Error open /dev/gpio\n");
return -1;
}
set_pin_out();
return 0;
}
void clear_pin(unsigned char pin_n)
{
if(gpio_fd<0)return;
gpio.ctrl_pin = 1<<pin_n;
gpio.data_out = 0<<pin_n;
if((ioctl(gpio_fd, GPIO_SET_DATA_OUTPUT, &gpio) < 0) ) {
printf("clear_pin GPIO_SET_DATA_OUTPUT fail!\n");
return;
}
printf("gpio %d clear 0\n",pin_n);
}
void set_ctrl_pin(unsigned char t)
{
if(gpio_fd<0)return;
gpio.ctrl_pin = 1<<TEST_OUT_PIN;
gpio.data_out = 1<<TEST_OUT_PIN;
if((ioctl(gpio_fd, GPIO_SET_DATA_OUTPUT, &gpio) < 0)){
printf("set_ctrl_pin GPIO_SET_DATA_OUTPUT fail!\n");
return;
}
printf("gpio ctrl set 1\n");
serial_send_times = t+1;//t*10ms
}
void set_pin(unsigned char pin_n)
{
if(gpio_fd<0)return;
gpio.ctrl_pin = 1<<pin_n;
gpio.data_out = 1<<pin_n;
if((ioctl(gpio_fd, GPIO_SET_DATA_OUTPUT, &gpio) < 0)){
printf("set_pin GPIO_SET_DATA_OUTPUT fail!\n");
return;
}
printf("gpio %d set 1\n",pin_n);
}
int read_reset_pin()
{
if(gpio_fd<0)return;
gpio.ctrl_pin = 1<<RESET_PIN;
gpio.data_out = 1<<RESET_PIN;
gpio.data_in=0;
if((ioctl(gpio_fd, GPIO_READ_DATA_INPUT, &gpio) < 0)){
printf("set_pin GPIO_SET_DATA_OUTPUT fail!\n");
return 1;
}
//printf("gpio %x\n",gpio.data_in);
if(gpio.data_in&(1<<RESET_PIN))
return 1;
else
return 0;
}
#define LED1_ON clear_pin(LED1_PIN)
#define LED2_ON clear_pin(LED2_PIN)
#define LED1_OFF set_pin(LED1_PIN)
#define LED2_OFF set_pin(LED2_PIN)
#include "ratecontrol.h"
#include "fmpeg4_avcodec.h"
#define FMPEG4_DECODER_DEV "/dev/fdec"
#define FMPEG4_ENCODER_DEV "/dev/fenc"
#define VIDEO_WIDTH 720
#define VIDEO_HIGH 576
int lcd_y_size = (((VIDEO_WIDTH*VIDEO_HIGH)+0xffff)&0xffff0000);
#define MP4_VER 0x00020002
void set_thread_flag (int flag_value) ;
typedef struct
{
int app_flag;
int total_len;
int type;
int reserve;
unsigned char buf[1024*1024];
}NET_PROTOLCOL;
typedef struct
{
int len;
unsigned char buf[1024*1024];
}Video_Rcv;
Video_Rcv v_rcv;
#define NET_PROTOLCOL_HEAD 16
NET_PROTOLCOL mpeg4;
NET_PROTOLCOL snd_data;
//NET_PROTOLCOL peg4;
NET_PROTOLCOL net_rec;
#if DEC_FUN==1
#define FLCD_MODE_RGB 0
#define FLCD_MODE_YCBCR 1
#define FLCD_GET_DATA_SEP 0x46db
#define FLCD_GET_DATA 0x46dc
#define FLCD_SET_FB_NUM 0x46dd
#define FLCD_SWITCH_MODE 0x46de
#define FLCD_SET_SPECIAL_FB 0x46df
#define FLCD_MODE_RGB 0
//osd
#define FOSD_SETPOS 0x46e1
#define FOSD_SETDIM 0x46e2
#define FOSD_SETSCAL 0x46e3
#define FLCD_SET_TRANSPARENT 0x46e4
#define FLCD_SET_STRING 0x46e5
#define FOSD_ON 0x46e6
#define FOSD_OFF 0x46e7
#define FOSD_QUERY_CHARMAP 0x46e8
#define FOSD_RMCHAR 0x46e9
#define FOSD_SET_CHAR 0x46ea
struct flcd_data
{
unsigned int buf_len;
unsigned int uv_offset;
unsigned int frame_no;
unsigned int mp4_map_dma[10];
};
unsigned char audio_flag,video_flag;
pthread_mutex_t job_queue_mutex = PTHREAD_MUTEX_INITIALIZER;
int fb;
void *fb_buf;
unsigned char *fb_mem;
struct flcd_data f_data;
//$1失败,0成功
int find_ipaddr(unsigned char *addr)
{
int ipfd;
int len;
int i;
int tmp;
unsigned char ip_addr[8];
unsigned char bufss[10];
if((ipfd = open("/tmp/ipcfg", O_RDONLY,666 ))<0){
printf("open error!\n");
return 1;//没有配置地址
}
lseek(ipfd,1,SEEK_SET);//读取长度
len =0;
read(ipfd,(unsigned char *)&len,1);
printf("len = %d\n",len);
lseek(ipfd,6,SEEK_CUR);//有效数据地址
#if RE
没有合适的资源?快使用搜索试试~ 我知道了~
mpeg4.rar_RTP socket_gm8120_mpeg rtp linux_mpeg4 rtp_rtptypes_un
共110个文件
h:64个
c:10个
a:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 181 浏览量
2022-09-14
19:01:41
上传
评论
收藏 750KB RAR 举报
温馨提示
gm8120 mpeg4 linux rtp协议 socket 学习Linux应用编程的好程序,里面涉及到很多应用程序的编写,有点乱,makefile为自动编写,总之自己要学习体会
资源推荐
资源详情
资源评论
收起资源包目录
mpeg4.rar_RTP socket_gm8120_mpeg rtp linux_mpeg4 rtp_rtptypes_un (110个子文件)
output.0 133KB
traces.0 33KB
output.1 133KB
traces.1 22KB
libspeex.a 550KB
libjrtp.a 486KB
libiniparser.a 12KB
libjthread.a 6KB
Makefile.am 293B
Makefile.am 37B
AUTHORS 0B
Makefile.am.bak 287B
switch.c 56KB
main.c 12KB
udp.c 10KB
bc.sh.x.c 9KB
ash.c 9KB
daemon.c 8KB
ratecontrol.c 4KB
rec.c 4KB
arp.c 3KB
test.c 3KB
ChangeLog 0B
configure 133KB
rtp.cpp 4KB
fmpeg4_avcodec.h 28KB
rtpsession.h 26KB
rtpsourcedata.h 20KB
rtpsources.h 17KB
avformat.h 17KB
speex.h 14KB
rtcpcompoundpacketbuilder.h 12KB
rtcppacketbuilder.h 11KB
rtpudpv6transmitter.h 11KB
rtpsessionparams.h 11KB
rtptransmitter.h 11KB
rtcpsdespacket.h 11KB
rtpudpv4transmitter.h 11KB
rtppacketbuilder.h 10KB
iniparser.h 10KB
rtperrors.h 10KB
dictionary.h 9KB
rtpfaketransmitter.h 9KB
rtpkeyhashtable.h 9KB
rtphashtable.h 8KB
rtptimeutilities.h 8KB
rtcpsdesinfo.h 8KB
rtcpsrpacket.h 8KB
rtppacket.h 7KB
rtpmemorymanager.h 7KB
rtcpscheduler.h 7KB
rtcprrpacket.h 6KB
rtpinternalsourcedata.h 5KB
rtprawpacket.h 4KB
rtpipv6address.h 4KB
rtcpcompoundpacket.h 4KB
rtpipv4address.h 4KB
rtcpbyepacket.h 4KB
rtcpapppacket.h 4KB
rtpipv4destination.h 3KB
rtpipv6destination.h 3KB
rtpaddress.h 3KB
rtpsessionsources.h 3KB
rtpcollisionlist.h 3KB
rtpdefines.h 3KB
rtcppacket.h 3KB
rtpstructs.h 3KB
rtcpunknownpacket.h 3KB
rtplibraryversion.h 2KB
rtpmemoryobject.h 2KB
rtprandom.h 2KB
jthread.h 2KB
rtprandomrand48.h 2KB
jmutex.h 2KB
rtppollthread.h 2KB
rtpconfig_unix.h 2KB
rtprandomurandom.h 2KB
rtprandomrands.h 2KB
rtptypes_win.h 2KB
rtpdebug.h 2KB
rtpconfig_win.h 2KB
rtpconfig.h 2KB
rtptypes.h 2KB
jmutexautolock.h 2KB
ratecontrol.h 986B
fmpeg4_version.h 732B
include.h 220B
rtp.h 211B
rtptypes_unix.h 45B
Makefile.in 21KB
Makefile.in 13KB
configure.in 397B
libjrtp.la 877B
libjthread.la 826B
config.log 8KB
aclocal.m4 34KB
Makefile 21KB
Makefile 13KB
NEWS 0B
jthread.pc 252B
共 110 条
- 1
- 2
资源评论
JaniceLu
- 粉丝: 80
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于JavaScript和CSS的随寻订购网页设计源码 - web-order
- 基于MATLAB的声纹识别系统设计源码 - VoiceprintRecognition
- 基于Java的微服务插件集合设计源码 - wsy-plugins
- 基于Vue和微信小程序的监理日志系统设计源码 - supervisionLog
- 基于Java和LCN分布式事务框架的设计源码 - tx-lcn
- 基于Java和JavaScript的茶叶评级管理系统设计源码 - tea
- IMG_5680.JPG
- IMG_0437.jpg
- 基于Java的JAVA项目分析工具设计源码 - JAVAProjectAnalysis
- top888.json
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功