changeset 33789:475d96f700d4

Half-width side-by-side formats for stereo3d. Patch by Steaphan Greene [sgreene cs.binghamton.edu]
author reimar
date Mon, 11 Jul 2011 21:54:53 +0000
parents 03b638e2b994
children ab6d06f5b98b
files DOCS/man/en/mplayer.1 libmpcodecs/vf_stereo3d.c
diffstat 2 files changed, 24 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/DOCS/man/en/mplayer.1	Mon Jul 11 15:19:56 2011 +0000
+++ b/DOCS/man/en/mplayer.1	Mon Jul 11 21:54:53 2011 +0000
@@ -7843,6 +7843,14 @@
 .RS
 side by side crosseye (right eye left, left eye right)
 .RE
+.B sbs2l or side_by_side_half_width_left_first
+.RS
+side by side with half width resolution (left eye left, right eye right)
+.RE
+.B sbs2r or side_by_side_half_width_right_first
+.RS
+side by side with half width resolution (right eye left, left eye right)
+.RE
 .B abl or above_below_left_first
 .RS
 above-below (left eye above, right eye below)
--- a/libmpcodecs/vf_stereo3d.c	Mon Jul 11 15:19:56 2011 +0000
+++ b/libmpcodecs/vf_stereo3d.c	Mon Jul 11 21:54:53 2011 +0000
@@ -52,6 +52,8 @@
     MONO_R,             //mono output for debugging (right eye only)
     SIDE_BY_SIDE_LR,    //side by side parallel (left eye left, right eye right)
     SIDE_BY_SIDE_RL,    //side by side crosseye (right eye left, left eye right)
+    SIDE_BY_SIDE_2_LR,  //side by side parallel with half width resolution
+    SIDE_BY_SIDE_2_RL,  //side by side crosseye with half width resolution
     ABOVE_BELOW_LR,     //above-below (left eye above, right eye below)
     ABOVE_BELOW_RL,     //above-below (right eye above, left eye below)
     ABOVE_BELOW_2_LR,   //above-below with half height resolution
@@ -148,10 +150,14 @@
 
     //check input format
     switch (vf->priv->in.fmt) {
+    case SIDE_BY_SIDE_2_LR:
+        d_width                *= 2;
     case SIDE_BY_SIDE_LR:
         vf->priv->width         = width / 2;
         vf->priv->in.off_right  = vf->priv->width * 3;
         break;
+    case SIDE_BY_SIDE_2_RL:
+        d_width                *= 2;
     case SIDE_BY_SIDE_RL:
         vf->priv->width         = width / 2;
         vf->priv->in.off_left   = vf->priv->width * 3;
@@ -197,10 +203,14 @@
         memcpy(vf->priv->ana_matrix, ana_coeff[vf->priv->out.fmt],
                sizeof(vf->priv->ana_matrix));
         break;
+    case SIDE_BY_SIDE_2_LR:
+        d_width                /= 2;
     case SIDE_BY_SIDE_LR:
         vf->priv->out.width     = vf->priv->width * 2;
         vf->priv->out.off_right = vf->priv->width * 3;
         break;
+    case SIDE_BY_SIDE_2_RL:
+        d_width                /= 2;
     case SIDE_BY_SIDE_RL:
         vf->priv->out.width     = vf->priv->width * 2;
         vf->priv->out.off_left  = vf->priv->width * 3;
@@ -274,6 +284,8 @@
         switch (vf->priv->out.fmt) {
         case SIDE_BY_SIDE_LR:
         case SIDE_BY_SIDE_RL:
+        case SIDE_BY_SIDE_2_LR:
+        case SIDE_BY_SIDE_2_RL:
         case ABOVE_BELOW_LR:
         case ABOVE_BELOW_RL:
         case ABOVE_BELOW_2_LR:
@@ -407,6 +419,10 @@
     {"side_by_side_left_first",          SIDE_BY_SIDE_LR},
     {"sbsr",                             SIDE_BY_SIDE_RL},
     {"side_by_side_right_first",         SIDE_BY_SIDE_RL},
+    {"sbs2l",                              SIDE_BY_SIDE_2_LR},
+    {"side_by_side_half_width_left_first", SIDE_BY_SIDE_2_LR},
+    {"sbs2r",                              SIDE_BY_SIDE_2_RL},
+    {"side_by_side_half_width_right_first",SIDE_BY_SIDE_2_RL},
     {"abl",                              ABOVE_BELOW_LR},
     {"above_below_left_first",           ABOVE_BELOW_LR},
     {"abr",                              ABOVE_BELOW_RL},