LiVES 1.4.9

src/colourspace.h

Go to the documentation of this file.
00001 // colourspace.h
00002 // LiVES
00003 // (c) G. Finch 2004 - 2010 <salsaman@xs4all.nl,salsaman@gmail.com>
00004 // Released under the GPL 3 or later
00005 // see file ../COPYING for licensing details
00006 
00007 // headers for palette conversions
00008 
00009 typedef struct {
00010   guchar u0;
00011   guchar y0;
00012   guchar v0;
00013   guchar y1;
00014 } uyvy_macropixel;
00015 
00016 typedef struct {
00017   guchar y0;
00018   guchar u0;
00019   guchar y1;
00020   guchar v0;
00021 } yuyv_macropixel;
00022 
00023 
00024 typedef struct {
00025   guchar u2;
00026   guchar y0;
00027   guchar y1;
00028   guchar v2;
00029   guchar y2;
00030   guchar y3;
00031 } yuv411_macropixel;
00032 
00033 
00034 
00035 
00036 typedef struct {
00037   void *src;
00038   gint hsize;
00039   gint vsize;
00040   gint irowstrides[4];
00041   gint orowstrides[4];
00042   void *dest;
00043   gboolean in_alpha;
00044   gboolean out_alpha;
00045   gboolean in_clamped;
00046   gboolean out_clamped;
00047   int in_subspace;
00048   int out_subspace;
00049   int in_sampling;
00050   int out_sampling;
00051   gboolean alpha_first;
00052   int thread_id;
00053 } lives_cc_params;
00054 
00055 
00056 // internal thread fns - data points to a lives_cc_params struct
00057 void *convert_rgb_to_uyvy_frame_thread(void *data);
00058 void *convert_bgr_to_uyvy_frame_thread(void *data);
00059 void *convert_rgb_to_yuyv_frame_thread(void *data);
00060 void *convert_bgr_to_yuyv_frame_thread(void *data);
00061 
00062 void *convert_rgb_to_yuv_frame_thread(void *data);
00063 void *convert_bgr_to_yuv_frame_thread(void *data);
00064 
00065 void *convert_uyvy_to_rgb_frame_thread(void *data);
00066 void *convert_uyvy_to_bgr_frame_thread(void *data);
00067 void *convert_yuyv_to_rgb_frame_thread(void *data);
00068 void *convert_yuyv_to_bgr_frame_thread(void *data);
00069 
00070 
00071 void *convert_swap3_frame_thread(void *data);
00072 void *convert_swap4_frame_thread(void *data);
00073 void *convert_swap3addpost_frame_thread(void *data);
00074 void *convert_swap3addpre_frame_thread(void *data);
00075 void *convert_swap3delpost_frame_thread(void *data);
00076 void *convert_swap3delpre_frame_thread(void *data);
00077 void *convert_addpre_frame_thread(void *data);
00078 void *convert_addpost_frame_thread(void *data);
00079 void *convert_delpre_frame_thread(void *data);
00080 void *convert_delpost_frame_thread(void *data);
00081 void *convert_swap3postalpha_frame_thread(void *data);
00082 void *convert_swapprepost_frame_thread(void *data);
00083 
00084 void *convert_swab_frame_thread(void *data);
00085 
00086 
00087 
00089 // these functions should be used in future
00090 gboolean convert_layer_palette(weed_plant_t *layer, int outpl, int op_clamping);
00091 gboolean convert_layer_palette_with_sampling(weed_plant_t *layer, int outpl, int out_sampling);
00092 gboolean convert_layer_palette_full(weed_plant_t *layer, int outpl, int osamtype, gboolean oclamping, int osubspace);
00093 gboolean apply_gamma (weed_plant_t *ilayer, weed_plant_t *olayer, double gamma); 
00094 void resize_layer (weed_plant_t *layer, int width, int height, int interp);
00095 void letterbox_layer (weed_plant_t *layer, int width, int height, int nwidth, int nheight);
00096 void compact_rowstrides(weed_plant_t *layer);
00097 void create_empty_pixel_data(weed_plant_t *layer, gboolean black_fill, gboolean may_contig);
00098 void pixel_data_planar_from_membuf(void **pixel_data, void *data, size_t size, int palette);
00099 GdkPixbuf *layer_to_pixbuf (weed_plant_t *layer);
00100 gboolean pixbuf_to_layer(weed_plant_t *layer, GdkPixbuf *);
00101 
00102 weed_plant_t *weed_layer_copy (weed_plant_t *dlayer, weed_plant_t *slayer);
00103 void weed_layer_free (weed_plant_t *layer);
00104 weed_plant_t *weed_layer_new(int width, int height, int *rowstrides, int current_palette);
00105 int weed_layer_get_palette(weed_plant_t *layer);
00106 
00107 // palette information functions
00108 gboolean weed_palette_is_valid_palette(int pal);
00109 gboolean weed_palette_is_alpha_palette(int pal);
00110 gboolean weed_palette_is_rgb_palette(int pal);
00111 gboolean weed_palette_is_yuv_palette(int pal);
00112 gboolean weed_palette_is_float_palette(int pal);
00113 gboolean weed_palette_has_alpha_channel(int pal);
00114 gint weed_palette_get_bits_per_macropixel(int pal);
00115 gint weed_palette_get_pixels_per_macropixel(int pal);
00116 gint weed_palette_get_numplanes(int pal);
00117 gdouble weed_palette_get_plane_ratio_horizontal(int pal, int plane);
00118 gdouble weed_palette_get_plane_ratio_vertical(int pal, int plane);
00119 gboolean weed_palette_is_lower_quality(int p1, int p2);  
00120 gboolean weed_palette_is_resizable(int pal);
00121 gdouble weed_palette_get_compression_ratio (int pal);
00122 
00123 int fourccp_to_weedp (unsigned int fourcc, int bpp, lives_interlace_t *interlace, int *sampling, 
00124                       int *sspace, int *clamping);
00125 
00126 #define BLACK_THRESH 20 ///< if R,G and B values are all <= this, we consider it a "black" pixel
00127 gboolean gdk_pixbuf_is_all_black(GdkPixbuf *pixbuf);
00128 
00129 
00130 void gdk_pixbuf_set_opaque(GdkPixbuf *pixbuf);
00131 
00132 const char *weed_palette_get_name(int pal);
00133 const char *weed_yuv_clamping_get_name(int clamping);
00134 const char *weed_yuv_subspace_get_name(int subspace);
00135 gchar *weed_palette_get_name_full(int pal, int clamped, int subspace);
00136 
00137 
00138 #ifdef USE_SWSCALE
00139 void sws_free_context(void);
00140 #endif
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines