VPXDEC(1)

πŸ’– VPXDEC(1) β€” the video decoding bestie πŸ’–

okay so. this is vpxdec, from the General Commands Manual section, and it's the VP8 and VP9 video decoding encoding tool. yes it says "decoding encoding", that's just the name, don't come for me. it decodes. it's giving decoder energy. πŸŽ€


✨ NAME ✨

vpxdec β€” VP8 and VP9 video decoding encoding tool πŸ¦‹


✨ SYNOPSIS ✨

vpxdec <options> -o dst_filename src_filename

like, options first, then where it goes, then what it is. slay. πŸ’…


✨ OPTIONS ✨

okay bestie this is the long part, grab a snack πŸ“

  • --codec=<arg> β€” which codec to use, you pick it
  • --yv12 β€” spit out raw YV12 frames
  • --i420 β€” spit out raw I420 frames
  • --flipuv β€” flip the chroma planes in the output, upside-down chroma moment πŸ™ˆ
  • --rawvideo β€” output raw YUV frames
  • --noblit β€” don't process the decoded frames, just… leave them there
  • --progress β€” show progress after each frame decodes, so you can watch it cook πŸ‘‘
  • --limit=<arg> β€” stop decoding after n frames
  • --skip=<arg> β€” skip the first n input frames
  • --postproc β€” postprocess decoded frames
  • --summary β€” show a timing summary at the end
  • -o <arg>, --output=<arg> β€” output file name pattern (peep the section below for the deets)
  • -t <arg>, --threads=<arg> β€” max threads to use, go parallel queen
  • --frame-parallel β€” frame parallel decode
  • -v, --verbose β€” show version string
  • -S, --scale β€” scale output frames uniformly
  • --frame-buffers=<arg> β€” number of frame buffers to use
  • --md5 β€” compute the MD5 sum of the decoded frame
  • --error-concealment β€” enable decoder error-concealment
  • -k, --keep-going β€” (debug) continue decoding after error. it's literally in the manual that this is debug, so no cap, that's what it says 😭

🌈 VP8 Postprocessing Options 🌈

these ones are specifically for the VP8 postproc vibes ✨

  • --noise-level=<arg> β€” enable VP8 postproc add noise
  • --deblock β€” enable VP8 deblocking
  • --demacroblock-level=<arg> β€” enable VP8 demacroblocking, w/ level
  • --pp-debug-info=<arg> β€” enable VP8 visible debug info
  • --pp-dbg-ref-frame=<arg> β€” display only selected reference frame per macro block
  • --pp-dbg-mb-modes=<arg> β€” display only selected macro block modes
  • --pp-dbg-b-modes=<arg> β€” display only selected block modes
  • --pp-dbg-mvs=<arg> β€” draw only selected motion vectors
  • --mfqe β€” enable multiframe quality enhancement

πŸŽ€ Output File Patterns πŸŽ€

the -o argument specifies the name of the file(s) to write to. so here's the tea: if the argument does not include any escape characters, the output gets written to a single file. periodt.

otherwise, the filename gets calculated by expanding these escape characters:

  • %w β€” frame width
  • %h β€” frame height
  • %<n> β€” frame number, zero padded to n places (1..9)
pattern arguments are only supported in conjunction with the --yv12 and --i420 options, bestie. and if the -o option is not specified, the output will be directed to stdout. iykyk 🫢

πŸ’œ Included decoders πŸ’œ

these come in the box, no extra shopping needed πŸ›οΈ

  • vp8 β€” WebM Project VP8 Decoder v1.6.0
  • vp9 β€” WebM Project VP9 Decoder v1.6.0

okay that's the whole page πŸ’– this one's from August 2016, and the source/version tag on it is VPXDEC(1) β€” iconic, historic, and now you know how to decode VP8 and VP9 like a main character. go forth and slay, bestie πŸ’…βœ¨πŸŒΈ