dvbsubdec.c File Reference
#include "avcodec.h"
#include "dsputil.h"
#include "get_bits.h"
#include "bytestream.h"
#include "libavutil/colorspace.h"
Include dependency graph for dvbsubdec.c:

Go to the source code of this file.

Data Structures

struct  DVBSubCLUT
 
struct  DVBSubObjectDisplay
 
struct  DVBSubObject
 
struct  DVBSubRegionDisplay
 
struct  DVBSubRegion
 
struct  DVBSubDisplayDefinition
 
struct  DVBSubContext
 

Macros

#define DVBSUB_PAGE_SEGMENT   0x10
 
#define DVBSUB_REGION_SEGMENT   0x11
 
#define DVBSUB_CLUT_SEGMENT   0x12
 
#define DVBSUB_OBJECT_SEGMENT   0x13
 
#define DVBSUB_DISPLAYDEFINITION_SEGMENT   0x14
 
#define DVBSUB_DISPLAY_SEGMENT   0x80
 
#define cm   (ff_cropTbl + MAX_NEG_CROP)
 
#define RGBA(r, g, b, a)   (((unsigned)(a) << 24) | ((r) << 16) | ((g) << 8) | (b))
 

Typedefs

typedef struct DVBSubCLUT DVBSubCLUT
 
typedef struct DVBSubObjectDisplay DVBSubObjectDisplay
 
typedef struct DVBSubObject DVBSubObject
 
typedef struct DVBSubRegionDisplay DVBSubRegionDisplay
 
typedef struct DVBSubRegion DVBSubRegion
 
typedef struct DVBSubDisplayDefinition DVBSubDisplayDefinition
 
typedef struct DVBSubContext DVBSubContext
 

Functions

static DVBSubObjectget_object (DVBSubContext *ctx, int object_id)
 
static DVBSubCLUTget_clut (DVBSubContext *ctx, int clut_id)
 
static DVBSubRegionget_region (DVBSubContext *ctx, int region_id)
 
static void delete_region_display_list (DVBSubContext *ctx, DVBSubRegion *region)
 
static void delete_cluts (DVBSubContext *ctx)
 
static void delete_objects (DVBSubContext *ctx)
 
static void delete_regions (DVBSubContext *ctx)
 
static av_cold int dvbsub_init_decoder (AVCodecContext *avctx)
 
static av_cold int dvbsub_close_decoder (AVCodecContext *avctx)
 
static int dvbsub_read_2bit_string (uint8_t *destbuf, int dbuf_len, const uint8_t **srcbuf, int buf_size, int non_mod, uint8_t *map_table, int x_pos)
 
static int dvbsub_read_4bit_string (uint8_t *destbuf, int dbuf_len, const uint8_t **srcbuf, int buf_size, int non_mod, uint8_t *map_table, int x_pos)
 
static int dvbsub_read_8bit_string (uint8_t *destbuf, int dbuf_len, const uint8_t **srcbuf, int buf_size, int non_mod, uint8_t *map_table, int x_pos)
 
static void dvbsub_parse_pixel_data_block (AVCodecContext *avctx, DVBSubObjectDisplay *display, const uint8_t *buf, int buf_size, int top_bottom, int non_mod)
 
static void dvbsub_parse_object_segment (AVCodecContext *avctx, const uint8_t *buf, int buf_size)
 
static void dvbsub_parse_clut_segment (AVCodecContext *avctx, const uint8_t *buf, int buf_size)
 
static void dvbsub_parse_region_segment (AVCodecContext *avctx, const uint8_t *buf, int buf_size)
 
static void dvbsub_parse_page_segment (AVCodecContext *avctx, const uint8_t *buf, int buf_size)
 
static void dvbsub_parse_display_definition_segment (AVCodecContext *avctx, const uint8_t *buf, int buf_size)
 
static int dvbsub_display_end_segment (AVCodecContext *avctx, const uint8_t *buf, int buf_size, AVSubtitle *sub)
 
static int dvbsub_decode (AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt)
 

Variables

static DVBSubCLUT default_clut
 
AVCodec ff_dvbsub_decoder
 

Macro Definition Documentation

#define DVBSUB_CLUT_SEGMENT   0x12

Definition at line 29 of file dvbsubdec.c.

Referenced by dvbsub_decode().

#define DVBSUB_DISPLAY_SEGMENT   0x80

Definition at line 32 of file dvbsubdec.c.

Referenced by dvbsub_decode().

#define DVBSUB_DISPLAYDEFINITION_SEGMENT   0x14

Definition at line 31 of file dvbsubdec.c.

Referenced by dvbsub_decode().

#define DVBSUB_OBJECT_SEGMENT   0x13

Definition at line 30 of file dvbsubdec.c.

Referenced by dvbsub_decode().

#define DVBSUB_PAGE_SEGMENT   0x10

Definition at line 27 of file dvbsubdec.c.

Referenced by dvbsub_decode().

#define DVBSUB_REGION_SEGMENT   0x11

Definition at line 28 of file dvbsubdec.c.

Referenced by dvbsub_decode().

#define RGBA (   r,
  g,
  b,
  a 
)    (((unsigned)(a) << 24) | ((r) << 16) | ((g) << 8) | (b))

Typedef Documentation

typedef struct DVBSubCLUT DVBSubCLUT
typedef struct DVBSubContext DVBSubContext
typedef struct DVBSubObject DVBSubObject
typedef struct DVBSubRegion DVBSubRegion

Function Documentation

static void delete_cluts ( DVBSubContext ctx)
static

Definition at line 326 of file dvbsubdec.c.

Referenced by dvbsub_close_decoder(), and dvbsub_parse_page_segment().

static void delete_objects ( DVBSubContext ctx)
static

Definition at line 339 of file dvbsubdec.c.

Referenced by dvbsub_close_decoder(), and dvbsub_parse_page_segment().

static void delete_region_display_list ( DVBSubContext ctx,
DVBSubRegion region 
)
static

Definition at line 280 of file dvbsubdec.c.

Referenced by delete_regions(), and dvbsub_parse_region_segment().

static void delete_regions ( DVBSubContext ctx)
static

Definition at line 352 of file dvbsubdec.c.

Referenced by dvbsub_close_decoder(), and dvbsub_parse_page_segment().

static av_cold int dvbsub_close_decoder ( AVCodecContext avctx)
static

Definition at line 447 of file dvbsubdec.c.

static int dvbsub_decode ( AVCodecContext avctx,
void data,
int *  data_size,
AVPacket avpkt 
)
static

Definition at line 1446 of file dvbsubdec.c.

static int dvbsub_display_end_segment ( AVCodecContext avctx,
const uint8_t *  buf,
int  buf_size,
AVSubtitle sub 
)
static

Definition at line 1362 of file dvbsubdec.c.

Referenced by dvbsub_decode().

static av_cold int dvbsub_init_decoder ( AVCodecContext avctx)
static

Definition at line 368 of file dvbsubdec.c.

static void dvbsub_parse_clut_segment ( AVCodecContext avctx,
const uint8_t *  buf,
int  buf_size 
)
static

Definition at line 936 of file dvbsubdec.c.

Referenced by dvbsub_decode().

static void dvbsub_parse_display_definition_segment ( AVCodecContext avctx,
const uint8_t *  buf,
int  buf_size 
)
static

Definition at line 1318 of file dvbsubdec.c.

Referenced by dvbsub_decode().

static void dvbsub_parse_object_segment ( AVCodecContext avctx,
const uint8_t *  buf,
int  buf_size 
)
static

Definition at line 877 of file dvbsubdec.c.

Referenced by dvbsub_decode().

static void dvbsub_parse_page_segment ( AVCodecContext avctx,
const uint8_t *  buf,
int  buf_size 
)
static

Definition at line 1143 of file dvbsubdec.c.

Referenced by dvbsub_decode().

static void dvbsub_parse_pixel_data_block ( AVCodecContext avctx,
DVBSubObjectDisplay display,
const uint8_t *  buf,
int  buf_size,
int  top_bottom,
int  non_mod 
)
static

Definition at line 761 of file dvbsubdec.c.

Referenced by dvbsub_parse_object_segment().

static void dvbsub_parse_region_segment ( AVCodecContext avctx,
const uint8_t *  buf,
int  buf_size 
)
static

Definition at line 1027 of file dvbsubdec.c.

Referenced by dvbsub_decode().

static int dvbsub_read_2bit_string ( uint8_t *  destbuf,
int  dbuf_len,
const uint8_t **  srcbuf,
int  buf_size,
int  non_mod,
uint8_t *  map_table,
int  x_pos 
)
static

Definition at line 470 of file dvbsubdec.c.

Referenced by dvbsub_parse_pixel_data_block().

static int dvbsub_read_4bit_string ( uint8_t *  destbuf,
int  dbuf_len,
const uint8_t **  srcbuf,
int  buf_size,
int  non_mod,
uint8_t *  map_table,
int  x_pos 
)
static

Definition at line 577 of file dvbsubdec.c.

Referenced by dvbsub_parse_pixel_data_block().

static int dvbsub_read_8bit_string ( uint8_t *  destbuf,
int  dbuf_len,
const uint8_t **  srcbuf,
int  buf_size,
int  non_mod,
uint8_t *  map_table,
int  x_pos 
)
static

Definition at line 700 of file dvbsubdec.c.

Referenced by dvbsub_parse_pixel_data_block().

static DVBSubCLUT* get_clut ( DVBSubContext ctx,
int  clut_id 
)
static
static DVBSubObject* get_object ( DVBSubContext ctx,
int  object_id 
)
static
static DVBSubRegion* get_region ( DVBSubContext ctx,
int  region_id 
)
static

Variable Documentation

DVBSubCLUT default_clut
static

Definition at line 166 of file dvbsubdec.c.

Referenced by dvbsub_display_end_segment(), and dvbsub_parse_page_segment().

AVCodec ff_dvbsub_decoder
Initial value:
= {
.name = "dvbsub",
.priv_data_size = sizeof(DVBSubContext),
.long_name = NULL_IF_CONFIG_SMALL("DVB subtitles"),
}
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static void close(AVCodecParserContext *s)
Definition: h264_parser.c:375
static av_cold int dvbsub_init_decoder(AVCodecContext *avctx)
Definition: dvbsubdec.c:368
struct DVBSubContext DVBSubContext
static int dvbsub_decode(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt)
Definition: dvbsubdec.c:1446
static int decode(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
Definition: crystalhd.c:868
static av_cold int dvbsub_close_decoder(AVCodecContext *avctx)
Definition: dvbsubdec.c:447

Definition at line 1537 of file dvbsubdec.c.