summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_mkv.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmpdemux/demux_mkv.c')
-rw-r--r--libmpdemux/demux_mkv.c32
1 files changed, 6 insertions, 26 deletions
diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c
index 118217e999..8280a8793e 100644
--- a/libmpdemux/demux_mkv.c
+++ b/libmpdemux/demux_mkv.c
@@ -240,30 +240,10 @@ add_cluster_position (mkv_demuxer_t *mkv_d, uint64_t position)
static int
aac_get_sample_rate_index (uint32_t sample_rate)
{
- if (92017 <= sample_rate)
- return 0;
- else if (75132 <= sample_rate)
- return 1;
- else if (55426 <= sample_rate)
- return 2;
- else if (46009 <= sample_rate)
- return 3;
- else if (37566 <= sample_rate)
- return 4;
- else if (27713 <= sample_rate)
- return 5;
- else if (23004 <= sample_rate)
- return 6;
- else if (18783 <= sample_rate)
- return 7;
- else if (13856 <= sample_rate)
- return 8;
- else if (11502 <= sample_rate)
- return 9;
- else if (9391 <= sample_rate)
- return 10;
- else
- return 11;
+ static const int srates[] = {92017, 75132, 55426, 46009, 37566, 27713, 23004, 18783, 13856, 11502, 9391, 0};
+ int i = 0;
+ while (sample_rate < srates[i]) i++;
+ return i;
}
/** \brief Free cached demux packets
@@ -1637,7 +1617,7 @@ demux_mkv_open_video (demuxer_t *demuxer, mkv_track_t *track, int vid)
uint32_t type2;
unsigned int cnt;
- src = track->private_data + RVPROPERTIES_SIZE;
+ src = (uint8_t *)track->private_data + RVPROPERTIES_SIZE;
cnt = track->private_size - RVPROPERTIES_SIZE;
bih = realloc(bih, sizeof (BITMAPINFOHEADER)+8+cnt);
@@ -2992,7 +2972,7 @@ demux_mkv_seek (demuxer_t *demuxer, float rel_seek_secs, float audio_delay, int
target_filepos = (uint64_t) (target_timecode * mkv_d->last_filepos
/ (mkv_d->last_pts * 1000.0));
- max_pos = mkv_d->cluster_positions[mkv_d->num_cluster_pos-1];
+ max_pos = mkv_d->num_cluster_pos ? mkv_d->cluster_positions[mkv_d->num_cluster_pos-1] : 0;
if (target_filepos > max_pos)
{
if ((off_t) max_pos > stream_tell (s))