summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordeva <deva>2006-04-11 14:43:17 +0000
committerdeva <deva>2006-04-11 14:43:17 +0000
commitc9a7d3ecf5a5e979c4503dbf1f072898ffd72574 (patch)
tree7b23abd5d7b5dfe1a885223b133cf55eb39800a1
parentff2a0b78a229d2fac6162d2fa88f3e058b6382d8 (diff)
*** empty log message ***
-rw-r--r--lib/libdv_wrapper.cc21
-rw-r--r--lib/libdv_wrapper.h16
2 files changed, 34 insertions, 3 deletions
diff --git a/lib/libdv_wrapper.cc b/lib/libdv_wrapper.cc
index 563c709..5a385b1 100644
--- a/lib/libdv_wrapper.cc
+++ b/lib/libdv_wrapper.cc
@@ -67,8 +67,11 @@ void LibDVWrapper::setSampling(DV::Sampling sampling)
decoder->sampling = (dv_sample_t)sampling;
}
-void LibDVWrapper::setOutputBuffer(char *output)
+void LibDVWrapper::setOutputBuffer(char *output, DV::ColorSpace c)
{
+ colorspace = c;
+ switch(colorspace) {
+ case DV::YUV:
#ifdef COLORSPACE_YV12
yuv[0] = (unsigned char*)output;
yuv[1] = (unsigned char*)yuv[0] + (width * height);
@@ -80,6 +83,20 @@ void LibDVWrapper::setOutputBuffer(char *output)
yuv[0] = (unsigned char*)output;
pitches[0] = width * 2;
#endif
+ break;
+
+ case DV::RGB:
+ yuv[0] = (unsigned char*)output;
+ yuv[1] = yuv[2] = NULL;
+ pitches[0] = width * 3;
+ break;
+
+ case DV::BGR0:
+ yuv[0] = (unsigned char*)output;
+ yuv[1] = yuv[2] = NULL;
+ pitches[0] = width * 4;
+ break;
+ }
}
void LibDVWrapper::decode(char *input)
@@ -96,7 +113,7 @@ void LibDVWrapper::decode(char *input)
dv_decode_full_frame(decoder,
(const uint8_t*)input,
- e_dv_color_yuv,
+ (dv_color_space_t)colorspace,
yuv,
pitches);
}
diff --git a/lib/libdv_wrapper.h b/lib/libdv_wrapper.h
index d98cae6..16a7d94 100644
--- a/lib/libdv_wrapper.h
+++ b/lib/libdv_wrapper.h
@@ -78,6 +78,19 @@ namespace DV {
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 {
@@ -91,7 +104,7 @@ public:
void setSystem(DV::System system);
void setSampling(DV::Sampling sampling);
- void setOutputBuffer(char *output);
+ void setOutputBuffer(char *output, DV::ColorSpace colorspace = DV::YUV);
void decode(char *input);
@@ -103,6 +116,7 @@ private:
unsigned char* yuv[3];
dv_decoder_t *decoder;
+ DV::ColorSpace colorspace;
};
#endif/*__MIAV_LIBDV_WRAPPER_H__*/