xine-lib: xine-lib-1.2.13/src/dxr3/dxr3_decode_spu.c File Reference

xine-lib 1.2.13-20230125hg15249

Data Structures | Macros | Typedefs | Functions
dxr3_decode_spu.c File Reference
`#include <sys/types.h>`
`#include <sys/stat.h>`
`#include <sys/ioctl.h>`
`#include <stdio.h>`
`#include <stdlib.h>`
`#include <string.h>`
`#include <unistd.h>`
`#include <pthread.h>`
`#include <fcntl.h>`
`#include <errno.h>`
`#include <xine/xine_internal.h>`
`#include <xine/xineutils.h>`
`#include <xine/buffer.h>`
`#include "xine-engine/bswap.h"`
`#include "../input/libdvdnav/nav_types.h"`
`#include "../input/libdvdnav/nav_read.h"`
`#include "video_out_dxr3.h"`
`#include "dxr3.h"`
`#include "group_dxr3.h"`

## Data Structures
struct | dxr3_spu_stream_state_s
struct | pci_node_s
struct | dxr3_spudec_class_s
struct | dxr3_spudec_s

## Macros
#define | LOG_MODULE "dxr3_decode_spu"
#define | LOG_PTS 0
#define | LOG_SPU 0
#define | LOG_BTN 0
#define | MAX_SPU_STREAMS 32

## Typedefs
typedef struct dxr3_spu_stream_state_s | dxr3_spu_stream_state_t
typedef struct pci_node_s | pci_node_t
typedef struct dxr3_spudec_class_s | dxr3_spudec_class_t
typedef struct dxr3_spudec_s | dxr3_spudec_t

## Functions
static spu_decoder_t * | dxr3_spudec_open_plugin (spu_decoder_class_t *class_gen, xine_stream_t *stream)
static void | dxr3_spudec_decode_data (spu_decoder_t *this_gen, buf_element_t *buf)
static void | dxr3_spudec_reset (spu_decoder_t *this_gen)
static void | dxr3_spudec_discontinuity (spu_decoder_t *this_gen)
static void | dxr3_spudec_dispose (spu_decoder_t *this_gen)
static int | dxr3_spudec_interact_info (spu_decoder_t *this_gen, void *data)
static void | dxr3_spudec_set_button (spu_decoder_t *this_gen, int32_t button, int32_t mode)
static void | dxr3_spudec_clear_nav_list (dxr3_spudec_t *this)
static void | dxr3_spudec_update_nav (dxr3_spudec_t *this)
static void | dxr3_spudec_process_nav (dxr3_spudec_t *this)
static int | dxr3_spudec_copy_nav_to_btn (dxr3_spudec_t *this, int32_t mode, em8300_button_t *btn)
static void | dxr3_swab_clut (int *clut)
void * | dxr3_spudec_init_plugin (xine_t *xine, const void *data)

## Macro Definition Documentation

## ◆ LOG_BTN

#define LOG_BTN 0

Referenced by dxr3_spudec_copy_nav_to_btn(), dxr3_spudec_decode_data(), and dxr3_spudec_set_button().

## ◆ LOG_MODULE

#define LOG_MODULE "dxr3_decode_spu"

## ◆ LOG_PTS

#define LOG_PTS 0

Referenced by dxr3_spudec_decode_data().

## ◆ LOG_SPU

#define LOG_SPU 0

Referenced by dxr3_spudec_decode_data(), dxr3_spudec_dispose(), and dxr3_spudec_open_plugin().

## ◆ MAX_SPU_STREAMS

#define MAX_SPU_STREAMS 32

Referenced by dxr3_spudec_reset().

## Typedef Documentation

## ◆ dxr3_spu_stream_state_t

typedef struct dxr3_spu_stream_state_s dxr3_spu_stream_state_t

## ◆ dxr3_spudec_class_t

typedef struct dxr3_spudec_class_s dxr3_spudec_class_t

## ◆ dxr3_spudec_t

typedef struct dxr3_spudec_s dxr3_spudec_t

## ◆ pci_node_t

typedef struct pci_node_s pci_node_t

## Function Documentation

## ◆ dxr3_spudec_clear_nav_list()

static void dxr3_spudec_clear_nav_list | ( | dxr3_spudec_t * | this | ) |
| inlinestatic

References pci_node_s::next, and pci_node_s::pci.

Referenced by dxr3_spudec_decode_data(), dxr3_spudec_discontinuity(), dxr3_spudec_dispose(), and dxr3_spudec_reset().

## ◆ dxr3_spudec_copy_nav_to_btn()

static int dxr3_spudec_copy_nav_to_btn | ( | dxr3_spudec_t * | this,
|  | int32_t | mode,
|  | em8300_button_t * | btn )
| static

References _x_assert, em8300_button_t::bottom, em8300_button_t::color, em8300_button_t::contrast, em8300_button_t::left, llprintf, LOG_BTN, mode(), NULL, em8300_button_t::right, em8300_button_t::top, XINE_VERBOSITY_DEBUG, and xprintf.

Referenced by dxr3_spudec_process_nav(), and dxr3_spudec_set_button().

## ◆ dxr3_spudec_decode_data()

static void dxr3_spudec_decode_data | ( | spu_decoder_t * | this_gen,
|  | buf_element_t * | buf )
| static

References _, BUF_FLAG_PREVIEW, BUF_FLAG_SPECIAL, BUF_SPECIAL_SPU_DVD_SUBTYPE, BUF_SPU_DVD, dxr3_spu_stream_state_s::bytes_passed, buf_element_s::content, xine_event_t::data, buf_element_s::decoder_flags, buf_element_s::decoder_info, dxr3_spu_button, dxr3_spu_setpalette, dxr3_spu_setpts, dxr3_spudec_clear_nav_list(), dxr3_spudec_process_nav(), dxr3_spudec_update_nav(), dxr3_swab_clut(), llprintf, LOG_BTN, LOG_PTS, LOG_SPU, pci_node_s::next, NULL, dxr3_spu_stream_state_s::parse, pci_node_s::pci, buf_element_s::pts, buf_element_s::size, dxr3_spu_stream_state_s::spu_ctrl, SPU_DVD_SUBTYPE_CLUT, SPU_DVD_SUBTYPE_NAV, dxr3_spu_stream_state_s::spu_end, dxr3_spu_stream_state_s::spu_length, buf_element_s::type, xine_event_t::type, pci_node_s::vpts, XINE_EVENT_FRAME_FORMAT_CHANGE, xine_event_free(), xine_event_get(), xine_fast_memcpy, XINE_VERBOSITY_DEBUG, XINE_VERBOSITY_LOG, and xprintf.

Referenced by dxr3_spudec_open_plugin().

## ◆ dxr3_spudec_discontinuity()

static void dxr3_spudec_discontinuity | ( | spu_decoder_t * | this_gen | ) |
| static

References dxr3_spudec_clear_nav_list().

Referenced by dxr3_spudec_open_plugin().

## ◆ dxr3_spudec_dispose()

static void dxr3_spudec_dispose | ( | spu_decoder_t * | this_gen | ) |
| static

References _, dxr3_spu_button, dxr3_spudec_clear_nav_list(), llprintf, LOG_SPU, NULL, xine_event_dispose_queue(), XINE_VERBOSITY_LOG, and xprintf.

Referenced by dxr3_spudec_open_plugin().

## ◆ dxr3_spudec_init_plugin()

void * dxr3_spudec_init_plugin | ( | xine_t * | xine,
|  | const void * | data )

References default_spu_decoder_class_dispose, dxr3_spudec_open_plugin(), N_, and NULL.

## ◆ dxr3_spudec_interact_info()

static int dxr3_spudec_interact_info | ( | spu_decoder_t * | this_gen,
|  | void * | data )
| static

References dxr3_spudec_update_nav().

Referenced by dxr3_spudec_open_plugin().

## ◆ dxr3_spudec_open_plugin()

static spu_decoder_t * dxr3_spudec_open_plugin | ( | spu_decoder_class_t * | class_gen,
|  | xine_stream_t * | stream )
| static

References _, CONF_HELP, CONF_KEY, CONF_NAME, xine_s::config, dxr3_present(), dxr3_spudec_decode_data(), dxr3_spudec_discontinuity(), dxr3_spudec_dispose(), dxr3_spudec_interact_info(), dxr3_spudec_reset(), dxr3_spudec_set_button(), llprintf, LOG_SPU, NULL, config_values_s::register_num, xine_stream_s::video_driver, xine_stream_s::xine, xine_event_new_queue(), xine_open_cloexec(), XINE_VERBOSITY_LOG, and xprintf.

Referenced by dxr3_spudec_init_plugin().

## ◆ dxr3_spudec_process_nav()

static void dxr3_spudec_process_nav | ( | dxr3_spudec_t * | this | ) |
| static

References _, dxr3_spu_button, dxr3_spudec_copy_nav_to_btn(), xine_event_t::type, XINE_EVENT_INPUT_BUTTON_FORCE, xine_event_send(), XINE_VERBOSITY_DEBUG, XINE_VERBOSITY_LOG, and xprintf.

Referenced by dxr3_spudec_decode_data(), and dxr3_spudec_update_nav().

## ◆ dxr3_spudec_reset()

static void dxr3_spudec_reset | ( | spu_decoder_t * | this_gen | ) |
| static

References dxr3_spudec_clear_nav_list(), and MAX_SPU_STREAMS.

Referenced by dxr3_spudec_open_plugin().

## ◆ dxr3_spudec_set_button()

static void dxr3_spudec_set_button | ( | spu_decoder_t * | this_gen,
|  | int32_t | button,
|  | int32_t | mode )
| static

References dxr3_spu_button, dxr3_spudec_copy_nav_to_btn(), dxr3_spudec_update_nav(), llprintf, LOG_BTN, mode(), XINE_VERBOSITY_DEBUG, and xprintf.

Referenced by dxr3_spudec_open_plugin().

## ◆ dxr3_spudec_update_nav()

static void dxr3_spudec_update_nav | ( | dxr3_spudec_t * | this | ) |
| inlinestatic

References dxr3_spudec_process_nav(), metronom_clock_s::get_current_time, pci_node_s::next, and xine_fast_memcpy.

Referenced by dxr3_spudec_decode_data(), dxr3_spudec_interact_info(), and dxr3_spudec_set_button().

## ◆ dxr3_swab_clut()

static void dxr3_swab_clut | ( | int * | clut | ) |
| inlinestatic

References bswap_32().

Referenced by dxr3_spudec_decode_data().