diff options
author | rfelker <rfelker@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-08-31 19:56:13 +0000 |
---|---|---|
committer | rfelker <rfelker@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-08-31 19:56:13 +0000 |
commit | a732a2b6d7b7c2742eed93ab67c962b3e39a8f45 (patch) | |
tree | c406a79ff61c7dd6662d27f70bae06a3d44cba94 /libmpcodecs | |
parent | 601dd91dbdff6a87b2a9ac3c2ae31a9ce81169f9 (diff) | |
download | mpv-a732a2b6d7b7c2742eed93ab67c962b3e39a8f45.tar.bz2 mpv-a732a2b6d7b7c2742eed93ab67c962b3e39a8f45.tar.xz |
tweaks and cleanup
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10739 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs')
-rw-r--r-- | libmpcodecs/pullup.c | 29 | ||||
-rw-r--r-- | libmpcodecs/pullup.h | 1 | ||||
-rw-r--r-- | libmpcodecs/vf_pullup.c | 1 |
3 files changed, 22 insertions, 9 deletions
diff --git a/libmpcodecs/pullup.c b/libmpcodecs/pullup.c index a6bbe7cd82..bae21ec8f5 100644 --- a/libmpcodecs/pullup.c +++ b/libmpcodecs/pullup.c @@ -321,10 +321,9 @@ static void compute_breaks(struct pullup_context *c, struct pullup_field *f0) if (-l > max_r) max_r = -l; } /* Don't get tripped up when differences are mostly quant error */ - if (max_l + max_r < 256) return; + if (max_l + max_r < 128) return; if (max_l > 4*max_r) f1->breaks |= BREAK_LEFT; if (max_r > 4*max_l) f2->breaks |= BREAK_RIGHT; - //printf("max_l=%d max_r=%d\n", max_l, max_r); } static void compute_affinity(struct pullup_context *c, struct pullup_field *f) @@ -338,9 +337,9 @@ static void compute_affinity(struct pullup_context *c, struct pullup_field *f) if (l > max_l) max_l = l; if (-l > max_r) max_r = -l; } - if (max_l + max_r < 256) return; - if (max_r > 3*max_l) f->affinity = -1; - else if (max_l > 3*max_r) f->affinity = 1; + if (max_l + max_r < 128) return; + if (max_r > 2*max_l) f->affinity = -1; + else if (max_l > 2*max_r) f->affinity = 1; else if (max_l + max_r > 2048) { l = t = 0; for (i = 0; i < c->metric_len; i++) { @@ -349,7 +348,6 @@ static void compute_affinity(struct pullup_context *c, struct pullup_field *f) } if (-l*4 > t) f->affinity = -1; else if (l*4 > t) f->affinity = 1; - //printf("affinity from avg: %d\n", f->affinity); } } @@ -396,6 +394,7 @@ static int decide_frame_length(struct pullup_context *c) else if (f1->affinity == -1) return 2; else if (f2->affinity == 1) return 2; else if (f0->affinity == 1 && f2->affinity == -1) return 3; + else if (f2->affinity == -1) return 1; else if (f2->affinity == 0 && f3->affinity == 1) return 3; else return 2; } @@ -435,8 +434,10 @@ struct pullup_frame *pullup_get_frame(struct pullup_context *c) if (!n) return 0; if (fr->lock) return 0; - print_aff_and_breaks(c, c->first); - printf("duration: %d \n", n); + if (c->verbose) { + print_aff_and_breaks(c, c->first); + printf("duration: %d \n", n); + } fr->lock++; fr->length = n; @@ -569,7 +570,17 @@ void pullup_init_context(struct pullup_context *c) void pullup_free_context(struct pullup_context *c) { - /* FIXME: free! */ + struct pullup_field *f; + free(c->buffers); + f = c->head; + do { + free(f->diffs); + free(f->licomb); + f = f->next; + free(f->prev); + } while (f != c->head); + free(c->frame); + free(c); } diff --git a/libmpcodecs/pullup.h b/libmpcodecs/pullup.h index a51f0e169f..643eaafd21 100644 --- a/libmpcodecs/pullup.h +++ b/libmpcodecs/pullup.h @@ -47,6 +47,7 @@ struct pullup_context int *bpp, *w, *h, *stride, *background; unsigned int cpu; int junk_left, junk_right, junk_top, junk_bottom; + int verbose; /* Internal data */ struct pullup_field *first, *last, *head; struct pullup_buffer *buffers; diff --git a/libmpcodecs/vf_pullup.c b/libmpcodecs/vf_pullup.c index 847147e5c1..6e5919f115 100644 --- a/libmpcodecs/vf_pullup.c +++ b/libmpcodecs/vf_pullup.c @@ -55,6 +55,7 @@ static void init_pullup(struct vf_instance_s* vf, mp_image_t *mpi) c->junk_left = c->junk_right = 1; c->junk_top = c->junk_bottom = 4; + c->verbose = 1; if (gCpuCaps.hasMMX) c->cpu |= PULLUP_CPU_MMX; if (gCpuCaps.hasMMX2) c->cpu |= PULLUP_CPU_MMX2; |