xine-lib: xine-lib-1.2.13/src/xine-engine/video_decoder.c File Reference

xine-lib 1.2.13-20230125hg15249

Macros | Functions
video_decoder.c File Reference
`#include <stdio.h>`
`#include <stdlib.h>`
`#include <string.h>`
`#include <unistd.h>`
`#include <pthread.h>`
`#include <errno.h>`
`#include <sys/time.h>`
`#include <xine/xine_internal.h>`
`#include <xine/spu_decoder.h>`
`#include <xine/xineutils.h>`
`#include "xine_private.h"`
`#include <sched.h>`

## Macros
#define | LOG_MODULE "video_decoder"
#define | LOG_VERBOSE
#define | SPU_SLEEP_INTERVAL (90000/2)
#define | SCHED_OTHER 0
#define | SPU_TRACK_MAP_MAX 50
#define | SPU_TRACK_MAP_MASK 0x8000ffff
#define | SPU_TRACK_MAP_END 0x80000000
#define | BUFTYPE_BASE(type) ((type) >> 24)
#define | BUFTYPE_SUB(type) (((type) & 0x00ff0000) >> 16)

## Functions
static void | update_spu_decoder (xine_stream_t *stream, int type)
int | _x_spu_decoder_sleep (xine_stream_t *s, int64_t next_spu_vpts)
static void * | video_decoder_loop (void *stream_gen)
int | _x_video_decoder_init (xine_stream_t *s)
void | _x_video_decoder_shutdown (xine_stream_t *s)

## Macro Definition Documentation

## ◆ BUFTYPE_BASE

#define BUFTYPE_BASE | ( |  | type | ) | ((type) >> 24)

Referenced by video_decoder_loop().

## ◆ BUFTYPE_SUB

#define BUFTYPE_SUB | ( |  | type | ) | (((type) & 0x00ff0000) >> 16)

Referenced by video_decoder_loop().

## ◆ LOG_MODULE

#define LOG_MODULE "video_decoder"

## ◆ LOG_VERBOSE

#define LOG_VERBOSE

## ◆ SCHED_OTHER

#define SCHED_OTHER 0

Referenced by _x_audio_decoder_init(), _x_video_decoder_init(), and ao_alsa_mixer_init().

## ◆ SPU_SLEEP_INTERVAL

#define SPU_SLEEP_INTERVAL (90000/2)

Referenced by _x_spu_decoder_sleep().

## ◆ SPU_TRACK_MAP_END

#define SPU_TRACK_MAP_END 0x80000000

Referenced by video_decoder_loop().

## ◆ SPU_TRACK_MAP_MASK

#define SPU_TRACK_MAP_MASK 0x8000ffff

Referenced by video_decoder_loop().

## ◆ SPU_TRACK_MAP_MAX

#define SPU_TRACK_MAP_MAX 50

Referenced by video_decoder_loop().

## Function Documentation

## ◆ _x_spu_decoder_sleep()

int _x_spu_decoder_sleep | ( | xine_stream_t * | s,
|  | int64_t | next_spu_vpts )

References _x_action_pending(), BUF_CONTROL_FLUSH_DECODER, xine_s::clock, fifo_buffer_s::first, metronom_clock_s::get_current_time, xine_private_t::port_ticket, xine_ticket_s::renew, xine_stream_private_st::s, SPU_SLEEP_INTERVAL, xine_ticket_s::ticket_revoked, buf_element_s::type, xine_stream_private_st::video_decoder_plugin, xine_stream_s::video_fifo, xine_private_t::x, xine_stream_s::xine, and xine_usec_sleep().

Referenced by spudec_decode_data().

## ◆ _x_video_decoder_init()

int _x_video_decoder_init | ( | xine_stream_t * | s | ) |

References _, _x_dummy_fifo_buffer_new(), _x_fifo_buffer_new(), xine_s::config, fifo_buffer_s::dispose, NULL, config_values_s::register_num, xine_stream_private_st::s, SCHED_OTHER, xine_stream_private_st::side_streams, xine_stream_private_st::spu_track_map_entries, video_decoder_loop(), xine_stream_s::video_fifo, xine_stream_s::video_out, xine_stream_private_st::video_thread, xine_stream_private_st::video_thread_created, xine_stream_s::xine, xine_log(), and XINE_LOG_MSG.

Referenced by xine_stream_new().

## ◆ _x_video_decoder_shutdown()

void _x_video_decoder_shutdown | ( | xine_stream_t * | s | ) |

References BUF_CONTROL_QUIT, fifo_buffer_s::buffer_pool_alloc, fifo_buffer_s::dispose, lprintf, NULL, fifo_buffer_s::put, xine_stream_private_st::s, buf_element_s::type, xine_stream_s::video_fifo, xine_stream_private_st::video_thread, and xine_stream_private_st::video_thread_created.

Referenced by xine_dispose(), and xine_stream_new().

## ◆ update_spu_decoder()

static void update_spu_decoder | ( | xine_stream_t * | stream,
|  | int | type )
| static

References _x_free_spu_decoder(), _x_get_spu_decoder(), xine_stream_s::spu_decoder_plugin, xine_stream_s::spu_decoder_streamtype, and type.

Referenced by video_decoder_loop().

## ◆ video_decoder_loop()

static void * video_decoder_loop | ( | void * | stream_gen | ) |
| static

References _, _x_buf_video_name(), _x_extra_info_merge(), _x_extra_info_reset(), _x_free_spu_decoder(), _x_free_video_decoder(), _x_get_video_decoder(), _x_meta_info_get(), _x_meta_info_set_utf8(), _x_stream_info_get(), _XINE_EI_RING_SIZE, xine_ticket_s::acquire, xine_stream_s::audio_fifo, xine_stream_private_st::audio_thread_created, BUF_CONTROL_AUDIO_CHANNEL, BUF_CONTROL_BASE, BUF_CONTROL_DISCONTINUITY, BUF_CONTROL_END, BUF_CONTROL_FLUSH_DECODER, BUF_CONTROL_HEADERS_DONE, BUF_CONTROL_NEWPTS, BUF_CONTROL_NOP, BUF_CONTROL_QUIT, BUF_CONTROL_RESET_DECODER, BUF_CONTROL_RESET_TRACK_MAP, BUF_CONTROL_SPU_CHANNEL, BUF_CONTROL_START, BUF_FLAG_GAPLESS_SW, BUF_FLAG_HEADER, BUF_FLAG_PREVIEW, BUF_FLAG_SEEK, BUF_SPU_BASE, BUF_VIDEO_BASE, BUF_VIDEO_UNKNOWN, BUFTYPE_BASE, BUFTYPE_SUB, xine_stream_private_st::changed, xine_stream_private_st::counter, xine_event_t::data_length, spu_decoder_s::decode_data, video_decoder_s::decode_data, buf_element_s::decoder_flags, buf_element_s::decoder_info, xine_stream_private_st::disable_decoder_flush_at_discontinuity, DISC_ABSOLUTE, buf_element_s::disc_off, DISC_RELATIVE, DISC_STREAMSEEK, DISC_STREAMSTART, video_decoder_s::discontinuity, xine_stream_private_st::early_finish_event, buf_element_s::extra_info, xine_stream_private_st::finisheds_audio, xine_stream_private_st::finisheds_video, xine_stream_private_st::first_frame, xine_stream_private_st::flag, video_decoder_s::flush, buf_element_s::free_buffer, xine_video_port_s::get_property, metronom_s::handle_video_discontinuity, xine_stream_private_st::headers_audio, xine_stream_private_st::headers_video, xine_stream_private_st::info_lock, xine_stream_private_st::lock, lprintf, xine_stream_s::master, xine_stream_s::metronom, NULL, xine_private_t::port_ticket, buf_element_s::pts, xine_stream_private_st::reached, xine_ticket_s::release, spu_decoder_s::reset, video_decoder_s::reset, xine_stream_private_st::s, extra_info_s::seek_count, xine_stream_private_st::side_streams, buf_element_s::size, fifo_buffer_s::size, xine_stream_s::spu_channel, xine_stream_s::spu_channel_auto, xine_stream_s::spu_channel_letterbox, xine_stream_private_st::spu_channel_pan_scan, xine_stream_s::spu_channel_user, xine_stream_s::spu_decoder_plugin, SPU_TRACK_MAP_END, xine_stream_private_st::spu_track_map_entries, SPU_TRACK_MAP_MASK, SPU_TRACK_MAP_MAX, xine_stream_private_st::stream_info, fifo_buffer_s::tget, buf_element_s::type, xine_event_t::type, update_spu_decoder(), xine_stream_private_st::video_decoder_extra_info, xine_stream_private_st::video_decoder_plugin, xine_stream_private_st::video_decoder_streamtype, xine_stream_s::video_fifo, xine_stream_s::video_out, xine_stream_private_st::video_seek_count, VO_PROP_BUFS_IN_FIFO, VO_PROP_NUM_STREAMS, xine_stream_s::xine, xine_event_send(), XINE_EVENT_UI_CHANNELS_CHANGED, xine_gettime(), xine_log(), XINE_LOG_MSG, XINE_META_INFO_VIDEOCODEC, xine_profiler_allocate_slot(), xine_profiler_start_count(), xine_profiler_stop_count(), xine_rwlock_rdlock, xine_rwlock_unlock, xine_rwlock_wrlock, XINE_STREAM_INFO_IGNORE_SPU, XINE_STREAM_INFO_IGNORE_VIDEO, XINE_STREAM_INFO_VIDEO_BITRATE, XINE_STREAM_INFO_VIDEO_HANDLED, xine_uint_mul_div(), xine_usec_sleep(), XINE_VERBOSITY_DEBUG, and xprintf.

Referenced by _x_video_decoder_init().