mirror of
https://projects.vdr-developer.org/git/vdr-plugin-softhddevice.git
synced 2023-10-10 19:16:51 +02:00
Add VideoSkipPixels support.
This commit is contained in:
parent
bd4503f30b
commit
689d75b808
@ -1,5 +1,10 @@
|
|||||||
|
User: CafeDelMar
|
||||||
|
Date: Mon Mar 26 20:45:54 CEST 2012
|
||||||
|
|
||||||
|
Add VideoSkipPixels support.
|
||||||
|
|
||||||
User johns
|
User johns
|
||||||
Date:
|
Date: Fri Mar 23 18:43:20 CET 2012
|
||||||
|
|
||||||
Add optional argument (display) to ATTA svdrp commmand.
|
Add optional argument (display) to ATTA svdrp commmand.
|
||||||
Wakeup display to show OSD for remote learning mode.
|
Wakeup display to show OSD for remote learning mode.
|
||||||
|
@ -173,6 +173,9 @@ Setup: /etc/vdr/setup.conf
|
|||||||
softhddevice.SkipLines = 0
|
softhddevice.SkipLines = 0
|
||||||
skip 'n' lines at top and bottom of the video picture.
|
skip 'n' lines at top and bottom of the video picture.
|
||||||
|
|
||||||
|
softhddevice.SkipPixels = 0
|
||||||
|
skip 'n' pixels at left and right of the video picture.
|
||||||
|
|
||||||
softhddevice.StudioLevels = 0
|
softhddevice.StudioLevels = 0
|
||||||
0 use PC levels (0-255) with vdpau.
|
0 use PC levels (0-255) with vdpau.
|
||||||
1 use studio levels (16-235) with vdpau.
|
1 use studio levels (16-235) with vdpau.
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
#include "video.h"
|
#include "video.h"
|
||||||
extern const char *X11DisplayName; ///< x11 display name
|
extern const char *X11DisplayName; ///< x11 display name
|
||||||
|
|
||||||
extern void AudioPoller(void);
|
extern void AudioPoller(void);
|
||||||
extern void CodecSetAudioPassthrough(int);
|
extern void CodecSetAudioPassthrough(int);
|
||||||
@ -78,6 +78,7 @@ static char ConfigHideMainMenuEntry; ///< config hide main menu entry
|
|||||||
|
|
||||||
static uint32_t ConfigVideoBackground; ///< config video background color
|
static uint32_t ConfigVideoBackground; ///< config video background color
|
||||||
static int ConfigVideoSkipLines; ///< config skip lines top/bottom
|
static int ConfigVideoSkipLines; ///< config skip lines top/bottom
|
||||||
|
static int ConfigVideoSkipPixels; ///< config skip pixels left/right
|
||||||
static char ConfigVideoStudioLevels; ///< config use studio levels
|
static char ConfigVideoStudioLevels; ///< config use studio levels
|
||||||
static char ConfigVideo60HzMode; ///< config use 60Hz display mode
|
static char ConfigVideo60HzMode; ///< config use 60Hz display mode
|
||||||
static char ConfigVideoSoftStartSync; ///< config use softstart sync
|
static char ConfigVideoSoftStartSync; ///< config use softstart sync
|
||||||
@ -469,6 +470,7 @@ class cMenuSetupSoft:public cMenuSetupPage
|
|||||||
uint32_t Background;
|
uint32_t Background;
|
||||||
uint32_t BackgroundAlpha;
|
uint32_t BackgroundAlpha;
|
||||||
int SkipLines;
|
int SkipLines;
|
||||||
|
int SkipPixels;
|
||||||
int StudioLevels;
|
int StudioLevels;
|
||||||
int _60HzMode;
|
int _60HzMode;
|
||||||
int SoftStartSync;
|
int SoftStartSync;
|
||||||
@ -551,6 +553,9 @@ cMenuSetupSoft::cMenuSetupSoft(void)
|
|||||||
SkipLines = ConfigVideoSkipLines;
|
SkipLines = ConfigVideoSkipLines;
|
||||||
Add(new cMenuEditIntItem(tr("Skip lines top+bot (pixel)"), &SkipLines, 0,
|
Add(new cMenuEditIntItem(tr("Skip lines top+bot (pixel)"), &SkipLines, 0,
|
||||||
64));
|
64));
|
||||||
|
SkipPixels = ConfigVideoSkipPixels;
|
||||||
|
Add(new cMenuEditIntItem(tr("Skip pixels left+right (pixel)"), &SkipPixels,
|
||||||
|
0, 64));
|
||||||
StudioLevels = ConfigVideoStudioLevels;
|
StudioLevels = ConfigVideoStudioLevels;
|
||||||
Add(new cMenuEditBoolItem(tr("Use studio levels (vdpau only)"),
|
Add(new cMenuEditBoolItem(tr("Use studio levels (vdpau only)"),
|
||||||
&StudioLevels, trVDR("no"), trVDR("yes")));
|
&StudioLevels, trVDR("no"), trVDR("yes")));
|
||||||
@ -635,6 +640,8 @@ void cMenuSetupSoft::Store(void)
|
|||||||
VideoSetBackground(ConfigVideoBackground);
|
VideoSetBackground(ConfigVideoBackground);
|
||||||
SetupStore("SkipLines", ConfigVideoSkipLines = SkipLines);
|
SetupStore("SkipLines", ConfigVideoSkipLines = SkipLines);
|
||||||
VideoSetSkipLines(ConfigVideoSkipLines);
|
VideoSetSkipLines(ConfigVideoSkipLines);
|
||||||
|
SetupStore("SkipPixels", ConfigVideoSkipPixels = SkipPixels);
|
||||||
|
VideoSetSkipPixels(ConfigVideoSkipPixels);
|
||||||
SetupStore("StudioLevels", ConfigVideoStudioLevels = StudioLevels);
|
SetupStore("StudioLevels", ConfigVideoStudioLevels = StudioLevels);
|
||||||
VideoSetStudioLevels(ConfigVideoStudioLevels);
|
VideoSetStudioLevels(ConfigVideoStudioLevels);
|
||||||
SetupStore("60HzMode", ConfigVideo60HzMode = _60HzMode);
|
SetupStore("60HzMode", ConfigVideo60HzMode = _60HzMode);
|
||||||
@ -1603,6 +1610,10 @@ bool cPluginSoftHdDevice::SetupParse(const char *name, const char *value)
|
|||||||
VideoSetSkipLines(ConfigVideoSkipLines = atoi(value));
|
VideoSetSkipLines(ConfigVideoSkipLines = atoi(value));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (!strcasecmp(name, "SkipPixels")) {
|
||||||
|
VideoSetSkipPixels(ConfigVideoSkipPixels = atoi(value));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (!strcasecmp(name, "StudioLevels")) {
|
if (!strcasecmp(name, "StudioLevels")) {
|
||||||
VideoSetStudioLevels(ConfigVideoStudioLevels = atoi(value));
|
VideoSetStudioLevels(ConfigVideoStudioLevels = atoi(value));
|
||||||
return true;
|
return true;
|
||||||
@ -1817,10 +1828,10 @@ cString cPluginSoftHdDevice::SVDRPCommand(const char *command,
|
|||||||
if (SuspendMode != SUSPEND_DETACHED) {
|
if (SuspendMode != SUSPEND_DETACHED) {
|
||||||
return "can't attach SoftHdDevice not detached";
|
return "can't attach SoftHdDevice not detached";
|
||||||
}
|
}
|
||||||
if ( !strncmp(option, "-d ", 3) ) {
|
if (!strncmp(option, "-d ", 3)) {
|
||||||
// FIXME: loose memory here
|
// FIXME: loose memory here
|
||||||
X11DisplayName = strdup(option + 3);
|
X11DisplayName = strdup(option + 3);
|
||||||
} else if ( !strncmp(option, "-d", 2) ) {
|
} else if (!strncmp(option, "-d", 2)) {
|
||||||
// FIXME: loose memory here
|
// FIXME: loose memory here
|
||||||
X11DisplayName = strdup(option + 2);
|
X11DisplayName = strdup(option + 2);
|
||||||
}
|
}
|
||||||
|
31
video.c
31
video.c
@ -302,6 +302,7 @@ static const char VideoTransparentOsd = 1;
|
|||||||
|
|
||||||
static uint32_t VideoBackground; ///< video background color
|
static uint32_t VideoBackground; ///< video background color
|
||||||
static int VideoSkipLines; ///< skip video lines top/bottom
|
static int VideoSkipLines; ///< skip video lines top/bottom
|
||||||
|
static int VideoSkipPixels; ///< skip video pixels left/right
|
||||||
static char VideoStudioLevels; ///< flag use studio levels
|
static char VideoStudioLevels; ///< flag use studio levels
|
||||||
|
|
||||||
/// Default deinterlace mode.
|
/// Default deinterlace mode.
|
||||||
@ -457,9 +458,9 @@ static void VideoUpdateOutput(AVRational input_aspect_ratio, int input_width,
|
|||||||
Debug(3, "video: aspect %d:%d\n", display_aspect_ratio.num,
|
Debug(3, "video: aspect %d:%d\n", display_aspect_ratio.num,
|
||||||
display_aspect_ratio.den);
|
display_aspect_ratio.den);
|
||||||
|
|
||||||
*crop_x = 0;
|
*crop_x = VideoSkipPixels;
|
||||||
*crop_y = VideoSkipLines;
|
*crop_y = VideoSkipLines;
|
||||||
*crop_width = input_width;
|
*crop_width = input_width - VideoSkipPixels * 2;
|
||||||
*crop_height = input_height - VideoSkipLines * 2;
|
*crop_height = input_height - VideoSkipLines * 2;
|
||||||
|
|
||||||
// FIXME: store different positions for the ratios
|
// FIXME: store different positions for the ratios
|
||||||
@ -2850,7 +2851,7 @@ static void VaapiAutoCrop(VaapiDecoder * decoder)
|
|||||||
|
|
||||||
decoder->AutoCrop->State = next_state;
|
decoder->AutoCrop->State = next_state;
|
||||||
if (next_state) {
|
if (next_state) {
|
||||||
decoder->CropX = 0;
|
decoder->CropX = VideoSkipPixels;
|
||||||
decoder->CropY = (next_state == 16 ? crop16 : crop14) + VideoSkipLines;
|
decoder->CropY = (next_state == 16 ? crop16 : crop14) + VideoSkipLines;
|
||||||
decoder->CropWidth = decoder->InputWidth;
|
decoder->CropWidth = decoder->InputWidth;
|
||||||
decoder->CropHeight = decoder->InputHeight - decoder->CropY * 2;
|
decoder->CropHeight = decoder->InputHeight - decoder->CropY * 2;
|
||||||
@ -6417,9 +6418,9 @@ static enum PixelFormat Vdpau_get_format(VdpauDecoder * decoder,
|
|||||||
goto slow_path;
|
goto slow_path;
|
||||||
}
|
}
|
||||||
// FIXME: combine this with VdpauSetupOutput and software decoder part
|
// FIXME: combine this with VdpauSetupOutput and software decoder part
|
||||||
decoder->CropX = 0;
|
decoder->CropX = VideoSkipPixels;
|
||||||
decoder->CropY = VideoSkipLines;
|
decoder->CropY = VideoSkipLines;
|
||||||
decoder->CropWidth = video_ctx->width;
|
decoder->CropWidth = video_ctx->width - VideoSkipPixels * 2;
|
||||||
decoder->CropHeight = video_ctx->height - VideoSkipLines * 2;
|
decoder->CropHeight = video_ctx->height - VideoSkipLines * 2;
|
||||||
|
|
||||||
decoder->PixFmt = *fmt_idx;
|
decoder->PixFmt = *fmt_idx;
|
||||||
@ -6717,7 +6718,7 @@ static void VdpauAutoCrop(VdpauDecoder * decoder)
|
|||||||
|
|
||||||
decoder->AutoCrop->State = next_state;
|
decoder->AutoCrop->State = next_state;
|
||||||
if (next_state) {
|
if (next_state) {
|
||||||
decoder->CropX = 0;
|
decoder->CropX = VideoSkipPixels;
|
||||||
decoder->CropY = (next_state == 16 ? crop16 : crop14) + VideoSkipLines;
|
decoder->CropY = (next_state == 16 ? crop16 : crop14) + VideoSkipLines;
|
||||||
decoder->CropWidth = decoder->InputWidth;
|
decoder->CropWidth = decoder->InputWidth;
|
||||||
decoder->CropHeight = decoder->InputHeight - decoder->CropY * 2;
|
decoder->CropHeight = decoder->InputHeight - decoder->CropY * 2;
|
||||||
@ -6740,9 +6741,9 @@ static void VdpauAutoCrop(VdpauDecoder * decoder)
|
|||||||
decoder->InputWidth, decoder->InputHeight, decoder->OutputWidth,
|
decoder->InputWidth, decoder->InputHeight, decoder->OutputWidth,
|
||||||
decoder->OutputHeight, decoder->OutputX, decoder->OutputY);
|
decoder->OutputHeight, decoder->OutputX, decoder->OutputY);
|
||||||
} else {
|
} else {
|
||||||
decoder->CropX = 0;
|
decoder->CropX = VideoSkipPixels;
|
||||||
decoder->CropY = VideoSkipLines;
|
decoder->CropY = VideoSkipLines;
|
||||||
decoder->CropWidth = decoder->InputWidth;
|
decoder->CropWidth = decoder->InputWidth - VideoSkipPixels * 2;
|
||||||
decoder->CropHeight = decoder->InputHeight - VideoSkipLines * 2;
|
decoder->CropHeight = decoder->InputHeight - VideoSkipLines * 2;
|
||||||
|
|
||||||
// sets AutoCrop->Count
|
// sets AutoCrop->Count
|
||||||
@ -6952,9 +6953,9 @@ static void VdpauRenderFrame(VdpauDecoder * decoder,
|
|||||||
|| video_ctx->width != decoder->InputWidth
|
|| video_ctx->width != decoder->InputWidth
|
||||||
|| video_ctx->height != decoder->InputHeight) {
|
|| video_ctx->height != decoder->InputHeight) {
|
||||||
|
|
||||||
decoder->CropX = 0;
|
decoder->CropX = VideoSkipPixels;
|
||||||
decoder->CropY = VideoSkipLines;
|
decoder->CropY = VideoSkipLines;
|
||||||
decoder->CropWidth = video_ctx->width;
|
decoder->CropWidth = video_ctx->width - VideoSkipPixels * 2;
|
||||||
decoder->CropHeight = video_ctx->height - VideoSkipLines * 2;
|
decoder->CropHeight = video_ctx->height - VideoSkipLines * 2;
|
||||||
|
|
||||||
decoder->PixFmt = video_ctx->pix_fmt;
|
decoder->PixFmt = video_ctx->pix_fmt;
|
||||||
@ -9472,6 +9473,16 @@ void VideoSetSkipLines(int lines)
|
|||||||
VideoSkipLines = lines;
|
VideoSkipLines = lines;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Set skip pixels.
|
||||||
|
///
|
||||||
|
/// @param pixels pixels in pixel
|
||||||
|
///
|
||||||
|
void VideoSetSkipPixels(int pixels)
|
||||||
|
{
|
||||||
|
VideoSkipPixels = pixels;
|
||||||
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Set studio levels.
|
/// Set studio levels.
|
||||||
///
|
///
|
||||||
|
3
video.h
3
video.h
@ -122,6 +122,9 @@ extern void VideoSetSharpen(int[]);
|
|||||||
/// Set skip lines.
|
/// Set skip lines.
|
||||||
extern void VideoSetSkipLines(int);
|
extern void VideoSetSkipLines(int);
|
||||||
|
|
||||||
|
/// Set skip pixels.
|
||||||
|
extern void VideoSetSkipPixels(int);
|
||||||
|
|
||||||
/// Set studio levels.
|
/// Set studio levels.
|
||||||
extern void VideoSetStudioLevels(int);
|
extern void VideoSetStudioLevels(int);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user