Well that is helpful information if not a bit disappointing. Perhaps if I use 
the SDK calls to get the individual timecode components _and_ check the drop 
frame flag I can reassemble what the GetString() method on the 
IDeckLinkTimecode class is supposed to provide.

I will add that to the next patch, but it might be a minute before I get to it. 
Thank you again for taking a look.

I guess we got really lucky in our use case.

Thanks,
Jon

> On May 31, 2018, at 12:39 PM, Dave Rice <d...@dericed.com> wrote:
> 
> Hi Jonathan,
> 
>> On May 31, 2018, at 11:41 AM, Jonathan Morley <jmor...@pixsystem.com 
>> <mailto:jmor...@pixsystem.com>> wrote:
>> 
>> Thank you very much, Dave. I am really curious about the df vs ndf since the 
>> Blackmagic SDK call I am making doesn’t have any arguments for specifying 
>> that kind of distinction. It simply returns what it finds in the SDI stream.
> 
> I know have a tape known to be NDF and a tape known to be DF. The messages I 
> sent before were from DF tapes. When I tried a NDF tape, I get the "Unable to 
> find timecode” warning repeatedly and no timecode on the output file.
> 
> ./ffmpeg -timecode_format vitc2 -f decklink -draw_bars 0 -audio_input 
> embedded -video_input sdi -format_code ntsc -channels 8 -raw_format yuv422p10 
> -i "UltraStudio 3D" -c:v v210 -c:a aac devlin5.mov
> ffmpeg version N-91200-g1616b1be5a Copyright (c) 2000-2018 the FFmpeg 
> developers
>  built with Apple LLVM version 9.0.0 (clang-900.0.38)
>  configuration: --enable-nonfree --enable-decklink 
> --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/include
>  libavutil      56. 18.102 / 56. 18.102
>  libavcodec     58. 19.104 / 58. 19.104
>  libavformat    58. 17.100 / 58. 17.100
>  libavdevice    58.  4.100 / 58.  4.100
>  libavfilter     7. 24.100 /  7. 24.100
>  libswscale      5.  2.100 /  5.  2.100
>  libswresample   3.  2.100 /  3.  2.100
> [decklink @ 0x7f9f66800000] Found Decklink mode 720 x 486 with rate 29.97(i)
> [decklink @ 0x7f9f66800000] Unable to find timecode.
>    Last message repeated 5 times
> Guessed Channel Layout for Input Stream #0.0 : 7.1
> Input #0, decklink, from 'UltraStudio 3D':
>  Duration: N/A, start: 0.000000, bitrate: 229869 kb/s
>    Stream #0:0: Audio: pcm_s16le, 48000 Hz, 7.1, s16, 6144 kb/s
>    Stream #0:1: Video: v210 (V210 / 0x30313256), yuv422p10le(bottom first), 
> 720x486, 223725 kb/s, 29.97 fps, 29.97 tbr, 1000k tbn, 1000k tbc
> Stream mapping:
>  Stream #0:1 -> #0:0 (v210 (native) -> v210 (native))
>  Stream #0:0 -> #0:1 (pcm_s16le (native) -> aac (native))
> Press [q] to stop, [?] for help
> Output #0, mov, to 'devlin5.mov':
>  Metadata:
>    encoder         : Lavf58.17.100
>    Stream #0:0: Video: v210 (v210 / 0x30313276), yuv422p10le(bottom coded 
> first (swapped)), 720x486, q=2-31, 223725 kb/s, 29.97 fps, 30k tbn, 29.97 tbc
>    Metadata:
>      encoder         : Lavc58.19.104 v210
>    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 7.1, fltp, 469 
> kb/s
>    Metadata:
>      encoder         : Lavc58.19.104 aac
> [decklink @ 0x7f9f66800000] Unable to find timecode.
>    Last message repeated 15 times
> [decklink @ 0x7f9f66800000] Unable to find timecode.0:00.70 
> bitrate=200517.8kbits/s speed= 1.4x    
>    Last message repeated 14 times
> [decklink @ 0x7f9f66800000] Unable to find timecode.0:01.20 
> bitrate=211246.0kbits/s speed= 1.2x    
>    Last message repeated 14 times
> [decklink @ 0x7f9f66800000] Unable to find timecode.0:01.70 
> bitrate=214431.3kbits/s speed=1.13x    
>    Last message repeated 14 times
> [decklink @ 0x7f9f66800000] Unable to find timecode.0:02.20 
> bitrate=217121.0kbits/s speed= 1.1x    
>    Last message repeated 14 times
> [decklink @ 0x7f9f66800000] Unable to find timecode.0:02.70 
> bitrate=221142.3kbits/s speed=1.07x    
>    Last message repeated 14 times
> [decklink @ 0x7f9f66800000] Unable to find timecode.0:03.20 
> bitrate=221288.2kbits/s speed=1.06x    
> 
> So when inputing DF this appears to work while Media Express gets it wrong by 
> writing the timecode with a NDF flag.
> However when inputing NDF no timecode is communicated.
> 
> I ran this to check if somehow I was called the wrong timecode 
> 
> for i in rp188vitc rp188vitc2 rp188ltc rp188any vitc vitc2 serial ; do echo 
> -n "${i}: " ; ./ffprobe -v quiet -timecode_format "$i" -f decklink -draw_bars 
> 0 -audio_input embedded -video_input sdi -format_code ntsc -channels 8 
> -raw_format yuv422p10 -i "UltraStudio 3D" -select_streams v -show_entries 
> stream_tags=timecode -of default=nw=1:nk=1 ; echo ; done
> 
> rp188vitc: 
> rp188vitc2: 
> rp188ltc: 
> rp188any: 
> vitc: 
> vitc2: 
> serial: 
> 
> I may try to find another NDF tape to make sure this isn’t a fluke.
> 
>> And when I skimmed the movenc timecode handling it doesn’t seem to make any 
>> assumptions or changes either.
> 
> I’ve replicated it with Matroska which simply moves the timecode into 
> metadata as a string.
> 
>> Please keep me posted. Meanwhile I will look into what could be causing all 
>> the error chatter.
> 
> Thanks!
> 
>> Thanks,
>> Jon
>> 
>>> On May 31, 2018, at 7:59 AM, Dave Rice <d...@dericed.com> wrote:
>>> 
>>> 
>>>> On May 31, 2018, at 5:49 AM, Jonathan Morley <jmor...@pixsystem.com> wrote:
>>>> 
>>>> Please take a look at my latest patches.
>>>> 
>>>> NOTE: I no longer have the hardware to test this work!
>>> 
>>> I tested these patches with an Ultrastudio 3D.
>>> 
>>> I find that in some cases it provides the “Unable to set timecode” warning 
>>> although it does provide the timecode value. Such as:
>>> 
>>> ./ffmpeg -timecode_format vitc -f decklink -draw_bars 0 -audio_input 
>>> embedded -video_input sdi -format_code ntsc -channels 8 -raw_format 
>>> yuv422p10 -i "UltraStudio 3D" -c:v v210 -c:a aac signs.mov
>>> ffmpeg version N-91200-g1616b1be5a Copyright (c) 2000-2018 the FFmpeg 
>>> developers
>>> built with Apple LLVM version 9.0.0 (clang-900.0.38)
>>> configuration: --enable-nonfree --enable-decklink 
>>> --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/include
>>> libavutil      56. 18.102 / 56. 18.102
>>> libavcodec     58. 19.104 / 58. 19.104
>>> libavformat    58. 17.100 / 58. 17.100
>>> libavdevice    58.  4.100 / 58.  4.100
>>> libavfilter     7. 24.100 /  7. 24.100
>>> libswscale      5.  2.100 /  5.  2.100
>>> libswresample   3.  2.100 /  3.  2.100
>>> [decklink @ 0x7f8711802600] Found Decklink mode 720 x 486 with rate 29.97(i)
>>> [decklink @ 0x7f8711802600] Unable to set timecode
>>> Guessed Channel Layout for Input Stream #0.0 : 7.1
>>> Input #0, decklink, from 'UltraStudio 3D':
>>> Duration: N/A, start: 0.000000, bitrate: 229869 kb/s
>>>  Stream #0:0: Audio: pcm_s16le, 48000 Hz, 7.1, s16, 6144 kb/s
>>>  Stream #0:1: Video: v210 (V210 / 0x30313256), yuv422p10le(bottom first), 
>>> 720x486, 223725 kb/s, 29.97 fps, 29.97 tbr, 1000k tbn, 1000k tbc
>>>  Metadata:
>>>    timecode        : 00:59:53;25
>>> Stream mapping:
>>> Stream #0:1 -> #0:0 (v210 (native) -> v210 (native))
>>> Stream #0:0 -> #0:1 (pcm_s16le (native) -> aac (native))
>>> Press [q] to stop, [?] for help
>>> Output #0, mov, to 'signs.mov':
>>> Metadata:
>>>  encoder         : Lavf58.17.100
>>>  Stream #0:0: Video: v210 (v210 / 0x30313276), yuv422p10le(bottom coded 
>>> first (swapped)), 720x486, q=2-31, 223725 kb/s, 0.03 fps, 30k tbn, 29.97 tbc
>>>  Metadata:
>>>    timecode        : 00:59:53;25
>>>    encoder         : Lavc58.19.104 v210
>>>  Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 7.1, fltp, 469 
>>> kb/s
>>>  Metadata:
>>>    encoder         : Lavc58.19.104 aac
>>> frame=  407 fps= 30 q=-0.0 Lsize=  371576kB time=00:00:13.54 
>>> bitrate=224697.2kbits/s speed=1.01x    
>>> video:370879kB audio:685kB subtitle:0kB other streams:0kB global 
>>> headers:0kB muxing overhead: 0.003177%
>>> [aac @ 0x7f8711805800] Qavg: 30894.625
>>> 
>>> Another comment is that if I start the recording with ffmpeg before I play 
>>> through a source I get spammed with timecode errors such as:
>>> 
>>> ./ffmpeg -timecode_format vitc -f decklink -draw_bars 0 -audio_input 
>>> embedded -video_input sdi -format_code ntsc -channels 8 -raw_format 
>>> yuv422p10 -i "UltraStudio 3D" -c:v v210 -c:a aac notplaying.mov
>>> ffmpeg version N-91200-g1616b1be5a Copyright (c) 2000-2018 the FFmpeg 
>>> developers
>>> built with Apple LLVM version 9.0.0 (clang-900.0.38)
>>> configuration: --enable-nonfree --enable-decklink 
>>> --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/include
>>> libavutil      56. 18.102 / 56. 18.102
>>> libavcodec     58. 19.104 / 58. 19.104
>>> libavformat    58. 17.100 / 58. 17.100
>>> libavdevice    58.  4.100 / 58.  4.100
>>> libavfilter     7. 24.100 /  7. 24.100
>>> libswscale      5.  2.100 /  5.  2.100
>>> libswresample   3.  2.100 /  3.  2.100
>>> [decklink @ 0x7fe313803000] Found Decklink mode 720 x 486 with rate 29.97(i)
>>> [decklink @ 0x7fe313803000] Unable to find timecode.
>>>  Last message repeated 5 times
>>> Guessed Channel Layout for Input Stream #0.0 : 7.1
>>> Input #0, decklink, from 'UltraStudio 3D':
>>> Duration: N/A, start: 0.000000, bitrate: 229869 kb/s
>>>  Stream #0:0: Audio: pcm_s16le, 48000 Hz, 7.1, s16, 6144 kb/s
>>>  Stream #0:1: Video: v210 (V210 / 0x30313256), yuv422p10le(bottom first), 
>>> 720x486, 223725 kb/s, 29.97 fps, 29.97 tbr, 1000k tbn, 1000k tbc
>>> Stream mapping:
>>> Stream #0:1 -> #0:0 (v210 (native) -> v210 (native))
>>> Stream #0:0 -> #0:1 (pcm_s16le (native) -> aac (native))
>>> Press [q] to stop, [?] for help
>>> Output #0, mov, to 'notplaying.mov':
>>> Metadata:
>>>  encoder         : Lavf58.17.100
>>>  Stream #0:0: Video: v210 (v210 / 0x30313276), yuv422p10le(bottom coded 
>>> first (swapped)), 720x486, q=2-31, 223725 kb/s, 29.97 fps, 30k tbn, 29.97 
>>> tbc
>>>  Metadata:
>>>    encoder         : Lavc58.19.104 v210
>>>  Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 7.1, fltp, 469 
>>> kb/s
>>>  Metadata:
>>>    encoder         : Lavc58.19.104 aac
>>> [decklink @ 0x7fe313803000] Unable to find timecode.
>>>  Last message repeated 14 times
>>> [decklink @ 0x7fe313803000] Unable to find timecode.0:00.66 
>>> bitrate=210543.0kbits/s speed=1.33x    
>>>  Last message repeated 14 times
>>> [decklink @ 0x7fe313803000] Unable to find timecode.0:01.16 
>>> bitrate=217281.3kbits/s speed=1.17x    
>>>  Last message repeated 14 times
>>> [decklink @ 0x7fe313803000] Unable to find timecode.0:01.66 
>>> bitrate=218719.7kbits/s speed=1.11x    
>>>  Last message repeated 14 times
>>> [decklink @ 0x7fe313803000] Unable to find timecode.0:02.16 
>>> bitrate=219494.2kbits/s speed=1.08x    
>>>  Last message repeated 14 times
>>> [decklink @ 0x7fe313803000] Unable to find timecode.0:02.66 
>>> bitrate=220763.9kbits/s speed=1.07x    
>>>  Last message repeated 14 times
>>> [decklink @ 0x7fe313803000] Unable to find timecode.0:03.16 
>>> bitrate=220971.1kbits/s speed=1.06x    
>>>  Last message repeated 14 times
>>> [decklink @ 0x7fe313803000] Unable to find timecode.0:03.67 
>>> bitrate=221693.2kbits/s speed=1.05x    
>>>  Last message repeated 14 times
>>> [decklink @ 0x7fe313803000] Unable to find timecode.0:04.17 
>>> bitrate=223247.5kbits/s speed=1.04x  
>>> 
>>> Until I hit the play button on my source.
>>> 
>>> I tested the same videotape sources with Media Express and ffmpeg with this 
>>> patch and the initial timecode values are aligned to the same frames 
>>> accurately, but with 4 random videotapes I’ve tried, all the Media Express 
>>> captures are Non-Drop Frame and all the ffmpeg captures are Drop Frame, so 
>>> one has to be wrong. I’ll try to find a source that can provide a known df 
>>> and ndf signal to determine which is correct.
>>> 
>>> Thanks for the update,
>>> Dave Rice
>>> 
>>> _______________________________________________
>>> ffmpeg-devel mailing list
>>> ffmpeg-devel@ffmpeg.org
>>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>> 
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org <mailto:ffmpeg-devel@ffmpeg.org>
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel 
>> <http://ffmpeg.org/mailman/listinfo/ffmpeg-devel>
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org <mailto:ffmpeg-devel@ffmpeg.org>
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel 
> <http://ffmpeg.org/mailman/listinfo/ffmpeg-devel>
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to