video: remove internal QP passing

This was required by vf_pp, which was just removed.

vf_dlopen has this stuff in its API. This API is considered stable, so
the related fields are not removed from it. But the fields are always 0
now, so there's no point in keeping the example program around.

vf_pullup.c did some extremely awkward passthrough of this information,
but didn't actually use it.
This commit is contained in:
wm4
2014-12-03 22:59:12 +01:00
parent 809936fdb9
commit 185e95ee3d
5 changed files with 4 additions and 205 deletions

View File

@@ -62,10 +62,6 @@ struct vf_priv_s {
unsigned int outbufferlen;
mp_image_t *outbuffermpi;
// qscale buffer
unsigned char *qbuffer;
size_t qbuffersize;
unsigned int outfmt;
int argc;
@@ -182,55 +178,17 @@ static void uninit(struct vf_instance *vf)
DLLClose(vf->priv->dll);
vf->priv->dll = NULL;
}
if (vf->priv->qbuffer) {
free(vf->priv->qbuffer);
vf->priv->qbuffer = NULL;
}
}
static int norm_qscale(int qscale, int type)
{
switch (type) {
case 0: // MPEG-1
return qscale;
case 1: // MPEG-2
return qscale >> 1;
case 2: // H264
return qscale >> 2;
case 3: // VP56
return (63 - qscale + 2) >> 2;
}
return qscale;
}
static int filter(struct vf_instance *vf, struct mp_image *mpi)
{
int i, k;
if (!mpi)
return 0;
set_imgprop(&vf->priv->filter.inpic, mpi);
if (mpi->qscale) {
if (mpi->qscale_type != 0) {
k = mpi->qstride * ((mpi->h + 15) >> 4);
if (vf->priv->qbuffersize != k) {
vf->priv->qbuffer = realloc(vf->priv->qbuffer, k);
vf->priv->qbuffersize = k;
}
for (i = 0; i < k; ++i)
vf->priv->qbuffer[i] = norm_qscale(mpi->qscale[i],
mpi->qscale_type);
vf->priv->filter.inpic_qscale = vf->priv->qbuffer;
} else
vf->priv->filter.inpic_qscale = mpi->qscale;
vf->priv->filter.inpic_qscalestride = mpi->qstride;
vf->priv->filter.inpic_qscaleshift = 4;
} else {
vf->priv->filter.inpic_qscale = NULL;
vf->priv->filter.inpic_qscalestride = 0;
vf->priv->filter.inpic_qscaleshift = 0;
}
vf->priv->filter.inpic_qscale = NULL;
vf->priv->filter.inpic_qscalestride = 0;
vf->priv->filter.inpic_qscaleshift = 0;
vf->priv->filter.inpic.pts = mpi->pts;
struct mp_image *out[FILTER_MAX_OUTCNT] = {0};

View File

@@ -40,7 +40,6 @@ struct vf_priv_s {
struct pullup_context *ctx;
int init;
int fakecount;
char *qbuf;
double lastpts;
int junk_left, junk_right, junk_top, junk_bottom;
int strict_breaks, metric_plane;
@@ -51,8 +50,6 @@ static void reset(struct vf_instance *vf)
{
if (vf->priv->ctx)
pullup_free_context(vf->priv->ctx);
free(vf->priv->qbuf);
vf->priv->qbuf = NULL;
vf->priv->init = 0;
struct pullup_context *c;
vf->priv->ctx = c = pullup_alloc_context();
@@ -87,7 +84,6 @@ static void init_pullup(struct vf_instance *vf, mp_image_t *mpi)
pullup_init_context(c);
vf->priv->init = 1;
vf->priv->qbuf = malloc(c->w[3]);
}
static struct mp_image *filter(struct vf_instance *vf, struct mp_image *mpi)
@@ -96,7 +92,6 @@ static struct mp_image *filter(struct vf_instance *vf, struct mp_image *mpi)
struct pullup_buffer *b;
struct pullup_frame *f;
int p;
int i;
double pts = mpi->pts;
struct mp_image *dmpi = NULL;
@@ -119,11 +114,6 @@ static struct mp_image *filter(struct vf_instance *vf, struct mp_image *mpi)
mpi->chroma_width, mpi->chroma_height,
c->stride[2], mpi->stride[2]);
}
if (mpi->qscale) {
memcpy(b->planes[3], mpi->qscale, c->w[3]);
memcpy(b->planes[3]+c->w[3], mpi->qscale, c->w[3]);
}
p = mpi->fields & MP_IMGFIELD_TOP_FIRST ? 0 :
(mpi->fields & MP_IMGFIELD_ORDERED ? 1 : 0);
@@ -178,23 +168,6 @@ static struct mp_image *filter(struct vf_instance *vf, struct mp_image *mpi)
}
}
#if 0
/* Average qscale tables from both frames. */
if (mpi->qscale) {
for (i=0; i<c->w[3]; i++) {
vf->priv->qbuf[i] = (f->ofields[0]->planes[3][i]
+ f->ofields[1]->planes[3][i+c->w[3]])>>1;
}
}
#else
/* Take worst of qscale tables from both frames. */
if (mpi->qscale) {
for (i=0; i<c->w[3]; i++) {
vf->priv->qbuf[i] = MAX(f->ofields[0]->planes[3][i], f->ofields[1]->planes[3][i+c->w[3]]);
}
}
#endif
/* If the frame isn't already exportable... */
if (!f->buffer)
pullup_pack_frame(c, f);
@@ -222,12 +195,6 @@ static struct mp_image *filter(struct vf_instance *vf, struct mp_image *mpi)
dmpi->pts = f->pts;
// Warning: entirely bogus memory management of qscale
if (mpi->qscale) {
dmpi->qscale = vf->priv->qbuf;
dmpi->qstride = mpi->qstride;
dmpi->qscale_type = mpi->qscale_type;
}
pullup_release_frame(f);
skip: