[FFmpeg-devel] [PATCH] avcodec/exif: Move tag_list out of header
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Sun Jun 12 21:46:24 EEST 2022
It is only used by exif.c (and e.g. EXIF_TAG_NAME_LENGTH
is an implementation detail anyway).
Also remove the sentinel, as it is used in conjunction
with FF_ARRAY_ELEMS.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
---
libavcodec/exif.c | 127 ++++++++++++++++++++++++++++++++++++++++++++
libavcodec/exif.h | 130 ----------------------------------------------
2 files changed, 127 insertions(+), 130 deletions(-)
diff --git a/libavcodec/exif.c b/libavcodec/exif.c
index 9485b24b8e..959d114d09 100644
--- a/libavcodec/exif.c
+++ b/libavcodec/exif.c
@@ -28,6 +28,133 @@
#include "exif.h"
#include "tiff_common.h"
+#define EXIF_TAG_NAME_LENGTH 32
+
+struct exif_tag {
+ char name[EXIF_TAG_NAME_LENGTH];
+ uint16_t id;
+};
+
+static const struct exif_tag tag_list[] = { // JEITA CP-3451 EXIF specification:
+ {"GPSVersionID", 0x00}, // <- Table 12 GPS Attribute Information
+ {"GPSLatitudeRef", 0x01},
+ {"GPSLatitude", 0x02},
+ {"GPSLongitudeRef", 0x03},
+ {"GPSLongitude", 0x04},
+ {"GPSAltitudeRef", 0x05},
+ {"GPSAltitude", 0x06},
+ {"GPSTimeStamp", 0x07},
+ {"GPSSatellites", 0x08},
+ {"GPSStatus", 0x09},
+ {"GPSMeasureMode", 0x0A},
+ {"GPSDOP", 0x0B},
+ {"GPSSpeedRef", 0x0C},
+ {"GPSSpeed", 0x0D},
+ {"GPSTrackRef", 0x0E},
+ {"GPSTrack", 0x0F},
+ {"GPSImgDirectionRef", 0x10},
+ {"GPSImgDirection", 0x11},
+ {"GPSMapDatum", 0x12},
+ {"GPSDestLatitudeRef", 0x13},
+ {"GPSDestLatitude", 0x14},
+ {"GPSDestLongitudeRef", 0x15},
+ {"GPSDestLongitude", 0x16},
+ {"GPSDestBearingRef", 0x17},
+ {"GPSDestBearing", 0x18},
+ {"GPSDestDistanceRef", 0x19},
+ {"GPSDestDistance", 0x1A},
+ {"GPSProcessingMethod", 0x1B},
+ {"GPSAreaInformation", 0x1C},
+ {"GPSDateStamp", 0x1D},
+ {"GPSDifferential", 0x1E},
+ {"ImageWidth", 0x100}, // <- Table 3 TIFF Rev. 6.0 Attribute Information Used in Exif
+ {"ImageLength", 0x101},
+ {"BitsPerSample", 0x102},
+ {"Compression", 0x103},
+ {"PhotometricInterpretation", 0x106},
+ {"Orientation", 0x112},
+ {"SamplesPerPixel", 0x115},
+ {"PlanarConfiguration", 0x11C},
+ {"YCbCrSubSampling", 0x212},
+ {"YCbCrPositioning", 0x213},
+ {"XResolution", 0x11A},
+ {"YResolution", 0x11B},
+ {"ResolutionUnit", 0x128},
+ {"StripOffsets", 0x111},
+ {"RowsPerStrip", 0x116},
+ {"StripByteCounts", 0x117},
+ {"JPEGInterchangeFormat", 0x201},
+ {"JPEGInterchangeFormatLength",0x202},
+ {"TransferFunction", 0x12D},
+ {"WhitePoint", 0x13E},
+ {"PrimaryChromaticities", 0x13F},
+ {"YCbCrCoefficients", 0x211},
+ {"ReferenceBlackWhite", 0x214},
+ {"DateTime", 0x132},
+ {"ImageDescription", 0x10E},
+ {"Make", 0x10F},
+ {"Model", 0x110},
+ {"Software", 0x131},
+ {"Artist", 0x13B},
+ {"Copyright", 0x8298},
+ {"ExifVersion", 0x9000}, // <- Table 4 Exif IFD Attribute Information (1)
+ {"FlashpixVersion", 0xA000},
+ {"ColorSpace", 0xA001},
+ {"ComponentsConfiguration", 0x9101},
+ {"CompressedBitsPerPixel", 0x9102},
+ {"PixelXDimension", 0xA002},
+ {"PixelYDimension", 0xA003},
+ {"MakerNote", 0x927C},
+ {"UserComment", 0x9286},
+ {"RelatedSoundFile", 0xA004},
+ {"DateTimeOriginal", 0x9003},
+ {"DateTimeDigitized", 0x9004},
+ {"SubSecTime", 0x9290},
+ {"SubSecTimeOriginal", 0x9291},
+ {"SubSecTimeDigitized", 0x9292},
+ {"ImageUniqueID", 0xA420},
+ {"ExposureTime", 0x829A}, // <- Table 5 Exif IFD Attribute Information (2)
+ {"FNumber", 0x829D},
+ {"ExposureProgram", 0x8822},
+ {"SpectralSensitivity", 0x8824},
+ {"ISOSpeedRatings", 0x8827},
+ {"OECF", 0x8828},
+ {"ShutterSpeedValue", 0x9201},
+ {"ApertureValue", 0x9202},
+ {"BrightnessValue", 0x9203},
+ {"ExposureBiasValue", 0x9204},
+ {"MaxApertureValue", 0x9205},
+ {"SubjectDistance", 0x9206},
+ {"MeteringMode", 0x9207},
+ {"LightSource", 0x9208},
+ {"Flash", 0x9209},
+ {"FocalLength", 0x920A},
+ {"SubjectArea", 0x9214},
+ {"FlashEnergy", 0xA20B},
+ {"SpatialFrequencyResponse", 0xA20C},
+ {"FocalPlaneXResolution", 0xA20E},
+ {"FocalPlaneYResolution", 0xA20F},
+ {"FocalPlaneResolutionUnit", 0xA210},
+ {"SubjectLocation", 0xA214},
+ {"ExposureIndex", 0xA215},
+ {"SensingMethod", 0xA217},
+ {"FileSource", 0xA300},
+ {"SceneType", 0xA301},
+ {"CFAPattern", 0xA302},
+ {"CustomRendered", 0xA401},
+ {"ExposureMode", 0xA402},
+ {"WhiteBalance", 0xA403},
+ {"DigitalZoomRatio", 0xA404},
+ {"FocalLengthIn35mmFilm", 0xA405},
+ {"SceneCaptureType", 0xA406},
+ {"GainControl", 0xA407},
+ {"Contrast", 0xA408},
+ {"Saturation", 0xA409},
+ {"Sharpness", 0xA40A},
+ {"DeviceSettingDescription", 0xA40B},
+ {"SubjectDistanceRange", 0xA40C}
+// {"InteroperabilityIndex", 0x1}, // <- Table 13 Interoperability IFD Attribute Information
+};
static const char *exif_get_tag_name(uint16_t id)
{
diff --git a/libavcodec/exif.h b/libavcodec/exif.h
index ffacba7e66..f70d21391a 100644
--- a/libavcodec/exif.h
+++ b/libavcodec/exif.h
@@ -32,136 +32,6 @@
#include "libavutil/dict.h"
#include "bytestream.h"
-#define EXIF_MAX_IFD_RECURSION 2
-#define EXIF_TAG_NAME_LENGTH 32
-
-struct exif_tag {
- char name[EXIF_TAG_NAME_LENGTH];
- uint16_t id;
-};
-
-static const struct exif_tag tag_list[] = { // JEITA CP-3451 EXIF specification:
- {"GPSVersionID", 0x00}, // <- Table 12 GPS Attribute Information
- {"GPSLatitudeRef", 0x01},
- {"GPSLatitude", 0x02},
- {"GPSLongitudeRef", 0x03},
- {"GPSLongitude", 0x04},
- {"GPSAltitudeRef", 0x05},
- {"GPSAltitude", 0x06},
- {"GPSTimeStamp", 0x07},
- {"GPSSatellites", 0x08},
- {"GPSStatus", 0x09},
- {"GPSMeasureMode", 0x0A},
- {"GPSDOP", 0x0B},
- {"GPSSpeedRef", 0x0C},
- {"GPSSpeed", 0x0D},
- {"GPSTrackRef", 0x0E},
- {"GPSTrack", 0x0F},
- {"GPSImgDirectionRef", 0x10},
- {"GPSImgDirection", 0x11},
- {"GPSMapDatum", 0x12},
- {"GPSDestLatitudeRef", 0x13},
- {"GPSDestLatitude", 0x14},
- {"GPSDestLongitudeRef", 0x15},
- {"GPSDestLongitude", 0x16},
- {"GPSDestBearingRef", 0x17},
- {"GPSDestBearing", 0x18},
- {"GPSDestDistanceRef", 0x19},
- {"GPSDestDistance", 0x1A},
- {"GPSProcessingMethod", 0x1B},
- {"GPSAreaInformation", 0x1C},
- {"GPSDateStamp", 0x1D},
- {"GPSDifferential", 0x1E},
- {"ImageWidth", 0x100}, // <- Table 3 TIFF Rev. 6.0 Attribute Information Used in Exif
- {"ImageLength", 0x101},
- {"BitsPerSample", 0x102},
- {"Compression", 0x103},
- {"PhotometricInterpretation", 0x106},
- {"Orientation", 0x112},
- {"SamplesPerPixel", 0x115},
- {"PlanarConfiguration", 0x11C},
- {"YCbCrSubSampling", 0x212},
- {"YCbCrPositioning", 0x213},
- {"XResolution", 0x11A},
- {"YResolution", 0x11B},
- {"ResolutionUnit", 0x128},
- {"StripOffsets", 0x111},
- {"RowsPerStrip", 0x116},
- {"StripByteCounts", 0x117},
- {"JPEGInterchangeFormat", 0x201},
- {"JPEGInterchangeFormatLength",0x202},
- {"TransferFunction", 0x12D},
- {"WhitePoint", 0x13E},
- {"PrimaryChromaticities", 0x13F},
- {"YCbCrCoefficients", 0x211},
- {"ReferenceBlackWhite", 0x214},
- {"DateTime", 0x132},
- {"ImageDescription", 0x10E},
- {"Make", 0x10F},
- {"Model", 0x110},
- {"Software", 0x131},
- {"Artist", 0x13B},
- {"Copyright", 0x8298},
- {"ExifVersion", 0x9000}, // <- Table 4 Exif IFD Attribute Information (1)
- {"FlashpixVersion", 0xA000},
- {"ColorSpace", 0xA001},
- {"ComponentsConfiguration", 0x9101},
- {"CompressedBitsPerPixel", 0x9102},
- {"PixelXDimension", 0xA002},
- {"PixelYDimension", 0xA003},
- {"MakerNote", 0x927C},
- {"UserComment", 0x9286},
- {"RelatedSoundFile", 0xA004},
- {"DateTimeOriginal", 0x9003},
- {"DateTimeDigitized", 0x9004},
- {"SubSecTime", 0x9290},
- {"SubSecTimeOriginal", 0x9291},
- {"SubSecTimeDigitized", 0x9292},
- {"ImageUniqueID", 0xA420},
- {"ExposureTime", 0x829A}, // <- Table 5 Exif IFD Attribute Information (2)
- {"FNumber", 0x829D},
- {"ExposureProgram", 0x8822},
- {"SpectralSensitivity", 0x8824},
- {"ISOSpeedRatings", 0x8827},
- {"OECF", 0x8828},
- {"ShutterSpeedValue", 0x9201},
- {"ApertureValue", 0x9202},
- {"BrightnessValue", 0x9203},
- {"ExposureBiasValue", 0x9204},
- {"MaxApertureValue", 0x9205},
- {"SubjectDistance", 0x9206},
- {"MeteringMode", 0x9207},
- {"LightSource", 0x9208},
- {"Flash", 0x9209},
- {"FocalLength", 0x920A},
- {"SubjectArea", 0x9214},
- {"FlashEnergy", 0xA20B},
- {"SpatialFrequencyResponse", 0xA20C},
- {"FocalPlaneXResolution", 0xA20E},
- {"FocalPlaneYResolution", 0xA20F},
- {"FocalPlaneResolutionUnit", 0xA210},
- {"SubjectLocation", 0xA214},
- {"ExposureIndex", 0xA215},
- {"SensingMethod", 0xA217},
- {"FileSource", 0xA300},
- {"SceneType", 0xA301},
- {"CFAPattern", 0xA302},
- {"CustomRendered", 0xA401},
- {"ExposureMode", 0xA402},
- {"WhiteBalance", 0xA403},
- {"DigitalZoomRatio", 0xA404},
- {"FocalLengthIn35mmFilm", 0xA405},
- {"SceneCaptureType", 0xA406},
- {"GainControl", 0xA407},
- {"Contrast", 0xA408},
- {"Saturation", 0xA409},
- {"Sharpness", 0xA40A},
- {"DeviceSettingDescription", 0xA40B},
- {"SubjectDistanceRange", 0xA40C}
-// {"InteroperabilityIndex", 0x1}, // <- Table 13 Interoperability IFD Attribute Information
-// {"", 0x0}
-};
-
/** Recursively decodes all IFD's and
* adds included TAGS into the metadata dictionary. */
int avpriv_exif_decode_ifd(void *logctx, const uint8_t *buf, int size,
--
2.34.1
More information about the ffmpeg-devel
mailing list