2 * Copyright (c) 2008 Luca Abeni
4 * This is free software; see GPL.txt
9 #include <libavformat/avformat.h>
10 #include <libavdevice/avdevice.h>
11 #include <libswscale/swscale.h>
18 static const char *sdp_file = "sdp.txt";
19 static const char *vdev = "/dev/video0";
20 static const char *dst = "127.0.0.1";
21 static int dport = 20000;
22 static int width = 352;
23 static int height = 288;
25 static const char *impform = "video4linux2";
27 static void sdp_print(AVFormatContext *s, const char *fname)
32 f = fopen(fname, "w");
33 avf_sdp_create(&s, 1, sdp, sizeof(sdp));
34 fprintf(f, "%s\n", sdp);
38 static int args_parse(int argc, char *argv[])
42 while ((v = getopt(argc, argv, "w:h:r:d:m:i:")) >= 0) {
48 height = atoi(optarg);
61 if(!strcmp(impform, "v4l"))
62 impform = "video4linux";
63 else if(!strcmp(impform, "v4l2"))
64 impform = "video4linux2";
67 fprintf(stderr, "%s: illegal option %c\n", argv[0], v);
75 int main(int argc, char *argv[])
77 AVFormatContext *s, *os;
80 avcodec_register_all();
82 avdevice_register_all();
84 args_parse(argc, argv);
86 s = open_input_stream(vdev, width, height, fps, impform);
88 fprintf(stderr, "Cannot open input file %s\n", vdev);
93 os = open_output_stream(dst, dport, CODEC_TYPE_VIDEO);
95 fprintf(stderr, "Cannot open output stream\n");
99 os->streams[0]->codec->width = s->streams[0]->codec->width;
100 os->streams[0]->codec->height = s->streams[0]->codec->height;
101 os->streams[0]->codec->time_base = s->streams[0]->codec->time_base;
102 codec_connect(s->streams[0]->codec, os->streams[0]->codec);
104 dump_format(os, 0, os->filename, 1);
105 sdp_print(os, sdp_file);
109 pkt = read_input_packet(s);
116 pkt->pts += s->streams[pkt->stream_index]->start_time;
117 //rt_job_start(pkt->pts);
118 f = pkt_decode(s, pkt);
120 opkt = pkt_encode(os, f);