]> git.sesse.net Git - casparcg/commitdiff
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Mon, 28 Nov 2011 22:14:14 +0000 (22:14 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Mon, 28 Nov 2011 22:14:14 +0000 (22:14 +0000)
modules/decklink/consumer/decklink_consumer.cpp
modules/decklink/interop/DeckLinkAPI_h.h
modules/decklink/interop/DeckLinkAPI_i.c
modules/ffmpeg/producer/audio/audio_decoder.cpp
modules/ffmpeg/producer/ffmpeg_producer.cpp
modules/ffmpeg/producer/filter/filter.cpp
modules/ffmpeg/producer/input/input.cpp
modules/ffmpeg/producer/tbb_avcodec.cpp
modules/ffmpeg/producer/video/video_decoder.cpp
shell/casparcg.config

index 89fc779107b776f79806f840a801ebfe52453710..4861946b3ffffd2c025789de5e5a240c1ed8cdca 100644 (file)
@@ -59,7 +59,7 @@ struct configuration
                : device_index(1)\r
                , embedded_audio(false)\r
                , internal_key(false)\r
-               , low_latency(true)\r
+               , low_latency(false)\r
                , key_only(false)\r
                , base_buffer_depth(3)\r
                , buffer_depth(base_buffer_depth + (low_latency ? 0 : 1) + (embedded_audio ? 1 : 0)){}\r
index e834bfc54dd08eec98b8a0162c4e759611f94839..0a81f2a586b1cdc9e027e99ae3d8a59614d7468a 100644 (file)
@@ -4,7 +4,7 @@
 \r
 \r
  /* File created by MIDL compiler version 7.00.0555 */\r
-/* at Sun Nov 27 16:26:23 2011\r
+/* at Mon Nov 28 22:42:59 2011\r
  */\r
 /* Compiler settings for interop\DeckLinkAPI.idl:\r
     Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 \r
index 7b4276cdb551813e432321b3381defac903661c5..db8e310e324962af2513cf53b7294d149456f689 100644 (file)
@@ -6,7 +6,7 @@
 \r
 \r
  /* File created by MIDL compiler version 7.00.0555 */\r
-/* at Sun Nov 27 16:26:23 2011\r
+/* at Mon Nov 28 22:42:59 2011\r
  */\r
 /* Compiler settings for interop\DeckLinkAPI.idl:\r
     Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 \r
index 880dad618ac640e171976beb63b61417f6e6983a..e7c71bb72139846003127ab554a9e932aa14d8aa 100644 (file)
@@ -69,7 +69,7 @@ public:
                                         format_desc.audio_sample_rate, codec_context_->sample_rate,\r
                                         AV_SAMPLE_FMT_S32,                             codec_context_->sample_fmt)\r
                , buffer1_(AVCODEC_MAX_AUDIO_FRAME_SIZE*2)\r
-               , nb_frames_(context->streams[index_]->nb_frames)\r
+               , nb_frames_(0)//context->streams[index_]->nb_frames)\r
        {               \r
                file_frame_number_ = 0;\r
                CASPAR_LOG(debug) << "[audio_decoder] " << context->streams[index_]->codec->codec->long_name;      \r
@@ -134,13 +134,18 @@ public:
        {\r
                return packets_.size() > 10;\r
        }\r
+\r
+       int64_t nb_frames() const\r
+       {\r
+               return std::max<int64_t>(nb_frames_, file_frame_number_);\r
+       }\r
 };\r
 \r
 audio_decoder::audio_decoder(const safe_ptr<AVFormatContext>& context, const core::video_format_desc& format_desc) : impl_(new implementation(context, format_desc)){}\r
 void audio_decoder::push(const std::shared_ptr<AVPacket>& packet){impl_->push(packet);}\r
 bool audio_decoder::ready() const{return impl_->ready();}\r
 std::shared_ptr<core::audio_buffer> audio_decoder::poll(){return impl_->poll();}\r
-int64_t audio_decoder::nb_frames() const{return impl_->nb_frames_;}\r
+int64_t audio_decoder::nb_frames() const{return impl_->nb_frames();}\r
 size_t audio_decoder::file_frame_number() const{return impl_->file_frame_number_;}\r
 \r
 }}
\ No newline at end of file
index 522da375a095076bf5b4872fdeb63c2c38975d6c..48e8e7f6d410a982360141f4063eec8b90d5242c 100644 (file)
@@ -188,7 +188,10 @@ public:
 \r
        virtual int64_t file_nb_frames() const override\r
        {\r
-               return video_decoder_ ? video_decoder_->nb_frames() : std::numeric_limits<int64_t>::max();\r
+               int64_t file_nb_frames = 0;\r
+               file_nb_frames = std::max(file_nb_frames, video_decoder_ ? video_decoder_->nb_frames() : 0);\r
+               file_nb_frames = std::max(file_nb_frames, audio_decoder_ ? audio_decoder_->nb_frames() : 0);\r
+               return file_nb_frames;\r
        }\r
 \r
        virtual int64_t frame_number() const override\r
index af4851ee36c14983752ec191fe3873f34f3e03d9..a0f0f0d6df12b3d57ae09eb977397d720ff6e917 100644 (file)
@@ -55,6 +55,7 @@ struct filter::implementation
                        pix_fmts_.push_back(PIX_FMT_YUV422P);\r
                        pix_fmts_.push_back(PIX_FMT_YUV420P);\r
                        pix_fmts_.push_back(PIX_FMT_YUV411P);\r
+                       pix_fmts_.push_back(PIX_FMT_BGRA);\r
                        pix_fmts_.push_back(PIX_FMT_ARGB);\r
                        pix_fmts_.push_back(PIX_FMT_RGBA);\r
                        pix_fmts_.push_back(PIX_FMT_ABGR);\r
index c0e5cdda86b858518520832e0aa59f52639687f5..6ad61272ed78872e88a162949e0cb29b813ad513 100644 (file)
@@ -234,7 +234,7 @@ struct input::implementation : boost::noncopyable
                \r
                auto stream = format_context_->streams[default_stream_index_];\r
                auto codec  = stream->codec;\r
-               auto fixed_target = (target*stream->time_base.den*codec->time_base.num)/(stream->time_base.num*codec->time_base.den);\r
+               auto fixed_target = (target*stream->time_base.den*codec->time_base.num)/(stream->time_base.num*codec->time_base.den)*codec->ticks_per_frame;\r
                \r
                THROW_ON_ERROR2(avformat_seek_file(format_context_.get(), default_stream_index_, std::numeric_limits<int64_t>::min(), fixed_target, std::numeric_limits<int64_t>::max(), 0), print());          \r
 \r
index 3082238385717645d980003863c7505a278af035..753b1f04d9f983dcb7fe5daa91f909e7a695845f 100644 (file)
@@ -73,7 +73,7 @@ void thread_init(AVCodecContext* s)
        s->thread_opaque          = &dummy_opaque; \r
     s->execute                   = thread_execute;\r
     s->execute2                          = thread_execute2;\r
-    s->thread_count              = tbb::tbb_thread::hardware_concurrency(); // MAX_THREADS; // We are using a task-scheduler, so use as many "threads/tasks" as possible. \r
+    s->thread_count              = MAX_THREADS;//tbb::tbb_thread::hardware_concurrency(); // MAX_THREADS; // We are using a task-scheduler, so use as many "threads/tasks" as possible. \r
 \r
        CASPAR_LOG(info) << "Initialized ffmpeg tbb context.";\r
 }\r
@@ -90,7 +90,7 @@ void thread_free(AVCodecContext* s)
 \r
 int tbb_avcodec_open(AVCodecContext* avctx, AVCodec* codec)\r
 {\r
-       CodecID supported_codecs[] = {CODEC_ID_MPEG2VIDEO, CODEC_ID_PRORES};\r
+       CodecID supported_codecs[] = {CODEC_ID_MPEG2VIDEO, CODEC_ID_PRORES, CODEC_ID_FFV1};\r
 \r
        avctx->thread_count = 1;\r
        // Some codecs don't like to have multiple multithreaded decoding instances. Only enable for those we know work.\r
index 4dc758384635aaefa9c05efdcb8d5ca16aca8b20..2940c968d1112e81cff9cb1ed6ada0ecfffbe506 100644 (file)
@@ -137,13 +137,18 @@ public:
        {\r
                return packets_.size() > 10;\r
        }\r
+\r
+       int64_t nb_frames() const\r
+       {\r
+               return std::max<int64_t>(nb_frames_, file_frame_number_);\r
+       }\r
 };\r
 \r
 video_decoder::video_decoder(const safe_ptr<AVFormatContext>& context) : impl_(new implementation(context)){}\r
 void video_decoder::push(const std::shared_ptr<AVPacket>& packet){impl_->push(packet);}\r
 std::shared_ptr<AVFrame> video_decoder::poll(){return impl_->poll();}\r
 bool video_decoder::ready() const{return impl_->ready();}\r
-int64_t video_decoder::nb_frames() const{return impl_->nb_frames_;}\r
+int64_t video_decoder::nb_frames() const{return impl_->nb_frames();}\r
 size_t video_decoder::width() const{return impl_->width_;}\r
 size_t video_decoder::height() const{return impl_->height_;}\r
 bool   video_decoder::is_progressive() const{return impl_->is_progressive_;}\r
index 1418c4885e3c06432c05514cea8947a3d8f78626..73b6d84d2e2e80f961a437018de0589cf50d770b 100644 (file)
@@ -1,17 +1,17 @@
 <?xml version="1.0" encoding="utf-8"?>\r
 <configuration>\r
   <paths>\r
-    <media-path>C:\casparmedia\_media\</media-path>\r
-    <log-path>log\</log-path>\r
-    <data-path>data\</data-path>\r
-    <template-path>C:\casparmedia\_templates\</template-path>\r
+    <media-path>F:\casparcg\_media\</media-path>\r
+    <log-path>F:\casparcg\_log\</log-path>\r
+    <data-path>F:\casparcg\_data\</data-path>\r
+    <template-path>F:\casparcg\_templates\</template-path>\r
   </paths>\r
   <channels>\r
     <channel>\r
-      <video-mode>NTSC</video-mode>\r
+      <video-mode>1080i5000</video-mode>\r
       <consumers>\r
-        <screen>\r
-        </screen>\r
+        <decklink>\r
+        </decklink>\r
       </consumers>\r
     </channel>\r
   </channels>\r