summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-12-16 17:50:39 +0000
committerCarl Hetherington <cth@carlh.net>2012-12-16 17:50:39 +0000
commiteb6093ea4a079eb34ce9f3ad07fd0b7b80bb524d (patch)
tree42bade9237c5f8db43b1856ba478afc5eaa205a4 /src
parentdb8da61e6f5e626e37f5349b874432e6c978b2b6 (diff)
A few fixes to still image mode.
Diffstat (limited to 'src')
-rw-r--r--src/lib/film.cc6
-rw-r--r--src/lib/imagemagick_decoder.cc13
-rw-r--r--src/lib/imagemagick_decoder.h2
-rw-r--r--src/wx/film_editor.cc4
-rw-r--r--src/wx/film_viewer.cc7
5 files changed, 26 insertions, 6 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc
index a1c9eb7f0..b295bdc83 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -857,10 +857,12 @@ Film::set_content (string c)
set_size (d.video->native_size ());
set_frames_per_second (d.video->frames_per_second ());
set_subtitle_streams (d.video->subtitle_streams ());
- set_content_audio_streams (d.audio->audio_streams ());
+ if (d.audio) {
+ set_content_audio_streams (d.audio->audio_streams ());
+ }
/* Start off with the first audio and subtitle streams */
- if (!d.audio->audio_streams().empty()) {
+ if (d.audio && !d.audio->audio_streams().empty()) {
set_content_audio_stream (d.audio->audio_streams().front());
}
diff --git a/src/lib/imagemagick_decoder.cc b/src/lib/imagemagick_decoder.cc
index 9d11e043f..c0db08893 100644
--- a/src/lib/imagemagick_decoder.cc
+++ b/src/lib/imagemagick_decoder.cc
@@ -105,3 +105,16 @@ ImageMagickDecoder::pixel_format () const
return PIX_FMT_RGB24;
}
+bool
+ImageMagickDecoder::seek (SourceFrame f)
+{
+ _iter = _files.begin ();
+ for (int i = 0; i < f; ++i) {
+ if (_iter == _files.end()) {
+ return false;
+ }
+ ++_iter;
+ }
+
+ return true;
+}
diff --git a/src/lib/imagemagick_decoder.h b/src/lib/imagemagick_decoder.h
index cfcf4b4f6..27ff71d83 100644
--- a/src/lib/imagemagick_decoder.h
+++ b/src/lib/imagemagick_decoder.h
@@ -56,6 +56,8 @@ public:
return false;
}
+ bool seek (SourceFrame);
+
protected:
bool pass ();
PixelFormat pixel_format () const;
diff --git a/src/wx/film_editor.cc b/src/wx/film_editor.cc
index d33f89ce6..32336d763 100644
--- a/src/wx/film_editor.cc
+++ b/src/wx/film_editor.cc
@@ -331,7 +331,7 @@ FilmEditor::make_audio_panel ()
};
for (int i = 0; i < MAX_AUDIO_CHANNELS; ++i) {
- add_label_to_sizer (_audio_sizer, _audio_panel, channels[i]);
+ video_control (add_label_to_sizer (_audio_sizer, _audio_panel, channels[i]));
_external_audio[i] = new wxFilePickerCtrl (_audio_panel, wxID_ANY, wxT (""), wxT ("Select Audio File"), wxT ("*.wav"));
_audio_sizer->Add (video_control (_external_audio[i]), 1, wxEXPAND);
}
@@ -354,7 +354,7 @@ FilmEditor::make_subtitle_panel ()
_subtitle_sizer->Add (_with_subtitles, 1);
_subtitle_stream = new wxComboBox (_subtitle_panel, wxID_ANY, wxT (""), wxDefaultPosition, wxDefaultSize, 0, 0, wxCB_READONLY);
- _subtitle_sizer->Add (_subtitle_stream);
+ _subtitle_sizer->Add (video_control (_subtitle_stream));
video_control (add_label_to_sizer (_subtitle_sizer, _subtitle_panel, "Subtitle Offset"));
_subtitle_offset = new wxSpinCtrl (_subtitle_panel);
diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc
index 4f99516f2..15a2c4034 100644
--- a/src/wx/film_viewer.cc
+++ b/src/wx/film_viewer.cc
@@ -92,6 +92,9 @@ FilmViewer::film_changed (Film::Property p)
_decoders.video->Video.connect (bind (&FilmViewer::process_video, this, _1, _2));
_decoders.video->OutputChanged.connect (boost::bind (&FilmViewer::decoder_changed, this));
_decoders.video->set_subtitle_stream (_film->subtitle_stream());
+ calculate_sizes ();
+ get_frame ();
+ _panel->Refresh ();
break;
}
case Film::WITH_SUBTITLES:
@@ -231,7 +234,7 @@ FilmViewer::raw_to_display ()
if (!_out_width || !_out_height || !_film) {
return;
}
-
+
_display_frame = _raw_frame->scale_and_convert_to_rgb (Size (_out_width, _out_height), 0, _film->scaler());
if (_raw_sub) {
@@ -303,7 +306,7 @@ FilmViewer::get_frame ()
if (!_out_width || !_out_height) {
return;
}
-
+
shared_ptr<Image> last = _display_frame;
while (last == _display_frame) {
_decoders.video->pass ();