xine-lib 1.2.13-20230125hg15249
Macros | Functions
decode.c File Reference
#include "config.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <inttypes.h>
#include <math.h>
#include <xine/xine_internal.h>
#include <xine/video_out.h>
#include "mpeg2.h"
#include "mpeg2_internal.h"
#include <xine/xineutils.h>
#include "libmpeg2_accel.h"

Macros

#define LOG_MODULE   "decode"
 
#define LOG_VERBOSE
 
#define BUFFER_SIZE   (1194 * 1024) /* new buffer size for mpeg2dec 0.2.1 */
 

Functions

static void process_userdata (mpeg2dec_t *mpeg2dec, uint8_t *buffer)
 
void mpeg2_init (mpeg2dec_t *mpeg2dec, xine_video_port_t *output)
 
static void get_frame_duration (mpeg2dec_t *mpeg2dec, vo_frame_t *frame)
 
static double get_aspect_ratio (mpeg2dec_t *mpeg2dec)
 
static void remember_metainfo (mpeg2dec_t *mpeg2dec)
 
static int parse_chunk (mpeg2dec_t *mpeg2dec, int code, uint8_t *buffer, int next_code)
 
static int find_start_code (mpeg2dec_t *mpeg2dec, uint8_t **current, uint8_t *limit)
 
static uint8_t * copy_chunk (mpeg2dec_t *mpeg2dec, uint8_t *current, uint8_t *end)
 
int mpeg2_decode_data (mpeg2dec_t *mpeg2dec, uint8_t *current, uint8_t *end, uint64_t pts)
 
void mpeg2_discontinuity (mpeg2dec_t *mpeg2dec)
 
void mpeg2_reset (mpeg2dec_t *mpeg2dec)
 
void mpeg2_flush (mpeg2dec_t *mpeg2dec)
 
void mpeg2_close (mpeg2dec_t *mpeg2dec)
 
void mpeg2_find_sequence_header (mpeg2dec_t *mpeg2dec, uint8_t *current, uint8_t *end)
 
static uint8_t * find_end (uint8_t *buffer)
 

Macro Definition Documentation

◆ BUFFER_SIZE

#define BUFFER_SIZE   (1194 * 1024) /* new buffer size for mpeg2dec 0.2.1 */

◆ LOG_MODULE

#define LOG_MODULE   "decode"

◆ LOG_VERBOSE

#define LOG_VERBOSE

Function Documentation

◆ copy_chunk()

static uint8_t * copy_chunk ( mpeg2dec_t * mpeg2dec,
uint8_t * current,
uint8_t * end )
inlinestatic

◆ find_end()

static uint8_t * find_end ( uint8_t * buffer)
static

Referenced by process_userdata().

◆ find_start_code()

static int find_start_code ( mpeg2dec_t * mpeg2dec,
uint8_t ** current,
uint8_t * limit )
inlinestatic

References mpeg2dec_s::shift.

Referenced by copy_chunk().

◆ get_aspect_ratio()

static double get_aspect_ratio ( mpeg2dec_t * mpeg2dec)
static

References mpeg2dec_s::picture.

Referenced by parse_chunk(), and remember_metainfo().

◆ get_frame_duration()

static void get_frame_duration ( mpeg2dec_t * mpeg2dec,
vo_frame_t * frame )
inlinestatic

◆ mpeg2_close()

void mpeg2_close ( mpeg2dec_t * mpeg2dec)

◆ mpeg2_decode_data()

int mpeg2_decode_data ( mpeg2dec_t * mpeg2dec,
uint8_t * current,
uint8_t * end,
uint64_t pts )

◆ mpeg2_discontinuity()

void mpeg2_discontinuity ( mpeg2dec_t * mpeg2dec)

◆ mpeg2_find_sequence_header()

void mpeg2_find_sequence_header ( mpeg2dec_t * mpeg2dec,
uint8_t * current,
uint8_t * end )

◆ mpeg2_flush()

void mpeg2_flush ( mpeg2dec_t * mpeg2dec)

◆ mpeg2_init()

void mpeg2_init ( mpeg2dec_t * mpeg2dec,
xine_video_port_t * output )

◆ mpeg2_reset()

void mpeg2_reset ( mpeg2dec_t * mpeg2dec)

◆ parse_chunk()

static int parse_chunk ( mpeg2dec_t * mpeg2dec,
int code,
uint8_t * buffer,
int next_code )
inlinestatic

References _x_stream_info_set(), mpeg2dec_s::accel, mpeg2dec_s::afd_value_reported, mpeg2dec_s::afd_value_seen, xine_format_change_data_t::aspect, B_TYPE, vo_frame_s::bad_frame, mpeg2dec_s::chunk_buffer, mpeg2dec_s::chunk_size, code, picture_s::current_frame, D_TYPE, mpeg2dec_s::drop_frame, picture_t::field, mpeg2dec_s::force_aspect, mpeg2dec_s::force_pan_scan, mpeg2dec_s::frame_format, FRAME_PICTURE, mpeg2dec_s::frames_to_drop, get_aspect_ratio(), xine_video_port_s::get_frame, get_frame_duration(), xine_format_change_data_t::height, I_TYPE, mpeg2dec_s::in_slice, mpeg2dec_s::is_frame_needed, mpeg2dec_s::is_sequence_needed, mpeg2dec_s::is_wait_for_ip_frames, libmpeg2_accel_frame_completion(), libmpeg2_accel_new_frame(), libmpeg2_accel_new_sequence(), libmpeg2_accel_slice(), lprintf, mpeg2_flush(), mpeg2_header_extension(), mpeg2_header_group_of_pictures(), mpeg2_header_picture(), mpeg2_header_sequence(), mpeg2_stats(), mpeg2dec_s::new_sequence, NULL, P_TYPE, xine_format_change_data_t::pan_scan, mpeg2dec_s::picture, process_userdata(), picture_t::progressive_frame, mpeg2dec_s::pts, remember_metainfo(), picture_t::repeat_first_field, mpeg2dec_s::stream, picture_t::top_field_first, xine_stream_s::video_out, VO_INTERLACED_FLAG, VO_NEW_SEQUENCE_FLAG, VO_PAN_SCAN_FLAG, xine_format_change_data_t::width, XINE_EVENT_FRAME_FORMAT_CHANGE, xine_event_send(), XINE_PICT_B_TYPE, XINE_PICT_D_TYPE, XINE_PICT_I_TYPE, XINE_PICT_P_TYPE, XINE_STREAM_INFO_VIDEO_AFD, XINE_STREAM_INFO_VIDEO_HEIGHT, XINE_STREAM_INFO_VIDEO_WIDTH, and XINE_VIDEO_AFD_NOT_PRESENT.

Referenced by mpeg2_decode_data().

◆ process_userdata()

static void process_userdata ( mpeg2dec_t * mpeg2dec,
uint8_t * buffer )
static

◆ remember_metainfo()

static void remember_metainfo ( mpeg2dec_t * mpeg2dec)
static