mirror of
https://projects.vdr-developer.org/git/vdr-plugin-softhddevice.git
synced 2023-10-10 19:16:51 +02:00
Report correct size in cSoftHdDevice::GetVideoSize.
This commit is contained in:
parent
de7c4b2a96
commit
f640ebdeb5
@ -1,6 +1,7 @@
|
|||||||
User johns
|
User johns
|
||||||
Date:
|
Date:
|
||||||
|
|
||||||
|
Report correct video size in cSoftHdDevice::GetVideoSize.
|
||||||
Add picture adjustment support for vdpau.
|
Add picture adjustment support for vdpau.
|
||||||
Revert "mpeg_vdpau" back to "mpegvideo_vdpau".
|
Revert "mpeg_vdpau" back to "mpegvideo_vdpau".
|
||||||
Fix bug: Can't use software decoder with VDPAU.
|
Fix bug: Can't use software decoder with VDPAU.
|
||||||
|
36
softhddev.c
36
softhddev.c
@ -2019,6 +2019,42 @@ int64_t GetSTC(void)
|
|||||||
return AV_NOPTS_VALUE;
|
return AV_NOPTS_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
** Get video stream size and aspect.
|
||||||
|
**
|
||||||
|
** @param width[OUT] width of video stream
|
||||||
|
** @param height[OUT] height of video stream
|
||||||
|
** @param aspect[OUT] aspect ratio (4/3, 16/9, ...) of video stream
|
||||||
|
*/
|
||||||
|
void GetVideoSize(int *width, int *height, double *aspect)
|
||||||
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
static int done_width;
|
||||||
|
static int done_height;
|
||||||
|
#endif
|
||||||
|
int aspect_num;
|
||||||
|
int aspect_den;
|
||||||
|
|
||||||
|
if (MyHwDecoder) {
|
||||||
|
VideoGetVideoSize(MyHwDecoder, width, height, &aspect_num,
|
||||||
|
&aspect_den);
|
||||||
|
*aspect = (double)aspect_num / (double)aspect_den;
|
||||||
|
} else {
|
||||||
|
*width = 0;
|
||||||
|
*height = 0;
|
||||||
|
*aspect = 1.0; // like default cDevice::GetVideoSize
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (done_width != *width || done_height != *height) {
|
||||||
|
Debug(3, "[softhddev]%s: %dx%d %g\n", __FUNCTION__, *width, *height,
|
||||||
|
*aspect);
|
||||||
|
done_width = *width;
|
||||||
|
done_height = *height;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
** Set trick play speed.
|
** Set trick play speed.
|
||||||
**
|
**
|
||||||
|
@ -53,6 +53,8 @@ extern "C"
|
|||||||
extern int SetPlayMode(int);
|
extern int SetPlayMode(int);
|
||||||
/// C plugin get current system time counter
|
/// C plugin get current system time counter
|
||||||
extern int64_t GetSTC(void);
|
extern int64_t GetSTC(void);
|
||||||
|
/// C plugin get video stream size and aspect
|
||||||
|
extern void GetVideoSize(int *, int *, double *);
|
||||||
/// C plugin set trick speed
|
/// C plugin set trick speed
|
||||||
extern void TrickSpeed(int);
|
extern void TrickSpeed(int);
|
||||||
/// C plugin clears all video and audio data from the device
|
/// C plugin clears all video and audio data from the device
|
||||||
|
@ -1741,11 +1741,11 @@ void cSoftHdDevice::SetVideoFormat(bool video_format16_9)
|
|||||||
** Returns the width, height and video_aspect ratio of the currently
|
** Returns the width, height and video_aspect ratio of the currently
|
||||||
** displayed video material.
|
** displayed video material.
|
||||||
**
|
**
|
||||||
** @note the size is used to scale the subtitle.
|
** @note the video_aspect is used to scale the subtitle.
|
||||||
*/
|
*/
|
||||||
void cSoftHdDevice::GetVideoSize(int &width, int &height, double &video_aspect)
|
void cSoftHdDevice::GetVideoSize(int &width, int &height, double &video_aspect)
|
||||||
{
|
{
|
||||||
::GetOsdSize(&width, &height, &video_aspect);
|
::GetVideoSize(&width, &height, &video_aspect);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
40
video.c
40
video.c
@ -9698,6 +9698,46 @@ void VideoGetStats(VideoHwDecoder * hw_decoder, int *missed, int *duped,
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Get decoder video stream size.
|
||||||
|
///
|
||||||
|
/// @param hw_decoder video hardware decoder
|
||||||
|
/// @param[out] width video stream width
|
||||||
|
/// @param[out] height video stream height
|
||||||
|
/// @param[out] aspect_num video stream aspect numerator
|
||||||
|
/// @param[out] aspect_den video stream aspect denominator
|
||||||
|
///
|
||||||
|
void VideoGetVideoSize(VideoHwDecoder * hw_decoder, int *width, int *height,
|
||||||
|
int *aspect_num, int *aspect_den)
|
||||||
|
{
|
||||||
|
*width = 1920;
|
||||||
|
*height = 1080;
|
||||||
|
*aspect_num = 16;
|
||||||
|
*aspect_den = 9;
|
||||||
|
// FIXME: test to check if working, than make module function
|
||||||
|
#ifdef USE_VDPAU
|
||||||
|
if (VideoUsedModule == &VdpauModule) {
|
||||||
|
*width = hw_decoder->Vdpau.InputWidth;
|
||||||
|
*height = hw_decoder->Vdpau.InputHeight;
|
||||||
|
av_reduce(aspect_num, aspect_den,
|
||||||
|
hw_decoder->Vdpau.InputWidth * hw_decoder->Vdpau.InputAspect.num,
|
||||||
|
hw_decoder->Vdpau.InputHeight * hw_decoder->Vdpau.InputAspect.den,
|
||||||
|
1024 * 1024);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef USE_VAAPI
|
||||||
|
if (VideoUsedModule == &VaapiModule) {
|
||||||
|
*width = hw_decoder->Vaapi.InputWidth;
|
||||||
|
*height = hw_decoder->Vaapi.InputHeight;
|
||||||
|
av_reduce(aspect_num, aspect_den,
|
||||||
|
hw_decoder->Vaapi.InputWidth * hw_decoder->Vaapi.InputAspect.num,
|
||||||
|
hw_decoder->Vaapi.InputHeight * hw_decoder->Vaapi.InputAspect.den,
|
||||||
|
1024 * 1024);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef USE_SCREENSAVER
|
#ifdef USE_SCREENSAVER
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
3
video.h
3
video.h
@ -193,6 +193,9 @@ extern uint8_t *VideoGrabService(int *, int *, int *);
|
|||||||
/// Get decoder statistics.
|
/// Get decoder statistics.
|
||||||
extern void VideoGetStats(VideoHwDecoder *, int *, int *, int *, int *);
|
extern void VideoGetStats(VideoHwDecoder *, int *, int *, int *, int *);
|
||||||
|
|
||||||
|
/// Get video stream size
|
||||||
|
extern void VideoGetVideoSize(VideoHwDecoder *, int *, int *, int *, int *);
|
||||||
|
|
||||||
extern void VideoOsdInit(void); ///< Setup osd.
|
extern void VideoOsdInit(void); ///< Setup osd.
|
||||||
extern void VideoOsdExit(void); ///< Cleanup osd.
|
extern void VideoOsdExit(void); ///< Cleanup osd.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user