projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge master.
[dcpomatic.git]
/
src
/
lib
/
ffmpeg_decoder.cc
diff --git
a/src/lib/ffmpeg_decoder.cc
b/src/lib/ffmpeg_decoder.cc
index 885bd0e85e03ad11a79e1ff6da34f2173e05b184..0f2c88fc9f8ce36f06f957b8c4172f6248c2c44c 100644
(file)
--- a/
src/lib/ffmpeg_decoder.cc
+++ b/
src/lib/ffmpeg_decoder.cc
@@
-43,7
+43,7
@@
extern "C" {
#include "filter_graph.h"
#include "audio_buffers.h"
#include "ffmpeg_content.h"
#include "filter_graph.h"
#include "audio_buffers.h"
#include "ffmpeg_content.h"
-#include "image_proxy.h"
+#include "
raw_
image_proxy.h"
#include "film.h"
#include "timer.h"
#include "film.h"
#include "timer.h"
@@
-296,10
+296,11
@@
FFmpegDecoder::seek (ContentTime time, bool accurate)
ContentTime pre_roll = accurate ? ContentTime::from_seconds (2) : ContentTime (0);
time -= pre_roll;
ContentTime pre_roll = accurate ? ContentTime::from_seconds (2) : ContentTime (0);
time -= pre_roll;
- if (time < ContentTime (0)) {
- time = ContentTime (0);
- }
+ /* XXX: it seems debatable whether PTS should be used here...
+ http://www.mjbshaw.com/2012/04/seeking-in-ffmpeg-know-your-timestamp.html
+ */
+
ContentTime const u = time - _pts_offset;
int64_t s = u.seconds() / av_q2d (_format_context->streams[_video_stream]->time_base);
ContentTime const u = time - _pts_offset;
int64_t s = u.seconds() / av_q2d (_format_context->streams[_video_stream]->time_base);
@@
-309,12
+310,6
@@
FFmpegDecoder::seek (ContentTime time, bool accurate)
);
}
);
}
- /* Ridiculous empirical hack */
- s--;
- if (s < 0) {
- s = 0;
- }
-
av_seek_frame (_format_context, _video_stream, s, 0);
avcodec_flush_buffers (video_codec_context());
av_seek_frame (_format_context, _video_stream, s, 0);
avcodec_flush_buffers (video_codec_context());
@@
-481,8
+476,8
@@
FFmpegDecoder::decode_subtitle_packet ()
avsubtitle_free (&sub);
}
avsubtitle_free (&sub);
}
-bool
-FFmpegDecoder::
has_subtitle_during (ContentTimePeriod p
) const
+list<ContentTimePeriod>
+FFmpegDecoder::
subtitles_during (ContentTimePeriod p, bool starting
) const
{
{
- return _ffmpeg_content->
has_subtitle_during (p
);
+ return _ffmpeg_content->
subtitles_during (p, starting
);
}
}