]> git.sesse.net Git - casparcg/commitdiff
2.0.0.2: ffmpeg_producer: Fixed audio-only playback.
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 28 Jul 2011 07:47:46 +0000 (07:47 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 28 Jul 2011 07:47:46 +0000 (07:47 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@997 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

core/mixer/write_frame.cpp
core/mixer/write_frame.h
modules/ffmpeg/producer/audio/audio_decoder.cpp
modules/ffmpeg/producer/video/video_decoder.cpp
shell/casparcg.config

index 8f10bba5b6cb06fa5241e8718e4c0c91299b4d42..e5b8efbae5dcab787646c6808b90b3a94eaa3d17 100644 (file)
@@ -40,7 +40,8 @@ struct write_frame::implementation
        int                                                                                     tag_;\r
        core::video_mode::type                                          mode_;\r
 \r
-       implementation()\r
+       implementation(int tag)\r
+               : tag_(tag)\r
        {\r
        }\r
 \r
@@ -111,7 +112,7 @@ struct write_frame::implementation
        }\r
 };\r
        \r
-write_frame::write_frame() : impl_(new implementation()){}\r
+write_frame::write_frame(int tag) : impl_(new implementation(tag)){}\r
 write_frame::write_frame(ogl_device& ogl, int32_t tag, const core::pixel_format_desc& desc) \r
        : impl_(new implementation(ogl, tag, desc)){}\r
 write_frame::write_frame(const write_frame& other) : impl_(new implementation(*other.impl_)){}\r
index 7827846809cf6518da8ec861a67f403486cff547..0b2b2090ed0812a9b2acd3d4612c01fe02f73409 100644 (file)
@@ -41,7 +41,7 @@ class ogl_device;
 class write_frame : public core::basic_frame, boost::noncopyable\r
 {\r
 public:        \r
-       write_frame();\r
+       write_frame(int tag);\r
        explicit write_frame(ogl_device& ogl, int tag, const core::pixel_format_desc& desc);\r
        write_frame(const write_frame& other);\r
                        \r
index c451675585532d5639a2e661b2cb668ce660d273..fee090509ae1f51ab9219c014bfdc71a6bf12bac 100644 (file)
@@ -68,9 +68,9 @@ public:
                    codec_context_->channels    != static_cast<int>(format_desc_.audio_channels)) ||\r
                        codec_context_->sample_fmt      != AV_SAMPLE_FMT_S16)\r
                {       \r
-                       auto resampler = av_audio_resample_init(format_desc_.audio_channels,    codec_context_->channels,
-                                                                                                       format_desc_.audio_sample_rate, codec_context_->sample_rate,
-                                                                                                       AV_SAMPLE_FMT_S16,                              codec_context_->sample_fmt,
+                       auto resampler = av_audio_resample_init(format_desc_.audio_channels,    codec_context_->channels,\r
+                                                                                                       format_desc_.audio_sample_rate, codec_context_->sample_rate,\r
+                                                                                                       AV_SAMPLE_FMT_S16,                              codec_context_->sample_fmt,\r
                                                                                                        16, 10, 0, 0.8);\r
 \r
                        CASPAR_LOG(warning) << L" Invalid audio format.";\r
index c86e7c87f27e1804bec1d8dd612a8d279f022a4b..6fa40588c480b1e20cacf80a8fa9e36a41bdb3ed 100644 (file)
@@ -74,6 +74,7 @@ public:
                : frame_factory_(frame_factory)\r
                , mode_(core::video_mode::invalid)\r
                , filter_(filter.empty() ? nullptr : new caspar::filter(filter))\r
+               , fps_(frame_factory_->get_video_format_desc().fps)\r
        {\r
                AVCodec* dec;\r
                index_ = av_find_best_stream(context.get(), AVMEDIA_TYPE_VIDEO, -1, -1, &dec, 0);\r
@@ -118,7 +119,7 @@ public:
                std::vector<safe_ptr<core::write_frame>> result;\r
 \r
                if(!codec_context_)\r
-                       result.push_back(make_safe<core::write_frame>());\r
+                       result.push_back(make_safe<core::write_frame>(reinterpret_cast<int>(this)));\r
                else if(!packet_buffer_.empty())\r
                {\r
                        std::vector<std::shared_ptr<AVFrame>> av_frames;\r
index cd3ddadb6ee80a0d1eb72aa09aa06e489402d4e1..04252b8f1eafa5a5c1bcefc5df2dcb3a4d04a2fa 100644 (file)
     <channel>\r
       <video-mode>PAL</video-mode>\r
       <consumers>\r
-        <screen></screen>\r
-        <audio></audio>\r
+        <decklink>\r
+          <device>2</device>\r
+          <embedded-audio>true</embedded-audio>\r
+        </decklink>\r
       </consumers>\r
     </channel>\r
 </channels>\r