hvirtual/libmpeg3/mpeg3demux.c File Reference

#include "libmpeg3.h"
#include "mpeg3io.h"
#include "mpeg3protos.h"
#include "workarounds.h"
#include <errno.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

Include dependency graph for mpeg3demux.c:

Go to the source code of this file.

Defines

#define ABS(x)   ((x) >= 0 ? (x) : -(x))

Functions

static unsigned char packet_next_char (mpeg3_demuxer_t *demuxer)
static unsigned char packet_read_char (mpeg3_demuxer_t *demuxer)
static unsigned int packet_read_int16 (mpeg3_demuxer_t *demuxer)
static unsigned int packet_next_int24 (mpeg3_demuxer_t *demuxer)
static unsigned int packet_read_int24 (mpeg3_demuxer_t *demuxer)
static unsigned int packet_read_int32 (mpeg3_demuxer_t *demuxer)
static unsigned int packet_skip (mpeg3_demuxer_t *demuxer, int length)
static int get_adaptation_field (mpeg3_demuxer_t *demuxer)
static int get_program_association_table (mpeg3_demuxer_t *demuxer)
static int get_transport_payload (mpeg3_demuxer_t *demuxer, int is_audio, int is_video)
static int get_pes_packet_header (mpeg3_demuxer_t *demuxer, unsigned int *pts, unsigned int *dts)
static int get_unknown_data (mpeg3_demuxer_t *demuxer)
static int get_transport_pes_packet (mpeg3_demuxer_t *demuxer)
static int get_pes_packet (mpeg3_demuxer_t *demuxer)
static int get_payload (mpeg3_demuxer_t *demuxer)
static int read_transport (mpeg3_demuxer_t *demuxer)
static int get_system_header (mpeg3_demuxer_t *demuxer)
static unsigned int get_timestamp (mpeg3_demuxer_t *demuxer)
static int get_pack_header (mpeg3_demuxer_t *demuxer)
static int get_program_payload (mpeg3_demuxer_t *demuxer, int bytes, int is_audio, int is_video)
static int handle_scrambling (mpeg3_demuxer_t *demuxer, int decryption_offset)
static void remove_subtitle (mpeg3_demuxer_t *demuxer, int number)
static void remove_subtitle_ptr (mpeg3_demuxer_t *demuxer, mpeg3_subtitle_t *ptr)
static mpeg3_subtitle_tnew_subtitle (mpeg3_demuxer_t *demuxer, int id, int64_t offset)
static void handle_subtitle (mpeg3_t *file, mpeg3_demuxer_t *demuxer, mpeg3_subtitle_t *subtitle, int bytes)
static int handle_pcm (mpeg3_demuxer_t *demuxer, int bytes)
static int get_program_pes_packet (mpeg3_demuxer_t *demuxer, unsigned int header)
int mpeg3demux_read_program (mpeg3_demuxer_t *demuxer)
static int get_current_cell (mpeg3_demuxer_t *demuxer)
int mpeg3_seek_phys (mpeg3_demuxer_t *demuxer)
static int next_code (mpeg3_demuxer_t *demuxer, uint32_t code)
int mpeg3_read_next_packet (mpeg3_demuxer_t *demuxer)
static int prev_code (mpeg3_demuxer_t *demuxer, uint32_t code)
int mpeg3_read_prev_packet (mpeg3_demuxer_t *demuxer)
int mpeg3demux_read_data (mpeg3_demuxer_t *demuxer, unsigned char *output, int size)
unsigned char mpeg3demux_read_char_packet (mpeg3_demuxer_t *demuxer)
unsigned char mpeg3demux_read_prev_char_packet (mpeg3_demuxer_t *demuxer)
int mpeg3demux_open_title (mpeg3_demuxer_t *demuxer, int title_number)
int mpeg3demux_copy_titles (mpeg3_demuxer_t *dst, mpeg3_demuxer_t *src)
mpeg3_demuxer_tmpeg3_new_demuxer (mpeg3_t *file, int do_audio, int do_video, int custom_id)
int mpeg3_delete_demuxer (mpeg3_demuxer_t *demuxer)
int mpeg3demux_eof (mpeg3_demuxer_t *demuxer)
int mpeg3demux_bof (mpeg3_demuxer_t *demuxer)
void mpeg3demux_start_reverse (mpeg3_demuxer_t *demuxer)
void mpeg3demux_start_forward (mpeg3_demuxer_t *demuxer)
int mpeg3demux_seek_byte (mpeg3_demuxer_t *demuxer, int64_t byte)
int mpeg3_finished_subtitles (mpeg3_demuxer_t *demuxer, int id)
double mpeg3demux_get_time (mpeg3_demuxer_t *demuxer)
double mpeg3demux_audio_pts (mpeg3_demuxer_t *demuxer)
double mpeg3demux_video_pts (mpeg3_demuxer_t *demuxer)
void mpeg3demux_reset_pts (mpeg3_demuxer_t *demuxer)
double mpeg3demux_scan_pts (mpeg3_demuxer_t *demuxer)
int mpeg3demux_goto_pts (mpeg3_demuxer_t *demuxer, double pts)
int64_t mpeg3demux_tell_byte (mpeg3_demuxer_t *demuxer)
int mpeg3demux_tell_program (mpeg3_demuxer_t *demuxer)
int64_t mpeg3_absolute_to_program (mpeg3_demuxer_t *demuxer, int64_t byte)
int64_t mpeg3demux_movie_size (mpeg3_demuxer_t *demuxer)
int64_t mpeg3demuxer_title_bytes (mpeg3_demuxer_t *demuxer)
mpeg3_demuxer_tmpeg3_get_demuxer (mpeg3_t *file)
void mpeg3demux_append_data (mpeg3_demuxer_t *demuxer, unsigned char *data, int bytes)
void mpeg3demux_shift_data (mpeg3_demuxer_t *demuxer, int bytes)


Define Documentation

#define ABS (  )     ((x) >= 0 ? (x) : -(x))

Definition at line 11 of file mpeg3demux.c.


Function Documentation

static int get_adaptation_field ( mpeg3_demuxer_t demuxer  )  [static]

Definition at line 81 of file mpeg3demux.c.

References mpeg3_demuxer_t::adaptation_fields, mpeg3_demuxer_t::dump, packet_read_char(), packet_read_int16(), packet_read_int32(), packet_skip(), and mpeg3_demuxer_t::time.

Referenced by read_transport().

Here is the call graph for this function:

static int get_current_cell ( mpeg3_demuxer_t demuxer  )  [static]

static int get_pack_header ( mpeg3_demuxer_t demuxer  )  [static]

static int get_payload ( mpeg3_demuxer_t demuxer  )  [static]

static int get_pes_packet ( mpeg3_demuxer_t demuxer  )  [static]

static int get_pes_packet_header ( mpeg3_demuxer_t demuxer,
unsigned int *  pts,
unsigned int *  dts 
) [static]

Definition at line 201 of file mpeg3demux.c.

References mpeg3_demuxer_t::dump, packet_read_char(), packet_read_int16(), packet_skip(), and mpeg3_demuxer_t::time.

Referenced by get_transport_pes_packet().

Here is the call graph for this function:

static int get_program_association_table ( mpeg3_demuxer_t demuxer  )  [static]

static int get_program_payload ( mpeg3_demuxer_t demuxer,
int  bytes,
int  is_audio,
int  is_video 
) [static]

static int get_program_pes_packet ( mpeg3_demuxer_t demuxer,
unsigned int  header 
) [static]

static int get_system_header ( mpeg3_demuxer_t demuxer  )  [static]

Definition at line 635 of file mpeg3demux.c.

References mpeg3_demuxer_t::current_title, mpeg3_title_t::fs, mpeg3io_read_int16(), mpeg3io_seek_relative(), and mpeg3_demuxer_t::titles.

Referenced by mpeg3demux_read_program().

Here is the call graph for this function:

static unsigned int get_timestamp ( mpeg3_demuxer_t demuxer  )  [static]

Definition at line 643 of file mpeg3demux.c.

References mpeg3_demuxer_t::current_title, mpeg3_title_t::fs, mpeg3io_read_char(), mpeg3io_read_int16(), timestamp, and mpeg3_demuxer_t::titles.

Here is the call graph for this function:

static int get_transport_payload ( mpeg3_demuxer_t demuxer,
int  is_audio,
int  is_video 
) [static]

static int get_transport_pes_packet ( mpeg3_demuxer_t demuxer  )  [static]

static int get_unknown_data ( mpeg3_demuxer_t demuxer  )  [static]

static int handle_pcm ( mpeg3_demuxer_t demuxer,
int  bytes 
) [static]

static int handle_scrambling ( mpeg3_demuxer_t demuxer,
int  decryption_offset 
) [static]

static void handle_subtitle ( mpeg3_t file,
mpeg3_demuxer_t demuxer,
mpeg3_subtitle_t subtitle,
int  bytes 
) [static]

int64_t mpeg3_absolute_to_program ( mpeg3_demuxer_t demuxer,
int64_t  byte 
)

int mpeg3_delete_demuxer ( mpeg3_demuxer_t demuxer  ) 

int mpeg3_finished_subtitles ( mpeg3_demuxer_t demuxer,
int  id 
)

mpeg3_demuxer_t* mpeg3_get_demuxer ( mpeg3_t file  ) 

mpeg3_demuxer_t* mpeg3_new_demuxer ( mpeg3_t file,
int  do_audio,
int  do_video,
int  custom_id 
)

int mpeg3_read_next_packet ( mpeg3_demuxer_t demuxer  ) 

int mpeg3_read_prev_packet ( mpeg3_demuxer_t demuxer  ) 

int mpeg3_seek_phys ( mpeg3_demuxer_t demuxer  ) 

void mpeg3demux_append_data ( mpeg3_demuxer_t demuxer,
unsigned char *  data,
int  bytes 
)

double mpeg3demux_audio_pts ( mpeg3_demuxer_t demuxer  ) 

Definition at line 2290 of file mpeg3demux.c.

References mpeg3_demuxer_t::pes_audio_time.

int mpeg3demux_bof ( mpeg3_demuxer_t demuxer  ) 

int mpeg3demux_copy_titles ( mpeg3_demuxer_t dst,
mpeg3_demuxer_t src 
)

int mpeg3demux_eof ( mpeg3_demuxer_t demuxer  ) 

double mpeg3demux_get_time ( mpeg3_demuxer_t demuxer  ) 

Definition at line 2285 of file mpeg3demux.c.

References mpeg3_demuxer_t::time.

Referenced by mpeg3_get_time().

int mpeg3demux_goto_pts ( mpeg3_demuxer_t demuxer,
double  pts 
)

int64_t mpeg3demux_movie_size ( mpeg3_demuxer_t demuxer  ) 

int mpeg3demux_open_title ( mpeg3_demuxer_t demuxer,
int  title_number 
)

unsigned char mpeg3demux_read_char_packet ( mpeg3_demuxer_t demuxer  ) 

int mpeg3demux_read_data ( mpeg3_demuxer_t demuxer,
unsigned char *  output,
int  size 
)

unsigned char mpeg3demux_read_prev_char_packet ( mpeg3_demuxer_t demuxer  ) 

int mpeg3demux_read_program ( mpeg3_demuxer_t demuxer  ) 

void mpeg3demux_reset_pts ( mpeg3_demuxer_t demuxer  ) 

double mpeg3demux_scan_pts ( mpeg3_demuxer_t demuxer  ) 

int mpeg3demux_seek_byte ( mpeg3_demuxer_t demuxer,
int64_t  byte 
)

void mpeg3demux_shift_data ( mpeg3_demuxer_t demuxer,
int  bytes 
)

void mpeg3demux_start_forward ( mpeg3_demuxer_t demuxer  ) 

Definition at line 2230 of file mpeg3demux.c.

References mpeg3_demuxer_t::reverse.

Referenced by mpeg3video_new(), mpeg3video_previous_frame(), and mpeg3video_seek().

void mpeg3demux_start_reverse ( mpeg3_demuxer_t demuxer  ) 

Definition at line 2225 of file mpeg3demux.c.

References mpeg3_demuxer_t::reverse.

Referenced by mpeg3video_new(), mpeg3video_previous_frame(), and mpeg3video_seek().

int64_t mpeg3demux_tell_byte ( mpeg3_demuxer_t demuxer  ) 

int mpeg3demux_tell_program ( mpeg3_demuxer_t demuxer  ) 

double mpeg3demux_video_pts ( mpeg3_demuxer_t demuxer  ) 

Definition at line 2295 of file mpeg3demux.c.

References mpeg3_demuxer_t::pes_video_time.

int64_t mpeg3demuxer_title_bytes ( mpeg3_demuxer_t demuxer  ) 

static mpeg3_subtitle_t* new_subtitle ( mpeg3_demuxer_t demuxer,
int  id,
int64_t  offset 
) [static]

static int next_code ( mpeg3_demuxer_t demuxer,
uint32_t  code 
) [static]

static unsigned char packet_next_char ( mpeg3_demuxer_t demuxer  )  [inline, static]

Definition at line 14 of file mpeg3demux.c.

References mpeg3_demuxer_t::raw_data, and mpeg3_demuxer_t::raw_offset.

static unsigned int packet_next_int24 ( mpeg3_demuxer_t demuxer  )  [inline, static]

Definition at line 39 of file mpeg3demux.c.

References a, b, c, mpeg3_demuxer_t::raw_data, and mpeg3_demuxer_t::raw_offset.

Referenced by get_payload().

static unsigned char packet_read_char ( mpeg3_demuxer_t demuxer  )  [static]

static unsigned int packet_read_int16 ( mpeg3_demuxer_t demuxer  )  [inline, static]

static unsigned int packet_read_int24 ( mpeg3_demuxer_t demuxer  )  [inline, static]

Definition at line 51 of file mpeg3demux.c.

References a, b, c, mpeg3_demuxer_t::raw_data, and mpeg3_demuxer_t::raw_offset.

Referenced by get_pes_packet(), and read_transport().

static unsigned int packet_read_int32 ( mpeg3_demuxer_t demuxer  )  [inline, static]

Definition at line 63 of file mpeg3demux.c.

References a, b, c, mpeg3_demuxer_t::raw_data, and mpeg3_demuxer_t::raw_offset.

Referenced by get_adaptation_field().

static unsigned int packet_skip ( mpeg3_demuxer_t demuxer,
int  length 
) [inline, static]

static int prev_code ( mpeg3_demuxer_t demuxer,
uint32_t  code 
) [static]

static int read_transport ( mpeg3_demuxer_t demuxer  )  [static]

static void remove_subtitle ( mpeg3_demuxer_t demuxer,
int  number 
) [static]

Definition at line 783 of file mpeg3demux.c.

References mpeg3_delete_subtitle(), mpeg3_demuxer_t::subtitles, and mpeg3_demuxer_t::total_subtitles.

Referenced by new_subtitle().

Here is the call graph for this function:

static void remove_subtitle_ptr ( mpeg3_demuxer_t demuxer,
mpeg3_subtitle_t ptr 
) [static]

Definition at line 794 of file mpeg3demux.c.

References mpeg3_demuxer_t::subtitles, and mpeg3_demuxer_t::total_subtitles.

Referenced by handle_subtitle().


Generated on Mon Apr 28 13:59:18 2008 for Cinelerra by  doxygen 1.5.5