/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /*************************************************************************** * libdv_wrapper.h * * Mon Apr 10 11:20:18 CEST 2006 * Copyright 2006 Bent Bisballe Nyeng * deva@aasimon.org ****************************************************************************/ /* * This file is part of MIaV. * * MIaV is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * MIaV is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with MIaV; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef __MIAV_LIBDV_WRAPPER_H__ #define __MIAV_LIBDV_WRAPPER_H__ // Use libdv #include #include #include "frame.h" #include "timecode.h" namespace DV { /* #define DV_QUALITY_COLOR 1 // Clear this bit to make monochrome #define DV_QUALITY_AC_MASK (0x3 << 1) #define DV_QUALITY_DC (0x0 << 1) #define DV_QUALITY_AC_1 (0x1 << 1) #define DV_QUALITY_AC_2 (0x2 << 1) #define DV_QUALITY_BEST (DV_QUALITY_COLOR | DV_QUALITY_AC_2) #define DV_QUALITY_FASTEST 0 // Monochrome, DC coeffs only */ typedef enum { ColorBest = DV_QUALITY_COLOR | DV_QUALITY_AC_MASK | DV_QUALITY_AC_2, ColorGood = DV_QUALITY_COLOR | DV_QUALITY_AC_MASK | DV_QUALITY_AC_1, ColorBad = DV_QUALITY_COLOR | DV_QUALITY_AC_MASK | DV_QUALITY_DC, MonocromeBest = DV_QUALITY_AC_MASK | DV_QUALITY_AC_2, MonocromeGood = DV_QUALITY_AC_MASK | DV_QUALITY_AC_1, MonocromeBad = DV_QUALITY_AC_MASK | DV_QUALITY_DC } Quality; /* typedef enum system_e { e_dv_system_none = 0, e_dv_system_525_60, // NTSC e_dv_system_625_50, // PAL } dv_system_t; */ typedef enum { //None = e_dv_system_none, NTSC = e_dv_system_525_60, PAL = e_dv_system_625_50 } System; /* typedef enum sample_e { e_dv_sample_none = 0, e_dv_sample_411, e_dv_sample_420, e_dv_sample_422, } dv_sample_t; */ typedef enum { //None = e_dv_sample_none, YUV_411 = e_dv_sample_411, YUV_420 = e_dv_sample_420, YUV_422 = e_dv_sample_422 } Sampling; /* typedef enum color_space_e { e_dv_color_yuv, e_dv_color_rgb, e_dv_color_bgr0, } dv_color_space_t; */ typedef enum { YUV = e_dv_color_yuv, RGB = e_dv_color_rgb, BGR0 = e_dv_color_bgr0 } ColorSpace; }; class LibDVWrapper { public: LibDVWrapper(DV::Quality quality = DV::ColorBest, DV::System system = DV::PAL, DV::Sampling sampling = DV::YUV_422); ~LibDVWrapper(); void setQuality(DV::Quality quality); void setSystem(DV::System system); void setSampling(DV::Sampling sampling); TimeCode getTimeCode(); Frame *decode(Frame *input, DV::ColorSpace colorspace = DV::YUV); private: bool first; int width, height; int pitches[3]; unsigned char* yuv[3]; dv_decoder_t *decoder; // DV::ColorSpace colorspace; }; #endif/*__MIAV_LIBDV_WRAPPER_H__*/