Go to the documentation of this file.
23 #ifndef ALTERH264_BITS_READER_H
24 #define ALTERH264_BITS_READER_H
25 #include <sys/types.h>
49 static inline uint32_t
52 uint8_t val[8] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 };
56 while (--buf >= br->
buffer)
58 for (bit = 7; bit > -1; bit--)
94 static inline uint32_t
97 uint8_t val[8] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 };
102 res = (res << 1) + ((*br->
buffer & val[br->
offbits]) ? 1 : 0);
128 static inline uint32_t
134 for (b = 0; !b; leading++)
137 return (1 << leading) - 1 +
read_bits (br, leading);
142 static inline int32_t
146 return (res & 0x01) ? (res + 1) / 2 : -(res / 2);
Definition: xine_internal.h:80
#define XINE_STREAM_INFO_VIDEO_WIDTH
Definition: xine.h:1007
#define XINE_IMGFMT_YV12
Definition: xine.h:494
int pitches[3]
Definition: video_out.h:117
Definition: xine_mpeg2new_decoder.c:52
int32_t size
Definition: buffer.h:343
xine_t * xine
Definition: xine_internal.h:126
void mpeg2_custom_fbuf(mpeg2dec_t *mpeg2dec, int custom_fbuf)
Definition: decode.c:350
#define SEQ_FLAG_MPEG2
Definition: mpeg2.h:30
static void mpeg2_video_discontinuity(video_decoder_t *this_gen)
Definition: xine_mpeg2new_decoder.c:430
Definition: alterh264_bits_reader.h:31
Definition: video_decoder.h:73
#define XINE_STREAM_INFO_VIDEO_RATIO
Definition: xine.h:1009
Definition: xine_internal.h:123
#define VO_GET_FRAME_MAY_FAIL
Definition: video_out.h:299
void * mpeg2_malloc(unsigned size, mpeg2_alloc_t reason)
Definition: alloc.c:32
#define LOG_MODULE
Definition: libopenhevc.c:27
#define XINE_STREAM_INFO_VIDEO_BITRATE
Definition: xine.h:1012
int64_t pts
Definition: video_out.h:109
#define xine_buffer_copyin(buf, i, data, len)
Definition: xine_buffer.c:194
#define BUF_FLAG_FRAME_END
Definition: buffer.h:371
#define xine_buffer_free(buf)
Definition: xine_buffer.c:149
#define ldl(p)
Definition: alpha_asm.h:76
uint32_t rff_pattern
Definition: xine_mpeg2new_decoder.c:66
void mpeg2_idct_add_mvi(int last, int16_t *block, uint8_t *dest, int stride)
#define MPEG2_ACCEL_SPARC_VIS
Definition: mpeg2.h:163
unsigned int picture_width
Definition: mpeg2.h:51
#define W2
Definition: idct.c:52
static int(* free_hook)(void *buf)
Definition: alloc.c:30
xine_stream_t * stream
Definition: libopenhevc.c:40
#define CLIP(i)
Definition: idct.c:65
const mpeg2_info_t * mpeg2_info(mpeg2dec_t *mpeg2dec)
Definition: decode.c:38
#define VO_PROP_MAX_VIDEO_WIDTH
Definition: video_out.h:273
uint32_t flags
Definition: mpeg2.h:91
int pos
Definition: libpng.c:66
void *(* xine_fast_memcpy)(void *to, const void *from, size_t len)
Definition: memcpy.c:60
#define BUF_FLAG_COLOR_MATRIX
Definition: buffer.h:421
#define W7
Definition: idct.c:56
uint32_t decoder_info[5]
Definition: buffer.h:353
#define MPEG2_ACCEL_PPC_ALTIVEC
Definition: mpeg2.h:160
uint32_t id
Definition: xine_mpeg2new_decoder.c:53
#define MM_ACCEL_X86_MMX
Definition: xineutils.h:164
#define MM_ACCEL_MLIB
Definition: xineutils.h:161
void mpeg2_idct_alpha_init(void)
int oflow
Definition: alterh264_bits_reader.h:33
void * id
Definition: mpeg2.h:99
#define W1
Definition: idct.c:51
#define MPEG2_ACCEL_ALPHA
Definition: mpeg2.h:161
#define MPEG2_ACCEL_DETECT
Definition: mpeg2.h:165
static void mpeg2_video_dispose(video_decoder_t *this_gen)
Definition: xine_mpeg2new_decoder.c:438
mpeg2_alloc_t
Definition: mpeg2.h:189
static const decoder_info_t dec_info_video
Definition: libopenhevc.c:255
#define avg2(a, b)
Definition: motion_comp.c:87
unsigned int nb_fields
Definition: mpeg2.h:89
#define VO_BOTTOM_FIELD
Definition: video_out.h:292
@ STATE_GOP
Definition: mpeg2.h:124
video_decoder_t video_decoder
Definition: libpng.c:47
#define BUF_VIDEO_PNG
Definition: buffer.h:197
static uint32_t read_bits(bits_reader_t *br, int nbits)
Definition: alterh264_bits_reader.h:95
void rgb2yuy2_slice(rgb2yuy2_t *rgb2yuy2, const uint8_t *restrict in, int ipitch, uint8_t *restrict out, int opitch, int width, int height)
Definition: color.c:2063
void mpeg2_malloc_hooks(void *malloc(unsigned, mpeg2_alloc_t), int free(void *))
Definition: alloc.c:65
void(* proc_slice)(vo_frame_t *vo_img, uint8_t **src)
Definition: video_out.h:83
video_decoder_t video_decoder
Definition: libopenhevc.c:38
xine_t * xine
Definition: libpng.c:63
Definition: xine_mpeg2new_decoder.c:57
int id
Definition: video_out.h:166
static void mpeg2_video_reset(video_decoder_t *this_gen)
Definition: xine_mpeg2new_decoder.c:315
int top_field_first
Definition: video_out.h:120
const uint8_t * buffer
Definition: alterh264_bits_reader.h:32
#define lprintf(...)
Definition: xineutils.h:620
@ STATE_SEQUENCE
Definition: mpeg2.h:121
#define XINE_STREAM_INFO_VIDEO_HEIGHT
Definition: xine.h:1008
static void hevc_dispose(video_decoder_t *this_gen)
Definition: libopenhevc.c:184
#define put(predictor, i)
Definition: motion_comp.c:96
xine_stream_t * stream
Definition: xine_mpeg2new_decoder.c:60
int32_t force_aspect
Definition: xine_mpeg2new_decoder.c:61
static const uint32_t video_types[]
Definition: libopenhevc.c:250
static void _user_warning(png_structp png, png_const_charp msg)
Definition: libpng.c:81
#define MPEG2_ACCEL_ALPHA_MVI
Definition: mpeg2.h:162
#define W3
Definition: idct.c:53
#define BUTTERFLY(t0, t1, W0, W1, d0, d1)
Definition: idct.c:61
#define LOG_MODULE
Definition: libpng.c:32
@ STATE_BUFFER
Definition: mpeg2.h:120
int frame_flags
Definition: libopenhevc.c:50
struct hevc_decoder_s hevc_decoder_t
#define W6
Definition: idct.c:55
#define ldq(p)
Definition: alpha_asm.h:75
static void mpeg2_video_decode_data(video_decoder_t *this_gen, buf_element_t *buf_element)
Definition: xine_mpeg2new_decoder.c:118
mpeg2dec_t * mpeg2dec
Definition: xine_mpeg2new_decoder.c:59
int64_t pts
Definition: libopenhevc.c:42
#define MPEG2_ACCEL_X86_3DNOW
Definition: mpeg2.h:156
#define W5
Definition: idct.c:54
unsigned int frame_period
Definition: mpeg2.h:54
const uint8_t * image
Definition: libpng.c:64
@ STATE_SLICE
Definition: mpeg2.h:128
int64_t pts
Definition: buffer.h:345
static uint32_t more_rbsp_data(bits_reader_t *br)
Definition: alterh264_bits_reader.h:50
img_state_t img_state[30]
Definition: xine_mpeg2new_decoder.c:64
int height
Definition: video_out.h:138
#define MPEG2_ACCEL_X86_MMX
Definition: mpeg2.h:155
video_decoder_t video_decoder
Definition: xine_mpeg2new_decoder.c:58
const plugin_info_t xine_plugin_info[] EXPORTED
Definition: xine_mpeg2new_decoder.c:502
NULL
Definition: xine_plugin.c:78
#define MM_ACCEL_X86_SSE3
Definition: xineutils.h:169
void mpeg2_init(mpeg2dec_t *mpeg2dec, xine_video_port_t *output)
Definition: decode.c:57
static void mpeg2_video_flush(video_decoder_t *this_gen)
Definition: xine_mpeg2new_decoder.c:306
static void png_decode_data(video_decoder_t *this_gen, buf_element_t *buf)
Definition: libpng.c:314
uint8_t mpeg2_clip[3840 *2+256]
Definition: idct.c:51
static vo_frame_t * _png_decode_data(png_decoder_t *this, const uint8_t *data, size_t size)
Definition: libpng.c:106
#define XINE_VERBOSITY_LOG
Definition: xine.h:425
int64_t pts
Definition: libpng.c:50
uint32_t xine_mm_accel(void)
Definition: cpu_accel.c:390
int bad_frame
Definition: video_out.h:111
const mpeg2_fbuf_t * display_fbuf
Definition: mpeg2.h:110
OpenHevc_Handle handle
Definition: libopenhevc.c:43
#define sextw(x)
Definition: alpha_asm.h:79
mpeg2_state_t mpeg2_parse(mpeg2dec_t *mpeg2dec)
Definition: decode.c:152
static void idct_col(int16_t *block)
Definition: idct.c:146
static void skip_bits(bits_reader_t *br, int nbits)
Definition: alterh264_bits_reader.h:115
Definition: mpeg2_internal.h:284
static void hevc_flush(video_decoder_t *this_gen)
Definition: libopenhevc.c:162
#define _x_abort()
Definition: xine_mpeg2new_decoder.c:50
Definition: xine_plugin.h:77
int progressive_frame
Definition: video_out.h:125
const mpeg2_fbuf_t * discard_fbuf
Definition: mpeg2.h:111
unsigned int width
Definition: gfontrle.c:4
static int32_t read_exp_se(bits_reader_t *br)
Definition: alterh264_bits_reader.h:143
void _x_stream_info_set(xine_stream_t *s, int info, int value)
Definition: info_helper.c:79
#define MPEG2_ACCEL_SPARC_VIS2
Definition: mpeg2.h:164
static void png_dispose(video_decoder_t *this_gen)
Definition: libpng.c:393
#define XINE_VERSION_CODE
Definition: xine_internal.h:57
int repeat_first_field
Definition: video_out.h:121
unsigned int picture_height
Definition: mpeg2.h:51
#define stl(l, p)
Definition: alpha_asm.h:77
#define MM_ACCEL_X86_3DNOW
Definition: xineutils.h:165
#define MM_ACCEL_X86_AVX
Definition: xineutils.h:173
#define MM_ACCEL_X86_SSE
Definition: xineutils.h:167
int duration
Definition: video_out.h:112
#define BUF_FLAG_SPECIAL
Definition: buffer.h:395
#define VO_CAP_FULLRANGE
Definition: video_out.h:320
const uint32_t * supported_types
Definition: xine_plugin.h:78
void mpeg2_idct_add_alpha(int last, int16_t *block, uint8_t *dest, int stride)
static int _cpu_count()
Definition: cpu_accel.c:445
int size
Definition: libpng.c:65
static void _user_read(png_structp png, png_bytep data, png_size_t length)
Definition: libpng.c:88
int size
Definition: libopenhevc.c:48
int xine_cpu_count(void)
Definition: cpu_accel.c:489
static video_decoder_t * open_plugin(video_decoder_class_t *class_gen, xine_stream_t *stream)
Definition: libopenhevc.c:198
vo_frame_t * vo_frame
Definition: libpng.c:52
int bufsize
Definition: libopenhevc.c:47
static void idct_row(int16_t *block)
Definition: idct.c:77
#define PIC_FLAG_TOP_FIELD_FIRST
Definition: mpeg2.h:80
static void * init_plugin(xine_t *xine, const void *data)
Definition: xine_mpeg2new_decoder.c:480
unsigned int byte_rate
Definition: mpeg2.h:47
static void _user_error(png_structp png, png_const_charp msg)
Definition: libpng.c:73
#define PLUGIN_VIDEO_DECODER
Definition: xine_plugin.h:33
void _x_meta_info_set_utf8(xine_stream_t *s, int info, const char *str)
Definition: info_helper.c:341
int decoder_ok
Definition: libopenhevc.c:44
#define VO_BOTH_FIELDS
Definition: video_out.h:293
@ STATE_PICTURE
Definition: mpeg2.h:125
#define avg(predictor, i)
Definition: motion_comp.c:97
unsigned int pixel_width
Definition: mpeg2.h:53
#define MM_ACCEL_SPARC_VIS2
Definition: xineutils.h:182
#define XINE_VERBOSITY_DEBUG
Definition: xine.h:426
xine_video_port_t *volatile video_out
Definition: xine_internal.h:135
struct png_decoder_s png_decoder_t
#define MPEG2_ACCEL_X86_MMXEXT
Definition: mpeg2.h:157
#define VO_SET_FLAGS_CM(cm, flags)
Definition: video_out.h:304
#define MM_ACCEL_X86_SSE4
Definition: xineutils.h:171
static const decoder_info_t dec_info_png
Definition: libpng.c:464
static uint32_t read_exp_ue(bits_reader_t *br)
Definition: alterh264_bits_reader.h:129
Definition: video_decoder.h:41
static video_decoder_t * open_plugin(video_decoder_class_t *class_gen, xine_stream_t *stream)
Definition: libpng.c:410
#define BUF_FLAG_STDHEADER
Definition: buffer.h:401
#define BUF_VIDEO_HEVC
Definition: buffer.h:195
#define MM_ACCEL_X86_SSSE3
Definition: xineutils.h:170
#define XINE_STREAM_INFO_FRAME_DURATION
Definition: xine.h:1015
double ratio
Definition: xine_mpeg2new_decoder.c:63
#define MM_ACCEL_X86_SSE42
Definition: xineutils.h:172
unsigned char * mem
Definition: buffer.h:340
const plugin_info_t xine_plugin_info[] EXPORTED
Definition: libopenhevc.c:260
static void png_discontinuity(video_decoder_t *this_gen)
Definition: libpng.c:387
void(* open)(xine_video_port_t *self, xine_stream_t *stream)
Definition: video_out.h:183
int format
Definition: video_out.h:140
#define XINE_META_INFO_VIDEOCODEC
Definition: xine.h:1068
unsigned int height
Definition: gfontrle.c:5
#define MM_ACCEL_X86_SSE2
Definition: xineutils.h:168
uint8_t * buf
Definition: libpng.c:54
static void png_reset(video_decoder_t *this_gen)
Definition: libpng.c:375
unsigned char * buf
Definition: libopenhevc.c:46
int offbits
Definition: alterh264_bits_reader.h:33
#define MPEG2_ACCEL_X86_SSE3
Definition: mpeg2.h:159
#define likely(x)
Definition: attributes.h:31
static void hevc_discontinuity(video_decoder_t *this_gen)
Definition: libopenhevc.c:178
int buf_size
Definition: libpng.c:55
mpeg2_mc_t mpeg2_mc_alpha
static void mpeg2_video_print_bad_state(img_state_t *img_state)
Definition: xine_mpeg2new_decoder.c:71
rgb2yuy2_t * rgb2yuy2_alloc(int color_matrix, const char *format)
Definition: color.c:1768
const mpeg2_fbuf_t * current_fbuf
Definition: mpeg2.h:107
static void png_flush(video_decoder_t *this_gen)
Definition: libpng.c:363
void mpeg2_idct_copy_mvi(int16_t *block, uint8_t *dest, int stride)
int length
Definition: alterh264_bits_reader.h:33
#define MM_ACCEL_SPARC_VIS
Definition: xineutils.h:181
static video_decoder_t * open_plugin(video_decoder_class_t *class_gen, xine_stream_t *stream)
Definition: xine_mpeg2new_decoder.c:453
#define BUF_VIDEO_MPEG
Definition: buffer.h:90
void mpeg2_reset(mpeg2dec_t *mpeg2dec)
Definition: decode.c:741
int(* draw)(vo_frame_t *vo_img, xine_stream_t *stream)
Definition: video_out.h:91
unsigned char * content
Definition: buffer.h:341
xine_stream_t * stream
Definition: libpng.c:49
static void hevc_decode_data(video_decoder_t *this_gen, buf_element_t *buf)
Definition: libopenhevc.c:55
static uint8_t bits_reader_shift(bits_reader_t *br)
Definition: alterh264_bits_reader.h:68
vo_frame_t * img
Definition: xine_mpeg2new_decoder.c:54
#define PLUGIN_NONE
Definition: xine_plugin.h:29
mpeg2_state_t
Definition: mpeg2.h:119
const uint8_t * start
Definition: alterh264_bits_reader.h:32
uint32_t flags
Definition: mpeg2.h:49
#define BUF_SPECIAL_ASPECT
Definition: buffer.h:479
static void * init_class(xine_t *xine, const void *data)
Definition: libpng.c:443
void mpeg2_idct_copy_alpha(int16_t *block, uint8_t *dest, int stride)
uint32_t decoder_flags
Definition: buffer.h:350
#define VO_TOP_FIELD
Definition: video_out.h:291
#define VO_CAP_YUY2
Definition: video_out.h:308
Definition: video_out.h:59
static void mpeg2_video_free_all(img_state_t *img_state)
Definition: xine_mpeg2new_decoder.c:87
#define MPEG2_ACCEL_X86_SSE2
Definition: mpeg2.h:158
Definition: libopenhevc.c:37
#define stq(l, p)
Definition: alpha_asm.h:78
@ STATE_END
Definition: mpeg2.h:129
uint32_t mpeg2_detect_accel(uint32_t accel)
Definition: cpu_accel.c:252
static const uint32_t supported_types[]
Definition: xine_mpeg2new_decoder.c:495
static const uint32_t supported_types[]
Definition: libpng.c:462
uint32_t frame_number
Definition: xine_mpeg2new_decoder.c:65
const mpeg2_picture_t * current_picture
Definition: mpeg2.h:105
void rgb2yv12_slice(rgb2yuy2_t *rgb2yuy2, const uint8_t *src, int src_stride, uint8_t *y_dst, int y_pitch, uint8_t *u_dst, int u_pitch, uint8_t *v_dst, int v_pitch, int width, int height)
Definition: color.c:2231
uint8_t error
Definition: libpng.c:57
int width
Definition: video_out.h:138
void mpeg2_close(mpeg2dec_t *mpeg2dec)
Definition: decode.c:811
uint8_t video_open
Definition: libpng.c:58
static void *(* malloc_hook)(unsigned size, mpeg2_alloc_t reason)
Definition: alloc.c:29
static const decoder_info_t dec_info_mpeg2
Definition: xine_mpeg2new_decoder.c:497
static void bits_reader_set(bits_reader_t *br, const uint8_t *buf, int len)
Definition: alterh264_bits_reader.h:39
static void * init_plugin(xine_t *xine, const void *data)
Definition: libopenhevc.c:231
uint8_t * base[3]
Definition: video_out.h:116
static uint64_t BYTE_VEC(uint64_t x)
Definition: alpha_asm.h:61
void mpeg2_set_buf(mpeg2dec_t *mpeg2dec, uint8_t *buf[3], void *id)
Definition: decode.c:328
video_decoder_t *(* open_plugin)(video_decoder_class_t *this_gen, xine_stream_t *stream)
Definition: video_decoder.h:46
void * xine_buffer_init(int chunk_size)
Definition: xine_buffer.c:129
static void hevc_reset(video_decoder_t *this_gen)
Definition: libopenhevc.c:169
void mpeg2_buffer(mpeg2dec_t *mpeg2dec, uint8_t *start, uint8_t *end)
Definition: decode.c:111
struct mpeg2_video_decoder_s mpeg2_video_decoder_t
const plugin_info_t xine_plugin_info[] EXPORTED
Definition: libpng.c:469
#define MM_ACCEL_PPC_ALTIVEC
Definition: xineutils.h:176
#define XINE_IMGFMT_YUY2
Definition: xine.h:495
int force_pan_scan
Definition: xine_mpeg2new_decoder.c:62
void rgb2yuy2_free(rgb2yuy2_t *rgb2yuy2)
Definition: color.c:1943
Definition: xine_plugin.h:55
#define MM_ACCEL_X86_MMXEXT
Definition: xineutils.h:166
#define xprintf(xine, verbose,...)
Definition: xineutils.h:664
const mpeg2_sequence_t * sequence
Definition: mpeg2.h:103
#define N_(String)
Definition: xineintl.h:47
void(* free)(vo_frame_t *vo_img)
Definition: video_out.h:100
#define BUF_FLAG_PREVIEW
Definition: buffer.h:380
#define VO_PROP_MAX_VIDEO_HEIGHT
Definition: video_out.h:274
void mpeg2_free(void *buf)
Definition: alloc.c:56