Skip to content

Commit

Permalink
Allow YUV422P8 input
Browse files Browse the repository at this point in the history
The support was already there.
  • Loading branch information
cantabile committed Oct 8, 2014
1 parent 868dc44 commit 7261a61
Show file tree
Hide file tree
Showing 11 changed files with 42 additions and 32 deletions.
11 changes: 6 additions & 5 deletions src/MVAnalyse.cpp
Expand Up @@ -382,9 +382,6 @@ static void VS_CC mvanalyseCreate(const VSMap *in, VSMap *out, void *userData, V
return;
}

d.analysisData.yRatioUV = 2; //(vi.IsYV12()) ? 2 : 1;
d.analysisData.xRatioUV = 2; // for YV12 and YUY2, really do not used and assumed to 2


d.analysisData.nBlkSizeX = d.blksize;
d.analysisData.nBlkSizeY = d.blksizev;
Expand Down Expand Up @@ -469,12 +466,16 @@ static void VS_CC mvanalyseCreate(const VSMap *in, VSMap *out, void *userData, V
d.node = vsapi->propGetNode(in, "super", 0, 0);
d.vi = *vsapi->getVideoInfo(d.node);

if (!isConstantFormat(&d.vi) || d.vi.format->id != pfYUV420P8) {
vsapi->setError(out, "Analyse: Input clip must be YUV420P8 with constant format and dimensions.");
int id = d.vi.format->id;
if (!isConstantFormat(&d.vi) || (id != pfYUV420P8 && id != pfYUV422P8)) {
vsapi->setError(out, "Analyse: Input clip must be YUV420P8 or YUV422P8, with constant format and dimensions.");
vsapi->freeNode(d.node);
return;
}

d.analysisData.yRatioUV = 1 << d.vi.format->subSamplingH;
d.analysisData.xRatioUV = 2; // for YV12 and YUY2, really do not used and assumed to 2


char errorMsg[1024];
const VSFrameRef *evil = vsapi->getFrame(0, d.node, errorMsg, 1024);
Expand Down
5 changes: 3 additions & 2 deletions src/MVCompensate.cpp
Expand Up @@ -743,8 +743,9 @@ static void VS_CC mvcompensateCreate(const VSMap *in, VSMap *out, void *userData
return;
}

if (!isConstantFormat(d.vi) || d.vi->format->id != pfYUV420P8) {
vsapi->setError(out, "Compensate: input clip must be YUV420P8 with constant dimensions.");
int id = d.vi->format->id;
if (!isConstantFormat(d.vi) || (id != pfYUV420P8 && id != pfYUV422P8)) {
vsapi->setError(out, "Compensate: input clip must be YUV420P8 or YUV422P8, with constant dimensions.");
vsapi->freeNode(d.super);
vsapi->freeNode(d.vectors);
vsapi->freeNode(d.node);
Expand Down
5 changes: 3 additions & 2 deletions src/MVDegrain1.cpp
Expand Up @@ -1012,8 +1012,9 @@ static void VS_CC mvdegrain1Create(const VSMap *in, VSMap *out, void *userData,
return;
}

if (!isConstantFormat(d.vi) || d.vi->format->id != pfYUV420P8) {
vsapi->setError(out, "Degrain1: input clip must be YUV420P8 with constant dimensions.");
int id = d.vi->format->id;
if (!isConstantFormat(d.vi) || (id != pfYUV420P8 && id != pfYUV422P8)) {
vsapi->setError(out, "Degrain1: input clip must be YUV420P8 or YUV422P8, with constant dimensions.");
vsapi->freeNode(d.super);
vsapi->freeNode(d.mvfw);
vsapi->freeNode(d.mvbw);
Expand Down
5 changes: 3 additions & 2 deletions src/MVDegrain2.cpp
Expand Up @@ -1374,8 +1374,9 @@ static void VS_CC mvdegrain2Create(const VSMap *in, VSMap *out, void *userData,
return;
}

if (!isConstantFormat(d.vi) || d.vi->format->id != pfYUV420P8) {
vsapi->setError(out, "Degrain2: input clip must be YUV420P8 with constant dimensions.");
int id = d.vi->format->id;
if (!isConstantFormat(d.vi) || (id != pfYUV420P8 && id != pfYUV422P8)) {
vsapi->setError(out, "Degrain2: input clip must be YUV420P8 or YUV422P8, with constant dimensions.");
vsapi->freeNode(d.super);
vsapi->freeNode(d.mvfw);
vsapi->freeNode(d.mvbw);
Expand Down
5 changes: 3 additions & 2 deletions src/MVDegrain3.cpp
Expand Up @@ -1702,8 +1702,9 @@ static void VS_CC mvdegrain3Create(const VSMap *in, VSMap *out, void *userData,
return;
}

if (!isConstantFormat(d.vi) || d.vi->format->id != pfYUV420P8) {
vsapi->setError(out, "Degrain3: input clip must be YUV420P8 with constant dimensions.");
int id = d.vi->format->id;
if (!isConstantFormat(d.vi) || (id != pfYUV420P8 && id != pfYUV422P8)) {
vsapi->setError(out, "Degrain3: input clip must be YUV420P8 or YUV422P8, with constant dimensions.");
vsapi->freeNode(d.super);
vsapi->freeNode(d.mvfw);
vsapi->freeNode(d.mvbw);
Expand Down
7 changes: 4 additions & 3 deletions src/MVFinest.cpp
Expand Up @@ -176,8 +176,9 @@ static void VS_CC mvfinestCreate(const VSMap *in, VSMap *out, void *userData, VS
d.super = vsapi->propGetNode(in, "super", 0, 0);
d.vi = *vsapi->getVideoInfo(d.super);

if (!isConstantFormat(&d.vi) || d.vi.format->id != pfYUV420P8) {
vsapi->setError(out, "Finest: input clip must be YUV420P8 with constant dimensions.");
int id = d.vi.format->id;
if (!isConstantFormat(&d.vi) || (id != pfYUV420P8 && id != pfYUV422P8)) {
vsapi->setError(out, "Finest: input clip must be YUV420P8 or YUV422P8, with constant dimensions.");
vsapi->freeNode(d.super);
return;
}
Expand Down Expand Up @@ -210,7 +211,7 @@ static void VS_CC mvfinestCreate(const VSMap *in, VSMap *out, void *userData, VS
int nSuperWidth = d.vi.width;
d.nWidth = nSuperWidth - 2 * d.nSuperHPad;

d.yRatioUV = 2; //vi.IsYUY2() ? 1 : 2;
d.yRatioUV = 1 << d.vi.format->subSamplingH;

d.vi.width = (d.nWidth + 2 * d.nSuperHPad) * d.nSuperPel;
d.vi.height = (d.nHeight + 2 * d.nSuperVPad) * d.nSuperPel;
Expand Down
5 changes: 3 additions & 2 deletions src/MVFlowBlur.cpp
Expand Up @@ -640,8 +640,9 @@ static void VS_CC mvflowblurCreate(const VSMap *in, VSMap *out, void *userData,
return;
}

if (!isConstantFormat(d.vi) || d.vi->format->id != pfYUV420P8) {
vsapi->setError(out, "FlowBlur: input clip must be YUV420P8 with constant dimensions.");
int id = d.vi->format->id;
if (!isConstantFormat(d.vi) || (id != pfYUV420P8 && id != pfYUV422P8)) {
vsapi->setError(out, "FlowBlur: input clip must be YUV420P8 or YUV422P8, with constant dimensions.");
vsapi->freeNode(d.super);
vsapi->freeNode(d.finest);
vsapi->freeNode(d.mvfw);
Expand Down
5 changes: 3 additions & 2 deletions src/MVFlowInter.cpp
Expand Up @@ -699,8 +699,9 @@ static void VS_CC mvflowinterCreate(const VSMap *in, VSMap *out, void *userData,
return;
}

if (!isConstantFormat(d.vi) || d.vi->format->id != pfYUV420P8) {
vsapi->setError(out, "FlowInter: input clip must be YUV420P8 with constant dimensions.");
int id = d.vi->format->id;
if (!isConstantFormat(d.vi) || (id != pfYUV420P8 && id != pfYUV422P8)) {
vsapi->setError(out, "FlowInter: input clip must be YUV420P8 or YUV422P8, with constant dimensions.");
vsapi->freeNode(d.super);
vsapi->freeNode(d.finest);
vsapi->freeNode(d.mvfw);
Expand Down
9 changes: 5 additions & 4 deletions src/MVMask.cpp
Expand Up @@ -311,17 +311,18 @@ static void VS_CC mvmaskCreate(const VSMap *in, VSMap *out, void *userData, VSCo
d.nWidthB = d.bleh->nBlkX * (d.bleh->nBlkSizeX - d.bleh->nOverlapX) + d.bleh->nOverlapX;
d.nHeightB = d.bleh->nBlkY * (d.bleh->nBlkSizeY - d.bleh->nOverlapY) + d.bleh->nOverlapY;

d.nHeightUV = d.bleh->nHeight / 2; //yRatioUV;
d.nHeightUV = d.bleh->nHeight / d.bleh->yRatioUV;
d.nWidthUV = d.bleh->nWidth / 2;// for YV12
d.nHeightBUV = d.nHeightB / 2; //yRatioUV;
d.nHeightBUV = d.nHeightB / d.bleh->yRatioUV;
d.nWidthBUV = d.nWidthB / 2;


d.node = vsapi->propGetNode(in, "clip", 0, NULL);
d.vi = vsapi->getVideoInfo(d.node);

if (!isConstantFormat(d.vi) || d.vi->format->id != pfYUV420P8) {
vsapi->setError(out, "Mask: input clip must be YUV420P8 with constant dimensions.");
int id = d.vi->format->id;
if (!isConstantFormat(d.vi) || (id != pfYUV420P8 && id != pfYUV422P8)) {
vsapi->setError(out, "Mask: input clip must be YUV420P8 or YUV422P8, with constant dimensions.");
vsapi->freeNode(d.node);
vsapi->freeNode(d.vectors);
delete d.mvClip;
Expand Down
6 changes: 3 additions & 3 deletions src/MVRecalculate.cpp
Expand Up @@ -337,9 +337,6 @@ static void VS_CC mvrecalculateCreate(const VSMap *in, VSMap *out, void *userDat
return;
}

d.analysisData.yRatioUV = 2; //(vi.IsYV12()) ? 2 : 1;
d.analysisData.xRatioUV = 2; // for YV12 and YUY2, really do not used and assumed to 2


d.analysisData.nBlkSizeX = d.blksize;
d.analysisData.nBlkSizeY = d.blksizev;
Expand Down Expand Up @@ -456,6 +453,9 @@ static void VS_CC mvrecalculateCreate(const VSMap *in, VSMap *out, void *userDat
// XXX This really should be passed as a frame property.
const MVAnalysisData *pAnalyseFilter = reinterpret_cast<const MVAnalysisData *>(vsapi->getReadPtr(evil, 0) + sizeof(int));

d.analysisData.yRatioUV = pAnalyseFilter->GetYRatioUV();
d.analysisData.xRatioUV = pAnalyseFilter->GetXRatioUV(); // for YV12 and YUY2, really do not used and assumed to 2

d.analysisData.nWidth = pAnalyseFilter->GetWidth();
d.analysisData.nHeight = pAnalyseFilter->GetHeight();

Expand Down
11 changes: 6 additions & 5 deletions src/MVSuper.cpp
Expand Up @@ -205,22 +205,23 @@ static void VS_CC mvsuperCreate(const VSMap *in, VSMap *out, void *userData, VSC

d.nModeYUV = d.chroma ? YUVPLANES : YPLANE;

d.yRatioUV = 2; //(vi.IsYV12()) ? 2 : 1;
d.xRatioUV = 2; // for YV12 and YUY2, really do not used and assumed to 2


d.node = vsapi->propGetNode(in, "clip", 0, 0);
d.vi = *vsapi->getVideoInfo(d.node);

d.nWidth = d.vi.width;
d.nHeight = d.vi.height;

if (!isConstantFormat(&d.vi) || d.vi.format->id != pfYUV420P8) {
vsapi->setError(out, "Super: input clip must be YUV420P8 with constant dimensions.");
int id = d.vi.format->id;
if (!isConstantFormat(&d.vi) || (id != pfYUV420P8 && id != pfYUV422P8)) {
vsapi->setError(out, "Super: input clip must be YUV420P8 or YUV422P8, with constant dimensions.");
vsapi->freeNode(d.node);
return;
}

d.yRatioUV = 1 << d.vi.format->subSamplingH;
d.xRatioUV = 2; // for YV12 and YUY2, really do not used and assumed to 2

int nLevelsMax = 0;
while (PlaneHeightLuma(d.vi.height, nLevelsMax, d.yRatioUV, d.nVPad) >= d.yRatioUV*2 &&
PlaneWidthLuma(d.vi.width, nLevelsMax, d.xRatioUV, d.nHPad) >= d.xRatioUV*2) // at last two pixels width and height of chroma
Expand Down

0 comments on commit 7261a61

Please sign in to comment.