in

andy vt's tools & blog

automating lazy

This Blog

Syndication

andy vt's blog

  • IP-RC6 : IP or UPnP based HTPC Control

    In its default form IP-RC6 acts as an IP based remote that listens on a configurable port but it also supports UPnP for broader controller support. The application attempts to emulate the behavior of a standard Microsoft Windows Media Center Remote in general use scenarios. This includes support for all of the Media Center buttons and triple-tap as well as the full keyboard. Native application support also exists for SageTV's messaging protocol and I may add other applications if enough interest exists.

    1.0.0.0

    - Initial release

    x86 | x64
    Posted Mar 28 2012, 07:14 PM by babgvant with no comments
    Filed under:
  • Publishing Status to LcdWriter

    I've been meaning to write some documentation around how to publish status information to LcdWriter so that other developers could add integration for other applications, but I never got around to it. I hate writing documentation so realistically, it's probably never going to happen so instead I've attached the implementation I recently did for JRiver Media Center.
    Posted Feb 24 2012, 05:38 AM by babgvant with no comments
    Filed under:
  • LcdWriter Update - 02/05/12

    Changes

    - Better support for JRiver MediaCenter (stil client only)
    - Improvements to the native writer for nMEDIAPC PRO-LCD displays.

    download

  • StandbyHelper - 1.0.0.5

     1.0.0.5
    - Added support for launch arguments

    bin

  • SageDCT 2.2.0

    2.2.0
    - Explict RTP session cleanup (thanks Mark)
    - Add option to monitor (log) process statistics

    Download

  • SageDCT 2.1.9

     2.1.9
    - Fix some bugs around detecting a failed initial tune
    - Add async writing option (WriteAsync, DWORD) for RTP/UPnP capture

    x86 | x64

  • DTB 1.2.2.6 - Early Access

    This is an Early Access release.

    Version 1.2.2.6
    - Add support for LAV Video decoder (forces DI and HWA decode, if available, during transcoding)
    - Fix a bug in codec detection when incomplete video stream informations is present
    - Fix a bug where JRSidecar xml files are deleted by the FW cleanup process
    - Incorporate updated TVDB scrapper action
    - Stop registering OOTB DS filters globally
    - Transition to "Known Filters" registration scheme, loader will fall back on global lookups (normal DS) in some cases
    - Bundle LAV and Haali filters with DTB in unregistered state

    bin

  • Loading Unregistered COM objects with .NET

    COM is very convenient, but sometimes it isn't desirable (or possible) to register a component for use in an application.  Geraint Davies provided a solution for C++ developers, but since I generally try to avoid writing unmanaged code it was necessary to figure out how to translate his e.g. into C#.  The full source for loading unregistered COM objects and managing lifecycle is available in SVN, but since it took me a little while to figure out that the trick to making it go was using "GetDelegateForFunctionPointer" the translated method is below.

    Enjoy.

     

    //http://www.gdcl.co.uk/2011/June/UnregisteredFilters.htm
    public object CreateObjectFromPath(string dllPath, Guid clsid, bool setSearchPath)
    {
        object createdObject = null;
        IntPtr lib = IntPtr.Zero;
    
        if (_libsLoaded.ContainsKey(dllPath))
            lib = _libsLoaded[dllPath];
        else
        {
            //some dlls have external dependancies, setting the search path to its location should assist with this
            if (setSearchPath)
            {
                NativeMethods.SetDllDirectory(Path.GetDirectoryName(dllPath));
            }
    
            lib = NativeMethods.LoadLibrary(dllPath);
    
            if (setSearchPath)
            {
                NativeMethods.SetDllDirectory(null);
            }
        }
    
        if (lib != IntPtr.Zero)
        {
            //we need to cache the handle so the COM object will work and we can clean up later
            _libsLoaded[dllPath] = lib;
            IntPtr fnP = NativeMethods.GetProcAddress(lib, "DllGetClassObject");
            if (fnP != IntPtr.Zero)
            {
                DllGETCLASSOBJECTInvoker fn = Marshal.GetDelegateForFunctionPointer(fnP, typeof(DllGETCLASSOBJECTInvoker)) as DllGETCLASSOBJECTInvoker;
    
                object pUnk = null;
                int hr = fn(clsid, IID_IUnknown, out pUnk);
                if (hr >= 0)
                {
                    IClassFactory pCF = pUnk as IClassFactory;
                    if (pCF != null)
                    {
                        hr = pCF.CreateInstance(null, IID_IUnknown, out createdObject);
                    }
                }
            }
            else
            {
                throw new Win32Exception();
            }
        }
        else
        {
            throw new Win32Exception();
        }
    
        return createdObject;
    }

     

  • DTB - 1.2.2.5

    Version 1.2.2.5
    - Add "Export JRiver MC XML Sidecar" action to advanced actions

    bin

  • EVRCapture

    EVRCapture is a POC application that demonstrates the following DirectShow concepts for working with capture devices:

    1. Use the PSI Parser filter to configure the MPEG-2 Demultiplexer both initially and as the media type changes
    2. Split output stream with for display and file capture
    3. Build a capture graph configuring crossbars and capture/encoder filters (Hauppauge Colossus and HD PVR are demonstrated).
    4. Get screen captures from the EVR

    source

  • SageDCT 2.1.7

    2.1.1
    - Additional PBDA Capture logging
    - Add shortcut to Start menu from x64 installer

    2.1.2
    - Add more PBDA Capture logging

    2.1.3
    - More logging
    - Potential workaround for missing sink

    2.1.4
    - Standby support for PBDA capture

    2.1.5
    - Add a check for discovered v. assigned tuners
    - encode_digital_tv_as_program_stream setting is set according to recording preference
    - encoder generation page displays a more descriptive name for tuners
    - PBDA capture method will check for a successful recording using file size before returning

    2.1.6
    - Better object cleanup
    - Better error handling during PBDA capture cleanup
    - Log skipped duplicate channels
    - UPnP capture method will check for a successful recording using file size before returning 

    2.1.7
    - Recycle PBDA Tuner when the tuner fails after a configurable number of times (default is 2)
    - Delay graph building for a configurable period (default is 30 seconds)

    x86 | x64

  • Installing AVIVO

    AVIVO has been rebranded, so it's now called "AMD Media Codec Pack".

    1) Download it
    2) Run it to extract the contents. Pay attention to where they go (C:\ATI\Support\11-10_vista_win7_32-64_xcode\Packages\Apps)
    3) Cancel the installer if you're not using an AMD GPU
    4) Navigate to the location noted in #2 and select the correct version of AVIVO for your platform, open the directory, and run the installer
    5) Don't panic when you see this error message:

    6) Open an elevated cmd prompt and navigate to "C:\Program Files\Common Files\ATI Technologies\Multimedia"

    7) regsvr32 the appropriate atimpenc dll for your platform
    8) If the regsvr32 files, you probably don't have the necessary Visual Studio runtime installed. It looks like these are also in the folder from #2, but I'd go grab the latest VS2010 rev from MS.
    Posted Nov 01 2011, 06:49 PM by babgvant with 1 comment(s)
    Filed under:
  • SageDCT 2.1

    2.1
    - Add option for PBDA base DCT recording (experimental) requires AVIVO MPEG muxer specific to the PC's platform to be installed
    - Refactored capture support to enable different (i.e. non-UPnP based) methods for interacting with the DCT
    - Installer no longer starts SageDCT service
    - Change RTP setup sequence to fix a potential race condition on some DCT
    - Add option to delay RTP Play command if more time is required to setup RTP sequence
    - Add x64 version (PDBA capture is platform specific)

    x86 | x64

  • MigrateSageTVtoJMC

    MigrateSageTVtoJMC is a simple tool for creating JRiver Media Center metadata files for SageTV TV recordings.  The RemoteHttpApiForSageTV web service is required for it to work.

    1.0.0.0

    - Initial release

    bin

  • LcdWriter Updated for Jriver Media Center

    Added support for Jriver Media Center (client only)

    bin

    Posted Oct 14 2011, 07:27 PM by babgvant with no comments
    Filed under:
More Posts Next page »
@2008 andy vt
Powered by Community Server (Non-Commercial Edition), by Telligent Systems