* @brief A wx widget to view `thumbnails' of a Film.
*/
-#include <wx/wx.h>
#include "lib/film.h"
+#include "lib/config.h"
+#include <RtAudio.h>
+#include <wx/wx.h>
class wxToggleButton;
class FFmpegPlayer;
class Image;
class RGBPlusAlphaImage;
class PlayerVideo;
+class Player;
+class Butler;
/** @class FilmViewer
* @brief A wx widget to view a preview of a Film.
{
public:
FilmViewer (wxWindow *);
+ ~FilmViewer ();
void set_film (boost::shared_ptr<Film>);
/** @return our `playhead' position; this may not lie exactly on a frame boundary */
DCPTime position () const {
- return _position;
+ return _video_position;
}
void set_position (DCPTime p);
void refresh ();
+ int audio_callback (void* out, unsigned int frames);
+
boost::signals2::signal<void (boost::weak_ptr<PlayerVideo>)> ImageChanged;
private:
void player_changed (bool);
void update_position_label ();
void update_position_slider ();
- void video (boost::shared_ptr<PlayerVideo>);
void get ();
void seek (DCPTime t, bool accurate);
void refresh_panel ();
void frame_number_clicked ();
void go_to (DCPTime t);
void jump_to_selected_clicked ();
+ void recreate_butler ();
+ void config_changed (Config::Property);
+ DCPTime time () const;
+ void start ();
+ bool stop ();
boost::shared_ptr<Film> _film;
boost::shared_ptr<Player> _player;
bool _pending_player_change;
boost::shared_ptr<const Image> _frame;
- DCPTime _position;
+ DCPTime _video_position;
Position<int> _inter_position;
dcp::Size _inter_size;
* can get the same one that we got last time.
*/
bool _last_seek_accurate;
+
+ RtAudio _audio;
+ int _audio_channels;
+ unsigned int _audio_block_size;
+ bool _playing;
+ boost::shared_ptr<Butler> _butler;
+
+ boost::signals2::scoped_connection _config_changed_connection;
};