/*\r
-* copyright (c) 2010 Sveriges Television AB <info@casparcg.com>\r
+* Copyright (c) 2011 Sveriges Television AB <info@casparcg.com>\r
*\r
-* This file is part of CasparCG.\r
+* This file is part of CasparCG (www.casparcg.com).\r
*\r
-* CasparCG is free software: you can redistribute it and/or modify\r
-* it under the terms of the GNU General Public License as published by\r
-* the Free Software Foundation, either version 3 of the License, or\r
-* (at your option) any later version.\r
+* CasparCG is free software: you can redistribute it and/or modify\r
+* it under the terms of the GNU General Public License as published by\r
+* the Free Software Foundation, either version 3 of the License, or\r
+* (at your option) any later version.\r
*\r
-* CasparCG is distributed in the hope that it will be useful,\r
-* but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
-* GNU General Public License for more details.\r
-\r
-* You should have received a copy of the GNU General Public License\r
-* along with CasparCG. If not, see <http://www.gnu.org/licenses/>.\r
+* CasparCG is distributed in the hope that it will be useful,\r
+* but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+* GNU General Public License for more details.\r
+*\r
+* You should have received a copy of the GNU General Public License\r
+* along with CasparCG. If not, see <http://www.gnu.org/licenses/>.\r
*\r
+* Author: Robert Nagy, ronag89@gmail.com\r
*/\r
+\r
#include "../stdafx.h"\r
\r
#include "ffmpeg_producer.h"\r
\r
const safe_ptr<diagnostics::graph> graph_;\r
boost::timer frame_timer_;\r
- boost::timer video_timer_;\r
- boost::timer audio_timer_;\r
\r
const safe_ptr<core::frame_factory> frame_factory_;\r
const core::video_format_desc format_desc_;\r
return nb_frames - start_;\r
}\r
\r
- virtual int64_t file_nb_frames() const override\r
+ virtual int64_t file_nb_frames() const\r
{\r
int64_t file_nb_frames = 0;\r
file_nb_frames = std::max(file_nb_frames, video_decoder_ ? video_decoder_->nb_frames() : 0);\r
return file_nb_frames;\r
}\r
\r
- virtual int64_t frame_number() const override\r
+ virtual int64_t frame_number() const\r
{\r
return frame_number_;\r
}\r
\r
- virtual int64_t file_frame_number() const override\r
+ virtual int64_t file_frame_number() const\r
{\r
return file_frame_number_;\r
}\r
\r
virtual std::wstring print() const override\r
{\r
- if(video_decoder_)\r
- {\r
- return L"ffmpeg[" + boost::filesystem::wpath(filename_).filename() + L"|" + print_mode(video_decoder_->width(), video_decoder_->height(), fps_, !video_decoder_->is_progressive())\r
- + L"|" + boost::lexical_cast<std::wstring>(file_frame_number()) + L"/" + boost::lexical_cast<std::wstring>(file_nb_frames()) + L"]";\r
- }\r
- \r
- return L"ffmpeg[" + boost::filesystem::wpath(filename_).filename() + L"]";\r
+ return L"ffmpeg[" + boost::filesystem::wpath(filename_).filename() + L"|" \r
+ + print_mode() + L"|" \r
+ + boost::lexical_cast<std::wstring>(file_frame_number()) + L"/" + boost::lexical_cast<std::wstring>(file_nb_frames()) + L"]";\r
+ }\r
+\r
+ boost::property_tree::wptree info() const override\r
+ {\r
+ boost::property_tree::wptree info;\r
+ info.add(L"type", L"ffmpeg-producer");\r
+ info.add(L"filename", filename_);\r
+ info.add(L"width", video_decoder_ ? video_decoder_->width() : 0);\r
+ info.add(L"height", video_decoder_ ? video_decoder_->height() : 0);\r
+ info.add(L"progressive", video_decoder_ ? video_decoder_->is_progressive() : false);\r
+ info.add(L"fps", fps_);\r
+ info.add(L"loop", input_.loop());\r
+ info.add(L"frame-number", frame_number_);\r
+ auto nb_frames2 = nb_frames();\r
+ info.add(L"nb-frames", nb_frames2 == std::numeric_limits<int64_t>::max() ? -1 : nb_frames2);\r
+ info.add(L"file-frame-number", file_frame_number_);\r
+ info.add(L"file-nb-frames", file_nb_frames());\r
+ return info;\r
}\r
\r
// ffmpeg_producer\r
+\r
+ std::wstring print_mode() const\r
+ {\r
+ return video_decoder_ ? ffmpeg::print_mode(video_decoder_->width(), video_decoder_->height(), fps_, !video_decoder_->is_progressive()) : L"";\r
+ }\r
\r
std::wstring do_call(const std::wstring& param)\r
{\r
(L"dv") \r
(L"f4v")(L"flv")\r
(L"mkv")(L"mka")\r
+ (L"mxf")\r
(L"wmv")(L"wma")(L"wav")\r
(L"rm")(L"ram")\r
(L"ogg")(L"ogv")(L"oga")(L"ogx")\r