Commit fc5299e9 authored by Carl Eugen Hoyos's avatar Carl Eugen Hoyos

Allow setting resolution in DPI for Tiff.

parent edae3dbf
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#if CONFIG_ZLIB #if CONFIG_ZLIB
#include <zlib.h> #include <zlib.h>
#endif #endif
#include "libavutil/opt.h"
#include "bytestream.h" #include "bytestream.h"
#include "tiff.h" #include "tiff.h"
#include "rle.h" #include "rle.h"
...@@ -61,6 +62,7 @@ typedef struct TiffEncoderContext { ...@@ -61,6 +62,7 @@ typedef struct TiffEncoderContext {
int buf_size; ///< buffer size int buf_size; ///< buffer size
uint16_t subsampling[2]; ///< YUV subsampling factors uint16_t subsampling[2]; ///< YUV subsampling factors
struct LZWEncodeState *lzws; ///< LZW Encode state struct LZWEncodeState *lzws; ///< LZW Encode state
uint32_t dpi; ///< image resolution in DPI
} TiffEncoderContext; } TiffEncoderContext;
...@@ -210,7 +212,7 @@ static int encode_frame(AVCodecContext * avctx, unsigned char *buf, ...@@ -210,7 +212,7 @@ static int encode_frame(AVCodecContext * avctx, unsigned char *buf,
uint32_t *strip_sizes = NULL; uint32_t *strip_sizes = NULL;
uint32_t *strip_offsets = NULL; uint32_t *strip_offsets = NULL;
int bytes_per_row; int bytes_per_row;
uint32_t res[2] = { 72, 1 }; // image resolution (72/1) uint32_t res[2] = { s->dpi, 1 }; // image resolution (72/1)
uint16_t bpp_tab[] = { 8, 8, 8, 8 }; uint16_t bpp_tab[] = { 8, 8, 8, 8 };
int ret = -1; int ret = -1;
int is_yuv = 0; int is_yuv = 0;
...@@ -441,6 +443,12 @@ fail: ...@@ -441,6 +443,12 @@ fail:
return ret; return ret;
} }
static const AVOption options[]={
{"dpi", "set the image resolution (in dpi)", offsetof(TiffEncoderContext, dpi), FF_OPT_TYPE_INT, {.dbl = 72}, 1, 0x10000, AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_ENCODING_PARAM},
{NULL}
};
static const AVClass class = { "tiff", av_default_item_name, options, LIBAVUTIL_VERSION_INT };
AVCodec ff_tiff_encoder = { AVCodec ff_tiff_encoder = {
.name = "tiff", .name = "tiff",
.type = AVMEDIA_TYPE_VIDEO, .type = AVMEDIA_TYPE_VIDEO,
...@@ -455,4 +463,5 @@ AVCodec ff_tiff_encoder = { ...@@ -455,4 +463,5 @@ AVCodec ff_tiff_encoder = {
PIX_FMT_YUV411P, PIX_FMT_YUV411P,
PIX_FMT_NONE}, PIX_FMT_NONE},
.long_name = NULL_IF_CONFIG_SMALL("TIFF image"), .long_name = NULL_IF_CONFIG_SMALL("TIFF image"),
.priv_class= &class,
}; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment