OpenShot Library | libopenshot 0.3.3
Loading...
Searching...
No Matches
AudioReaderSource.h
Go to the documentation of this file.
1
9// Copyright (c) 2008-2019 OpenShot Studios, LLC
10//
11// SPDX-License-Identifier: LGPL-3.0-or-later
12
13#ifndef OPENSHOT_AUDIOREADERSOURCE_H
14#define OPENSHOT_AUDIOREADERSOURCE_H
15
16#include "ReaderBase.h"
17#include "Qt/VideoCacheThread.h"
18
19#include <AppConfig.h>
20#include <juce_audio_basics/juce_audio_basics.h>
21
23namespace openshot
24{
25 class Frame;
31 class AudioReaderSource : public juce::PositionableAudioSource
32 {
33 private:
34 int stream_position;
35 int frame_position;
36 int speed;
37
38 ReaderBase *reader;
39 std::shared_ptr<Frame> frame;
40 int64_t sample_position;
41 openshot::VideoCacheThread *videoCache;
42
43 public:
44
48 AudioReaderSource(ReaderBase *audio_reader, int64_t starting_frame_number);
49
52
55 void getNextAudioBlock (const juce::AudioSourceChannelInfo& info);
56
58 void prepareToPlay(int, double);
59
61 void releaseResources();
62
65 void setNextReadPosition (juce::int64 newPosition) { stream_position = newPosition; };
66
68 juce::int64 getNextReadPosition() const { return stream_position; };
69
71 juce::int64 getTotalLength() const;
72
74 bool isLooping() const { return false; };
75
78 void setLooping (bool shouldLoop) { };
79
81 std::shared_ptr<Frame> getFrame() const { return frame; }
82
84 void setSpeed(int new_speed) { speed = new_speed; }
86 int getSpeed() const { return speed; }
87
89 void setVideoCache(openshot::VideoCacheThread *newCache) { videoCache = newCache; }
90
92 void Reader(ReaderBase *audio_reader) { reader = audio_reader; }
94 ReaderBase* Reader() const { return reader; }
95
97 void Seek(int64_t new_position) { frame_position = new_position; sample_position=0; }
98
99 };
100
101}
102
103#endif
Header file for ReaderBase class.
Source file for VideoCacheThread class.
This class is used to expose any ReaderBase derived class as an AudioSource in JUCE.
void Seek(int64_t new_position)
Seek to a specific frame.
int getSpeed() const
Get Speed (The speed and direction to playback a reader (1=normal, 2=fast, 3=faster,...
void releaseResources()
Release all resources.
void Reader(ReaderBase *audio_reader)
Set Reader.
juce::int64 getNextReadPosition() const
Get the next read position of this source.
void setLooping(bool shouldLoop)
This method is ignored (we do not support looping audio playback)
juce::int64 getTotalLength() const
Get the total length (in samples) of this audio source.
void setSpeed(int new_speed)
Set Speed (The speed and direction to playback a reader (1=normal, 2=fast, 3=faster,...
void prepareToPlay(int, double)
Prepare to play this audio source.
ReaderBase * Reader() const
Get Reader.
void getNextAudioBlock(const juce::AudioSourceChannelInfo &info)
Get the next block of audio samples.
std::shared_ptr< Frame > getFrame() const
Return the current frame object.
void setVideoCache(openshot::VideoCacheThread *newCache)
Set playback video cache thread (for pre-roll reference)
void setNextReadPosition(juce::int64 newPosition)
Set the next read position of this source.
bool isLooping() const
Looping is not support in OpenShot audio playback (this is always false)
This abstract class is the base class, used by all readers in libopenshot.
Definition ReaderBase.h:76
The video cache class.
This namespace is the default namespace for all code in the openshot library.
Definition Compressor.h:29