2011/7/5 Maksym Veremeyenko <ve...@m1stereo.tv>:
> 04.07.11 18:37, Maksym Veremeyenko написав(ла):
>>
>> 03.07.11 23:06, Dan Dennedy написав(ла):
>>>
>>> On Sun, Jul 3, 2011 at 12:48 PM, Maksym Veremeyenko<ve...@m1stereo.tv>
>>> wrote:
>>>>
>>>> On Sun, July 3, 2011 10:01 pm, Dan Dennedy wrote:
>>>>>
>>>>> 2011/7/3 Maksym Veremeyenko<ve...@m1stereo.tv>:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> playing files in a loop mode in melted cause a leak of file
>>>>>> descriptors
>>>>>> that
>>>>>> seen well from /proc/<process id>/fd/<file no>.
>>>>>>
>>>>>> the problem comes from avformat's producer re-open code that lost
>>>>>> release of
>>>>>> audiostream context.
>>
>> [...]
>>>
>>> Please test my latest commits. In my analysis and testing while
>>> working on these fixes, I found it is not at all safe to close the
>>> audio format and codec contexts at this point - think parallel.
>>>
>>
>> i am not sure it it regression or related, but something influent a
>> decklink output, to be precise, out output. After hour or two i start
>> receive messages about decklink audio buffer underflow - it wrote less
>> samples then 1920....
>>
>>
>
> seems to me that latest update to avformat producer uncover an audio preroll
> problem to decklink consumer.

I can think of any recent change that would have affected it. Please
see if you can use Git bisect to determine an offending commit.

> applying simple patch:
>
> diff --git a/src/modules/decklink/consumer_decklink.cpp
> b/src/modules/decklink/consumer_decklink.cpp
> index 0fb2361..0179de3 100644
> --- a/src/modules/decklink/consumer_decklink.cpp
> +++ b/src/modules/decklink/consumer_decklink.cpp
> @@ -54,6 +54,7 @@ private:
>        int                         m_isKeyer;
>        IDeckLinkKeyer*             m_deckLinkKeyer;
>        bool                        m_terminate_on_pause;
> +       uint32_t                    m_acnt;
>
>        IDeckLinkDisplayMode* getDisplayMode()
>        {
> @@ -428,6 +429,16 @@ public:
>
>        virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted(
> IDeckLinkVideoFrame* completedFrame, BMDOutputFrameCompleti
>        {
> +               uint32_t cnt;
> +               m_deckLinkOutput->GetBufferedAudioSampleFrameCount(&cnt);
> +               if(cnt != m_acnt)
> +               {
> +                       mlt_log_verbose( getConsumer(),
> +                       "ScheduledFrameCompleted:
> GetBufferedAudioSampleFrameCount %d -> %d, m_count=%lld\n",
> +                       m_acnt, cnt, m_count );
> +                       m_acnt = cnt;
> +               };
> +
>                // When a video frame has been released by the API, schedule
> another video frame to be output
>
>                // ignore handler if frame was flushed
>
> makes very interesting output:
> [...]
> [consumer decklink] ScheduledFrameCompleted:
> GetBufferedAudioSampleFrameCount 1919 -> 2877, m_count=20164
> (5) AS-RUN U0 "/tst_E0001531_43.dv" len 773 pos 725
> [consumer decklink] ScheduledFrameCompleted:
> GetBufferedAudioSampleFrameCount 2877 -> 3836, m_count=20937
> (5) AS-RUN U0 "/BNC00975.mov" len 748 pos 702
> [dv @ 0x80da0a0] Estimating duration from bitrate, this may be inaccurate
> [dv @ 0x82ff1c0] Estimating duration from bitrate, this may be inaccurate
> [consumer decklink] ScheduledFrameCompleted:
> GetBufferedAudioSampleFrameCount 3836 -> 4794, m_count=21685
> (5) AS-RUN U0 "/tst_E0001531_43.dv" len 773 pos 728
> [consumer decklink] ScheduledFrameCompleted:
> GetBufferedAudioSampleFrameCount 4794 -> 5754, m_count=22458
> (5) AS-RUN U0 "/BNC00975.mov" len 748 pos 705
> [dv @ 0x82ff1c0] Estimating duration from bitrate, this may be inaccurate
> [dv @ 0x8326820] Estimating duration from bitrate, this may be inaccurate
> (5) AS-RUN U0 "/tst_E0001531_43.dv" len 773 pos 732
> [...]
> (5) AS-RUN U0 "/BNC00975.mov" len 748 pos 696
> [dv @ 0x80da0a0] Estimating duration from bitrate, this may be inaccurate
> [dv @ 0x80d8580] Estimating duration from bitrate, this may be inaccurate
> [consumer decklink] ScheduledFrameCompleted:
> GetBufferedAudioSampleFrameCount 5754 -> 6715, m_count=29290
> [consumer decklink] ScheduledFrameCompleted:
> GetBufferedAudioSampleFrameCount 6715 -> 5754, m_count=29291
> (5) AS-RUN U0 "/tst_E0001531_43.dv" len 773 pos 722
>
> for some reason decklink do not flush or drop some audio packet and as
> result it overrun after one second samples. i can't definitely find a
> reason, but i will look deeper...
>
> --
> ________________________________________
> Maksym Veremeyenko
>



-- 
+-DRD-+

------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
Mlt-devel mailing list
Mlt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mlt-devel

Reply via email to