You've already forked libopenshot
mirror of
https://github.com/OpenShot/libopenshot.git
synced 2026-03-02 08:53:52 -08:00
* Close down ZMQ context to stop the zmq threads (related to sentry bug: OPENSHOT-3X) * Add Support for Windows 7/8.1 (#881) Adding protection around getting current sample rate for win 7, if audio device not found. Also added mutex for Singleton method. Also, making whitespace consistent on AudioPlaybackThread.cpp * Big refactor of audio device opening - with multiple sample rates attempted, for better recovery from a missing or unsupported sample rate. Debug logs added for testing. * Additional failure logging for windows audio device init * Refactor of Audio Device Initialization (#882) * Huge refactor of audio device initialization: - Attempt requested audio device first, and then iterate through all known audio types and devices, and common sample rates. The idea is to ignore an invalid default or invalid requested device, and keep looking until we find a valid one - New public method to return active, open audio device - Added methods for AudioDeviceInfo struct, to make it callable from Python - Some code clean-up and whitespace fixes - New unit tests for AudioDeviceManagerSingleton * Ignore audio device unit tests on systems with "No Driver" returned in the audio error message * Ignore audio device unit tests if any error is found during initialization (i.e. build servers don't have audio cards) * Trying to update GitHub libomp errors during build checks * Remove zmq context shutdown call, due to the method missing on newer versions of zmq.hpp * Downgrading GitHub Ubuntu latest image to Ubuntu 20.04, for compatibility with Catchv2 * Initialize all audio device manager variables correctly, and ignore unit test on low or missing sample rate systems (i.e. GitHub build servers)
116 lines
2.7 KiB
C++
116 lines
2.7 KiB
C++
/**
|
|
* @file
|
|
* @brief Header file for QtPlayer class
|
|
* @author Duzy Chan <code@duzy.info>
|
|
* @author Jonathan Thomas <jonathan@openshot.org>
|
|
*
|
|
* @ref License
|
|
*/
|
|
|
|
// Copyright (c) 2008-2019 OpenShot Studios, LLC
|
|
//
|
|
// SPDX-License-Identifier: LGPL-3.0-or-later
|
|
|
|
#ifndef OPENSHOT_QT_PLAYER_H
|
|
#define OPENSHOT_QT_PLAYER_H
|
|
|
|
#include <iostream>
|
|
#include <vector>
|
|
|
|
#include "PlayerBase.h"
|
|
#include "Qt/PlayerPrivate.h"
|
|
#include "RendererBase.h"
|
|
|
|
namespace openshot
|
|
{
|
|
using AudioDeviceList = std::vector<std::pair<std::string, std::string>>;
|
|
|
|
/**
|
|
* @brief This class is used to playback a video from a reader.
|
|
*
|
|
*/
|
|
class QtPlayer : public openshot::PlayerBase
|
|
{
|
|
openshot::PlayerPrivate *p;
|
|
bool threads_started;
|
|
|
|
public:
|
|
/// Default constructor
|
|
explicit QtPlayer();
|
|
explicit QtPlayer(openshot::RendererBase *rb);
|
|
|
|
/// Default destructor
|
|
virtual ~QtPlayer();
|
|
|
|
/// Close audio device
|
|
void CloseAudioDevice();
|
|
|
|
/// Get Error (if any)
|
|
std::string GetError();
|
|
|
|
/// Return the default audio sample rate (from the system)
|
|
double GetDefaultSampleRate();
|
|
|
|
/// Get Audio Devices from JUCE
|
|
AudioDeviceList GetAudioDeviceNames();
|
|
|
|
/// Get current audio device or last attempted
|
|
AudioDeviceInfo GetCurrentAudioDevice();
|
|
|
|
/// Play the video
|
|
void Play();
|
|
|
|
/// Display a loading animation
|
|
void Loading();
|
|
|
|
/// Get the current mode
|
|
openshot::PlaybackMode Mode();
|
|
|
|
/// Pause the video
|
|
void Pause();
|
|
|
|
/// Get the current frame number being played
|
|
int64_t Position();
|
|
|
|
/// Seek to a specific frame in the player
|
|
void Seek(int64_t new_frame);
|
|
|
|
/// Set the source URL/path of this player (which will create an internal Reader)
|
|
void SetSource(const std::string &source);
|
|
|
|
/// Set the source JSON of an openshot::Timelime
|
|
void SetTimelineSource(const std::string &json);
|
|
|
|
/// Set the QWidget which will be used as the display (note: QLabel works well). This does not take a
|
|
/// normal pointer, but rather a LONG pointer id (and it re-casts the QWidget pointer inside libopenshot).
|
|
/// This is required due to SIP and SWIG incompatibility in the Python bindings.
|
|
void SetQWidget(int64_t qwidget_address);
|
|
|
|
/// Get the Renderer pointer address (for Python to cast back into a QObject)
|
|
int64_t GetRendererQObject();
|
|
|
|
/// Get the Playback speed
|
|
float Speed();
|
|
|
|
/// Set the Playback speed (1.0 = normal speed, <1.0 = slower, >1.0 faster)
|
|
void Speed(float new_speed);
|
|
|
|
/// Stop the video player and clear the cached frames
|
|
void Stop();
|
|
|
|
/// Set the current reader
|
|
void Reader(openshot::ReaderBase *new_reader);
|
|
|
|
/// Get the current reader, such as a FFmpegReader
|
|
openshot::ReaderBase* Reader();
|
|
|
|
/// Get the Volume
|
|
float Volume();
|
|
|
|
/// Set the Volume (1.0 = normal volume, <1.0 = quieter, >1.0 louder)
|
|
void Volume(float new_volume);
|
|
};
|
|
}
|
|
|
|
#endif
|