class Libltc < Formula desc "POSIX-C Library for handling Linear/Logitudinal Time Code (LTC)" homepage "https://x42.github.io/libltc/" url "https://github.com/x42/libltc/releases/download/v1.2.0/libltc-1.2.0.tar.gz" sha256 "a0be3026525fc066246154afab18860a9291a0853651fcafdd37428c1a171ff3" bottle do cellar :any sha256 "d2f7990b23a3505655a9dde22cdbad8606082205006d1943b856c1965ccb4d2e" => :sierra sha256 "31c52af18e9e85329630c55777b0ba4ec979c45c30e7cbcd0295e7b5a3836c69" => :el_capitan sha256 "4bb6de6a99e6cf4bb4e221dc61866af010663f49d209b2258f0f7668d1c8d9bd" => :yosemite sha256 "57d266dffda8397f531514f83f6e7f8be3225d60adab7e4d78662e2935bb40b8" => :mavericks end def install system "./configure", "--prefix=#{prefix}" system "make", "install" end test do (testpath/"test.c").write <<-EOS.undent // stripped-down copy of: // https://raw.githubusercontent.com/x42/libltc/87d45b3/tests/example_encode.c #include #include #include #include int main(int argc, char **argv) { FILE* file; double length = 2; double fps = 25; double sample_rate = 48000; char *filename = "#{testpath}/foobar"; int vframe_cnt; int vframe_last; int total = 0; ltcsnd_sample_t *buf; LTCEncoder *encoder; SMPTETimecode st; const char timezone[6] = "+0100"; strcpy(st.timezone, timezone); st.years = 8; st.months = 12; st.days = 31; st.hours = 23; st.mins = 59; st.secs = 59; st.frame = 0; file = fopen(filename, "wb"); if (!file) { fprintf(stderr, "Error: can not open file '%s' for writing.\\n", filename); return 1; } encoder = ltc_encoder_create(sample_rate, fps, fps==25?LTC_TV_625_50:LTC_TV_525_60, LTC_USE_DATE); ltc_encoder_set_timecode(encoder, &st); vframe_cnt = 0; vframe_last = length * fps; while (vframe_cnt++ < vframe_last) { int byte_cnt; for (byte_cnt = 0 ; byte_cnt < 10 ; byte_cnt++) { ltc_encoder_encode_byte(encoder, byte_cnt, 1.0); int len; buf = ltc_encoder_get_bufptr(encoder, &len, 1); if (len > 0) { fwrite(buf, sizeof(ltcsnd_sample_t), len, file); total+=len; } } ltc_encoder_inc_timecode(encoder); } fclose(file); ltc_encoder_free(encoder); printf("Done: wrote %d samples to '%s'\\n", total, filename); return 0; } EOS system ENV.cc, "test.c", "-L#{lib}", "-lltc", "-lm", "-o", "test" system "./test" assert (testpath/"foobar").file? end end