xine-lib: xine-lib-1.2.13/src/demuxers/demux_wav.c File Reference

xine-lib 1.2.13-20230125hg15249

Data Structures | Macros | Functions
demux_wav.c File Reference
`#include <stdio.h>`
`#include <fcntl.h>`
`#include <unistd.h>`
`#include <string.h>`
`#include <stdlib.h>`
`#include <ctype.h>`
`#include <xine/xine_internal.h>`
`#include <xine/xineutils.h>`
`#include <xine/demux.h>`
`#include <xine/buffer.h>`
`#include "bswap.h"`
`#include "group_audio.h"`

## Data Structures
struct | demux_wav_t

## Macros
#define | WAV_SIGNATURE_SIZE 12
#define | data_TAG 0x61746164
#define | fmt_TAG 0x20746D66
#define | PCM_BLOCK_ALIGN 1024
#define | PREFERED_BLOCK_SIZE 4096

## Functions
static int | demux_wav_get_stream_length (demux_plugin_t *this_gen)
static int | find_chunk_by_tag (demux_wav_t *this, const uint32_t given_chunk_tag, uint32_t *found_chunk_size, off_t *found_chunk_pos)
static int | probe_wav_file (input_plugin_t *input)
static int | open_wav_file (demux_wav_t *this)
static int | demux_wav_send_chunk (demux_plugin_t *this_gen)
static void | demux_wav_send_headers (demux_plugin_t *this_gen)
static int | demux_wav_seek (demux_plugin_t *this_gen, off_t start_pos, int start_time, int playing)
static void | demux_wav_dispose (demux_plugin_t *this_gen)
static int | demux_wav_get_status (demux_plugin_t *this_gen)
static uint32_t | demux_wav_get_capabilities (demux_plugin_t *this_gen)
static int | demux_wav_get_optional_data (demux_plugin_t *this_gen, void *data, int data_type)
static demux_plugin_t * | open_plugin (demux_class_t *class_gen, xine_stream_t *stream, input_plugin_t *input)
void * | demux_wav_init_plugin (xine_t *xine, const void *data)

## Macro Definition Documentation

## ◆ data_TAG

#define data_TAG 0x61746164

Referenced by open_wav_file().

## ◆ fmt_TAG

#define fmt_TAG 0x20746D66

Referenced by open_wav_file().

## ◆ PCM_BLOCK_ALIGN

#define PCM_BLOCK_ALIGN 1024

## ◆ PREFERED_BLOCK_SIZE

#define PREFERED_BLOCK_SIZE 4096

Referenced by open_wav_file().

## ◆ WAV_SIGNATURE_SIZE

#define WAV_SIGNATURE_SIZE 12

Referenced by find_chunk_by_tag(), and probe_wav_file().

## Function Documentation

## ◆ demux_wav_dispose()

static void demux_wav_dispose | ( | demux_plugin_t * | this_gen | ) |
| static

References _x_freep().

Referenced by open_plugin().

## ◆ demux_wav_get_capabilities()

static uint32_t demux_wav_get_capabilities | ( | demux_plugin_t * | this_gen | ) |
| static

References DEMUX_CAP_NOCAP.

Referenced by open_plugin().

## ◆ demux_wav_get_optional_data()

static int demux_wav_get_optional_data | ( | demux_plugin_t * | this_gen,
|  | void * | data,
|  | int | data_type )
| static

References DEMUX_OPTIONAL_UNSUPPORTED.

Referenced by open_plugin().

## ◆ demux_wav_get_status()

static int demux_wav_get_status | ( | demux_plugin_t * | this_gen | ) |
| static

Referenced by open_plugin().

## ◆ demux_wav_get_stream_length()

static int demux_wav_get_stream_length | ( | demux_plugin_t * | this_gen | ) |
| static

Referenced by demux_wav_seek(), and open_plugin().

## ◆ demux_wav_init_plugin()

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

References demux_plugin_s::dispose, N_, NULL, demux_class_s::open_plugin, and open_plugin().

## ◆ demux_wav_seek()

static int demux_wav_seek | ( | demux_plugin_t * | this_gen,
|  | off_t | start_pos,
|  | int | start_time,
|  | int | playing )
| static

References _x_demux_flush_engine(), BUF_FLAG_SEEK, DEMUX_FINISHED, DEMUX_OK, demux_wav_get_stream_length(), input(), INPUT_CAP_SEEKABLE, and INPUT_CAP_SLOW_SEEKABLE.

Referenced by open_plugin().

## ◆ demux_wav_send_chunk()

static int demux_wav_send_chunk | ( | demux_plugin_t * | this_gen | ) |
| static

References _x_demux_control_newpts(), BUF_FLAG_FRAME_END, buf_element_s::content, buf_element_s::decoder_flags, DEMUX_FINISHED, buf_element_s::extra_info, buf_element_s::free_buffer, input(), extra_info_s::input_normpos, extra_info_s::input_time, buf_element_s::max_size, NULL, buf_element_s::pts, buf_element_s::size, and buf_element_s::type.

Referenced by open_plugin().

## ◆ demux_wav_send_headers()

static void demux_wav_send_headers | ( | demux_plugin_t * | this_gen | ) |
| static

References _x_demux_control_start(), _x_stream_info_set(), BUF_FLAG_FRAME_END, BUF_FLAG_HEADER, BUF_FLAG_STDHEADER, buf_element_s::content, buf_element_s::decoder_flags, buf_element_s::decoder_info, DEMUX_OK, buf_element_s::size, buf_element_s::type, XINE_STREAM_INFO_AUDIO_BITS, XINE_STREAM_INFO_AUDIO_CHANNELS, XINE_STREAM_INFO_AUDIO_SAMPLERATE, XINE_STREAM_INFO_HAS_AUDIO, and XINE_STREAM_INFO_HAS_VIDEO.

Referenced by open_plugin().

## ◆ find_chunk_by_tag()

static int find_chunk_by_tag | ( | demux_wav_t * | this,
|  | const uint32_t | given_chunk_tag,
|  | uint32_t * | found_chunk_size,
|  | off_t * | found_chunk_pos )
| static

References _X_LE_32, input(), and WAV_SIGNATURE_SIZE.

Referenced by open_wav_file().

## ◆ open_plugin()

static demux_plugin_t * open_plugin | ( | demux_class_t * | class_gen,
|  | xine_stream_t * | stream,
|  | input_plugin_t * | input )
| static

References xine_stream_s::content_detection_method, DEMUX_FINISHED, demux_wav_dispose(), demux_wav_get_capabilities(), demux_wav_get_optional_data(), demux_wav_get_status(), demux_wav_get_stream_length(), demux_wav_seek(), demux_wav_send_chunk(), demux_wav_send_headers(), input(), METHOD_BY_CONTENT, METHOD_BY_MRL, METHOD_EXPLICIT, NULL, open_wav_file(), probe_wav_file(), and input_plugin_s::seek.

Referenced by demux_wav_init_plugin().

## ◆ open_wav_file()

static int open_wav_file | ( | demux_wav_t * | this | ) |
| static

References _x_formattag_to_buf_audio(), _x_waveformatex_le2me(), BUF_AUDIO_UNKNOWN, data_TAG, find_chunk_by_tag(), fmt_TAG, input(), NULL, and PREFERED_BLOCK_SIZE.

Referenced by open_plugin().

## ◆ probe_wav_file()

static int probe_wav_file | ( | input_plugin_t * | input | ) |
| static

References _x_demux_read_header(), input(), and WAV_SIGNATURE_SIZE.

Referenced by open_plugin().