summaryrefslogtreecommitdiff
path: root/libavfilter/vf_stereo3d.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2013-09-16 10:33:04 +0000
committerPaul B Mahol <onemda@gmail.com>2013-09-16 12:37:29 +0000
commitc74d5929df99c88f72373cbd7484d698fb6757ac (patch)
treea7564e8b369ed1ab553bc0efee1f1d3465602910 /libavfilter/vf_stereo3d.c
parentfcea6f71ad9d1e8160334d6e8ae197dcb6fcd1fd (diff)
avfilter/vf_stereo3d: BGR24 support for anaglyphs
Signed-off-by: Paul B Mahol <onemda@gmail.com>
Diffstat (limited to 'libavfilter/vf_stereo3d.c')
-rw-r--r--libavfilter/vf_stereo3d.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/libavfilter/vf_stereo3d.c b/libavfilter/vf_stereo3d.c
index 284ee946c3..b95a759cb3 100644
--- a/libavfilter/vf_stereo3d.c
+++ b/libavfilter/vf_stereo3d.c
@@ -25,6 +25,7 @@
#include "libavutil/parseutils.h"
#include "libavutil/pixdesc.h"
#include "avfilter.h"
+#include "drawutils.h"
#include "formats.h"
#include "internal.h"
#include "video.h"
@@ -192,7 +193,11 @@ static const AVOption stereo3d_options[] = {
AVFILTER_DEFINE_CLASS(stereo3d);
-static const enum AVPixelFormat anaglyph_pix_fmts[] = { AV_PIX_FMT_RGB24, AV_PIX_FMT_NONE };
+static const enum AVPixelFormat anaglyph_pix_fmts[] = {
+ AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24,
+ AV_PIX_FMT_NONE
+};
+
static const enum AVPixelFormat other_pix_fmts[] = {
AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24,
AV_PIX_FMT_RGB48BE, AV_PIX_FMT_BGR48BE,
@@ -388,11 +393,15 @@ static int config_output(AVFilterLink *outlink)
case ANAGLYPH_YB_GRAY:
case ANAGLYPH_YB_HALF:
case ANAGLYPH_YB_COLOR:
- case ANAGLYPH_YB_DUBOIS:
- s->ana_matrix[0] = &ana_coeff[s->out.format][0][0];
- s->ana_matrix[1] = &ana_coeff[s->out.format][1][0];
- s->ana_matrix[2] = &ana_coeff[s->out.format][2][0];
+ case ANAGLYPH_YB_DUBOIS: {
+ uint8_t rgba_map[4];
+
+ ff_fill_rgba_map(rgba_map, outlink->format);
+ s->ana_matrix[rgba_map[0]] = &ana_coeff[s->out.format][0][0];
+ s->ana_matrix[rgba_map[1]] = &ana_coeff[s->out.format][1][0];
+ s->ana_matrix[rgba_map[2]] = &ana_coeff[s->out.format][2][0];
break;
+ }
case SIDE_BY_SIDE_2_LR:
aspect.den *= 2;
case SIDE_BY_SIDE_LR: