xine-lib 1.2.11
Data Structures | Macros | Typedefs | Functions | Variables
spudvb_decoder.c File Reference
#include <time.h>
#include <pthread.h>
#include <errno.h>
#include <xine/xine_internal.h>
#include <xine/spu.h>
#include <xine/osd.h>
#include "xine-engine/bswap.h"

Data Structures

struct  sparse_array_entry_t
 
struct  sparse_array_t
 
struct  visible_region_t
 
struct  page_t
 
struct  region_t
 
union  clut_union_t
 
struct  dds_t
 
struct  dvbsub_func_t
 
struct  dvb_spu_decoder_s
 

Macros

#define LOG_MODULE   "spudvb"
 
#define MAX_REGIONS   16
 
#define SPU_MAX_WIDTH   1920
 
#define SPU_MAX_HEIGHT   1080
 
#define YUVA(r, g, b, a)   (clut_t) { COMPUTE_V(r, g, b), COMPUTE_U(r, g, b), COMPUTE_V(r, g, b), a }
 
#define GETBIT(s, v1, v2, tr)
 

Typedefs

typedef struct dvb_spu_decoder_s dvb_spu_decoder_t
 

Functions

static void sparse_array_new (sparse_array_t *sa)
 
static void sparse_array_delete (sparse_array_t *sa)
 
static int _sparse_array_find (sparse_array_t *sa, uint32_t key, uint32_t *pos)
 
static void _sparse_array_sort (sparse_array_t *sa)
 
static int sparse_array_set (sparse_array_t *sa, uint32_t key, uint32_t value)
 
static int sparse_array_get (sparse_array_t *sa, uint32_t key, uint32_t *value)
 
static void sparse_array_unset (sparse_array_t *sa, uint32_t key, uint32_t mask)
 
static void reset_clut (dvbsub_func_t *dvbsub)
 
static void update_region (region_t *reg, int region_id, int region_width, int region_height, int fill, int fill_color)
 
static void do_plot (region_t *reg, int x, int y, unsigned char pixel)
 
static void plot (dvbsub_func_t *dvbsub, int r, unsigned int run_length, unsigned char pixel)
 
static const uint8_t * lookup_lut (const dvbsub_func_t *dvbsub, int r)
 
static unsigned char next_datum (dvbsub_func_t *dvbsub, int width)
 
static void decode_2bit_pixel_code_string (dvbsub_func_t *dvbsub, int r, int n)
 
static void decode_4bit_pixel_code_string (dvbsub_func_t *dvbsub, int r, int n)
 
static void decode_8bit_pixel_code_string (dvbsub_func_t *dvbsub, int r, int n)
 
static void set_clut (dvbsub_func_t *dvbsub, int CLUT_id, int CLUT_entry_id, int Y_value, int Cr_value, int Cb_value, int T_value)
 
static void process_CLUT_definition_segment (dvbsub_func_t *dvbsub)
 
static void process_pixel_data_sub_block (dvbsub_func_t *dvbsub, int r, unsigned int pos, int ofs, int n)
 
static void process_page_composition_segment (dvbsub_func_t *dvbsub)
 
static void process_region_composition_segment (dvbsub_func_t *dvbsub)
 
static void process_object_data_segment (dvbsub_func_t *dvbsub)
 
static void process_display_definition_segment (dvbsub_func_t *dvbsub)
 
static void unlock_mutex_cancellation_func (void *mutex_gen)
 
static void _hide_overlays_locked (dvb_spu_decoder_t *this)
 
static void * dvbsub_timer_func (void *this_gen)
 
static void update_osd (dvb_spu_decoder_t *this, region_t *reg)
 
static void downscale_region_image (region_t *reg, unsigned char *dest, int dest_width)
 
static void recalculate_trans (dvb_spu_decoder_t *this)
 
static void draw_subtitles (dvb_spu_decoder_t *this)
 
static void _hide_overlays (dvb_spu_decoder_t *this)
 
static void spudec_decode_data (spu_decoder_t *this_gen, buf_element_t *buf)
 
static void spudec_reset (spu_decoder_t *this_gen)
 
static void spudec_discontinuity (spu_decoder_t *this_gen)
 
static void spudec_dispose_stopped (dvb_spu_decoder_t *this)
 
static void spudec_dispose (spu_decoder_t *this_gen)
 
static spu_decoder_tdvb_spu_class_open_plugin (spu_decoder_class_t *class_gen, xine_stream_t *stream)
 
static void * init_spu_decoder_plugin (xine_t *xine, const void *data)
 

Variables

static const uint32_t supported_types [] = { BUF_SPU_DVB, 0 }
 
static const decoder_info_t spudec_info
 
const plugin_info_t xine_plugin_info[] EXPORTED
 

Macro Definition Documentation

◆ GETBIT

#define GETBIT (   s,
  v1,
  v2,
  tr 
)
Value:
r = s + ((i & 1) ? v1 : 0) + ((i & 0x10) ? v2 : 0); \
g = s + ((i & 2) ? v1 : 0) + ((i & 0x20) ? v2 : 0); \
b = s + ((i & 4) ? v1 : 0) + ((i & 0x40) ? v2 : 0); \
a = tr

◆ LOG_MODULE

#define LOG_MODULE   "spudvb"

◆ MAX_REGIONS

#define MAX_REGIONS   16

◆ SPU_MAX_HEIGHT

#define SPU_MAX_HEIGHT   1080

◆ SPU_MAX_WIDTH

#define SPU_MAX_WIDTH   1920

◆ YUVA

#define YUVA (   r,
  g,
  b,
 
)    (clut_t) { COMPUTE_V(r, g, b), COMPUTE_U(r, g, b), COMPUTE_V(r, g, b), a }

Typedef Documentation

◆ dvb_spu_decoder_t

Function Documentation

◆ _hide_overlays()

static void _hide_overlays ( dvb_spu_decoder_t this)
static

◆ _hide_overlays_locked()

static void _hide_overlays_locked ( dvb_spu_decoder_t this)
static

◆ _sparse_array_find()

static int _sparse_array_find ( sparse_array_t sa,
uint32_t  key,
uint32_t *  pos 
)
static

◆ _sparse_array_sort()

static void _sparse_array_sort ( sparse_array_t sa)
static

◆ decode_2bit_pixel_code_string()

static void decode_2bit_pixel_code_string ( dvbsub_func_t dvbsub,
int  r,
int  n 
)
static

◆ decode_4bit_pixel_code_string()

static void decode_4bit_pixel_code_string ( dvbsub_func_t dvbsub,
int  r,
int  n 
)
static

◆ decode_8bit_pixel_code_string()

static void decode_8bit_pixel_code_string ( dvbsub_func_t dvbsub,
int  r,
int  n 
)
static

◆ do_plot()

static void do_plot ( region_t reg,
int  x,
int  y,
unsigned char  pixel 
)
static

◆ downscale_region_image()

static void downscale_region_image ( region_t reg,
unsigned char *  dest,
int  dest_width 
)
static

◆ draw_subtitles()

static void draw_subtitles ( dvb_spu_decoder_t this)
static

◆ dvb_spu_class_open_plugin()

static spu_decoder_t * dvb_spu_class_open_plugin ( spu_decoder_class_t class_gen,
xine_stream_t stream 
)
static

◆ dvbsub_timer_func()

static void * dvbsub_timer_func ( void *  this_gen)
static

◆ init_spu_decoder_plugin()

static void * init_spu_decoder_plugin ( xine_t xine,
const void *  data 
)
static

◆ lookup_lut()

static const uint8_t * lookup_lut ( const dvbsub_func_t dvbsub,
int  r 
)
static

◆ next_datum()

static unsigned char next_datum ( dvbsub_func_t dvbsub,
int  width 
)
static

◆ plot()

static void plot ( dvbsub_func_t dvbsub,
int  r,
unsigned int  run_length,
unsigned char  pixel 
)
static

◆ process_CLUT_definition_segment()

static void process_CLUT_definition_segment ( dvbsub_func_t dvbsub)
static

◆ process_display_definition_segment()

static void process_display_definition_segment ( dvbsub_func_t dvbsub)
static

◆ process_object_data_segment()

static void process_object_data_segment ( dvbsub_func_t dvbsub)
static

◆ process_page_composition_segment()

static void process_page_composition_segment ( dvbsub_func_t dvbsub)
static

◆ process_pixel_data_sub_block()

static void process_pixel_data_sub_block ( dvbsub_func_t dvbsub,
int  r,
unsigned int  pos,
int  ofs,
int  n 
)
static

◆ process_region_composition_segment()

static void process_region_composition_segment ( dvbsub_func_t dvbsub)
static

◆ recalculate_trans()

static void recalculate_trans ( dvb_spu_decoder_t this)
static

◆ reset_clut()

static void reset_clut ( dvbsub_func_t dvbsub)
static

◆ set_clut()

static void set_clut ( dvbsub_func_t dvbsub,
int  CLUT_id,
int  CLUT_entry_id,
int  Y_value,
int  Cr_value,
int  Cb_value,
int  T_value 
)
static

◆ sparse_array_delete()

static void sparse_array_delete ( sparse_array_t sa)
static

◆ sparse_array_get()

static int sparse_array_get ( sparse_array_t sa,
uint32_t  key,
uint32_t *  value 
)
static

◆ sparse_array_new()

static void sparse_array_new ( sparse_array_t sa)
static

◆ sparse_array_set()

static int sparse_array_set ( sparse_array_t sa,
uint32_t  key,
uint32_t  value 
)
static

◆ sparse_array_unset()

static void sparse_array_unset ( sparse_array_t sa,
uint32_t  key,
uint32_t  mask 
)
static

◆ spudec_decode_data()

static void spudec_decode_data ( spu_decoder_t this_gen,
buf_element_t buf 
)
static

◆ spudec_discontinuity()

static void spudec_discontinuity ( spu_decoder_t this_gen)
static

◆ spudec_dispose()

static void spudec_dispose ( spu_decoder_t this_gen)
static

◆ spudec_dispose_stopped()

static void spudec_dispose_stopped ( dvb_spu_decoder_t this)
static

◆ spudec_reset()

static void spudec_reset ( spu_decoder_t this_gen)
static

◆ unlock_mutex_cancellation_func()

static void unlock_mutex_cancellation_func ( void *  mutex_gen)
static

Referenced by dvbsub_timer_func().

◆ update_osd()

static void update_osd ( dvb_spu_decoder_t this,
region_t reg 
)
static

◆ update_region()

static void update_region ( region_t reg,
int  region_id,
int  region_width,
int  region_height,
int  fill,
int  fill_color 
)
static

Variable Documentation

◆ EXPORTED

const plugin_info_t xine_plugin_info [] EXPORTED
Initial value:
= {
}
static void * init_spu_decoder_plugin(xine_t *xine, const void *data)
Definition: spudvb_decoder.c:1381
static const decoder_info_t spudec_info
Definition: spudvb_decoder.c:1398
#define XINE_VERSION_CODE
Definition: xine_internal.h:57
NULL
Definition: xine_plugin.c:78
#define PLUGIN_NONE
Definition: xine_plugin.h:29
#define PLUGIN_SPU_DECODER
Definition: xine_plugin.h:34

◆ spudec_info

const decoder_info_t spudec_info
static
Initial value:
= {
.supported_types = supported_types,
.priority = 1,
}
static const uint32_t supported_types[]
Definition: spudvb_decoder.c:1396

◆ supported_types

const uint32_t supported_types[] = { BUF_SPU_DVB, 0 }
static