Encoder  4.4
VC-5 Sample Encoder
dpxfile.c File Reference

Typedefs

typedef uint8_t U8
 
typedef uint16_t U16
 
typedef uint32_t U32
 
typedef int32_t S32
 
typedef float R32
 
typedef char ASCII
 
typedef struct file_information File_Information
 File information header. More...
 
typedef struct _image_information Image_Information
 Image information header. More...
 
typedef struct _image_orientation Image_Orientation
 Image orientation header. More...
 
typedef struct _motion_picture_film_header Motion_Picture_Film
 Motion picture film header. More...
 
typedef struct _television_header Television_Header
 Television header. More...
 
typedef struct _pixel_aspect_ratio Pixel_Aspect_Ratio
 Data structure for the pixel aspect ratio. More...
 

Enumerations

enum  { DPX_RGB_10BIT_444 = 50, DPX_YUV_10BIT_422 = 100, DPX_YUVA_16BIT_4444 = 103, DPX_YUVA_10BIT_4444 = 103 }
 DPX pixel formats.
 

Functions

size_t FileSize (FILE *file)
 
PIXEL_FORMAT DPX_PixelFormat (uint8_t descriptor, uint8_t bit_size)
 Translate the DPX pixel format and precision into a codec pixel format. More...
 
CODEC_ERROR DPX_ReadFile (IMAGE *image, const char *pathname)
 
CODEC_ERROR DPX_ParseHeader (IMAGE *image, DPX_FileInfo *info)
 
uint32_t Pack10 (uint32_t R, uint32_t G, uint32_t B)
 Pack the color components into a 32-bit word. More...
 
void Unpack10 (uint32_t word, uint16_t *R, uint16_t *G, uint16_t *B)
 
CODEC_ERROR UnpackImageRowDPX0 (uint8_t *input_buffer, DIMENSION width, PIXEL *output_buffer[], PRECISION bits_per_component[], int channel_count, ENABLED_PARTS enabled_parts)
 Unpack a row of DPX pixels into separate component array rows.
 
CODEC_ERROR DPX_WriteImage (IMAGE *image, const char *pathname)
 Write an image to the specified DPX file.
 
CODEC_ERROR PackBufferRowsToDPX0 (PIXEL *input_buffer, size_t input_pitch, PIXEL *output_buffer, size_t output_pitch, DIMENSION width, DIMENSION height)
 Pack the intermediate decoded image into the output image in DPX pixel format. More...
 
CODEC_ERROR ConvertBufferRowsToDPX0 (PIXEL *input_buffer, size_t input_pitch, PIXEL *output_buffer, size_t output_pitch, DIMENSION width, DIMENSION height)
 Convert the intermediate decoded image into the output image in DPX pixel format. More...
 
CODEC_ERROR PackBayerRowsToDPX0 (PIXEL *input_buffer, size_t input_pitch, PIXEL *output_buffer, size_t output_pitch, DIMENSION width, DIMENSION height)
 Pack the intermediate decoded image into the output image in DPX pixel format. More...
 
CODEC_ERROR PackLowpassBandsBYR4ToDPX0 (void **lowpass_buffer_array, size_t *lowpass_pitch_array, DIMENSION width, DIMENSION height, int shift, IMAGE *output)
 Pack the lowpass bands from the component arrays into a DPX image. More...
 
CODEC_ERROR PackLowpassBandsRG48ToDPX0 (void **lowpass_buffer_array, size_t *lowpass_pitch_array, DIMENSION width, DIMENSION height, int shift, IMAGE *output)
 Pack the lowpass bands from the component arrays into a DPX image. More...
 
CODEC_ERROR PackLowpassBandsDPX0ToDPX0 (void **lowpass_buffer_array, size_t *lowpass_pitch_array, DIMENSION width, DIMENSION height, int shift, IMAGE *output)
 Pack the lowpass bands from the component arrays into a DPX image. More...
 
CODEC_ERROR PackLowpassBandsToDPX0 (void **lowpass_buffer_array, size_t *lowpass_pitch_array, DIMENSION width, DIMENSION height, PIXEL_FORMAT format, int shift, IMAGE *output)
 Pack lowpass bands from a set of wavelets into an image in DPX0 format.
 
CODEC_ERROR DPX_SetByteSwapFlag ()
 Prepare to write a DPX file. More...
 
CODEC_ERROR DPX_WriteImage (const IMAGE *image, const char *pathname)
 Write an image to the specified file in DPX format.
 

Detailed Description

Basic routines for reading and writing images to a DPX file.

This module is not part of the codec, but is provided for use by programs that test the codec and read or write test image to a file in DPX format.

The common 10-bit RGB DPX format is the only pixel format that is supported.

(c) 2013 Society of Motion Picture & Television Engineers LLC and Woodman Labs, Inc. All rights reserved–use subject to compliance with end user license agreement.

Typedef Documentation

◆ File_Information

typedef struct file_information File_Information

File information header.

This header was copied from the Cineon DPX file format specification.

◆ Image_Information

typedef struct _image_information Image_Information

Image information header.

This header was copied from the Cineon DPX file format specification.

◆ Image_Orientation

typedef struct _image_orientation Image_Orientation

Image orientation header.

This header was copied from the Cineon DPX file format specification.

◆ Motion_Picture_Film

typedef struct _motion_picture_film_header Motion_Picture_Film

Motion picture film header.

This header was copied from the Cineon DPX file format specification and is an industry specific header.

◆ Pixel_Aspect_Ratio

typedef struct _pixel_aspect_ratio Pixel_Aspect_Ratio

Data structure for the pixel aspect ratio.

This data structure is not defined in the DPX file specification

◆ Television_Header

typedef struct _television_header Television_Header

Television header.

This header was copied from the Cineon DPX file format specification and is an industry specific header.

Function Documentation

◆ ConvertBufferRowsToDPX0()

CODEC_ERROR ConvertBufferRowsToDPX0 ( PIXEL input_buffer,
size_t  input_pitch,
PIXEL output_buffer,
size_t  output_pitch,
DIMENSION  width,
DIMENSION  height 
)

Convert the intermediate decoded image into the output image in DPX pixel format.

This routine converts the decoded result of a sample that was YUV 4:2:2 encoded into the DPX pixel format of 10-bit RGB packed into a 32-bit word with two zero bits for padding.

Here is the caller graph for this function:

◆ DPX_PixelFormat()

PIXEL_FORMAT DPX_PixelFormat ( uint8_t  descriptor,
uint8_t  bit_size 
)

Translate the DPX pixel format and precision into a codec pixel format.

Note that only the most common 10-bit RGB format is supported.

◆ DPX_SetByteSwapFlag()

CODEC_ERROR DPX_SetByteSwapFlag ( )

Prepare to write a DPX file.

This routine should be called before using any routines that pack images into the pixel format used for DPX files so that the byte swapping flag is set.

◆ Pack10()

uint32_t Pack10 ( uint32_t  R,
uint32_t  G,
uint32_t  B 
)

Pack the color components into a 32-bit word.

The common pixel format used for DPX files packs the three color primaries as 10 bits per component in a 32-bit word with two unused zero bits.

The input values have 16 bits of precision since that is the bit depth used by decoder as its internal pixel format. The packed word is byte swapped.

Here is the caller graph for this function:

◆ PackBayerRowsToDPX0()

CODEC_ERROR PackBayerRowsToDPX0 ( PIXEL input_buffer,
size_t  input_pitch,
PIXEL output_buffer,
size_t  output_pitch,
DIMENSION  width,
DIMENSION  height 
)

Pack the intermediate decoded image into the output image in DPX pixel format.

The only DPX pixel format supported is the most common pixel format of 10-bit RGB packed into a 32-bit word with two zero bits for padding.

Here is the caller graph for this function:

◆ PackBufferRowsToDPX0()

CODEC_ERROR PackBufferRowsToDPX0 ( PIXEL input_buffer,
size_t  input_pitch,
PIXEL output_buffer,
size_t  output_pitch,
DIMENSION  width,
DIMENSION  height 
)

Pack the intermediate decoded image into the output image in DPX pixel format.

The only DPX pixel format supported is the most common pixel format of 10-bit RGB packed into a 32-bit word with two zero bits for padding.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PackLowpassBandsBYR4ToDPX0()

CODEC_ERROR PackLowpassBandsBYR4ToDPX0 ( void **  lowpass_buffer_array,
size_t *  lowpass_pitch_array,
DIMENSION  width,
DIMENSION  height,
int  shift,
IMAGE output 
)

Pack the lowpass bands from the component arrays into a DPX image.

This routine assumes that the component arrays correspond to an input image with the BYR4 pixel format.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PackLowpassBandsDPX0ToDPX0()

CODEC_ERROR PackLowpassBandsDPX0ToDPX0 ( void **  lowpass_buffer_array,
size_t *  lowpass_pitch_array,
DIMENSION  width,
DIMENSION  height,
int  shift,
IMAGE output 
)

Pack the lowpass bands from the component arrays into a DPX image.

This routine assumes that the component arrays correspond to an input image with the DPX0 pixel format.

Here is the call graph for this function:

◆ PackLowpassBandsRG48ToDPX0()

CODEC_ERROR PackLowpassBandsRG48ToDPX0 ( void **  lowpass_buffer_array,
size_t *  lowpass_pitch_array,
DIMENSION  width,
DIMENSION  height,
int  shift,
IMAGE output 
)

Pack the lowpass bands from the component arrays into a DPX image.

This routine assumes that the component arrays correspond to an input image with the RG48 pixel format.

Here is the call graph for this function: