xine-lib 1.2.13-20230125hg15249
|
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include "group_video.h"
#include <xine/xine_internal.h>
#include <xine/xineutils.h>
#include <xine/demux.h>
#include "bswap.h"
Data Structures | |
struct | video_index_entry_t |
struct | audio_index_entry_t |
struct | _avisuperindex_entry |
struct | _avistdindex_entry |
struct | _avistdindex_chunk |
struct | _avisuperindex_chunk |
struct | video_index_t |
struct | audio_index_t |
struct | idx_grow_t |
struct | avi_audio_t |
struct | avi_t |
struct | demux_avi_s |
Macros | |
#define | LOG_MODULE "demux_avi" |
#define | LOG_VERBOSE |
#define | AVIIF_KEYFRAME 0x00000010L |
#define | MAX_AUDIO_STREAMS 8 |
#define | NUM_PREVIEW_BUFFERS 10 |
#define | AVI_INDEX_OF_INDEXES 0x00 /* when each entry in aIndex */ |
#define | AVI_INDEX_OF_CHUNKS 0x01 /* when each entry in aIndex */ |
#define | AVI_INDEX_IS_DATA 0x80 /* when each entry is aIndex is */ |
#define | AVI_INDEX_2FIELD 0x01 /* when fields within frames */ |
#define | AVI_ERR_SIZELIM |
#define | AVI_ERR_OPEN |
#define | AVI_ERR_READ 3 /* Error reading from AVI File */ |
#define | AVI_ERR_WRITE |
#define | AVI_ERR_WRITE_INDEX |
#define | AVI_ERR_CLOSE |
#define | AVI_ERR_NOT_PERM |
#define | AVI_ERR_NO_MEM 8 /* malloc failed */ |
#define | AVI_ERR_NO_AVI 9 /* Not an AVI file */ |
#define | AVI_ERR_NO_HDRL |
#define | AVI_ERR_NO_MOVI |
#define | AVI_ERR_NO_VIDS 12 /* AVI file contains no video data */ |
#define | AVI_ERR_NO_IDX |
#define | AVI_ERR_BAD_SIZE 14 /* A chunk has an invalid size */ |
#define | AVI_HEADER_UNKNOWN -1 |
#define | AVI_HEADER_AUDIO 0 |
#define | AVI_HEADER_VIDEO 1 |
#define | AVI_HEADER_SIZE 8 |
#define | WRAP_THRESHOLD 90000 |
#define | PTS_AUDIO 0 |
#define | PTS_VIDEO 1 |
#define | PAD_EVEN(x) ( ((x)+1) & ~1 ) |
#define | ERR_EXIT(x) |
Typedefs | |
typedef struct _avisuperindex_entry | avisuperindex_entry |
typedef struct _avistdindex_entry | avistdindex_entry |
typedef struct _avistdindex_chunk | avistdindex_chunk |
typedef struct _avisuperindex_chunk | avisuperindex_chunk |
typedef struct demux_avi_s | demux_avi_t |
Functions | |
static uint32_t | odml_len (unsigned char *str) |
static uint32_t | odml_key (unsigned char *str) |
static void | check_newpts (demux_avi_t *this, int64_t pts, int video) |
static int | video_index_append (avi_t *AVI, off_t pos, uint32_t len, uint32_t flags) |
static int | audio_index_append (avi_t *AVI, int stream, off_t pos, uint32_t len, off_t tot, uint32_t block_no) |
static int64_t | get_audio_pts (demux_avi_t *this, int track, uint32_t posc, off_t postot, uint32_t posb) |
static int64_t | get_video_pts (demux_avi_t *this, off_t pos) |
static int | video_pos_stopper (demux_avi_t *this, void *data) |
static int | audio_pos_stopper (demux_avi_t *this, void *data) |
static int | start_pos_stopper (demux_avi_t *this, void *data) |
static int | start_time_stopper (demux_avi_t *this, void *data) |
static int | idx_grow (demux_avi_t *this, int(*stopper)(demux_avi_t *, void *), void *stopdata) |
static video_index_entry_t * | video_cur_index_entry (demux_avi_t *this) |
static audio_index_entry_t * | audio_cur_index_entry (demux_avi_t *this, avi_audio_t *AVI_A) |
static void | free_superindex (avisuperindex_chunk **p) |
static void | AVI_close (avi_t *AVI) |
static void | reset_idx (demux_avi_t *this, avi_t *AVI) |
static avi_t * | AVI_init (demux_avi_t *this) |
static void | AVI_seek_start (avi_t *AVI) |
static int | AVI_read_audio (demux_avi_t *this, avi_audio_t *AVI_A, char *audbuf, uint32_t bytes, int *buf_flags) |
static int | AVI_read_video (demux_avi_t *this, avi_t *AVI, char *vidbuf, uint32_t bytes, int *buf_flags) |
static int | demux_avi_next (demux_avi_t *this, int decoder_flags) |
static int | get_chunk_header (demux_avi_t *this, uint32_t *len, int *audio_stream) |
static int | demux_avi_next_streaming (demux_avi_t *this, int decoder_flags) |
static int | demux_avi_seek_internal (demux_avi_t *this) |
static int | demux_avi_send_chunk (demux_plugin_t *this_gen) |
static void | demux_avi_dispose (demux_plugin_t *this_gen) |
static int | demux_avi_get_status (demux_plugin_t *this_gen) |
static void | demux_avi_send_headers (demux_plugin_t *this_gen) |
static int | demux_avi_seek (demux_plugin_t *this_gen, off_t start_pos, int start_time, int playing) |
static int | demux_avi_get_stream_length (demux_plugin_t *this_gen) |
static uint32_t | demux_avi_get_capabilities (demux_plugin_t *this_gen) |
static int | demux_avi_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_avi_init_class (xine_t *xine, const void *data) |
#define AVI_ERR_BAD_SIZE 14 /* A chunk has an invalid size */ |
#define AVI_ERR_CLOSE |
#define AVI_ERR_NO_AVI 9 /* Not an AVI file */ |
#define AVI_ERR_NO_HDRL |
#define AVI_ERR_NO_IDX |
#define AVI_ERR_NO_MEM 8 /* malloc failed */ |
#define AVI_ERR_NO_MOVI |
#define AVI_ERR_NO_VIDS 12 /* AVI file contains no video data */ |
#define AVI_ERR_NOT_PERM |
#define AVI_ERR_OPEN |
#define AVI_ERR_READ 3 /* Error reading from AVI File */ |
#define AVI_ERR_SIZELIM |
#define AVI_ERR_WRITE |
#define AVI_ERR_WRITE_INDEX |
#define AVI_HEADER_AUDIO 0 |
#define AVI_HEADER_SIZE 8 |
#define AVI_HEADER_UNKNOWN -1 |
#define AVI_HEADER_VIDEO 1 |
#define AVI_INDEX_2FIELD 0x01 /* when fields within frames */ |
#define AVI_INDEX_IS_DATA 0x80 /* when each entry is aIndex is */ |
#define AVI_INDEX_OF_CHUNKS 0x01 /* when each entry in aIndex */ |
#define AVI_INDEX_OF_INDEXES 0x00 /* when each entry in aIndex */ |
#define AVIIF_KEYFRAME 0x00000010L |
Referenced by start_time_stopper().
#define ERR_EXIT | ( | x | ) |
#define LOG_MODULE "demux_avi" |
#define LOG_VERBOSE |
#define MAX_AUDIO_STREAMS 8 |
#define NUM_PREVIEW_BUFFERS 10 |
Referenced by demux_matroska_send_headers().
#define PAD_EVEN | ( | x | ) | ( ((x)+1) & ~1 ) |
#define PTS_AUDIO 0 |
#define PTS_VIDEO 1 |
#define WRAP_THRESHOLD 90000 |
typedef struct _avistdindex_chunk avistdindex_chunk |
typedef struct _avistdindex_entry avistdindex_entry |
typedef struct _avisuperindex_chunk avisuperindex_chunk |
typedef struct _avisuperindex_entry avisuperindex_entry |
typedef struct demux_avi_s demux_avi_t |
|
static |
|
static |
|
static |
|
static |
References NULL.
Referenced by demux_avi_send_headers().
|
static |
|
static |
|
static |
|
static |
|
static |
References _X_LE_32.
|
static |
|
static |
|
static |
References get_video_pts().
|
static |
|
static |
void * demux_avi_init_class | ( | xine_t * | xine, |
const void * | data ) |
|
static |
|
static |
|
static |
|
static |
References _x_demux_flush_engine(), and DEMUX_OK.
|
static |
|
static |
References AVI_close().
|
static |
References audio_index_t::audio_chunks, avi_audio_t::audio_idx, avi_audio_t::audio_posc, and lprintf.
|
static |
|
static |
|
static |
References avi_audio_t::dwRate, avi_audio_t::dwScale, avi_audio_t::dwStart, xine_waveformatex::nBlockAlign, and avi_audio_t::wavex.
Referenced by demux_avi_get_optional_data().
|
static |
Referenced by audio_cur_index_entry(), and AVI_init().
|
static |
|
static |
|
static |
|
static |
|
static |
References audio_index_t::audio_chunks, avi_audio_t::audio_idx, and avi_audio_t::audio_posc.
|
static |
References AVIIF_KEYFRAME.
|
static |
|
static |
|
static |
Referenced by audio_cur_index_entry().