- if (open()) {
- throw failed_constructor();
- }
-
- if (writable() && (_flags & Broadcast)) {
-
- _broadcast_info = new SF_BROADCAST_INFO;
- memset (_broadcast_info, 0, sizeof (*_broadcast_info));
-
- snprintf (_broadcast_info->description, sizeof (_broadcast_info->description), "BWF %s", _name.c_str());
-
- struct utsname utsinfo;
-
- if (uname (&utsinfo)) {
- error << string_compose(_("FileSource: cannot get host information for BWF header (%1)"), strerror(errno)) << endmsg;
- return;
- }
-
- snprintf (_broadcast_info->originator, sizeof (_broadcast_info->originator), "ardour:%s:%s:%s:%s:%s)",
- Glib::get_real_name().c_str(),
- utsinfo.nodename,
- utsinfo.sysname,
- utsinfo.release,
- utsinfo.version);
-
- _broadcast_info->version = 1;
- _broadcast_info->time_reference_low = 0;
- _broadcast_info->time_reference_high = 0;
-
- /* XXX do something about this field */
-
- snprintf (_broadcast_info->umid, sizeof (_broadcast_info->umid), "%s", "fnord");
-
- /* coding history is added by libsndfile */
-
- if (sf_command (sf, SFC_SET_BROADCAST_INFO, _broadcast_info, sizeof (_broadcast_info)) != SF_TRUE) {
- char errbuf[256];
- sf_error_str (0, errbuf, sizeof (errbuf) - 1);
- error << string_compose (_("cannot set broadcast info for audio file %1 (%2); dropping broadcast info for this file"), _path, errbuf) << endmsg;
- _flags = Flag (_flags & ~Broadcast);
- delete _broadcast_info;
- _broadcast_info = 0;
- }
-
- }