andy vt's tools & blog

automating lazy

This Blog


andy vt's blog

  • Pretty Angry With Samsung ATM

    I've never owned a Samsung TV, so when we moved to the UK about a year ago I bought one. It was cheaper than the comparable Panasonic PDP, and the apps platform was light years ahead. Unfortunately it broke (line of random pixels along the left) last night (or more specifically I noticed that it was broken last night), and even more unfortunate Samsung won't do anything about it. On the plus side, it wasn't that expensive and Samsung's HDMI CEC implementation baffles the mind so I won't mind replacing it that much. Even more important, I learned something about Samsung TVs - they're only good for a year :).


    After complaining about this on Twitter, Samsung agreed to replace the panel. So kudos to them.

    Posted Oct 30 2014, 03:42 AM by babgvant with no comments
    Filed under:
  • HTREMOTE Open Beta

    I've been working on adding support for Denon networked AVR to HTREMOTE for a few weeks now and I think it's really close to being ready for a public beta. If you have a Windows Phone (7.1/8/8.1) and either an Onkyo or Denon AVR you can join. Just send your Microsoft Account (aka Live ID) email address to and let me know what kind of phone you have. 

    For those who aren't familar with what HTREMOTE is I've included the description and some screenshots from the store and the 1.8 change log below. It is a bit underwhelming considering how much effort went into abstracting the AVR interface to make it work :).

    HTREMOTE is a remote for Ethernet enabled Denon & Onkyo / Integra audio video receivers (AVR), connected HDMI CEC and IP devices (Roku, Dune HD, TiVo and PC right now; others can be added on request). Supports selection macros and Live Tiles per input. Currently only the main zone is supported.

    - Don't auto-discover when the app loads
    - Denon AVR support
    - TiVo support
    - Fix issues with multi-device support


  • QSTranscode -
    - Add -ref argument
    - Set -b & -mb in GUI regardless of rate control mode
    - Add 9/10/11 rate control modes to GUI
    - Try to use original framerate from MediaInfo if framerate isn't set
    - set -goppicsize = 50% of the target framerate by default (makes the files seek faster)
    - Fix HEVC decoding with Ffmpeg
    - Add multi-threading support for Ffmpeg decoded codecs
    - Fix for native audio pass-through timestamp mechanism


  • QSTranscode -
    - Minor GUI changes
    - Populate decoder parameters using data from ffmpeg context if the MSDK can't get it from extradata
    - Don't feed PTS into the MSDK if we can tell that the timestamps are messed up
    - Set PTS = DTS when muxing if PTS is invalid from MSDK
    - Make sure the first DTS is valid before using it as an offset
    - Change basis of rendered framerate
    - Expose CAVLC Off/On
    - Add some descriptive error messages for initialization errors
    - Retrive and write GFX driver version to output
    - Reorder include/lib folders for cleaner inclusion
    - Retrive and write IPG model to output
    - Only add CodingOptions2 if API version is >= 1.6 (fix encoder init issue with SNB)
    - Write MSDK version before initializing components
    - Only use AR to calculate width/height
    - Don't use ticks_per_frame to calculate input timestamps
    - Calculate audio/video start PTS even when not seeking forward so it can be used to adjust A/V sync
    - Seek to 0 (unless -ss is used to override) for all files
    - Respect that MSDK versions < 1.6 do not use DTS
    - Try to adapt to situations where the input timestamps are crap
    - Test AV_CODEC_ID_H264 video streams to determine if they are AVC1 to assign the correct parser
    - Add a feature to seek to a common start point to attempt to deal with files with A/V that doesn't start at the same time. Use -seekstart to enable.
    - Pick the best video stream manually
    - Start moving logging from printf to av_log
    - Add bfr arg
    - Fix ICQ & LA_ICQ rate control methods
    - Don't trust the codec context timebase to make sense. Use the avg/r timebase if it doesn't when calculating input timestamps.
    - Skip all audio/subtitle processing in benchmark mode
    - Fix an issue with -lads validation
    - Add -genpts, -rtphint, -empty_moov, -frag_keyframe, -separate_moof options
    - Use first audio track PTS to generate PTS when muxing
    - Rev to latest Ffmpeg (2.2.3?)
    - Better work around files with crazy FPS information
    - Set surface frame flags based on decoded frame information when decoding with Ffmpeg
    - Sanity check selected audio track
    - Use rendered framerate to set input timestamps
    - Expose -genpts in GUI
    - Fix WMV3 header construction
    - Fix issue where unparsed audio codecs wouldn't be decoded properly (e.g. WMAPro)


  • QSTranscode -
    - Track PTS so we can make up a good one when it is missing
    - Basic support for hard subs, use -st to specify subtitle track and -hardsub to indicate that it should be burned in. Currently hardsubing is done b/w decode and VPP (i.e. pre-DI) because ffmpeg cannot resize the pixel format so it will probably only work with progressive content. Only tested with PGS.
    - Fix issues when converting soft telecined content to higher framerates
    - Keep looking for vobs when trying to detect framerate if the first (_0) isn't found
    - Only set trellis, MBBRC & ExtBRC when encoding AVC (fixes MFX_ERR_INVALID_VIDEO_PARAM error when encoding mpeg2)
    - Fix an issue where timestamps were not set when decoding with ffmpeg
    - Fix an issue where timestamps were not adjusted when using -ss parameter
    - Known issue: converting soft telecined content to higher framerates when using DX11 does not work.

  • QSTranscode -

    - Language filtering for files that contain it
    - Copy metadata for audio tracks when not transcoding if it exists in the source stream
    - Set language for audio tracks when transcoding if it exists in the source stream
    - Support seeking to an initial start point before transcoding via ss argument
    - Add rmvol argument to control rematrix volume when changing formats
    - Add aasync argument to control SWR "async" setting
    - Fix DVD language track selection
    - Resolve ISO 639-1 to ISO 639-2 language codes
    - lang arg now only works with ISO 639-2 codes
    - Examine all the VOB in a VIDEO_TS title to make a better guess about framerate
    - Include "ffmpeg.exe" shell app to convert ffmpeg args to QSTranscode args

  • QSTranscode -
    - Support creation of IIS Smooth Streaming output. Use -o pathtoutput.ismv to signal the behavior (note this feature removes the ability to create whole .ismv files). The target folder must not exist (FFmpeg will create it) and the files will be created there. For e.g. -o f:\temp\out\something.ismv will output the IIS Smooth Streaming in f:\temp\out.
    - Set mfxBitstream DecodeTimeStamp instead of TimeStamp with generated video timestamp
    - Add live555 integration for RTP/RTSP streaming. Pass the desired URL via -o. RTP requires the destination IP and port (e.g. rtp:// Port should be even. RTSP requires IP and port (e.g. rtsp://, but only port is used because the machine's IP is automatically discovered. Path can be passed optionally (e.g. rtsp://


  • Moving Sale - US Z-Wave Kit

    Selling off my Z-Wave kit.

    List is a Missing Remote.

  • QSTranscode -
    - Add benchmark mode
    - Fix an issue where native audio stream copies would error out in some containers
    - Configure MP3 encoder to use AV_SAMPLE_FMT_FLTP instead of AV_SAMPLE_FMT_S16
    - Add QP/QPI/QPP/QPB cmdline arguments for CQP encoding. Do not use QP & QPI/QPP/QPB at the same time.
    - Fix audio transcoding targeting planer formats (MP3/AC3)

    bin & source @ SourceForge.

    Please open a ticket if an issue is found.

  • DTB & DTBAddin

    I made a breaking change with DTB and didn't rev the version numbers. This is probably what is causing the addin to not work properly.

    To address this I rev'd the dll #s and rebuilt everything.

    DTB | Addin

  • QSTranscode - Now on SourceForge

    I've been meaning to migrate QSTranscode from my local SVN to a public repository for a while. Finally got around to it today.

    Binaries will be hosted on SourceForge and here, main change is that it will be much easier to get/merge source changes.

  • QSTranscode -

    I just realized that I never released this rev. The change log is small, but there were some bigger changes to the internals to add non-MSDK supported video CODECs support.
    - Check video codec profile for HW support
    - Decode video codecs that are unsupported by MSDK with FFMPEG
    - Explicit DX11 support

  • QSTranscode -
    - If "-of 23" is specified and the reported frame rate is 29.97 soft telecine mode will be enabled (video is converted at 23.976)
    - Fix a bug where folder based sources didn't signal EOF properly


  • Security is a hassle. That's the point.

    We don't put locks on our doors because it's convenient. We do it to create inconvenience when someone wants to open them, hoping the bad guys respect that - moving on to an easier target. We use other methods like alarms, cameras, etc. to encourage the selection of other, easier, targets. None of these things is a guarantee against a determined adversary and the right tools. Using these techniques is not costless to us. It's a pain to have to carry a key, remember to carry a key, enter key codes or set the alarm. Of course we do these things because the hassle it creates for us, also affects those who would otherwise prey on our stuff. It generally works because the hassle is disproportionate.

    The same thing is true about electronic doors. We use passwords and usernames to lock down accounts on the Interwebs. Making the same exchange in hassle (i.e. remembering passwords & usernames on myriad sites) there, as we do in the physical realm, hoping to realize the same disproportionate trade-off - two factor authentication doesn't change the fundamentals it just ratchets up the inconvenience realized by us and the bad guys.

    Adding to this, we have to trust that the companies that host "our" data are investing the appropriate amount of care in building locks and safes. Are they using SSL, hashing our passwords, or building social-engineering resistant recovery mechanisms? These things aren't free, they cost money (a lot of money) and time to buy, build, and implement properly - everywhere.

    At its core security is just about creating inconvenience, hopefully uneconomically viable amounts of inconvenience, and that's a hassle. For everyone. If only it was this easy:

    Posted Apr 11 2013, 05:27 AM by babgvant with no comments
    Filed under:
  • QSTranscode -
    - Add sanity checks on FFMPEG reported frame rate
    - Don't parse AAC, FLAC, or COOK audio
    - Revert to FFMPEG 1.13
    - Drop audio frames scheduled before video stream begins
    - Use the aspect ratio to calculate unspecified width/height parameters except when the AR = 1
    - Add support for soft telecined video files (unlike DVDs they will be encoded at reported framerate)


More Posts Next page »
@2008 andy vt
Powered by Community Server (Non-Commercial Edition), by Telligent Systems