diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-12-16 17:50:39 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-12-16 17:50:39 +0000 |
| commit | eb6093ea4a079eb34ce9f3ad07fd0b7b80bb524d (patch) | |
| tree | 42bade9237c5f8db43b1856ba478afc5eaa205a4 /src | |
| parent | db8da61e6f5e626e37f5349b874432e6c978b2b6 (diff) | |
A few fixes to still image mode.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/film.cc | 6 | ||||
| -rw-r--r-- | src/lib/imagemagick_decoder.cc | 13 | ||||
| -rw-r--r-- | src/lib/imagemagick_decoder.h | 2 | ||||
| -rw-r--r-- | src/wx/film_editor.cc | 4 | ||||
| -rw-r--r-- | src/wx/film_viewer.cc | 7 |
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 (); |
