xine-lib
1.2.10
|
#include <time.h>
#include <pthread.h>
#include <errno.h>
#include <xine/xine_internal.h>
#include <xine/spu.h>
#include <xine/osd.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 | 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_osd (dvb_spu_decoder_t *this, int region_id) |
static void | update_region (dvb_spu_decoder_t *this, int region_id, int region_width, int region_height, int fill, int fill_color) |
static void | do_plot (dvb_spu_decoder_t *this, int r, int x, int y, unsigned char pixel) |
static void | plot (dvb_spu_decoder_t *this, int r, int run_length, unsigned char pixel) |
static const uint8_t * | lookup_lut (const dvbsub_func_t *dvbsub, int r) |
static unsigned char | next_datum (dvb_spu_decoder_t *this, int width) |
static void | decode_2bit_pixel_code_string (dvb_spu_decoder_t *this, int r, int object_id, int ofs, int n) |
static void | decode_4bit_pixel_code_string (dvb_spu_decoder_t *this, int r, int object_id, int ofs, int n) |
static void | decode_8bit_pixel_code_string (dvb_spu_decoder_t *this, int r, int object_id, int ofs, int n) |
static void | recalculate_trans (dvb_spu_decoder_t *this) |
static void | set_clut (dvb_spu_decoder_t *this, 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 (dvb_spu_decoder_t *this) |
static void | process_pixel_data_sub_block (dvb_spu_decoder_t *this, int r, int o, unsigned int pos, int ofs, int n) |
static void | process_page_composition_segment (dvb_spu_decoder_t *this) |
static void | process_region_composition_segment (dvb_spu_decoder_t *this) |
static void | process_object_data_segment (dvb_spu_decoder_t *this) |
static void | process_display_definition_segment (dvb_spu_decoder_t *this) |
static void | unlock_mutex_cancellation_func (void *mutex_gen) |
static void * | dvbsub_timer_func (void *this_gen) |
static void | downscale_region_image (region_t *reg, unsigned char *dest, int dest_width) |
static void | draw_subtitles (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_internal (dvb_spu_decoder_t *this, int thread_running) |
static void | spudec_dispose (spu_decoder_t *this_gen) |
static spu_decoder_t * | dvb_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 clut_t | default_clut [256] |
static unsigned char | default_trans [256] |
static int | default_colours_init = 0 |
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 |
#define GETBIT | ( | s, | |
v1, | |||
v2, | |||
tr | |||
) |
#define LOG_MODULE "spudvb" |
#define MAX_REGIONS 16 |
#define SPU_MAX_HEIGHT 1080 |
#define SPU_MAX_WIDTH 1920 |
#define YUVA | ( | r, | |
g, | |||
b, | |||
a | |||
) | (clut_t) { COMPUTE_V(r, g, b), COMPUTE_U(r, g, b), COMPUTE_V(r, g, b), a } |
typedef struct dvb_spu_decoder_s dvb_spu_decoder_t |
|
static |
References sparse_array_t::entries, sparse_array_entry_t::key, key, and sparse_array_t::sorted_entries.
Referenced by _sparse_array_sort(), and sparse_array_get().
|
static |
|
static |
References dvbsub_func_t::i, dvbsub_func_t::i_bits, dvbsub_func_t::in_scanline, lookup_lut(), next_datum(), and plot().
Referenced by process_pixel_data_sub_block().
|
static |
References dvbsub_func_t::i, dvbsub_func_t::i_bits, dvbsub_func_t::in_scanline, lookup_lut(), next_datum(), and plot().
Referenced by process_pixel_data_sub_block().
|
static |
References dvbsub_func_t::buf, dvbsub_func_t::i, dvbsub_func_t::in_scanline, and plot().
Referenced by process_pixel_data_sub_block().
|
static |
References region_t::empty, region_t::height, region_t::img, dvbsub_func_t::regions, and region_t::width.
Referenced by plot().
|
static |
References region_t::height, region_t::img, and region_t::width.
Referenced by draw_subtitles().
|
static |
References _X_SET_CLUT_CM, downscale_region_image(), lprintf, NULL, update_osd(), and VO_CAP_CUSTOM_EXTENT_OVERLAY.
Referenced by spudec_decode_data().
|
static |
References _x_spu_calculate_opacity(), _x_spu_get_opacity(), default_clut, default_colours_init, default_trans, dvbsub_timer_func(), GETBIT, LOG_MODULE, MAX_REGIONS, NULL, sparse_array_new(), spudec_decode_data(), spudec_discontinuity(), spudec_dispose(), spudec_dispose_internal(), spudec_reset(), xine_stream_s::xine, XINE_VERBOSITY_LOG, xprintf, and YUVA.
Referenced by init_spu_decoder_plugin().
|
static |
References lprintf, NULL, and unlock_mutex_cancellation_func().
Referenced by dvb_spu_class_open_plugin().
|
static |
References dvb_spu_class_open_plugin(), N_, NULL, and spu_decoder_class_s::open_plugin.
|
static |
References dvbsub_func_t::compat_depth, dvbsub_func_t::lut, dvbsub_func_t::lut24, dvbsub_func_t::lut28, and dvbsub_func_t::lut48.
Referenced by decode_2bit_pixel_code_string(), and decode_4bit_pixel_code_string().
|
static |
References dvbsub_func_t::buf, dvbsub_func_t::i, dvbsub_func_t::i_bits, and width.
Referenced by decode_2bit_pixel_code_string(), and decode_4bit_pixel_code_string().
|
static |
References do_plot(), dvbsub_func_t::x, and dvbsub_func_t::y.
Referenced by decode_2bit_pixel_code_string(), decode_4bit_pixel_code_string(), and decode_8bit_pixel_code_string().
|
static |
References dvbsub_func_t::buf, dvbsub_func_t::i, lprintf, and set_clut().
Referenced by spudec_decode_data().
|
static |
Referenced by spudec_decode_data().
|
static |
|
static |
References dvbsub_func_t::buf, dvbsub_func_t::i, visible_region_t::is_visible, lprintf, MAX_REGIONS, dvbsub_func_t::max_regions, dvbsub_func_t::page, page_t::page_id, page_t::page_state, page_t::page_time_out, page_t::page_version_number, page_t::regions, visible_region_t::x, and visible_region_t::y.
Referenced by spudec_decode_data().
|
static |
References dvbsub_func_t::buf, decode_2bit_pixel_code_string(), decode_4bit_pixel_code_string(), decode_8bit_pixel_code_string(), dvbsub_func_t::i, dvbsub_func_t::in_scanline, lprintf, dvbsub_func_t::lut, dvbsub_func_t::lut24, dvbsub_func_t::lut28, dvbsub_func_t::lut48, dvbsub_func_t::x, and dvbsub_func_t::y.
Referenced by process_object_data_segment().
|
static |
References dvbsub_func_t::buf, region_t::CLUT_id, dvbsub_func_t::compat_depth, dvbsub_func_t::i, lprintf, MAX_REGIONS, dvbsub_func_t::max_regions, dvbsub_func_t::object_pos, region_t::objects_end, region_t::objects_start, dvbsub_func_t::page, page_t::page_id, dvbsub_func_t::regions, sparse_array_set(), sparse_array_unset(), update_region(), and region_t::version_number.
Referenced by spudec_decode_data().
|
static |
References _x_spu_calculate_opacity(), _x_spu_get_opacity(), clut_union_t::c, dvbsub_func_t::colours, clut_s::foo, dvbsub_func_t::max_regions, dvbsub_func_t::trans, and clut_s::y.
Referenced by spudec_decode_data().
|
static |
References dvbsub_func_t::colours, default_clut, default_trans, dvbsub_func_t::lut, dvbsub_func_t::lut24, dvbsub_func_t::lut28, dvbsub_func_t::lut48, MAX_REGIONS, and dvbsub_func_t::trans.
Referenced by spudec_reset().
|
static |
References clut_union_t::c, dvbsub_func_t::colours, clut_s::cr, clut_s::foo, and MAX_REGIONS.
Referenced by process_CLUT_definition_segment().
|
static |
References _x_freep(), sparse_array_t::entries, sparse_array_t::max_entries, sparse_array_t::sorted_entries, and sparse_array_t::used_entries.
Referenced by spudec_dispose_internal().
|
static |
|
static |
References sparse_array_t::entries, sparse_array_t::max_entries, NULL, sparse_array_t::sorted_entries, and sparse_array_t::used_entries.
Referenced by dvb_spu_class_open_plugin().
|
static |
|
static |
References _sparse_array_sort(), sparse_array_t::entries, sparse_array_entry_t::key, key, NULL, sparse_array_t::sorted_entries, and sparse_array_t::used_entries.
Referenced by process_region_composition_segment().
|
static |
References BUF_FLAG_SPECIAL, BUF_SPECIAL_SPU_DVB_DESCRIPTOR, BUF_SPU_DVB, buf_element_s::content, buf_element_s::decoder_flags, buf_element_s::decoder_info, buf_element_s::decoder_info_ptr, draw_subtitles(), metronom_clock_s::get_current_time, metronom_s::get_option, lprintf, METRONOM_SPU_OFFSET, METRONOM_VPTS_OFFSET, process_CLUT_definition_segment(), process_display_definition_segment(), process_object_data_segment(), process_page_composition_segment(), process_region_composition_segment(), buf_element_s::pts, recalculate_trans(), buf_element_s::size, buf_element_s::type, and xine_fast_memcpy.
Referenced by dvb_spu_class_open_plugin().
|
static |
Referenced by dvb_spu_class_open_plugin().
|
static |
References spudec_dispose_internal().
Referenced by dvb_spu_class_open_plugin().
|
static |
References _x_freep(), MAX_REGIONS, NULL, and sparse_array_delete().
Referenced by dvb_spu_class_open_plugin(), and spudec_dispose().
|
static |
References MAX_REGIONS, and reset_clut().
Referenced by dvb_spu_class_open_plugin().
|
static |
Referenced by dvbsub_timer_func().
|
static |
References osd_object_s::height, region_t::height, region_t::img, NULL, region_t::osd, dvbsub_func_t::regions, osd_object_s::width, and region_t::width.
Referenced by draw_subtitles().
|
static |
References _x_freep(), region_t::empty, region_t::height, region_t::img, lprintf, dvbsub_func_t::regions, SPU_MAX_HEIGHT, SPU_MAX_WIDTH, and region_t::width.
Referenced by process_region_composition_segment().
|
static |
Referenced by dvb_spu_class_open_plugin(), and reset_clut().
|
static |
Referenced by dvb_spu_class_open_plugin().
|
static |
Referenced by dvb_spu_class_open_plugin(), and reset_clut().
const plugin_info_t xine_plugin_info [] EXPORTED |
|
static |
|
static |