FireBirdLib - Topfield TMS PVR TAP Programming Library
CaptureScreen.c
Go to the documentation of this file.
1#include "FBLib_av.h"
2#include "libFireBird.h"
3
4bool CaptureScreen(int BMPwidth, int BMPheight, byte *BMPPixelBuffer, bool bOSD, int Alpha)
5{
7
8 TYPE_VideoFrame videoFrameMain;
9 TYPE_VideoFrame videoFrameSub;
10 TYPE_OsdBaseInfo osdBaseInfo;
11 int PIPNorth, PIPSouth, PIPEast, PIPWest;
12 bool PIPAvail;
13
14 if(!BMPPixelBuffer)
15 {
16 TRACEEXIT();
17 return FALSE;
18 }
19
20 PIPAvail = GetPIPPosition(&PIPNorth, &PIPSouth, &PIPEast, &PIPWest);
21
22 //Capture main video frame
23 memset(&videoFrameMain, 0, sizeof(videoFrameMain));
24 videoFrameMain.pixelFormat = OSD_8888;
25 videoFrameMain.width = BMPwidth;
26 videoFrameMain.height = BMPheight;
27 if(!TAP_CaptureScreen(CHANNEL_Main, &videoFrameMain, 0))
28 {
29 VideoToBMP(&videoFrameMain, BMPwidth, BMPheight, BMPPixelBuffer, 0, 0, BMPwidth, BMPheight);
30 TAP_MemFree(videoFrameMain.data);
31 }
32
33 if(PIPAvail)
34 {
35 //Capture PIP
36 memset(&videoFrameSub, 0, sizeof(videoFrameSub));
37 videoFrameSub.pixelFormat = OSD_8888;
38 videoFrameSub.width = BMPwidth;
39 videoFrameSub.height = BMPheight;
40 if(!TAP_CaptureScreen(CHANNEL_Sub, &videoFrameSub, 0 ))
41 {
42 VideoToBMP(&videoFrameSub, BMPwidth, BMPheight, BMPPixelBuffer, PIPWest, PIPNorth, PIPEast - PIPWest + 1, PIPSouth - PIPNorth + 1);
43 TAP_MemFree(videoFrameSub.data);
44 }
45 }
46
47 if(bOSD)
48 {
49 //Capture TAP_PLANE and mix into BMP
50 TAP_Osd_GetPlaneBaseInfo(&osdBaseInfo, TAP_PLANE);
51 OSDToBMP(&osdBaseInfo, BMPwidth, BMPheight, BMPPixelBuffer, Alpha);
52
53 //Capture SUBT_PLANE and mix into BMP
54 TAP_Osd_GetPlaneBaseInfo(&osdBaseInfo, SUBT_PLANE);
55 OSDToBMP(&osdBaseInfo, BMPwidth, BMPheight, BMPPixelBuffer, Alpha);
56
57 //Capture BASE_PLANE and mix into BMP
58 TAP_Osd_GetPlaneBaseInfo(&osdBaseInfo, BASE_PLANE);
59 OSDToBMP(&osdBaseInfo, BMPwidth, BMPheight, BMPPixelBuffer, Alpha);
60 }
61
62 TRACEEXIT();
63 return TRUE;
64}
bool CaptureScreen(int BMPwidth, int BMPheight, byte *BMPPixelBuffer, bool bOSD, int Alpha)
Definition: CaptureScreen.c:4
void OSDToBMP(TYPE_OsdBaseInfo *OsdBaseInfo, int BMPwidth, int BMPheight, byte *BMPPixelBuffer, int Alpha)
Definition: OSDToBMP.c:4
void VideoToBMP(TYPE_VideoFrame *VideoFrame, int BMPwidth, int BMPheight, byte *BMPPixelBuffer, int DstX, int DstY, int DstWidth, int DstHeight)
Definition: VideoToBMP.c:4
bool GetPIPPosition(int *North, int *South, int *East, int *West)
Definition: GetPIPPosition.c:4
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243