shaka-packager/packager/tools/pssh
Joey Parrish 56e227267c Fix python linter errors and add linter checks to CI
Internal CI systems and the new GitHub CI system were out of sync,
with the external system not doing any linting.  Further, the internal
system was using an internal-only linter for Python.

This creates a script for Python linting based on the open-source
pylint tool, checks in the Google Style Guide's pylintrc file, creates
a custom action for linting and adds it to the existing workflows,
fixes pre-existing linter errors in Python scripts, and updates pylint
overrides.

b/190743862

Change-Id: Iff1f5d4690b32479af777ded0834c31c2161bd10
2021-06-21 21:46:48 +00:00
..
README.md Update pssh-box.py to remove external dependencies 2019-01-31 00:49:12 +00:00
pssh-box.py Fix python linter errors and add linter checks to CI 2021-06-21 21:46:48 +00:00

README.md

pssh-box - Utility to parse and generate PSSH boxes

Prerequisite

  • Python 2.6 or newer.

Build the utility using Shaka Packager build setup

The utility needs to be built before being used, i.e. do not use the script in packager/tools/pssh/pssh_box.py directly.

If you have not set up the build environment for Shaka Packager, see https://github.com/google/shaka-packager/blob/master/docs/source/build_instructions.md.

With the build environment set up, use ninja to build the utility:

$ ninja -C out/Release pssh_box_py

Then you can use the built utility in out/Release/pssh_box.py. You can add out/Release to your PATH so you can run it from anywhere.

Usage

All examples below assume that that pssh-box.py is in the PATH variable of the executing shell.

PSSH box generation

The utility can be used to generate one or more PSSH boxes.

An example to generate a Widevine PSSH with content-id 1234:

$ pssh-box.py --widevine-system-id --content-id 1234

It can be also be used to generate PSSH box from PSSH data (base64), e.g.

$ pssh-box.py --widevine-system-id --pssh-data AAAABCICEjQ=

The output can be in base64 form (--base64), in hex form (--hex) or in human readable form (--human). Human readable form is the default.

An example to generate a Widevine PSSH with content-id 1234 in hex:

$ pssh-box.py --widevine-system-id --content-id 1234 --hex

Multiple boxes can be generated by separating boxes with --.

An example to generate concatenated PSSHs with a Widevine PSSH with content-id 1234 and a common PSSH with key-id 31323334353637383930313233343536 (hex form).

$ pssh-box.py \
  --widevine-system-id --content-id 1234 -- \
  --common-system-id --key-id 31323334353637383930313233343536

PSSH box parsing

The utility can be used to parse a single PSSH box or multiple concatenated PSSH boxes. The input can be in hex or in base64.

$ pssh-box.py --from-hex \
  000000247073736800000000EDEF8BA979D64ACEA3C827DCD51D21ED0000000422021234
$ pssh-box.py --from-base64 AAAAJHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAAQiAhI0

More options

Run the utility with no arguments to see the full list of options.

$ pssh-box.py