tiffenc.c File Reference

TIFF image encoder. More...

#include "libavutil/log.h"
#include "libavutil/opt.h"
#include "avcodec.h"
#include "bytestream.h"
#include "tiff.h"
#include "rle.h"
#include "lzw.h"
#include "put_bits.h"

Go to the source code of this file.

Data Structures

struct  TiffEncoderContext

Macros

#define TIFF_MAX_ENTRY   32
#define OFFSET(x)   offsetof(TiffEncoderContext, x)
#define VE   AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM

Typedefs

typedef struct TiffEncoderContext TiffEncoderContext

Functions

static int check_size (TiffEncoderContext *s, uint64_t need)
 Check free space in buffer.
static void tnput (uint8_t **p, int n, const uint8_t *val, enum TiffTypes type, int flip)
 Put n values to buffer.
static void add_entry (TiffEncoderContext *s, enum TiffTags tag, enum TiffTypes type, int count, const void *ptr_val)
 Add entry to directory in tiff header.
static void add_entry1 (TiffEncoderContext *s, enum TiffTags tag, enum TiffTypes type, int val)
static int encode_strip (TiffEncoderContext *s, const int8_t *src, uint8_t *dst, int n, int compr)
 Encode one strip in tiff file.
static void pack_yuv (TiffEncoderContext *s, uint8_t *dst, int lnum)
static int encode_frame (AVCodecContext *avctx, unsigned char *buf, int buf_size, void *data)

Variables

static const uint8_t type_sizes2 [6]
 sizes of various TIFF field types (string size = 1)
static const AVOption options []
static const AVClass tiffenc_class
AVCodec ff_tiff_encoder

Detailed Description

TIFF image encoder.

Author
Bartlomiej Wolowiec

Definition in file tiffenc.c.

Macro Definition Documentation

#define OFFSET (   x)    offsetof(TiffEncoderContext, x)

Definition at line 470 of file tiffenc.c.

#define TIFF_MAX_ENTRY   32

Definition at line 41 of file tiffenc.c.

Referenced by add_entry().

Definition at line 471 of file tiffenc.c.

Typedef Documentation

Function Documentation

static void add_entry ( TiffEncoderContext s,
enum TiffTags  tag,
enum TiffTypes  type,
int  count,
const void ptr_val 
)
static

Add entry to directory in tiff header.

Parameters
sTiff context
tagTag that identifies the entry
typeEntry type
countThe number of values
ptr_valPointer to values

Definition at line 115 of file tiffenc.c.

Referenced by add_entry1().

static void add_entry1 ( TiffEncoderContext s,
enum TiffTags  tag,
enum TiffTypes  type,
int  val 
)
static

Definition at line 138 of file tiffenc.c.

static int check_size ( TiffEncoderContext s,
uint64_t  need 
)
inlinestatic

Check free space in buffer.

Parameters
sTiff context
needNeeded bytes
Returns
0 - ok, 1 - no free space

Definition at line 77 of file tiffenc.c.

Referenced by add_entry(), and encode_strip().

static int encode_frame ( AVCodecContext avctx,
unsigned char *  buf,
int  buf_size,
void data 
)
static

according to CCIR Recommendation 601.1

Definition at line 203 of file tiffenc.c.

static int encode_strip ( TiffEncoderContext s,
const int8_t *  src,
uint8_t *  dst,
int  n,
int  compr 
)
static

Encode one strip in tiff file.

Parameters
sTiff context
srcInput buffer
dstOutput buffer
nSize of input buffer
comprCompression method
Returns
Number of output bytes. If an output error is encountered, -1 returned

Definition at line 155 of file tiffenc.c.

static void pack_yuv ( TiffEncoderContext s,
uint8_t *  dst,
int  lnum 
)
static

Definition at line 186 of file tiffenc.c.

static void tnput ( uint8_t **  p,
int  n,
const uint8_t *  val,
enum TiffTypes  type,
int  flip 
)
static

Put n values to buffer.

Parameters
pPointer to pointer to output buffer
nNumber of values
valPointer to values
typeType of values
flip=0 - normal copy, >0 - flip

Definition at line 96 of file tiffenc.c.

Referenced by add_entry().

Variable Documentation

AVCodec ff_tiff_encoder
Initial value:
{
.name = "tiff",
.priv_data_size = sizeof(TiffEncoderContext),
.encode = encode_frame,
.pix_fmts =
.long_name = NULL_IF_CONFIG_SMALL("TIFF image"),
.priv_class = &tiffenc_class,
}

Definition at line 490 of file tiffenc.c.

const AVOption options[]
static
Initial value:
{
{ "compression_algo", NULL, OFFSET(compr), AV_OPT_TYPE_INT, {TIFF_PACKBITS}, TIFF_RAW, TIFF_DEFLATE, VE, "compression_algo" },
{ "packbits", NULL, 0, AV_OPT_TYPE_CONST, {TIFF_PACKBITS}, 0, 0, VE, "compression_algo" },
{ "raw", NULL, 0, AV_OPT_TYPE_CONST, {TIFF_RAW}, 0, 0, VE, "compression_algo" },
{ "lzw", NULL, 0, AV_OPT_TYPE_CONST, {TIFF_LZW}, 0, 0, VE, "compression_algo" },
{ NULL },
}

Definition at line 472 of file tiffenc.c.

const AVClass tiffenc_class
static
Initial value:
{
.class_name = "TIFF encoder",
.item_name = av_default_item_name,
.option = options,
}

Definition at line 483 of file tiffenc.c.

const uint8_t type_sizes2[6]
static
Initial value:
{
0, 1, 1, 2, 4, 8
}

sizes of various TIFF field types (string size = 1)

Definition at line 44 of file tiffenc.c.

Referenced by add_entry(), and tnput().