diff options
author | Darren Salt <linux@youmustbejoking.demon.co.uk> | 2008-08-14 21:33:24 +0100 |
---|---|---|
committer | Darren Salt <linux@youmustbejoking.demon.co.uk> | 2008-08-14 21:33:24 +0100 |
commit | 730a2bb5692f1896542d51b005e33561f17fb4ff (patch) | |
tree | 17ca7af362d34fd4b15d96ad635e687eee8a0d5e /src/demuxers/demux_real.c | |
parent | 9b70d5f03f02bb3497eb7291e9858e34388a9aa1 (diff) | |
parent | 2c0dd5e118628a7cb2130ee89f78fe6e85240916 (diff) | |
download | xine-lib-730a2bb5692f1896542d51b005e33561f17fb4ff.tar.gz xine-lib-730a2bb5692f1896542d51b005e33561f17fb4ff.tar.bz2 |
Merge from 1.1.
--HG--
rename : src/libfaad/Makefile.am => contrib/libfaad/Makefile.am
rename : src/libfaad/analysis.h => contrib/libfaad/analysis.h
rename : src/libfaad/bits.c => contrib/libfaad/bits.c
rename : src/libfaad/bits.h => contrib/libfaad/bits.h
rename : src/libfaad/cfft.c => contrib/libfaad/cfft.c
rename : src/libfaad/cfft.h => contrib/libfaad/cfft.h
rename : src/libfaad/cfft_tab.h => contrib/libfaad/cfft_tab.h
rename : src/libfaad/codebook/hcb.h => contrib/libfaad/codebook/hcb.h
rename : src/libfaad/codebook/hcb_1.h => contrib/libfaad/codebook/hcb_1.h
rename : src/libfaad/codebook/hcb_10.h => contrib/libfaad/codebook/hcb_10.h
rename : src/libfaad/codebook/hcb_11.h => contrib/libfaad/codebook/hcb_11.h
rename : src/libfaad/codebook/hcb_2.h => contrib/libfaad/codebook/hcb_2.h
rename : src/libfaad/codebook/hcb_3.h => contrib/libfaad/codebook/hcb_3.h
rename : src/libfaad/codebook/hcb_4.h => contrib/libfaad/codebook/hcb_4.h
rename : src/libfaad/codebook/hcb_5.h => contrib/libfaad/codebook/hcb_5.h
rename : src/libfaad/codebook/hcb_6.h => contrib/libfaad/codebook/hcb_6.h
rename : src/libfaad/codebook/hcb_7.h => contrib/libfaad/codebook/hcb_7.h
rename : src/libfaad/codebook/hcb_8.h => contrib/libfaad/codebook/hcb_8.h
rename : src/libfaad/codebook/hcb_9.h => contrib/libfaad/codebook/hcb_9.h
rename : src/libfaad/codebook/hcb_sf.h => contrib/libfaad/codebook/hcb_sf.h
rename : src/libfaad/common.c => contrib/libfaad/common.c
rename : src/libfaad/common.h => contrib/libfaad/common.h
rename : src/libfaad/decoder.c => contrib/libfaad/decoder.c
rename : src/libfaad/decoder.h => contrib/libfaad/decoder.h
rename : src/libfaad/drc.c => contrib/libfaad/drc.c
rename : src/libfaad/drc.h => contrib/libfaad/drc.h
rename : src/libfaad/drm_dec.c => contrib/libfaad/drm_dec.c
rename : src/libfaad/drm_dec.h => contrib/libfaad/drm_dec.h
rename : src/libfaad/error.c => contrib/libfaad/error.c
rename : src/libfaad/error.h => contrib/libfaad/error.h
rename : src/libfaad/filtbank.c => contrib/libfaad/filtbank.c
rename : src/libfaad/filtbank.h => contrib/libfaad/filtbank.h
rename : src/libfaad/fixed.h => contrib/libfaad/fixed.h
rename : src/libfaad/hcr.c => contrib/libfaad/hcr.c
rename : src/libfaad/huffman.c => contrib/libfaad/huffman.c
rename : src/libfaad/huffman.h => contrib/libfaad/huffman.h
rename : src/libfaad/ic_predict.c => contrib/libfaad/ic_predict.c
rename : src/libfaad/ic_predict.h => contrib/libfaad/ic_predict.h
rename : src/libfaad/iq_table.h => contrib/libfaad/iq_table.h
rename : src/libfaad/is.c => contrib/libfaad/is.c
rename : src/libfaad/is.h => contrib/libfaad/is.h
rename : src/libfaad/kbd_win.h => contrib/libfaad/kbd_win.h
rename : src/libfaad/lt_predict.c => contrib/libfaad/lt_predict.c
rename : src/libfaad/lt_predict.h => contrib/libfaad/lt_predict.h
rename : src/libfaad/mdct.c => contrib/libfaad/mdct.c
rename : src/libfaad/mdct.h => contrib/libfaad/mdct.h
rename : src/libfaad/mdct_tab.h => contrib/libfaad/mdct_tab.h
rename : src/libfaad/mp4.c => contrib/libfaad/mp4.c
rename : src/libfaad/mp4.h => contrib/libfaad/mp4.h
rename : src/libfaad/ms.c => contrib/libfaad/ms.c
rename : src/libfaad/ms.h => contrib/libfaad/ms.h
rename : src/libfaad/output.c => contrib/libfaad/output.c
rename : src/libfaad/output.h => contrib/libfaad/output.h
rename : src/libfaad/pns.c => contrib/libfaad/pns.c
rename : src/libfaad/pns.h => contrib/libfaad/pns.h
rename : src/libfaad/ps_dec.c => contrib/libfaad/ps_dec.c
rename : src/libfaad/ps_dec.h => contrib/libfaad/ps_dec.h
rename : src/libfaad/ps_syntax.c => contrib/libfaad/ps_syntax.c
rename : src/libfaad/ps_tables.h => contrib/libfaad/ps_tables.h
rename : src/libfaad/pulse.c => contrib/libfaad/pulse.c
rename : src/libfaad/pulse.h => contrib/libfaad/pulse.h
rename : src/libfaad/rvlc.c => contrib/libfaad/rvlc.c
rename : src/libfaad/rvlc.h => contrib/libfaad/rvlc.h
rename : src/libfaad/sbr_dct.c => contrib/libfaad/sbr_dct.c
rename : src/libfaad/sbr_dct.h => contrib/libfaad/sbr_dct.h
rename : src/libfaad/sbr_dec.c => contrib/libfaad/sbr_dec.c
rename : src/libfaad/sbr_dec.h => contrib/libfaad/sbr_dec.h
rename : src/libfaad/sbr_e_nf.c => contrib/libfaad/sbr_e_nf.c
rename : src/libfaad/sbr_e_nf.h => contrib/libfaad/sbr_e_nf.h
rename : src/libfaad/sbr_fbt.c => contrib/libfaad/sbr_fbt.c
rename : src/libfaad/sbr_fbt.h => contrib/libfaad/sbr_fbt.h
rename : src/libfaad/sbr_hfadj.c => contrib/libfaad/sbr_hfadj.c
rename : src/libfaad/sbr_hfadj.h => contrib/libfaad/sbr_hfadj.h
rename : src/libfaad/sbr_hfgen.c => contrib/libfaad/sbr_hfgen.c
rename : src/libfaad/sbr_hfgen.h => contrib/libfaad/sbr_hfgen.h
rename : src/libfaad/sbr_huff.c => contrib/libfaad/sbr_huff.c
rename : src/libfaad/sbr_huff.h => contrib/libfaad/sbr_huff.h
rename : src/libfaad/sbr_noise.h => contrib/libfaad/sbr_noise.h
rename : src/libfaad/sbr_qmf.c => contrib/libfaad/sbr_qmf.c
rename : src/libfaad/sbr_qmf.h => contrib/libfaad/sbr_qmf.h
rename : src/libfaad/sbr_qmf_c.h => contrib/libfaad/sbr_qmf_c.h
rename : src/libfaad/sbr_syntax.c => contrib/libfaad/sbr_syntax.c
rename : src/libfaad/sbr_syntax.h => contrib/libfaad/sbr_syntax.h
rename : src/libfaad/sbr_tf_grid.c => contrib/libfaad/sbr_tf_grid.c
rename : src/libfaad/sbr_tf_grid.h => contrib/libfaad/sbr_tf_grid.h
rename : src/libfaad/sine_win.h => contrib/libfaad/sine_win.h
rename : src/libfaad/specrec.c => contrib/libfaad/specrec.c
rename : src/libfaad/specrec.h => contrib/libfaad/specrec.h
rename : src/libfaad/ssr.c => contrib/libfaad/ssr.c
rename : src/libfaad/ssr.h => contrib/libfaad/ssr.h
rename : src/libfaad/ssr_fb.c => contrib/libfaad/ssr_fb.c
rename : src/libfaad/ssr_fb.h => contrib/libfaad/ssr_fb.h
rename : src/libfaad/ssr_ipqf.c => contrib/libfaad/ssr_ipqf.c
rename : src/libfaad/ssr_ipqf.h => contrib/libfaad/ssr_ipqf.h
rename : src/libfaad/ssr_win.h => contrib/libfaad/ssr_win.h
rename : src/libfaad/structs.h => contrib/libfaad/structs.h
rename : src/libfaad/syntax.c => contrib/libfaad/syntax.c
rename : src/libfaad/syntax.h => contrib/libfaad/syntax.h
rename : src/libfaad/tns.c => contrib/libfaad/tns.c
rename : src/libfaad/tns.h => contrib/libfaad/tns.h
rename : src/libfaad/xine_faad_decoder.c => src/audio_dec/xine_faad_decoder.c
rename : src/demuxers/demux_ogg.c => src/combined/xine_ogg_demuxer.c
Diffstat (limited to 'src/demuxers/demux_real.c')
-rw-r--r-- | src/demuxers/demux_real.c | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/src/demuxers/demux_real.c b/src/demuxers/demux_real.c index 105dc60a5..00e5f49fe 100644 --- a/src/demuxers/demux_real.c +++ b/src/demuxers/demux_real.c @@ -90,11 +90,11 @@ typedef struct { uint32_t start_time; uint32_t preroll; uint32_t duration; - char stream_name_size; + size_t stream_name_size; char *stream_name; - char mime_type_size; + size_t mime_type_size; char *mime_type; - uint32_t type_specific_len; + size_t type_specific_len; char *type_specific_data; } mdpr_t; @@ -115,7 +115,7 @@ typedef struct { mdpr_t *mdpr; int sps, cfs, w, h; int block_align; - int frame_size; + size_t frame_size; uint8_t *frame_buffer; uint32_t frame_num_bytes; uint32_t sub_packet_cnt; @@ -359,8 +359,12 @@ static void real_parse_audio_specific_data (demux_real_t *this, stream->frame_num_bytes = 0; stream->sub_packet_cnt = 0; + if (!stream->frame_buffer) + xprintf (this->stream->xine, XINE_VERBOSITY_LOG, + "demux_real: failed to allocate the audio frame buffer!\n"); + xprintf (this->stream->xine, XINE_VERBOSITY_LOG, - "demux_real: buf type 0x%08x frame size %dblock align %d\n", stream->buf_type, + "demux_real: buf type 0x%08x frame size %zu block align %d\n", stream->buf_type, stream->frame_size, stream->block_align); } @@ -1370,13 +1374,20 @@ static int demux_real_send_chunk(demux_plugin_t *this_gen) { int cfs = this->audio_stream->cfs; int w = this->audio_stream->w; int spc = this->audio_stream->sub_packet_cnt; - int x, pos; + int x; + off_t pos; + const size_t fs = this->audio_stream->frame_size; + + if (!buffer) { + this->status = DEMUX_FINISHED; + return this->status; + } switch (this->audio_stream->buf_type) { case BUF_AUDIO_28_8: for (x = 0; x < sph / 2; x++) { pos = x * 2 * w + spc * cfs; - if(this->input->read(this->input, buffer + pos, cfs) < cfs) { + if(pos + cfs > fs || this->input->read(this->input, buffer + pos, cfs) < cfs) { xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_real: failed to read audio chunk\n"); @@ -1389,7 +1400,7 @@ static int demux_real_send_chunk(demux_plugin_t *this_gen) { case BUF_AUDIO_ATRK: for (x = 0; x < w / sps; x++) { pos = sps * (sph * x + ((sph + 1) / 2) * (spc & 1) + (spc >> 1)); - if(this->input->read(this->input, buffer + pos, sps) < sps) { + if(pos + sps > fs || this->input->read(this->input, buffer + pos, sps) < sps) { xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_real: failed to read audio chunk\n"); @@ -1400,7 +1411,7 @@ static int demux_real_send_chunk(demux_plugin_t *this_gen) { break; case BUF_AUDIO_SIPRO: pos = spc * w; - if(this->input->read(this->input, buffer + pos, w) < w) { + if(pos + w > fs || this->input->read(this->input, buffer + pos, w) < w) { xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_real: failed to read audio chunk\n"); |