/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2013 - Raw Material Software Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE 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. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ CameraDevice::CameraDevice (const String& nm, int index, int minWidth, int minHeight, int maxWidth, int maxHeight) : name (nm), pimpl (new Pimpl (name, index, minWidth, minHeight, maxWidth, maxHeight)) { } CameraDevice::~CameraDevice() { stopRecording(); pimpl = nullptr; } Component* CameraDevice::createViewerComponent() { return new ViewerComponent (*this); } void CameraDevice::startRecordingToFile (const File& file, int quality) { stopRecording(); pimpl->startRecordingToFile (file, quality); } Time CameraDevice::getTimeOfFirstRecordedFrame() const { return pimpl->getTimeOfFirstRecordedFrame(); } void CameraDevice::stopRecording() { pimpl->stopRecording(); } void CameraDevice::addListener (Listener* listenerToAdd) { if (listenerToAdd != nullptr) pimpl->addListener (listenerToAdd); } void CameraDevice::removeListener (Listener* listenerToRemove) { if (listenerToRemove != nullptr) pimpl->removeListener (listenerToRemove); } //============================================================================== StringArray CameraDevice::getAvailableDevices() { JUCE_AUTORELEASEPOOL { return Pimpl::getAvailableDevices(); } } CameraDevice* CameraDevice::openDevice (int index, int minWidth, int minHeight, int maxWidth, int maxHeight) { ScopedPointer d (new CameraDevice (getAvailableDevices() [index], index, minWidth, minHeight, maxWidth, maxHeight)); if (d->pimpl->openedOk()) return d.release(); return nullptr; }