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_content.cc
diff --git
a/src/lib/ffmpeg_content.cc
b/src/lib/ffmpeg_content.cc
index fadeec9cdc00a3126f2d9d066df8d04518229015..90c00283d940fc79c43f1e0cc3131ae92507e01b 100644
(file)
--- a/
src/lib/ffmpeg_content.cc
+++ b/
src/lib/ffmpeg_content.cc
@@
-152,7
+152,7
@@
FFmpegContent::as_xml (xmlpp::Node* node) const
}
if (_first_video) {
}
if (_first_video) {
- node->add_child("FirstVideo")->add_child_text (lexical_cast<string> (_first_video.get
()));
+ node->add_child("FirstVideo")->add_child_text (lexical_cast<string> (_first_video.get
().get
()));
}
}
}
}
@@
-163,14
+163,14
@@
FFmpegContent::examine (shared_ptr<Job> job)
Content::examine (job);
Content::examine (job);
- shared_ptr<const Film> film = _film.lock ();
- assert (film);
-
shared_ptr<FFmpegExaminer> examiner (new FFmpegExaminer (shared_from_this ()));
shared_ptr<FFmpegExaminer> examiner (new FFmpegExaminer (shared_from_this ()));
+ take_from_video_examiner (examiner);
+
+ ContentTime video_length = examiner->video_length ();
-
VideoContent::Frame video_length = 0
;
-
video_length = examiner->video_length (
);
- film->log()->log (String::compose ("Video length obtained from header as %1 frames", video_length));
+
shared_ptr<const Film> film = _film.lock ()
;
+
assert (film
);
+ film->log()->log (String::compose ("Video length obtained from header as %1 frames", video_length
.frames (video_frame_rate ())
));
{
boost::mutex::scoped_lock lm (_mutex);
{
boost::mutex::scoped_lock lm (_mutex);
@@
-190,8
+190,6
@@
FFmpegContent::examine (shared_ptr<Job> job)
_first_video = examiner->first_video ();
}
_first_video = examiner->first_video ();
}
- take_from_video_examiner (examiner);
-
signal_changed (ContentProperty::LENGTH);
signal_changed (FFmpegContentProperty::SUBTITLE_STREAMS);
signal_changed (FFmpegContentProperty::SUBTITLE_STREAM);
signal_changed (ContentProperty::LENGTH);
signal_changed (FFmpegContentProperty::SUBTITLE_STREAMS);
signal_changed (FFmpegContentProperty::SUBTITLE_STREAM);
@@
-233,13
+231,13
@@
FFmpegContent::technical_summary () const
string
FFmpegContent::information () const
{
string
FFmpegContent::information () const
{
- if (video_length() ==
0
|| video_frame_rate() == 0) {
+ if (video_length() ==
ContentTime (0)
|| video_frame_rate() == 0) {
return "";
}
stringstream s;
return "";
}
stringstream s;
- s << String::compose (_("%1 frames; %2 frames per second"), video_length(), video_frame_rate()) << "\n";
+ s << String::compose (_("%1 frames; %2 frames per second"), video_length()
.frames (video_frame_rate())
, video_frame_rate()) << "\n";
s << VideoContent::information ();
return s.str ();
s << VideoContent::information ();
return s.str ();
@@
-267,19
+265,17
@@
FFmpegContent::set_audio_stream (shared_ptr<FFmpegAudioStream> s)
signal_changed (FFmpegContentProperty::AUDIO_STREAM);
}
signal_changed (FFmpegContentProperty::AUDIO_STREAM);
}
-
AudioContent::Fra
me
+
ContentTi
me
FFmpegContent::audio_length () const
{
FFmpegContent::audio_length () const
{
- int const cafr = content_audio_frame_rate ();
- int const vfr = video_frame_rate ();
- VideoContent::Frame const vl = video_length ();
-
- boost::mutex::scoped_lock lm (_mutex);
- if (!_audio_stream) {
- return 0;
+ {
+ boost::mutex::scoped_lock lm (_mutex);
+ if (!_audio_stream) {
+ return ContentTime ();
+ }
}
}
-
- return video_
frames_to_audio_frames (vl, cafr, vfr
);
+
+ return video_
length(
);
}
int
}
int
@@
-315,16
+311,15
@@
FFmpegContent::output_audio_frame_rate () const
/* Resample to a DCI-approved sample rate */
double t = dcp_audio_frame_rate (content_audio_frame_rate ());
/* Resample to a DCI-approved sample rate */
double t = dcp_audio_frame_rate (content_audio_frame_rate ());
- FrameRateC
onversion
frc (video_frame_rate(), film->video_frame_rate());
+ FrameRateC
hange
frc (video_frame_rate(), film->video_frame_rate());
/* Compensate if the DCP is being run at a different frame rate
to the source; that is, if the video is run such that it will
look different in the DCP compared to the source (slower or faster).
/* Compensate if the DCP is being run at a different frame rate
to the source; that is, if the video is run such that it will
look different in the DCP compared to the source (slower or faster).
- skip/repeat doesn't come into effect here.
*/
if (frc.change_speed) {
*/
if (frc.change_speed) {
- t
*= video_frame_rate() * frc.factor() / film->video_frame_rate()
;
+ t
/= frc.speed_up
;
}
return rint (t);
}
return rint (t);
@@
-372,7
+367,7
@@
FFmpegAudioStream::as_xml (xmlpp::Node* root) const
root->add_child("FrameRate")->add_child_text (lexical_cast<string> (frame_rate));
root->add_child("Channels")->add_child_text (lexical_cast<string> (channels));
if (first_audio) {
root->add_child("FrameRate")->add_child_text (lexical_cast<string> (frame_rate));
root->add_child("Channels")->add_child_text (lexical_cast<string> (channels));
if (first_audio) {
- root->add_child("FirstAudio")->add_child_text (lexical_cast<string> (first_audio.get
()));
+ root->add_child("FirstAudio")->add_child_text (lexical_cast<string> (first_audio.get
().get
()));
}
mapping.as_xml (root->add_child("Mapping"));
}
}
mapping.as_xml (root->add_child("Mapping"));
}
@@
-422,14
+417,12
@@
FFmpegSubtitleStream::as_xml (xmlpp::Node* root) const
FFmpegStream::as_xml (root);
}
FFmpegStream::as_xml (root);
}
-Time
+
DCP
Time
FFmpegContent::full_length () const
{
shared_ptr<const Film> film = _film.lock ();
assert (film);
FFmpegContent::full_length () const
{
shared_ptr<const Film> film = _film.lock ();
assert (film);
-
- FrameRateConversion frc (video_frame_rate (), film->video_frame_rate ());
- return video_length() * frc.factor() * TIME_HZ / film->video_frame_rate ();
+ return DCPTime (video_length(), FrameRateChange (video_frame_rate (), film->video_frame_rate ()));
}
AudioMapping
}
AudioMapping