2/16/2022

Blackmagic Design - H.264 pro Recorder + MXTiny

The Blackmagic Designs H.264 was really an Analog or SDI or HDMI to h.264 hardware codec device that transferred an MPEG-4 Transport Stream file over USB 2.0 to the host file system.

Initially it was usable only with Media Express, but later an opensource program called MXTiny could access it and capture to the local file system.. but also spawn VLC - VideoLAN Client to "Postview" the recording stream during the capture, playing the file from the file system after it was stored there.


This has value since if the video stream were not streaming or there were something wrong with the audio levels, then the capture could be stopped and corrections made without investing a lot of time and restarting the capture later.

Its not quite what video capture was with a true Preview window.. but its a clever and innovative "meeting the conceptual method" half-way.

2/15/2022

Blackmagic Design - H.264 pro "corder"

 The H.264 Procorder comes from about 2011 its a lot different from many other Blackmagic devices, while sharing a similar metal box and BNC and TRS connectors.

The micro USB port is used for both configuring and downloading the compressed H.264 video.

Media express works with this much as it would with the "SDI/HDMI mini recorder" or other Blackmagic products, however it does not produce a "Preview" of the video being captured and compressed before or during capture.

I have not explored (if any) Blackmagic WDM device driver / Directshow filter options with third party software exists yet.

One thing it does with ease, is it offers an NTSC and NTSC (progressive) capture profile from the Media Express "Preferences" menu option after selecting the h.264 device for capture.

By "omission" this implied it captured in an h.264 "interlaced format" which is rather uncommon.

After a test capture this was indeed confirmed to be the case.

MediaInfo reported an h.264 interlaced file.

It played back in VLC and Windows Media Player without issue.. however much of the player software since that time have defaulted or preferred to playback "progressive" as with game capture footage.. since that also takes less time to reassemble than "interlaced".

"Oddly" the captured video does not playback from within Media Express.. and attempting to play it back crashed the program. This was addressed simply by using VLC or Windows Media Player.

 However "interlaced" capture format from an "interlaced" source preserves more of the image detail and avoids introducing inescapable "motion blur" when compressing interlaced into progressive formats.

The default bit rate for the NTSC "interlaced" profile is 19.6 Mbps, substantially higher than most people expect from a typical h.264 video capture device trying to preserve disk space. I do not know what options there are with regards to changing the capture rate. Several other profile choices are listed in the Media Express menu targeting various common playback devices from that time.

There does not appear to be a signal source input selector like there is for other Black magic devices.. which leads me to believe it will auto select which input to source the input video from.

The choices are BNC Composite / S-Video, HDMI, and SDI (input, not output!)

The only output being through the micro USB port.

The box does warm up during capture, and while simply idling.

More exploration of this box is planned,

Snell & Wilcox Kudos+ CRV600AD - S-Video to SDI converter

 The Snell & Wilcox CRV600 comes from about 2011 or 2012 and contrary to the the earlier rack mount versions of their "Converters and Sychronizers" is a monolithic circuit board with Analog ADV chips.

The earlier full width rackmount versions used circuit cards and bays to host about six or eight circuit cards to create a bespoken device tailored for a purpose.

The CRV600 is a "converter" from Composite or S-Video Analog to SDI Digital, and an Aspect Ratio Standards Converter.. which makes it very interesting in that it can convert from PAL to NTSC and vice versa as well as deal with Aspect Conversion between various screen widths and pixel sizes.

It has S-Video Input and Output 4 pin DIN connectors and BNC Composite Input and Output connectors.

The SDI BNC connections are redundant with a loop between dual outputs for the SDI signal.

That it has Outputs for S-Video and Composite leads me to believe it can be used for pass-through to clean up and convert between various standards and then return that to analog outputs, but there is no SDI input. So conversions between SDI to Analog is not possible.

The CRV600 has one USB type B port for connecting to a PC.

This is optionally used for configuring the box, however most settings can be made from the front panel with a constellation of buttons and jog wheel and a backlit LCD screen.

The PC software for accepting a connection from the CRV600 over USB is free for download, but is no longer hosted by the companies which later merged or purchased the Snell & Wilcox line of products. Snell & Wilcox was a UK company that went through a consolidation phase and then merger/sale to Grass Valley in California USA.

The PC software consisted of a device driver for Windows XP (32 bit ) which does not work with Windows 7 64 bit. This comes from the RollTop USB hosting software which then offers up access to the device via a TCP/IP connection over a LAN  TCP/IP port.

Then a program called RollCall was installed on a central PC to manage multiple LAN connected devices via Ethernet. This eventually enabled a studio environment to be managed by a central console and dialog boxes for each remotely connected device to be configured.

Its a lot simpler to use the RollCall software, but not strictly necessary.

Since the device comes from the UK it came default configured for PAL signal types and required some exploration to figure out how from the front panel to set not only the Input and Output connection jacks would be configured.. but also what signal type to search for on the S-Video jack.

Initially I had a problem where the diplay would flash "PALM" ( that is PAL-M )  then "Error" and refuse to lock on to and convert from Analog to Digital. The setting was buried in the "Others" button menu and once it was changed to NTSC (not PALM or NTSC-j) it started working without error.. perfectly.

I connected the SDI output to a Blackmagic Designs SDI/HDMI "mini recorder" and was able to use that with Blackmagic Designs "Media Express" to make recordings.. the Blackmagic Design WDM device driver also let me use Noel Danjou's AMCap, Virtualdub, SONY Vegas, OBS Studio and other capture software with the CRV600.

The CRV600 has an auxiliary corner of the box for optional plug in models to customize it further. One such is the "AD" or AuDio (AD) module which uses WECO 930 three pin strain relief audio jacks to bring in Balanced or Unbalanced Audio and Audio Embed the information in the same SDI signal.

Like the Analog video outputs, the audio section also has analog outputs.

This section can also "delay" the captured audio in order to sync it up with the video since analog to digital video conversion takes a finite amount of time and can often hasten the audio relative to the video since audio conversion takes less time.

The chips on the mainboard of the CRV600 are ADV7311 and the ADV7198 and several much larger FPGA or glue logic chips.

The ADV7311 is a Digital to Analog converter, no doubt for the Analog Output connectors.

The ADV7198 is a 12 bit capture, 10 bit internal workflow to standard 8 bit SDTV Video Decoder with the Analog Devices ADLLT line length FIFO process to ensure line length sampling compliance at 720 samples per line, and a sophisticated sync recovery system for dealing with VCR head switching noise. This is advertised as their "mini-tbc" feature.

It also has Digital Noise Reduction, Chroma Transient Improvement (edge sharpener) features and more.


As a Synchronizer, it can also accept a Reference signal for clocking the output from its full frame memory buffers, eliminating vertical jitter.

The CRV600 also has the usual PROC-AMP controls for Brightness, Contrast, Hue and Sharpness.

2/06/2022

Secrets of the "Video Capture 6.0" program bundled with SONY/Magix Vegas

The Video capture program bundled with SONY Vegas and later Magix Vegas has an interesting development history. There was the time before when SONY owned it, and the time after when Magix owned it. And inbetween it seemed to fall in quality and was revitalized or fixed after the acquistion.

The first of the great reawakening seems to have been during the Vegas 14 update releases, as a patch specifically mentions Blackmagic Decklink functionality had been repaired.

That meant Vegas 15 was the first to have it fixed "out of the box".

The readmes and release notes are well worth the time to read.

For Vegas 15 the readme is located in the file system after install:

C:\Program Files\VEGAS\Movie Studio 15.0\readme\Videocapture_readme.htm

 

It seems to be treated by this document as if its an entirely separated program, bundled with the larger suite of Vegas tools.

 

Video Capture 6.0
 
July 2007
1.0 Welcome

Thank you for purchasing Sony Creative Software Inc. Video Capture 6.0 software. 

 

The next section contains a lot of tips and insider information regarding the program including advice on how to deal with certain situations.

2.0 Known Issues

Capturing to the same hard drive where your operating system is installed can result in dropped frames. If you have more than one drive, you can specify the target drive on the Disk Management tab of the Preferences dialog.

 

The next section covers DV specific information.

OHCI-compliant IEEE-1394 DV capture cards are required for DV device control.

Even if device control does not work, you may still be able to capture video by manually controlling your video device (e.g. pressing play on your camcorder's remote and then clicking the Capture button in Video Capture). If you are having capture problems, try clearing the Enable DV device control check box in the Preferences dialog.

If your DV camera is connected to another IEEE-1394 device ("daisy-chained"), the bandwidth of the IEEE-1394 channel may not be sufficient for print-to-tape operations. Connect each device to its own IEEE-1394 port before using print-to-tape.

For more detailed OHCI hardware, drivers, and DV information, visit the Sony Pictures Digital DV support page.

When using a digital-to-analog transcoder without a LANC adapter connected, clear the Enable DV device control check box on the General Preferences tab.

 

More information on genetic capture cards, and tv tuners

If you experience degraded system performance, clear the Enable still image capture check box on the Capture tab of the Preferences dialog.

If you experience problems using a TV tuner card or displaying closed captioning, clear the Enable still image capture check box on the Capture tab of the Preferences dialog.

If you're unable to preview an MJPEG-encoded file to an MJPEG external monitor, select the Close current device when in file playback mode check box on the General tab of the Preferences dialog.

 

Of (Major) interest is the same Vidcap program is installed with "Vegas" or "Vegas Movie Studio". 

Movie Studio is a slimmer collection of tools and years later its much easier to find Movie Studio than the Pro or Edit editions of Vegas. It also cost significantly less than the Pro or Edit versions if you don't need any of those other tools.


4.0 Installation

Video Capture is automatically installed with Vegas and Vegas Movie Studio software.

 

Vegas 16 saw little change to this same readme in;

C:\Program Files\VEGAS\Movie Studio 16.0\readme\Videocapture_readme.htm

bit added a new one from the new owners "Magix";

C:\Program Files\VEGAS\Movie Studio 16.0\readme\Vegas_Movie_Studio_readme.htm

but seems to not contain any more useful information for the Vidcap program.



 

2/04/2022

SONY YUV capture with Vidcap6.0 from Vegas 15

Release notes for Vegas 14 update refer to fixing the SONY Vegas Decklink capture ability for the DV capture tool Vidcap6.0.exe, Vegas 15 has a Vidcap which already includes the fix.

While advertised for its DV video capture ability over firewire. It also serves for Blackmagic WDM and Decklink video capture. And when used for Decklink it captures full YUV 4:2:2 with 48KHz 16 bit audio Uncompressed. That is in SONY YUV.. which apepars to be the higher 16 bit form of the UYVY (YUV) which is different from the earlier and simpler 10 bit YUV. 

SONY Vegas processes and plays back SONY YUV just fine.

Blackmagic Media Express will playback SONY YUV files just fine.

Windows Movie Maker will playback audio but the video is corrupted and appears mostly as a gray blob with vertical lines over it and the hint of ghost of a moving image in the background.

By renaming the default capture.avi file to capture.mpg then Windows Movie Maker has no problems playing back the same file with no further processing.. that is;  nothing else needs to be done other than simply renaming the file.

VLC (VideoLAN Client) can playback either the original capture.avi file, or a renamed capture.mpg file since it does not use the same methods to derive a playback algorithm for playing the YUV file type.

Troubleshooting Tip!

While experimenting with the SONY YUV problem I installed the free AJA Directshow filters.. the SONY Vegas Vidcap program then had the same problems previewing the capture and the available devices listed some mysterious extra "Device Types" for nonexistent AJA hardware in my system.

The solution or "fix" was to uninstall the AJA Directshow drivers package from the Windows Control Panel > Programs and Features .. then the SONY Vidcap returned to working with the Decklink hardware device for raw SONY YUV capture. - I suspect it confused the Vidap program, or changed the "merits" system so that AJA filters were trying to be used for the Vidcap program preview.

A curious side effect of using the SONY Vegas 15 (now Magix) Vidcap is it no longer works with Blackmagic's WDM device driver for capture.. in earlier SONY Vegas 9.. only the WDM device driver was working.. or Decklink wasn't exactly stable.

I have since learned the DV "deck controls" called "device control" can cause a Blue Screen overlay to pop up and prompt for inserting a tape. along with a dialog box requesting a tape name.

This kind of makes sense in an old context where it was primarily used as a DV import tool for "capturing" video from a  firewire device.. and "Logging" it to the computers hard drive. DV is not really an analog format, but a digital format with a subchannel for controlling old firewire devices to advance and stop tape.. as well as detecting and indexing scene breaks. All of that is ancient history now and firewire is a far less used paradigm.. however it crops up in many tools that have a long legacy lifespan and recall and still offers that old method of import and editing.

A true analog system however relies more on the default streaming (as in self started spewing of frames of data with no beginning and no end, not the internet streaming meaning of the word "streaming").. to start and stop the video input.

In that context prompting for a "tape name" while assuming the DV tape player is stopped makes no sense.. the video is always playing.. and you need to dismiss the tape name dialog box.. and the blue screen overlay.. so that you can see the preview video.. and "start" the video capture.. because until you satisfy the tape name prompting.. and use the DV tape device control to "start the video playback" as if it were a remote controlled VCR with firewire commands.. it will block you from using the Vidcap program as a "normal" analog video capture application.

This is the default behavior when "assuming" you have connected a camcorder and want to use the DV device controls to name a tape and begin "logging" scene selection into a database for use later as a tape bin when constructing a video from source bin materials. 

DV device control ON


This is"Options > Preferences ..." then uncheck the "Enable DV device control"


And this is the result, it no longer prompts for a tape name or to insert a tape.


During capture the audio playback in preview is consistently "offset" by a delay from the video. In other capture software a manual delay can be set to correct for this.. it has little to no effect on the actual captured file. This is an example of capturing with an Analog to SDI capture device. The processing of analog video into captured fields and frames is interlaced or progressive at the users choice.. but takes a few frames worth of finite time defined in a document somewhere. The SDI audio embedding at the point of video capture synchronizes the audio to the video and unlike other capture methods that do not use a hardcoded embedder.. there is no opportunity for audio and video "drift" over time. If there are dropouts from lost frames or bad signal.. they are both dropped at the same time.

This is kind of more like what happens with an H,262 (MPEG2) or H.264 encoder in that the audio and video are "synchronized" before transport to the computer.. and is closer to the digital capture experience many people were accustomed to with DV video "capture".. although DV video file "copy" might be a better indicator of what's really going on with DV video capture.

Lost fields or Lost frames also lead to Lost audio samples and the stream stays in lock step. Glitches for whatever reason.. are a bit more intuitive.. if not more noticeable. 

"deciding" whether to abort a capture after a signal loss, is a choice and a setting

otherwise, as soon as the capture device can reacquire the signal, it continues the capture until stopped

An "Advanced" Preferences (Hidden tab) can be activated by Holding the [LEFT SHIFT] key down while pressing the Options > Preferences... selection


It has many settings I do not fully understand.

The "Dump DirectShow graphs" selection will open up a box while in Preview mode before capture describing the Graph builder graph in text.

This can be used to create a functional Graph outside of SONY Vegas Vidcap in GraphEdit with a little guess work. Mostly SF-Video Capture  and SF-Audio Capture represent "Decklink" video and audio capture filters in GraphEdits inventory.


The WDM device driver also works with other capture software, like Cyberlink PowerDirector 9

Or various versions of VirtualDub

Or OBS Studio

Or Noel Danjou's AMCap

Or VideoLAN Client

Or Windows 7 Movie Maker








SONY Vegas YUV playback in VLC 2.2.4

The simple answer here is it works, if you default the video demux to "Automatic" instead of prefer one over another.

VLC does not use the traditional graph builder algorithms to process video but the libavcodec.dll it imports externally for all codecs.. it can use external demuxers.. but only one at a time.. so setting it to "Automatic" which is normally the default works better in some situations. It rapid fires through its inventory of av codecs and finds an appropriate one and usually works. But sometimes, if VLC is installed by another application as part of a bundle, or a user gets specialized directions to change the Preferences so the default demux is "fixed" then it doesn't work and VLC simply appears to be playing but remains on the Playlist guid page and plays nothing.

With automatic though you get something like this:

In this case changing the default file extentions after capture is not needed.. it can remain .avi

This was not the case with WMC12 where it would corrupt the playback if you tried to play .avi file from the SONY Vegas Capture.. there you had to change the file extension and then it would play back the just captured video file without further processing.

This is done from the "Advanced" Tools > Preferences menu, then check the tiny box at the bottom left called "Show settings : All"


Then "Input / Codecs" > Demuxers > and choosing the Demux module drop down to make sure its set to the Top option which is - "Automatic"

 




SONY Vegas YUV playback in Windows Media Player 12

Basically a work around is rename the file extensions from .avi to .mpg and it plays.

I'm not sure why this works, if you try to playback the SONY Vegas YUV ( UYVY 16 bit Uncompressed Video ) as it captures to a file with extension .avi it plays with a grey overlay and vertical lines through the image.. its not really viewable. 


I think the Microsoft YUV codec doesn't support this format.. but I (guess) renaming it to a wrong extension like .mpg and forcing it to be interpreted by a different codec sends it down a different graphbuilder path that eventually finds a codec that can handle it.


MediaInfo seems reasonable.. but I wonder if its the 16 bit versus 10 bit video encoding. I think the Microsoft msyuv.dll only handles 10 bit.





1/29/2022

Blackmagic Design - Analog to SDI Converter + mini Recorder + Sony Vegas 11

From "initial" setup, I was very skeptical of using an SDI capture card with an Analog to SDI converter.

Make no mistake.. setup is (Very) hard.. but the results for Uncompressed UVYV video and Sound are astonishing.

I was also skeptical of whether SONY Vegas Pro could work with SDI for input. It turns out I was right, but there is a work around.

Setting up the Blackmagic Design "mini recorder" SDI  to PCIexpress card required I carefully make sure the BIOS of my motherboard had not (turn off) that PCIe slot. I have an older ASUS motherboard which allowed shifting the PCIexpress lanes to concentrate them on longer x4 slots while turning off lanes for other devices like onboard USB ports, or other PCIe slots. the BIOS instructions and in menu directions are a lesson in confusion.. that transcends language barriers.. poor grammar even by the native speaker in Chinese apparently is universal.

As a pre-test with SDI I used the "mini recorder" HDMI input port to capture HDMI video and sound, tha proved difficult first because it only capture sHDCP "free" video which normally is only availabel from a video camera, that supports HDCP "free".. a rare thing these days outside professional broadcast cameras. Game consoles also rarely allow HDCP "free" video to leave their ports. - In the end I used an HDMI and Component cpature box, which when set to Component capture.. actually produced HDMI without HDCP copy protection "free".

Then the version of the Blackmagic Design drivers had to be selected. The earliest is 7.8 however that had severe problems and never produced a picture. Adding to this, Blackmagic installed "two" video drivers; 

Blackmagic WDM capture

Decklink Video capture

And decline to explain what each is for in any of their documentation or literature.

Using graphedit and filter exploring it appears the WDM driver is the more universally recognized and compliant for many programs to access the video feeds. The Decklink appears to offer additions pins for control but documentation remains lacking.

The "mini recorder" has an HDMI and an SDI port on the back of the card.

The Blackmagic 7.8 or above driver and media express software "bundle" called "DesktopVideo" also includes a "port management" program that shows up in the Control Panel in Windows or as a separate application installed in the same folder as the media express capture program.

Whichever way you get to the program, you have to select the port to switch it to HDMI or SDI for input before tackling using the card with a capture program.

Finally I had to learn by trial and error which version of DesktopVideo was compatible with my Windows 7 system since it went unsupported by Microsoft in Jan 2020.. however Blackmagic has a habit of de-supporting at any time.. sometimes in versions released years in the past.. so its a major "Hunt" to find the version that works with your version of the Windows operating system.. add to this.. that DesktopVideo "the bundle" adds and removes hardware support for Blackmagic products as a moving target as well.. So you have to track version of operating system, version of DesktopVideo, and version of DesktopVideo which supports your hardware.

Once all these variables are sorted out, and you have a good single that isn't blocked with just an uninformative black screen.. then you have to configure your "mini recorder" capture card to match the type and speed of video signal being input and configure your capture software to use either the WDM driver or the Decklink driver.

It "seems" Decklink is rarely used by any video capture software other than that made by Blackmagic.. that is the "media express" capture software. Almost all others prefer or will only work with the WDM driver.

Sometime after the very first 7.8 driver release Blackmagic also began bundling in a separate Line Input (Blackmagic audio) device driver.. which works in Windows 7. Sometimes programs like OBS Studio can pull sound off the capture device.. sometimes not, and more often its unreliable.. probably since there are so few documents on the WDM driver and Decklink driver.

VirtualDub 1.9.11, OBS, VLC , MPC-HC, AMCap, SONY Vegas 11, 13 

The Blackmagic Design "Converter" used was the "Analog to SDI" box.. which is the only New box I have been able to find that advertises as compatible with capturing VHS player video content.

The SD-SDI standard has been around sine 1986, but discouraged or kept mostly out the hands of consumers based on price, complexity and its dependence on mostly Unencrypted video signals.

SDI was perfect adequate for single cable audio and video over long runs in the home, however the HDMI standard was pursued instead to layer on encryption and to support other layered standards.. much like IEEE1394/Firewire was "intended" but never really materialized.. in the end its just a consumer industry "approved" copyright protected physical cable format.

 The major advantage over other analog uncompressed capture methods isthe SDI chip "embeds" the audio along with the video in the SDI digital format. Often offset by a deviation that is labeled at 1-2.5 frames.

The key to getting uncompressed SDI video capture working with SONY Vegas Pro for me was choosing to use the Capture "DV" instead of the "HDV or SDI" choice. The Vidcap program then loads and connects to the "mini recorder" over the WDM driver instead of the Decklink driver. Audio similarly connects to the Blackmagic line input device.

It appears the Vegas 14 version may have "fixed" the Decklink problem, but that is an older version that I do not have access to at this time.

Curiously the PowerDirector 10 does not appear to work with even the WDM driver.

1/15/2022

Microsoft TV Technologies and the Video Control COM object

 Around XP and possibly a little bit earlier, the WDM device driver model for Windows device drivers became popular. 

 And the COM object method of  writing programs, with a whole raft of common services that could be accessed and programmed abstractly without knowing the details of the devices or their drivers.

Windows 2000, XP and up until very recently had a COM object group of library code for implementing and using Analog and Digital TV signal media, called Microsoft TV Technologies.

It was hard to understand after learning upwards from missing device drivers, then Directshow Filters and the Graph Edit method of graphically constructing abstract visual Graphs linking filters into running prototypes for understanding how video capture devices worked.. that they related to Microsoft TV Technologies.

Originally the BDA - Broadcast Driver Architecture, defined "How" to "Tune" an Analog or Digital source by firing off a Graph Build process that created a Filter Graph in program memory.

Usually this was expected to be an Analog TV tuner card, or a Digital Video Broadcast (DVB) TV tuner card. But to accommodate, legacy "analog input only" cards with simply s-video or composite they also included an AuxIn type of "Tuning" which treated a Video Capture card as if it were a complete Analog TV tuner.

Once a handle for a COM Object of the Tuner type was obtained, a tuner request object was created by the COM object and then used as a template to "fill out" or complete a Tuning request.. which when executed or "Run" by calling a Video Control method.. caused the Video Control Object to assemble and run the Directshow Graph constructed of filters to accomplish the task.. which included "Rendering" the output to a video window.

The Streaming Buffer Component could also be used with the Video Control to Pause, Rewind and Record the currently viewed stream.

The Video Control COM object could be used by VBscript, Jscript automation scripting via HTML or Windows Shell Host.. or used via Visual C/C++ or Visual Basic. Which offered finer degrees of control.

Or Directshow could be used directly via its GraphBuilder object to build up a custom Graph either partially automatic or manually.

This appeared to be the foundation of Windows Media Center in Windows XP and later.. but I'm not entirely sure how Graph Build automation succeeded with some hardware compression cards.. I suspect the WMC compatible brand label required some sort of WMC helper agent to establish or assist the automation process of completing a graph that had hardware encoders and or decoders for MPEG2.

Although I could see how it might work with plain frame grabber YUV frames that required only a minimal Directshow Graph Filter.

Using the Video Control

The dual nature of Playback versus Record, also led to the separation of Graphs in memory and priority when using a program like Windows Media Center or other Capture software.

When using GraphEdit to view a Playback graph of WMC or Capture software only the Playback graph could be seen in the RunTime Object Table (ROT) if the operating system didn't block access due to different administative priority levels.. like ordinary user versus a system service.

GraphEdit could be "tricked" into "seeing" other spaces, by starting both in the same user space, or running GraphEdit with administrator rights.. or launching GraphEdit with an "at" command to proxy access to the system level space "services" are run launching a command window and then launching GraphEdit from a C:\ prompt

All of which was much easier in XP or 32 bit days, before strict enforcement of user memory spaces were enforced and hid much of the access to the memory space of other programs due to security and malware concerns.


This is a snippet of  VBScript that illustrates how the Video Control "MsVidCtl" is grasped and instantiated, then Objects are created from the Control and used to accomplish automation tasks upon the control.

The "simplified" world view of the Video Control is that there are only three things; Input Devices, Features and Output Devices. Where the word "Devices" is over used in this situation to represent something other than just a Filter in a Graph. Essentially the Video Control does whatever is necessary in the background to "enable" the COM object "controls" to do their function. The "exposed" controls being a set of objects that "look like" a Tuning Source, some minimal closed caption decoding, and finally a Video window.

"


<TITLE>MSVidCtl: NTSC Analog TV</TITLE>


<!--
    This sample requires an analog TV tuner card compatible with the Windows Driver Model.
-->


<OBJECT ID="MSVidCtl" CLASSID="CLSID:B0EDF163-910A-11D2-B632-00C04F79498E"></OBJECT>



<SCRIPT language=vbscript>
option explicit

dim tscontainer 'tuning space collection
dim ts 'Analog TV tuning space
dim tr 'Analog TV tune request


sub window_onload
    MSVidCtl.Width = 800
    MSVidCtl.Height = 600
    
    set tscontainer = CreateObject("BDATuner.SystemTuningSpaces")

    'Get the tuning space with the word "Cable" in its name. 
    'This tuning space works with North American NTSC Cable
    'You can use the tuning space "Antenna" if you are using NTSC terrestrial analog broadcast
    'For other types of analog broadcast, you will need to create your own tuning space
        set ts = tscontainer("Cable")

        set tr = ts.CreateTuneRequest
        
    'By default we will start on channel 5
    tr.Channel = 5
        
    'Pass the tune request to the View() method and then build the graph
    MSVidCtl.View tr
        MSVidCtl.Run

    'This will alpha blend the image mstv.jpg over the video
    dim pict
    dim alpha
    dim tempvidrend
    dim myrect

    dim CurrentPath
    CurrentPath = location.href
    CurrentPath = Replace(CurrentPath,"%20"," ")
    CurrentPath = Replace(CurrentPath,"/","\")
    CurrentPath = Mid(CurrentPath,6,InstrRev(CurrentPath,"\")-6)
    if Mid(CurrentPath, 5, 1) = ":" then CurrentPath = Mid(CurrentPath, 4, Len(CurrentPath)-3)
    
    dim fileLoc
    fileLoc = CurrentPath & "\mstv.jpg"
    set pict = LoadPicture(fileLoc)

    alpha = 35
    set tempvidrend = MSVidCtl.VideoRendererActive
    tempvidrend.MixerBitmapOpacity = alpha
    set myrect = tempvidrend.MixerBitmapPositionRect
    myrect.Top = 20
    myrect.Left = 20
    myrect.Width = 50
    myrect.Height = 20
    tempvidrend.MixerBitmapPositionRect = myrect
    tempvidrend.MixerBitmap = pict

    'Display the channel information
    dl.innertext = MSVidCtl.InputActive.Tune.Channel
    currentchannel.value = MSVidCtl.InputActive.Tune.Channel
end sub

sub startbutton_onclick
    'This starts the graph and begins displaying audio and video
        MSVidCtl.Run
end sub


sub stopbutton_onclick
    'This stops the graph, but does not destroy it
        MSVidCtl.Stop
end sub

sub chanup_onclick
    'Tune to the next channel up
    tr.Channel = tr.Channel + 1
        MSVidCtl.View tr

        dl.innertext = MSVidCtl.InputActive.Tune.Channel
    currentchannel.value = MSVidCtl.InputActive.Tune.Channel
end sub


sub chandown_onclick
    'Tune to the next channel down
    tr.Channel = tr.Channel - 1
        MSVidCtl.View tr

        dl.innertext = MSVidCtl.InputActive.Tune.Channel
    currentchannel.value = MSVidCtl.InputActive.Tune.Channel
end sub

sub enter_onclick
    'Tune to the channel the user entered in the textbox
    tr.channel = currentchannel.value
        MSVidCtl.View tr

        dl.innertext = MSVidCtl.InputActive.Tune.Channel
    currentchannel.value = MSVidCtl.InputActive.Tune.Channel
end sub

</Script>

"

1/04/2022

DirectX GraphEdit Decoding H.264 from Elgato Game Capture HD S-Video

The default DirectShow [MPEG-2 Demultiplexer] worked for the AverMedua C874 once I understood it was in push mode and pushing a TS stream. The PSI and stream IDs had to be mapped to output pins and then the Graph Editor could render the decoded streams.

Similarly the Elgato Game Capture HD was also pushing a TS stream, but made of H.264 video and AAC audio.


 

The trick to getting it to work was to abandon the default Microsoft provided [MPEG-2 Demultiplexer] and manually registering an ArcDemux.ax filter that came with another software package installed on my system. Then it showed up in the available 32 bit Directshow filters in Graph Edit.

 

The Arcsoft ArcDemux filter was not registered with the system for general use.. but filters provided by software makers can be directly referenced by-passing the registry and keeping them somewhat hidden.

The ArcSoft Demux filter has additional media types for both H.264 and AAC, which the MPEG-2 Demultiplexer did not. The C874 had a different type of audio that was supported by default as MPEG Audio 1.

Its also important to be aware the device driver filter for the Elgato Game Capture is 32 bit and shows up under the global Directshow filters list, not the WDM capture devices. On Win7x64 Graph Edit often crashes if you attempt to open the Directshow list.. probably due to some errors in the registered filters for 64 bit Graph Edit. The work around is to use Graph Studio Next or some other Graph editor to get all the filters on one graph,s ave to a file and then open it in the default Microsoft Graph Editor program.

This is still just a proof of concept . There are minor issues.

Audio and Video are clearly captured and provided from the TS pin.

But the auto-rendering function of Graph Edit pulled in some collateral filters from other programs, like the Hauppage AAC filter. It can probably be better optimized to use specific filters.

The Graph file saved also doesn't appear to preserve the PIN assignments and they have to be reassigned upon loading the Graph again.. very strange behavior.

There is also some "drift" in lip sync with this first attempt at a Graph.. possible due to all of the extra filters building out the audio chain.

 

 



Instead of a general purpose Proc-Amp panel like with many other capture devices. Elgato provides a custom popup dialog box when right clicking on the Elgato Game Capture HD filter. It allows many other things than Proc-Amp controls like capture format, audio levels and so on.




This is with the 11/6/2015 2.3.3.42 device driver version. Earlier versions did not include a TS pin as an option for accessing the audio/video stream for Preview or Capture.

In fact misusing the TS pin to provide a Preview of the video stream being captured is kind of weird.. since normally that stream would be sent to a file filter or dumped to a file for storage as a raw .TS or mp2ts file stream. TS is a lossy or packet loss tolerant format which is often used for broadcasts, or in situations where packet of audio or video can be loss and not abort the flow.

Generally "after" the TS stream is captured, to render it suitable for a DVD or long term file storage its more common to transcode or convert it to the PS format and put it in a structured container with meta tag data like a generic file with extension .MP4

The other pins provide uncompressed Video and Audio.. for more immediate Preview use, but at the cost of being less reliable than the TS stream for capturing everything during a capture session.. this is by design as most WDM capture devices offer a tight but laggy capture stream and a fast but lossy capture stream for preview.

In theory this same approach should work with the more current HDS and HD60 versions of the Elgato Game Capture for use with HDMI capture.. but I do not have those products and have not had an opportunity to prove it works with those devices.

A bit of proof it is Interlaced video that is being captured, and with a smaller graph, fewer filters.



Gotta love that there isn't chunky 64x64 Macroblock artifacts, those are Interlaced lines between fields being mashed together into a single frame. The motion blurring is due to the difference in time between the two fields.

The Elgato property page for the capture filter says its capturing in Interlaced 59.97 fields per second (fps) but is nice to get visual confirmation.

Its also a great example of why its better to always capture SD NTSC video in "Interlaced" format.. that image is "mashed together" into one frame and now its impossible to pull it back apart into Interlaced format and try again.. its irretrievably "baked into" the Progressive frame by frame format now.

Truthfully I  should not be pulling the Preview off the MPEG-TS pin, normally you want to store that in a capture file and pull Preview video off the plain "video" pin.. which has a  lower priority and can deliberately drop frames in order to sacrifice the Preview video, in order to always capture every last bit from the MPEG-TS pin at capture time. - That's how the Capture filter/plugin was designed to work in the very beginning by the Microsoft standard.. anticipating people would want to "See" what they are capturing during the capture process.

It was a little controversial and forward thinking at the time since slow CPU and hard drives made it difficult if not impossible to "do two things at one time".. both Preview and Capture.

PC's and hardware eventually caught up however.

Back in the day.. a separate video audio "splitter" or "video distribution amplifier" was used before the capture device to feed a separate video monitor and speakers.. so you could "see" what you were doing.

Ironically.. for a different reason.. but Game Capture would do this .. for different reasons later.. the hardware encoding takes time and adds lag to both the Preview pin and the Capture pin.. so to avoid "game lag" they would try to pass-thru a copy of the raw video feed either though the game capture device.. or do the same thing and use a hardware video distribution amplifier up front before getting to the capture device.


1/02/2022

DirectX GraphEdit Decoding H.264 from AverMedia C874 USB HD

When you build a Graph Edit "Graph" for MPEG2 you often have a WDM capture device driver filter with an Output Pin.

The Output Pin streams video as a multiplexed Audio and Compressed Video format. To turn it back into something you can view you have to Demultiplex it and Decode it using separate workflows from the Demux filter.

DirectX and Windows offer several filters.

The "MPEG-2 Demultiplexer" normally has one Input - MPEG-2 Stream and no pins.

The MPEG-2 Multiplex format is generic and it is used by other A/V streams besides MPEG2, it can be used for MPEG4. Breaking apart the audio from the video works that same way.

1. put a source filter on the graph, perhaps coming from the hardware capture device.

2. put the [ MPEG-2 Demultiplexer ] filter on the graph, right click and configure this filter with one pin


Output Pins

---

New Output Pin

 Name: PSI

Media Type:  MPEG-2 PSI

>> Create ->

 

PID Mappings

---

PID

0x0000

Pin

PSI

MPEG2 PSI Sections

>> [Map]


Press [OK] to close the Properties Dialog box

Hit the Orobus (two arrows chasing each other in a circle) button to "Refresh" the graph and expose the pin you just created

Uisng Graph Edit 64 bit (be sure its 64 bit Graph Edit or Directshow filters will not open and crash Graph Edit) go to the Diret Show filters and put the PSI Parser filter on the graph

Connect the PSI pin from [MPEG-2 Demultiplexer] ->[ PSI Parser]

Execute ('Run') the Graph, while it is running > Right click on PSI Parser filter

[PSI Parser Properties]

Programs Contained in the Transport Stream:

Program Number

PMT PID

(click on the first program number, a list of the PID Stream type Contents, will appear below)

The KEY to using this is the First colum [PID] is in "Decimal" format.

 

You have to convert that Number form Decimal into Hex format to go back to MPEG-2 Demultiplexer and appropriately map PIDs to Elementrary streams coming out the the Output pins.

You can do all of this "live" while the Graph is running.

Example:

 

Mean PIDs in DEC

4113 0x1b ISO/IEC-14496-10/H.264 AVC Video

4352 0x3  ISO/IEC 11172-3 Audio

 

Mean PIDs in HEX

0x1100 MpegVideo Elementary Stream (A/V only)

0x1011 MpegAudio Elementary Stream (A/V only)


https://docs.microsoft.com/en-us/windows/win32/directshow/overview-of-mpeg-2-systems

https://stackoverflow.com/questions/16362132/why-do-i-get-these-artifacts-when-using-microsoft-mpeg-ts-demultiplexer-and-h-26

https://docs.microsoft.com/en-us/windows/win32/directshow/microsoft-mpeg-2-video-decoder

https://stackoverflow.com/questions/4618695/using-microsoft-dtv-dvd-video-decoder-to-play-h264-video

http://www.gdcl.co.uk/mpeg4/

https://github.com/RenderHeads/UnityPlugin-AVProVideo/issues/205

https://en.wikipedia.org/wiki/MPEG_transport_stream


Once the pins are created, you can hit the Orobus (two arrows chasing each other) and stop the Graph, right click on the pins and "render" them based on their content type and mostly if you have the right filters and merits the Graph will build itself.

 

 




The Microsoft DTV-DVD decoder can work starting with Windows 7, its not the best, but its free.