X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=play.c;h=55c9ec1bbb635946fe8ec92eadb52fa0accc8bf6;hp=23d184da551273595b127c45ffc041aba81f9565;hb=ee3dfa7ab8a74124448649386e877775cd8625b6;hpb=9081daa84546dc48c0c521cb2081ef20c896e019 diff --git a/play.c b/play.c index 23d184da..55c9ec1b 100644 --- a/play.c +++ b/play.c @@ -263,7 +263,7 @@ static int get_playback_error(struct play_task *pt) static int eof_cleanup(struct play_task *pt) { struct writer *w = writers + DEFAULT_WRITER; - struct filter *decoder = filters + pt->fn.filter_num; + const struct filter *decoder = filter_get(pt->fn.filter_num); int ret; ret = get_playback_error(pt); @@ -368,7 +368,7 @@ static int load_file(struct play_task *pt) const char *af; char *tmp, buf[20]; int ret; - struct filter *decoder; + const struct filter *decoder; btr_remove_node(&pt->rn.btrn); if (!pt->rn.receiver || pt->next_file != pt->current_file) { @@ -393,7 +393,7 @@ static int load_file(struct play_task *pt) if (ret < 0) goto fail; pt->fn.filter_num = ret; - decoder = filters + ret; + decoder = filter_get(ret); pt->fn.btrn = btr_new_node(&(struct btr_node_description) EMBRACE(.name = decoder->name, .parent = pt->rn.btrn, .handler = decoder->execute, .context = &pt->fn)); @@ -921,6 +921,8 @@ static int com_jmp(struct play_task *pt, int argc, char **argv) return ret; if (percent < 0 || percent > 100) return -ERRNO_TO_PARA_ERROR(EINVAL); + if (percent == 100) + return com_next(pt, 1, (char *[]){"next", NULL}); if (pt->playing && !pt->fn.btrn) return 0; pt->start_chunk = percent * pt->num_chunks / 100;