video_sdl_sink_uc.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef INCLUDED_VIDEO_SDL_SINK_UC_H
00024 #define INCLUDED_VIDEO_SDL_SINK_UC_H
00025
00026 #include <gr_sync_block.h>
00027 #include <string>
00028 #include <SDL.h>
00029
00030
00031 #define vid_fourcc(a,b,c,d) (((unsigned)(a)<<0) | ((unsigned)(b)<<8) | ((unsigned)(c)<<16) | ((unsigned)(d)<<24))
00032 #define IMGFMT_YV12 vid_fourcc('Y','V','1','2')
00033
00034 class video_sdl_sink_uc;
00035 typedef boost::shared_ptr<video_sdl_sink_uc> video_sdl_sink_uc_sptr;
00036
00037 video_sdl_sink_uc_sptr
00038 video_sdl_make_sink_uc (double framerate,int width=640, int height=480,unsigned int format=IMGFMT_YV12,int dst_width=-1,int dst_height=-1);
00039
00050 class video_sdl_sink_uc : public gr_sync_block {
00051 friend video_sdl_sink_uc_sptr
00052 video_sdl_make_sink_uc (double framerate,int width, int height,unsigned int format,int dst_width,int dst_height);
00053
00054 int d_chunk_size;
00055
00056 protected:
00057 video_sdl_sink_uc (double framerate,int width, int height,unsigned int format,
00058 int dst_width,int dst_height);
00059 void copy_line_pixel_interleaved(unsigned char *dst_pixels_u,unsigned char *dst_pixels_v,
00060 const unsigned char * src_pixels,int src_width);
00061 void copy_line_line_interleaved(unsigned char *dst_pixels_u,unsigned char *dst_pixels_v,
00062 const unsigned char * src_pixels,int src_width);
00063 void copy_line_single_plane(unsigned char *dst_pixels,const unsigned char * src_pixels,int src_width);
00064 void copy_line_single_plane_dec2(unsigned char *dst_pixels,const unsigned char * src_pixels,int src_width);
00065 int copy_plane_to_surface (int plane,int noutput_items,
00066 const unsigned char * src_pixels);
00067 float d_framerate;
00068 int d_wanted_frametime_ms;
00069 int d_width;
00070 int d_height;
00071 int d_dst_width;
00072 int d_dst_height;
00073 int d_format;
00074 int d_current_line;
00075 SDL_Surface *d_screen;
00076 SDL_Overlay *d_image;
00077 SDL_Rect d_dst_rect;
00078 float d_avg_delay;
00079 unsigned int d_wanted_ticks;
00080
00081
00082 public:
00083 ~video_sdl_sink_uc ();
00084
00085 int work (int noutput_items,
00086 gr_vector_const_void_star &input_items,
00087 gr_vector_void_star &output_items);
00088 };
00089
00090 #endif