static int64_t input_ts_offset = 0;
static int file_overwrite = 0;
static int o_direct = 0;
+static const char *contract_label = "recorder";
static int metadata_count;
static AVMetadataTag *metadata;
static int do_benchmark = 0;
#ifdef CONFIG_FFMPEG_WITH_FRSH
frsh_vres_id_t disk_vres;
+frsh_contract_t cpu_contract;
frsh_contract_t disk_contract;
#endif
f, 1/ifi, 1/ifi_avg, 1/sqrt(ifi_var));
#ifdef CONFIG_FFMPEG_WITH_FRSH
- if (renegotiate == f)
+ if (renegotiate == f) {
frsh_contract_renegotiate_sync(&disk_contract, disk_vres);
+ frsh_contract_renegotiate_sync(&disk_contract, disk_vres);
+ }
#endif
out:
start = end;
return codec->id;
}
+static void opt_contract_label(const char *label)
+{
+ contract_label = label;
+}
+
static void opt_input_file(const char *filename)
{
AVFormatContext *ic;
{ "f", HAS_ARG, {(void*)opt_format}, "force format", "fmt" },
{ "i", HAS_ARG, {(void*)opt_input_file}, "input file name", "filename" },
{ "y", OPT_BOOL, {(void*)&file_overwrite}, "overwrite output files" },
+ { "contract_label", HAS_ARG, {(void*)opt_contract_label}, "contract label", "label" },
{ "direct", OPT_BOOL, {(void*)&o_direct}, "write to output file using direct I/O (O_DIRECT)" },
{ "map", HAS_ARG | OPT_EXPERT, {(void*)opt_map}, "set input stream mapping", "file:stream[:syncfile:syncstream]" },
{ "map_meta_data", HAS_ARG | OPT_EXPERT, {(void*)opt_map_meta_data}, "set meta data information of outfile from infile", "outfile:infile" },
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;
frsh_rel_time_t disk_budget, disk_period;
- int ret, terror;
+ int ret;
- PXW(frsh_init());
-
cpu_budget = fosa_msec_to_rel_time(5);
- cpu_period = fosa_msec_to_rel_time(1000/50);
+ cpu_period = fosa_msec_to_rel_time(1000/30);
#if 1
#define DISK_THROUGHPUT 20277LLU /* units??? probably MB/s */
FRSH_CT_REGULAR);
if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_basic_params");
ret = frsh_contract_set_resource_and_label(&cpu_contract,
- FRSH_RT_PROCESSOR, FRSH_CPU_ID_DEFAULT, "recorder");
+ FRSH_RT_PROCESSOR, FRSH_CPU_ID_DEFAULT, contract_label);
if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_resource_and_label");
ret = frsh_contract_negotiate(&cpu_contract, &cpu_vres);
FRSH_CT_REGULAR);
if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_basic_params");
ret = frsh_contract_set_resource_and_label(&disk_contract,
- FRSH_RT_DISK, 0, output_files[0]->filename);
+ FRSH_RT_DISK, 0, strstr(output_files[0]->filename, "://") == NULL ?
+ output_files[0]->filename : input_files[0]->filename);
if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_resource_and_label");
ret = frsh_contract_negotiate(&disk_contract, &disk_vres);
show_banner();
+#if CONFIG_FFMPEG_WITH_FRSH
+ {
+ int terror;
+ PXW(frsh_init());
+ printf("FRSH initialized\n");
+ }
+#endif
+
/* parse options */
parse_options(argc, argv, options, opt_output_file);