]> granicus.if.org Git - handbrake/commitdiff
QSV: CLI, cleanup QSV VPP filter initialization.
authorRodeo <tdskywalker@gmail.com>
Fri, 26 Jul 2013 16:57:52 +0000 (16:57 +0000)
committerRodeo <tdskywalker@gmail.com>
Fri, 26 Jul 2013 16:57:52 +0000 (16:57 +0000)
git-svn-id: svn://svn.handbrake.fr/HandBrake/branches/qsv@5665 b64f7644-9d1e-0410-96f1-a4d463321fa5

libhb/qsv_filter.c
test/test.c

index 2863a949e0f76ed423a0a270d8e5bd6fd6c9b5f6..641c969802a53e9ee4133e118b7540c3738bf089 100644 (file)
@@ -329,8 +329,6 @@ static int hb_qsv_filter_init( hb_filter_object_t * filter,
                &pv->deinterlace);
     }
 
-    pv->deinterlace &= 32;
-
     pv->job = init->job;
 
     // will be later as more params will be known
index 23e36c40ed27a57845614817dd612868d339a44c..e16ae79110c30023f5a7552ccec1d8b29553354f 100644 (file)
@@ -1821,20 +1821,32 @@ static int HandleEvents( hb_handle_t * h )
             hb_add_filter( job, filter, filter_str );
             free( filter_str );
 
-            if(vcodec == HB_VCODEC_QSV_H264)
+            if (vcodec == HB_VCODEC_QSV_H264)
             {
-                char * filter_str;
+                char *filter_str;
+                int qsv_deinterlace;
+                filter = hb_filter_init(HB_FILTER_QSV_PRE);
+                hb_add_filter(job, filter, NULL);
+                filter = hb_filter_init(HB_FILTER_QSV_POST);
+                hb_add_filter(job, filter, NULL);
+                /*
+                 * QSV deinterlace should only be used if:
+                 *
+                 * - deinterlace_opt == NULL
+                 * OR
+                 * - deinterlace_opt == "32"
+                 */
+                qsv_deinterlace = (deinterlace &&
+                                   (!deinterlace_opt ||
+                                    !strcmp(deinterlace_opt, "32")));
                 filter_str = hb_strdup_printf("%d:%d:%d:%d:%d:%d_dei:%s",
-                        job->width, job->height,
-                        job->crop[0], job->crop[1], job->crop[2], job->crop[3], deinterlace ? (deinterlace_opt ? deinterlace_opt: "-1") : "0" );
-                filter = hb_filter_init( HB_FILTER_QSV );
-                hb_add_filter( job, filter, filter_str );
-                free( filter_str );
-
-                filter = hb_filter_init( HB_FILTER_QSV_PRE );
-                hb_add_filter( job, filter, NULL );
-                filter = hb_filter_init( HB_FILTER_QSV_POST );
-                hb_add_filter( job, filter, NULL );
+                                              job->width,   job->height,
+                                              job->crop[0], job->crop[1],
+                                              job->crop[2], job->crop[3],
+                                              qsv_deinterlace ? "1" : "0");
+                filter = hb_filter_init(HB_FILTER_QSV);
+                hb_add_filter(job, filter, filter_str);
+                free(filter_str);
             }