From 50c7fe139bf8d7ca8cc35350fab1037dd34d9c71 Mon Sep 17 00:00:00 2001 From: Saxon Date: Tue, 5 Nov 2019 12:36:27 +1030 Subject: [PATCH] revid/file.go: wrote AVDevice implementation for file containing audio or video media --- revid/file.go | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 revid/file.go diff --git a/revid/file.go b/revid/file.go new file mode 100644 index 00000000..61eae8d1 --- /dev/null +++ b/revid/file.go @@ -0,0 +1,54 @@ +/* +DESCRIPTION + file.go provides an implementation of the AVDevice interface for media files. + +AUTHORS + Saxon A. Nelson-Milton + +LICENSE + Copyright (C) 2019 the Australian Ocean Lab (AusOcean) + + It is free software: you can redistribute it and/or modify them + under the terms of the GNU General Public License as published by the + Free Software Foundation, either version 3 of the License, or (at your + option) any later version. + + It is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + in gpl.txt. If not, see http://www.gnu.org/licenses. +*/ + +package revid + +import ( + "fmt" + "io" + "os" +) + +type AVFile struct { + f io.ReadCloser + cfg Config +} + +func NewAVFile() *AVFile { return &AVFile{} } +func (m *AVFile) Stop() error { return m.f.Close() } +func (m *AVFile) Read(p []byte) (int, error) { return m.f.Read(p) } + +func (m *AVFile) Set(c Config) error { + m.cfg = c + return nil +} + +func (m *AVFile) Start() error { + var err error + m.f, err = os.Open(m.cfg.InputPath) + if err != nil { + return fmt.Errorf("could not open media file: %w", err) + } + return nil +}