#include <frsh.h>
/*temporrary solution to pass network parameters */
-extern long int avformat_frsh_budget, avformat_frsh_period;
+extern long int frsh_rtp_budget, frsh_rtp_period_ms, frsh_rtp_deadline_ms;
#endif /*CONFIG_STREAMER_WITH_FRSH*/
static const char *sdp_file = "sdp.txt";
static const char *vdev = "/dev/video0";
static const char *dst = "127.0.0.1";
static int dport = 20000;
-static int width = 640;
-static int height = 480;
-int fps = 25;
+static int width = 320;
+static int height = 240;
+static int bitrate = 1000000;
+int fps = 15;
static const char *impform = "video4linux2";
AVFormatContext *s, *os;
printf(" -r <path> video device [%s]\n", vdev);
printf(" -m <addr> destination IP address\n");
printf(" -i <string> input video device format [%s]\n", impform);
- #ifdef CONFIG_STREAMER_WITH_FRSH
- printf(" -b <number> network budget\n");
- printf(" -p <number> network period for given budget\n");
- #endif /*CONFIG_STREAMER_WITH_FRSH*/
+ printf(" -p <port> destination port [%d]\n", dport);
+ printf(" -b <bitrate> bitrate in b/s [%d]\n", bitrate);
+ printf(" -s <sdp_file> name of output sdp file [%s]\n", sdp_file);
#ifdef CONFIG_OC_ULUT
printf(" -l <number>|<domain>=<number>,...\n");
#endif /*CONFIG_OC_ULUT*/
{
int v;
- while ((v = getopt(argc, argv, "w:h:r:d:m:i:l:b:p:")) >= 0) {
+ while ((v = getopt(argc, argv, "w:h:r:d:m:i:l:b:p:s:")) >= 0) {
switch (v) {
+ case 's':
+ sdp_file = optarg;
+ break;
+ case 'p':
+ dport = atoi(optarg);
+ break;
case 'w':
width = atoi(optarg);
break;
case 'r':
fps = atoi(optarg);
break;
+ case 'b':
+ bitrate = atoi(optarg);
+ break;
case 'd':
vdev = optarg;
break;
else if(!strcmp(impform, "v4l2"))
impform = "video4linux2";
break;
- #ifdef CONFIG_STREAMER_WITH_FRSH
- case 'b':
- udp_budget = atol(optarg);
- break;
- case 'p':
- udp_period = atol(optarg);
- break;
- #endif /*CONFIG_STREAMER_WITH_FRSH*/
-
#ifdef CONFIG_OC_ULUT
case 'l':
ul_log_domain_arg2levels(optarg);
if (ret) PERROR_AND_EXIT(ret, "frsh_init1");
/* fill default network contract params */
- avformat_frsh_budget = 50000;
- avformat_frsh_period = 500;
+ frsh_rtp_budget = 100*bitrate/8/100;
+ frsh_rtp_period_ms = 1000;
+ frsh_rtp_deadline_ms = 1000/fps;
#endif /*CONFIG_FFMPEG_WITH_FRSH*/
avcodec_register_all();
return -1;
}
codec_open(s);
- os = open_output_stream(dst, dport, CODEC_TYPE_VIDEO);
+ os = open_output_stream(dst, dport, CODEC_TYPE_VIDEO, fps);
if (os == NULL) {
fprintf(stderr, "Cannot open output stream\n");
os->streams[0]->codec->width = s->streams[0]->codec->width;
os->streams[0]->codec->height = s->streams[0]->codec->height;
os->streams[0]->codec->time_base = s->streams[0]->codec->time_base;
- os->streams[0]->codec->bit_rate = 1000000;
+ os->streams[0]->codec->bit_rate = bitrate;
codec_connect(s->streams[0]->codec, os->streams[0]->codec);
out_codec_open(os);
dump_format(os, 0, os->filename, 1);
sdp_print(os, sdp_file);
-#if CONFIG_STREAMER_WITH_FRSH && CONFIG_AQUOSA
+#if CONFIG_FFMPEG_WITH_FRSH && CONFIG_AQUOSA
frsh_thread_attr_t frsh_attr;
frsh_thread_id_t thread;
frsh_vres_id_t cpu_vres;
frsh_contract_t cpu_contract;
frsh_rel_time_t cpu_budget, cpu_period;
- cpu_budget = fosa_msec_to_rel_time(50);
- cpu_period = fosa_msec_to_rel_time(100);
+ cpu_budget = fosa_msec_to_rel_time(10);
+ cpu_period = fosa_msec_to_rel_time(1000/fps);
/* Contract negotiation for CPU */
ret = frsh_contract_init(&cpu_contract);
if (ret) PERROR_AND_EXIT(ret, "CPU:frsh_contract_init");