mirror of
https://projects.vdr-developer.org/git/vdr-plugin-softhddevice.git
synced 2023-10-10 19:16:51 +02:00
Support multiple streams with ScaleVideo.
This commit is contained in:
parent
acf377ec60
commit
3d5e59a6e5
@ -1,6 +1,7 @@
|
||||
User johns
|
||||
Date:
|
||||
|
||||
Support multiple streams with ScaleVideo.
|
||||
Makes 4:3 and 16:9 display format configurable.
|
||||
Don't use DVB display format.
|
||||
|
||||
|
17
softhddev.c
17
softhddev.c
@ -1,7 +1,7 @@
|
||||
///
|
||||
/// @file softhddev.c @brief A software HD device plugin for VDR.
|
||||
///
|
||||
/// Copyright (c) 2011, 2013 by Johns. All Rights Reserved.
|
||||
/// Copyright (c) 2011 - 2013 by Johns. All Rights Reserved.
|
||||
///
|
||||
/// Contributor(s):
|
||||
///
|
||||
@ -2836,3 +2836,18 @@ void GetStats(int *missed, int *duped, int *dropped, int *counter)
|
||||
VideoGetStats(MyHwDecoder, missed, duped, dropped, counter);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
** Scale the currently shown video.
|
||||
**
|
||||
** @param x video window x coordinate OSD relative
|
||||
** @param y video window y coordinate OSD relative
|
||||
** @param width video window width OSD relative
|
||||
** @param height video window height OSD relative
|
||||
*/
|
||||
void ScaleVideo(int x, int y, int width, int height)
|
||||
{
|
||||
if (MyHwDecoder) {
|
||||
VideoSetOutputPosition(MyHwDecoder, x, y, width, height);
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
///
|
||||
/// @file softhddev.h @brief software HD device plugin header file.
|
||||
///
|
||||
/// Copyright (c) 2011 - 2012 by Johns. All Rights Reserved.
|
||||
/// Copyright (c) 2011 - 2013 by Johns. All Rights Reserved.
|
||||
///
|
||||
/// Contributor(s):
|
||||
///
|
||||
@ -95,6 +95,8 @@ extern "C"
|
||||
|
||||
/// Get decoder statistics
|
||||
extern void GetStats(int *, int *, int *, int *);
|
||||
/// C plugin scale video
|
||||
extern void ScaleVideo(int, int, int, int);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -324,7 +324,7 @@ cSoftOsd::~cSoftOsd(void)
|
||||
|
||||
::GetOsdSize(&width, &height, &video_aspect);
|
||||
// works osd relative
|
||||
VideoSetOutputPosition(0, 0, width, height);
|
||||
::ScaleVideo(0, 0, width, height);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -358,8 +358,8 @@ void cSoftOsd::Flush(void)
|
||||
// FIXME: vidWin is OSD relative not video window.
|
||||
// FIXME: doesn't work if fixed OSD width != real window width
|
||||
// FIXME: solved in VideoSetOutputPosition
|
||||
VideoSetOutputPosition(Left() + vidWin.x1, Top() + vidWin.y1,
|
||||
vidWin.Width(), vidWin.Height());
|
||||
::ScaleVideo(Left() + vidWin.x1, Top() + vidWin.y1, vidWin.Width(),
|
||||
vidWin.Height());
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1913,7 +1913,7 @@ void cSoftHdDevice::ScaleVideo(const cRect & rect)
|
||||
dsyslog("[softhddev]%s: %dx%d%+d%+d\n", __FUNCTION__, VidWinRect.Width(),
|
||||
VidWinRect.Height(), VidWinRect.X(), VidWinRect.Y());
|
||||
#endif
|
||||
VideoSetOutputPosition(rect.X(), rect.Y(), rect.Width(), rect.Height());
|
||||
::ScaleVideo(rect.X(), rect.Y(), rect.Width(), rect.Height());
|
||||
}
|
||||
|
||||
#endif
|
||||
|
18
video.c
18
video.c
@ -10230,14 +10230,14 @@ void VideoSetHue(int hue)
|
||||
///
|
||||
/// Set video output position.
|
||||
///
|
||||
/// @param x video output x coordinate OSD relative
|
||||
/// @param y video output y coordinate OSD relative
|
||||
/// @param width video output width
|
||||
/// @param height video output height
|
||||
/// @param hw_decoder video hardware decoder
|
||||
/// @param x video output x coordinate OSD relative
|
||||
/// @param y video output y coordinate OSD relative
|
||||
/// @param width video output width
|
||||
/// @param height video output height
|
||||
///
|
||||
/// @note FIXME: need to know which stream.
|
||||
///
|
||||
void VideoSetOutputPosition(int x, int y, int width, int height)
|
||||
void VideoSetOutputPosition(VideoHwDecoder * hw_decoder, int x, int y,
|
||||
int width, int height)
|
||||
{
|
||||
static int last_x; ///< last video output window x
|
||||
static int last_y; ///< last video output window y
|
||||
@ -10277,9 +10277,9 @@ void VideoSetOutputPosition(int x, int y, int width, int height)
|
||||
// FIXME: add function to module class
|
||||
#ifdef USE_VDPAU
|
||||
if (VideoUsedModule == &VdpauModule) {
|
||||
VdpauSetOutputPosition(VdpauDecoders[0], last_x, last_y, last_width,
|
||||
VdpauSetOutputPosition(&hw_decoder->Vdpau, last_x, last_y, last_width,
|
||||
last_height);
|
||||
VdpauUpdateOutput(VdpauDecoders[0]);
|
||||
VdpauUpdateOutput(&hw_decoder->Vdpau);
|
||||
}
|
||||
#endif
|
||||
#ifdef USE_VAAPI
|
||||
|
2
video.h
2
video.h
@ -110,7 +110,7 @@ extern void VideoSetSaturation(int);
|
||||
extern void VideoSetHue(int);
|
||||
|
||||
/// Set video output position.
|
||||
extern void VideoSetOutputPosition(int, int, int, int);
|
||||
extern void VideoSetOutputPosition(VideoHwDecoder *, int, int, int, int);
|
||||
|
||||
/// Set video mode.
|
||||
extern void VideoSetVideoMode(int, int, int, int);
|
||||
|
Loading…
Reference in New Issue
Block a user