[FFmpeg-devel] [PATCH] avfilter: add panorama filter

Hazem Ashmawy hazem.s.ashmawy at gmail.com
Fri Mar 9 23:07:27 EET 2018


On 3/9/18, Paul B Mahol <onemda at gmail.com> wrote:
> On 3/9/18, Hazem Ashmawy <hazem.s.ashmawy at gmail.com> wrote:
>> Add filter to convert between various panorama projections. It supports
>> Equirectangular and Cubemaps (3x2 and 6x1 cubemap layouts).
>>
>> commit a8d80408bd9d99542cc29f30d7e6b00771846029
>> Author: Hazem Ashmawy <hazem.s.ashmawy at gmail.com>
>> Date:   Thu Mar 8 10:09:36 2018 +0200
>>
>>     avfilter: add convertion to/from cubemap 6x1
>>
>>     Signed-off-by: Hazem Ashmawy <hazem.s.ashmawy at gmail.com>
>>
>> commit f9f6a6cc0ceb1a4e749041658b7a441696b82588
>> Author: Paul B Mahol <onemda at gmail.com>
>> Date:   Thu Dec 3 21:15:13 2015 +0100
>>
>>     avfilter: add panorama filter
>>
>>     Signed-off-by: Paul B Mahol <onemda at gmail.com>
>>
>> Signed-off-by: Hazem Ashmawy <hazem.s.ashmawy at gmail.com>
>> ---
>>  libavfilter/Makefile      |   1 +
>>  libavfilter/allfilters.c  |   1 +
>>  libavfilter/vf_panorama.c | 553
>> ++++++++++++++++++++++++++++++++++++++++++++++
>>  3 files changed, 555 insertions(+)
>>  create mode 100644 libavfilter/vf_panorama.c
>>
>
> Here is partial change for converting 3x2 cubemap as given by latest
> youtube videos to
> equirectangular projection:

Should I modify cube faces order to match the one specified here too?
https://github.com/google/spatial-media/blob/master/docs/spherical-video-v2-rfc.md#semantics-3

>
> | diff --git a/libavfilter/vf_panorama.c b/libavfilter/vf_panorama.c
> | index 7d9de5b62c..4d43fc0dd5 100644
> | --- a/libavfilter/vf_panorama.c
> | +++ b/libavfilter/vf_panorama.c
> | @@ -394,9 +394,9 @@ static int config_output(AVFilterLink *outlink)
> |
> |                      phi_threshold = atan2(1., 1. / cos(theta_norm));
> |                      if (phi > phi_threshold) {
> | -                        face = DOWN;
> | -                    } else if (phi < -phi_threshold) {
> |                          face = TOP;
> | +                    } else if (phi < -phi_threshold) {
> | +                        face = DOWN;
> |                      } else {
> |                          ;
> |                      }
> | @@ -411,14 +411,14 @@ static int config_output(AVFilterLink *outlink)
> |                      case RIGHT:
> |                          locate(z, y, x, M_PI_2, rw, rh, &ox, &oy);
> |                          break;
> | -                    case TOP:
> | -                        locate(y, z, x, M_PI,   rw, rh, &ox, &oy);
> | +                    case DOWN:
> | +                        locate(y, z, x, M_PI_2, rw, rh, &ox, &oy);
> |                          break;
> |                      case BACK:
> | -                        locate(x, y, z,-M_PI_2, rw, rh, &ox, &oy);
> | +                        locate(x, y, z, 0,      rw, rh, &ox, &oy);
> |                          break;
> | -                    case DOWN:
> | -                        locate(y, x, z,-M_PI_2, rw, rh, &ox, &oy);
> | +                    case TOP:
> | +                        locate(y, x, z, M_PI  , rw, rh, &ox, &oy);
> |                          break;
> |                      }
> |
>
> Could you incorporate this?
> And also update all other conversions so thay match with this one?
Sure, I'll work on this.
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>


More information about the ffmpeg-devel mailing list