The PixMover REST API exposes the power of Pixspan's accelerated file movement and image compression capabilities to Media Asset Managers, Storage Tiering Applications, IT scripts, and any other operation that can communicate with a REST API. The API provides functionality for Copy, Move, and Compress-in-Place providing full functionality for optimizing storage utilization.
The PixMover RESTful API uses HTTP(S) requests over port 9090 (configurable) to GET, PUT, and POST data to the Server which processes the requests. The client must support cookies and must login before initiating any operational actions over the interface. It consists of eight functional areas that are described below.
HTTP(S) Protocol Header Information
The PixMover RESTful API promotes the use of operational models to help organize integration efforts. The integrator should review the desired operations provided for each model and implement the set of application API calls associated with that model. Each operational model is described below.
- Monitoring (View-Only) Model
This model is targeted at those applications that wish to only be able to view the status of jobs without the capability of starting jobs or performing administrative tasks. This model is useful for allowing monitoring personnel to view the status of the system. It could also allow an Artist to see when frames will be made available for starting work. Administrative functions are controlled via PixMoverUI and is usually set up first and subsequently the interfacing monitoring devices.
- Wrangler Model
This model is targeted at those applications that wish to control full operation of file movement within the system, including monitoring the status of jobs but does not include administrative capabilities. Administrative functions are controlled via PixMoverUI and is usually set up first and subsequently the interfacing devices to perform file operations. This is the de facto model used by most systems integrating with PixMover over the RESTful Interface.
- Administrative Model
This model is targeted at those applications that wish to control all aspects of PixMover (no PixMoverUI assist) including user administration, file movement, as well as job status monitoring. This is the most complex yet most complete model for integration with PixMover.
The PixMover RESTful API consists of eight functional areas, each containing a set of API calls that collectively provides a major feature within the interface. Each group or subset of each group may or may not pertain to the operational model that the integrator is targeting. The functional areas are described below.
- Login API Flows
The Login API flows capture the collection of API requests/responses that are contained within each Login/Logout action.
- Folders/Files APIs
The Folders/Files APIs manage calls associated with folders and files as it pertains to file systems.
- Job APIs
The Jobs APIs manage calls associated with management and status of jobs.
- Worker APIs (Administrative Model Only)
The Worker APIs manage calls associated with the distributed workers who perform the actual execution (encode/decode) of the jobs.
- Bandwidth Throttling APIs (Administrative Model Only)
The Bandwidth Throttling APIs manage calls associated with the metering and throttling of bandwidth that is consumed by the workers on managed file system paths, typically mount points. This mechanism can be used to ensure that the worker bandwidth loads do not saturate network infrastructure.
- Admin Control APIs (Administrative Model Only)
The Admin Control APIs manage calls associated with administration privilege level of users such as adding/suspending/restoring/deleting users from the system and managing the settings associated with those users.
- User Settings APIs
The User Settings APIs manage calls associated with user settings such as passwords, role, access, and email settings.
- Systems Settings APIs (Administrative Model Only)
The System Settings APIs manage calls associated with global settings for the system such as PixMover Email account and Cloud Storage Management (S3) settings.
Please contact Pixspan at email@example.com for the complete documentation on the PixMover REST API.
The Pixspan Memory Compression Library is designed to be incorporated into software products that handle full-resolution images and that can benefit in transmission or storage by temporarily transforming that image into a compressed version. This library operates in the memory-buffer to memory-buffer realm, and therefore any file management must be done by the calling software.
The Library supports the following formats full-resolution image formats:
- Panasonic Varicam Raw
- Canon c500 Raw
The operation of the library is to take as input a buffer containing the contents of a full-resolution image file, and then outputting the compressed version of that image to another buffer, assuming that the file format is supported. The library also performs the reverse transformation, taking a Pixspan-compressed version of that image from an input buffer, and decompressing to an output buffer. For file formats that are not supported, the library leaves the input buffer undisturbed, and outputs an appropriate status code to indicate that no compression/decompression was performed. The calling software is responsible for freeing both the input buffer and the output buffer, if an output buffer was created.
The performance of the software is approximately 10 MBytes/second for a single thread on an Intel E5-2670 or equivalent processor. So, a 12 MByte DPX file will take 1.2 seconds to compress or decompress with one thread. The library can be multi-threaded so that the performance can scale to the platform where it resides (e.g. a 16 core Intel E5-2670 can process approximately 320 MBytes/second based on the size of original images).
Files in the Library Package
The package supporting the Apple Mac and Linux includes the following files:
- The dynamic library implementing Pixspan compression/decompression for Mac (.dylib)
- The dynamic library implementing Pixspan compression/decompression for Linuxi (.so file)
- pixspan_memory.h – The API for the library
- pixspan_in_memory_test – a test application built with the library (note that this includes a license key that will time out)
- in_memory_test.c – a C program that demonstrates how to use the library.
- A Pixspan License File will be required, sent separately
The Library API
The main function in the library is: pixspan_process(). This takes the parameters of:
- Mode - Compress, Decompress, or Auto
- License String - A Pixspan-supplied License String
- Input Buffer Pointer - A pointer to the Image Frame
- Input Buffer Size - The size of the Image Frame
- Process Information - Pointer to a Structure that holds information about the Processed Frame, including a pointer to the Compressed/Decompressed Output Buffer and its size.
The function returns a status code that can include the following values:
- PIXSPAN_STATUS_SUCCESS – compress or decompress successful
- PIXSPAN_STATUS_NOT_SUPPORTED – image type not supported
- PIXSPAN_STATUS_SUPPORTED_FAILED – type supported, but compress/decompress unsuccessful
- PIXSPAN_STATUS_ALREADY_COMPRESSED – content was already compressed for a compress operation
- PIXSPAN_STATUS_ALREADY_DECOMPRESSED – content was uncompressed for a decompress operation
- PIXSPAN_STATUS_INPUT_BUFFER_ERROR – unknown error with the input buffer
- PIXSPAN_STATUS_OUTPUT_BUFFER_OPEN_ERROR – unknown error with the output buffer
- PIXSPAN_STATUS_LICENSE_EXPIRED – Pixspan license key expired or invalid
A Sample Application is provided in the package that allows a Command-Line Application to be built. This Application operates on one file at a time, and can be used to compare against the User application that is built with the Library.
Please contact Pixspan at firstname.lastname@example.org for the complete documentation on Pixspan's Image Compression Library.