/*
- * Copyright (C) 1997-2009 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1997-2010 Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
g->num = 0;
g->start = *now;
} else {
+ struct timeval tmp;
+ if (g->first_chunk + g->num_chunks >= mmd->afd.afhi.chunks_total)
+ return 0;
/*
* Start and duration of this group depend only on the previous
* group. Compute the new group start as g->start += g->duration.
*/
- struct timeval tmp = g->start;
+ tmp = g->start;
tv_add(&tmp, &g->duration, &g->start);
k = fc->fcp->data_slices_per_group + fc->num_extra_slices;
set_group_timing(fc, g);
g->first_chunk += g->num_chunks;
g->num++;
}
- if (g->first_chunk >= mmd->afd.afhi.chunks_total)
- return 0;
if (need_audio_header(fc, vsst)) {
ret = num_slices(vsst->header_len, fc, &g->num_header_slices);
if (ret < 0)
para_munmap(vsst->map, mmd->size);
vsst->map = NULL;
mmd->chunks_sent = 0;
- mmd->offset = 0;
+ //mmd->offset = 0;
mmd->afd.afhi.seconds_total = 0;
mmd->afd.afhi.chunk_tv.tv_sec = 0;
mmd->afd.afhi.chunk_tv.tv_usec = 0;
return 1;
}
+static void set_mmd_offset(void)
+{
+ struct timeval offset;
+ tv_scale(mmd->current_chunk, &mmd->afd.afhi.chunk_tv, &offset);
+ mmd->offset = tv2ms(&offset);
+}
+
/**
* Compute the timeout for the main select-loop of the scheduler.
*
mmd->chunks_sent = 0;
mmd->current_chunk = mmd->repos_request;
mmd->new_vss_status_flags &= ~VSS_REPOS;
+ set_mmd_offset();
}
if (need_to_request_new_audio_file(vsst)) {
PARA_DEBUG_LOG("ready and playing, but no audio file\n");
size_t len;
if (!mmd->chunks_sent) {
- struct timeval tmp;
mmd->stream_start = *now;
- tv_scale(mmd->current_chunk, &mmd->afd.afhi.chunk_tv, &tmp);
- mmd->offset = tv2ms(&tmp);
mmd->events++;
+ set_mmd_offset();
}
/*
* We call the send function also in case of empty chunks as