This is "github.com/3d0c/gmf" package with tiny changes.

0) It is within cinetraverse and thus will not be affected by modifications of the original package.

1) "examples/" were removed because they are not required to build cinetraverse.

2) "gmf_cgo.go" was added, with cgo directives to work differently in Linux and Windows, unifying (hopefully) the build process:

- in Linux, the names of pkg-config files (libavutil etc.) were moved from gmf/*.go to this file, under "//#cgo linux ..." 
  FFmpeg should be compiled from source to obtain build dir with include/, lib/, and lib/pkgconfig inside.
  Then add .../ffmpeg/build/lib/pkgconfig to PKG_CONFIG_PATH and .../ffmpeg/build/lib to LD_LIBRARY_PATH
  before building cinetraverse with -ldflags "-r ./libs" (or any other path to FFmpeg shared libs, relative to where the cinetraverse binary will be placed).
  See README.md for the description of how pkg-config is used in the original package.

- in Windows, LDFLAGS lists these libraries (-llibavutil etc.) in this file under "//#cgo windows ..."
  Download "development" and "shared" FFmpeg builds. The dev. build for Windows doesn't have pkg-config files. Copy include/ and lib/ dirs from dev. build to MinGW installation, into x86_64-w64-mingw32/ or i686-w64-mingw32/. Add the path to MinGW/bin to environment's path,
  then build cinetraverse and place FFmpeg shared libs from shared build to the same dir where the cinetraverse binary is.
  
3) All "AvErrno(ret) == syscall.EAGAIN" conditions were replaced by "AvErrno(ret) == C.EAGAIN"
because the former seems to be incorrect in Windows (or at least in certain 64-bit Windows 7) ---
there AvErrno(ret) is 11 (=C.EAGAIN) for AVERROR(EAGAIN) "errors", while syscall.EAGAIN is 2^29 + 6.
In particular, the Decode() func from codecCtx_go16.go and codecCtx_go112.go fails,
and consequentially loadFromVideo() from cinetraverse/core/video/animage_load.go:
only 1 frame from the whole video is loaded.