35 header->image_extension = 0;
38 header->data_min_found = 0;
39 header->data_max_found = 0;
61 for (
i = 0;
i < 8 && ptr8[
i] !=
' ';
i++) {
68 while (
i < 80 && ptr8[
i] ==
' ') {
75 if (ptr8[
i-1] ==
'\'') {
76 for (;
i < 80 && ptr8[
i] !=
'\'';
i++) {
80 }
else if (ptr8[
i-1] ==
'(') {
81 for (;
i < 80 && ptr8[
i] !=
')';
i++) {
86 for (;
i < 80 && ptr8[
i] !=
' ' && ptr8[
i] !=
'/';
i++) {
96 #define CHECK_KEYWORD(key) \
97 if (strcmp(keyword, key)) { \
98 av_log(avcl, AV_LOG_ERROR, "expected %s keyword, found %s = %s\n", key, keyword, value); \
99 return AVERROR_INVALIDDATA; \
102 #define CHECK_VALUE(key, val) \
103 if (sscanf(value, "%d", &header->val) != 1) { \
104 av_log(avcl, AV_LOG_ERROR, "invalid value of %s keyword, %s = %s\n", key, keyword, value); \
105 return AVERROR_INVALIDDATA; \
113 char keyword[10],
value[72],
c;
120 if (
value[0] ==
'F') {
122 }
else if (
value[0] !=
'T') {
132 if (!strcmp(
value,
"'IMAGE '")) {
133 header->image_extension = 1;
146 case 64:
case -64:
break;
168 ret = sscanf(keyword,
"NAXIS%d", &dim_no);
169 if (ret != 1 || dim_no !=
header->naxis_index + 1) {
186 if (!strcmp(keyword,
"BLANK") && sscanf(
value,
"%"SCNd64
"", &t) == 1) {
189 }
else if (!strcmp(keyword,
"BSCALE") && sscanf(
value,
"%lf", &d) == 1) {
193 }
else if (!strcmp(keyword,
"BZERO") && sscanf(
value,
"%lf", &d) == 1) {
195 }
else if (!strcmp(keyword,
"CTYPE3") && !strncmp(
value,
"'RGB", 4)) {
197 }
else if (!strcmp(keyword,
"DATAMAX") && sscanf(
value,
"%lf", &d) == 1) {
198 header->data_max_found = 1;
200 }
else if (!strcmp(keyword,
"DATAMIN") && sscanf(
value,
"%lf", &d) == 1) {
201 header->data_min_found = 1;
203 }
else if (!strcmp(keyword,
"END")) {
205 }
else if (!strcmp(keyword,
"GROUPS") && sscanf(
value,
"%c", &
c) == 1) {
207 }
else if (!strcmp(keyword,
"GCOUNT") && sscanf(
value,
"%"SCNd64
"", &t) == 1) {
208 if (t < 0 || t > INT_MAX)
211 }
else if (!strcmp(keyword,
"PCOUNT") && sscanf(
value,
"%"SCNd64
"", &t) == 1) {
212 if (t < 0 || t > INT_MAX)
Libavcodec external API header.
#define CHECK_VALUE(key, val)
int avpriv_fits_header_init(FITSHeader *header, FITSHeaderState state)
Initialize a single header line.
static int read_keyword_value(const uint8_t *ptr8, char *keyword, char *value)
Extract keyword and value from a header line (80 bytes) and store them in keyword and value strings r...
#define CHECK_KEYWORD(key)
int avpriv_fits_header_parse_line(void *avcl, FITSHeader *header, const uint8_t line[80], AVDictionary ***metadata)
Parse a single header line.
static int dict_set_if_not_null(AVDictionary ***metadata, char *keyword, char *value)
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)
Set the given entry in *pm, overwriting an existing entry.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define AV_LOG_WARNING
Something somehow does not look correct.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static const uint8_t header[24]