Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dpxlib.h « cineon « intern « imbuf « blender « source - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: d8ed5dc6f67fe2bee638a9d0cf50424671b2761f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/* SPDX-License-Identifier: GPL-2.0-or-later
 * Copyright 1999-2002 David Hodson <hodsond@acm.org>. */

/** \file
 * \ingroup imbcineon
 *
 * DPX image file format library definitions.
 */

#pragma once

#include <math.h>

#include "logImageCore.h"

#ifdef __cplusplus
extern "C" {
#endif

#define DPX_FILE_MAGIC 0x53445058
#define DPX_UNDEFINED_U8 0xFF
#define DPX_UNDEFINED_U16 0xFFFF
#define DPX_UNDEFINED_U32 0xFFFFFFFF
#define DPX_UNDEFINED_R32 NAN
#define IS_DPX_UNDEFINED_R32(x) isnan(x)
#define DPX_UNDEFINED_CHAR 0

typedef struct {
  unsigned int magic_num;
  unsigned int offset;
  char version[8];
  unsigned int file_size;
  unsigned int ditto_key;
  unsigned int gen_hdr_size;
  unsigned int ind_hdr_size;
  unsigned int user_data_size;
  char file_name[100];
  char creation_date[24];
  char creator[100];
  char project[200];
  char copyright[200];
  unsigned int key;
  char reserved[104];
} DpxFileHeader;

typedef struct {
  unsigned int data_sign;
  unsigned int ref_low_data;
  float ref_low_quantity;
  unsigned int ref_high_data;
  float ref_high_quantity;
  unsigned char descriptor;
  unsigned char transfer;
  unsigned char colorimetric;
  unsigned char bits_per_sample;
  unsigned short packing;
  unsigned short encoding;
  unsigned int data_offset;
  unsigned int line_padding;
  unsigned int element_padding;
  char description[32];
} DpxElementHeader;

typedef struct {
  unsigned short orientation;
  unsigned short elements_per_image;
  unsigned int pixels_per_line;
  unsigned int lines_per_element;
  DpxElementHeader element[8];
  char reserved[52];
} DpxImageHeader;

typedef struct {
  unsigned int x_offset;
  unsigned int y_offset;
  float x_center;
  float y_center;
  unsigned int x_original_size;
  unsigned int y_original_size;
  char file_name[100];
  char creation_time[24];
  char input_device[32];
  char input_serial_number[32];
  unsigned short border_validity[4];
  unsigned int pixel_aspect_ratio[2];
  char reserved[28];
} DpxOrientationHeader;

typedef struct {
  char film_manufacturer_id[2];
  char film_type[2];
  char edge_code_perforation_offset[2];
  char edge_code_prefix[6];
  char edge_code_count[4];
  char film_format[32];
  unsigned int frame_position;
  unsigned int sequence_length;
  unsigned int held_count;
  float frame_rate;
  float shutter_angle;
  char frame_identification[32];
  char slate_info[100];
  char reserved[56];
} DpxFilmHeader;

typedef struct {
  unsigned int time_code;
  unsigned int user_bits;
  unsigned char interlace;
  unsigned char field_number;
  unsigned char video_signal;
  unsigned char padding;
  float horizontal_sample_rate;
  float vertical_sample_rate;
  float frame_rate;
  float time_offset;
  float gamma;
  float black_level;
  float black_gain;
  float breakpoint;
  float white_level;
  float integration_times;
  unsigned char reserved[76];
} DpxTelevisionHeader;

typedef struct {
  DpxFileHeader fileHeader;
  DpxImageHeader imageHeader;
  DpxOrientationHeader orientationHeader;
  DpxFilmHeader filmHeader;
  DpxTelevisionHeader televisionHeader;
} DpxMainHeader;

void dpxSetVerbose(int verbosity);
LogImageFile *dpxOpen(const unsigned char *byteStuff, int fromMemory, size_t bufferSize);
LogImageFile *dpxCreate(const char *filename,
                        int width,
                        int height,
                        int bitsPerSample,
                        int hasAlpha,
                        int isLogarithmic,
                        int referenceWhite,
                        int referenceBlack,
                        float gamma,
                        const char *creator);

#ifdef __cplusplus
}
#endif